facebook    T: 598 944448 
1111 QA ტესტირების საფუძვლების თეორიულ-პრაქტიკული კურსის დაწყება დაგეგმილია 11 აპრილიდან. კურსი გრძელდება 1 თვის მანძილზე კვირაში 5 დღე, დღეში 2 საათიანი თეორიულ-პრაქტიკული მეცადინეობით და სულ 40 საათი ხანგრძლივობით. კურსი მოიცავს QA ტესტირების ყველა საბაზისო საკითხს რაც ვებსაიტების შემუშავებისთვის და ტესტირებისთვის არის საჭირო. მოგვწერეთ ფეისბუქის გვერდზე Frontend კერძო კურსები ასევე შეგიძლიათ ჩაერთოთ ფეისბუქის Manual ტესტირების ჯგუფში. Manual ტესტირება QA ტესტირების საფუძვლების თეორიულ-პრაქტიკული კურსის დაწყება დაგეგმილია 3 აპრილიდან.
კონსპექტები
QA ტესტირება,  FRONTEND პროგრამირება
კონსპექტები მოიცავს ყველა იმ საკითხს, რისი შესწავლაც მოხდება კურსებზე
ზოგიერთი საკითხის კონსპექტი შემუშავების პროცესშია
1. Manual ტესტირება 2. საიტების სრული ტესტირება 3. ტესტირების მეთოდოლოგიები 4. საიტის ელემენტების ტესტირება 5. საიტების კლასიფიკაცია 6. საიტის შემუშავება, ანალიტიკა 7. ტექნიკური დავალება, დოკუმენტაცია 8. საიტების სტრუქტურა და სტილები 9. საიტების დიზაინი და ინტერფეისი 10. ლენდინგ საიტის პრინციპები 11. HTML, CSS, JS პროგრამირება 12. markup კოდის პრინციპები 13. საიტების SEO ოპტიმიზაცია 14. ინსტრუმენტები - DevTools 15. ინსტრუმენტები - Figma 16. ინსტრუმენტები - Jira 17. ინსტრუმენტები - Trello, asana 18. ინსტრუმენტები - HTTP 19. ინსტრუმენტები - SQL 20. ინსტრუმენტები - GIT 21. ინსტრუმენტები - Zephyr, TestRail 22. ინსტრუმენტები - Selenium, Jmeter, Postman 23. ინსტრუმენტები - ზოგადი 24. მობილური აპლიკაციის ტესტირება 25. აგილე-სკრამ მეთოდოლოგიები 26. API ტესტირება
19.

ინსტრუმენტები - SQL ბაზები

 
                -- მონაცემთა ბაზები არის სტრუქტურიზირებულ მონაცემთა საცავი.
 -- SQL არის პროგრამირების ენა მონაცემთა ბაზების დამუშავებისა და კონტროლისათვის
 -- მონაცემთა ბაზების სტრუქტურა არის იერარქიული(დატოტვილი), ქსელური(მრავალმხრივი), რელაციური.
 -- პოპულარული მონაცემთა ბაზები: MySql, MS SQL, Oracle, PostgreSql, MongoDB 
 -- ყველა მონაცემთა ბაზას აქვს საერთო ძირითადი ბრძანებები(მაგალითად SELECT, UPDATE, DELETE, INSERT, WHERE), ასევე საკუთარი ბრძანებებიც.
 -- მონაცემთა ბაზების მართვის პროგრამებია: MySQL, Microsoft Access, Microsoft SQL Server, Oracle Database, dBASE.
 -- მონაცემთა ბაზებში გამოყენებული გავრცელებული მონაცემთა ტიპები: int(მთელი რიცხვი), dec, blob/text/memo, char(ასო), varchar, date(თარიღი), time(დრო), year(წელი), float(ათწილადი), double(დიდი ათწილადი), boolean(ლოგიკური), null(ნული).

   ტესტირებაში SQL ძირითადად გამოიყენება ბაზაში მონაცემების არსებობის შესამოწმებლად.
    რა უნდა იცოდეს ტესტერმა:
 -- მონაცემთა ბაზების ტიპების გარჩევა
 -- მონაცემთა ბაზებთან დაკავშირება შესაბამისი პროგრამით
 -- ცხრილებს, გასაღებებსა და ინდექსებს შორის კავშირები
 -- მარტივი ამორჩევის ოპერატორების(Select) წერა სხვა ოპერატორებთან კომბინაციაში
 -- რთული SQL მოთხოვნების გაგება

   ძირითადი გასატესტი საკითხები SQL ტესტირებაში
 1. ინფორმაციის ასახვაზე ტესტირება = უნდა გაიტესტოს არის თუ არა ინტერფეისის შესავსები და სხვა ველების შესაბამისი ველები ბაზაში.
 2. ინფორმაციის განახლებაზე ტესტირება = გარე ინტერფეისში ინფორმაციის ცვლილების ან შენახვისას უნდა მოხდეს ბაზაში შესაბამისი ველების განახლება. როგორც წესი ასეთ შემთხვევებში სრულდება SQL ოპერაციები:
 -- CREATE = ახალი ჩანაწერის შექმნა
 -- INSERT = ჩანაწერის ჩასმა
 -- READ = არსებული ჩანაწერის წაკითხვა
 -- UPDATE = ჩანაწერის განახლება
 -- DELETE = ჩანაწერის წაშლა
 3. ოპერაციების თვისებების ტესტირება = უნდა გაიტესტოს არის თუ არ ოპერაციები იზოლირებული, დაცული, თანმიმდევრული.
 4. სტრუქტურული შემოწმება = უნდა გაიტესტოს ბაზების სტრუქტურული სქემა, ცხრილები, სვეტები, ტრანზაქციები და ტრიგერები.
 5. დატვირთვაზე, უსაფრთხოებაზე და სტრეს-ტესტირება.
 6. ცხრილებში მონაცემთა ტიპებზე ტესტირება, ველებში მონაცემთა დასაშვები სიგრძის ტესტირება.
 7. ბაზებში არაკორექტულ მოთხოვნებზე ტესტირება.
 8. მწარმოებლურობაზე ტესტირება(შესრულებული ოპერაციებისა და ტრანზაქციების რაოდენობა დროში)
 9. მონაცემთა დაცულობასა და უსაფრთხოებაზე ტესტირება.

    ტესტირებაში ხშირად გამოყენებადი SQL ფუნქციები:
 -- Data Manipulation Language (DML): გამოიყენება მონაცემთა შენახვის, შეცვლის, წაშლისა თუ ჩასმისათვის, მაგალითად ოპერატორები: SELECT, UPDATE и INSERT.
 -- Data Definition Language (DDL): გამოიყენება მონაცემთა ბაზის ობიექტების სტრუქტურის შექმნისა და ცვლილებებისათვის, მაგალითად ოპერატორები: CREATE, ALTER и DROP.
 -- Transactional Control Language (TCL): მართავს ბაზებში მიმდინარე ტრანზაქციებს, მაგალითად ოპერატორები: COMMIT, ROLLBACK.
 -- Inner Join: აკეთებს კომბინირებას სხვადასხვა ცხრილებიდან.
 -- Distinct: გამოაქვს მნიშვნელობები ერთი ან რამოდენიმე ველიდან.
 -- In: გამოიყენება ცხრილში მნიშვნელობის პოვნისთვის.
 -- Between: გამოიყენება გარკვეული დიაპაზონის მნიშვნელობების მისაღებად.
 -- WHERE: უთითებს რომელი სტროფები გამოიყენება.
 -- Like: მიუთითებს შაბლონებზე, გამოიყენება WHERE ოპერატორთან ერთად.  
 -- Order By Clause: სტრიქონების მოწესრიგება, დალაგება(დეფაულტად ზრდადი).
 -- GROUP BY: მონაცემების რაიმე ნიშნით დაჯგუფება.
 -- HAVING: არჩევს ოპერატორ GROUP BY-ით განსაზღვრულ ჯგუფიდან.
 -- Aggregate Functions: ახდენს გამოთვლებს და აბრუნებს ერთ მნიშვნელობას, მაგალითად: Avg, Min, Max, Sum, count და ა.შ.

    ტესტირებაში ხშირად გამოყენებადი SQL ოპერატორები:
 -- Select = ამორჩევა
 -- from = ცხრილი საიდანაც ვირჩევთ
 -- order by = დალაგება ზრდით
 -- order by desc = დალაგება კლებით
 -- where = სადაც(რჩევის შეზღუდვისათვის, გამოიყენება > < =)
 -- where in(ჩამონათვალი) = სადაც მნიშვნელობა უნდა იყოს არჩეული ჩამონათვალიდან.
 -- where like "ნაწილი%" = სადაც არჩეული მნიშვნელობა შედგება ნაწილი-სგან და პლიუს '%' ნებისმიერი სიმბოლოსგან, ან ვთქვათ '_' ერთი რაიმე სიმბოლოსგან.
 -- Is null = ნულზე შემოწმება
 -- from a inner join b on = არეალების კვეთის ნაწილი
 -- from a left join b on = მარცხენა არეალი
 -- from a right join b on = მარჯვენა არეალი
 -- from a cross join b on = ორივე არეალი
 -- insert into ცხრილში(სვეტი1, სვეტი2) values('მნიშვნელობა1, მნიშვნელობა2) = მნიშვნელობების ჩასმა
 -- update ცხრილი set პარამეტრი1='მნიშვნელობა1', პარამეტრი2='მნიშვნელობა2' where პირობა = განახლება პირობით
 -- delete from ცხრილი where პირობა = წაშლა პირობით 

   მონაცემთა ბაზების ბრძანებები
 -- CREATE DATABASE databasename = ქმნის ბაზას 'databasename'
 -- DROP DATABASE databasename = შლის არსებულ ბაზას
 -- BACKUP DATABASE databasename TO DISK='D:\backups' = ქმნის ბაზის კოპიოს მისამართზე
 -- CREATE TABLE table_name (column1 datatype, column2 datatype...) = ქმნის ცხრილს სვეტების სახელებით
 -- DROP TABLE table_name = ცხრილის წაშლა
 -- TRUNCATE TABLE table_name = ცხრილის გასუფთავება მონაცემებისაგან
 -- ALTER TABLE table_name ADD column_name datatype; = სვეტის ჩამატება ცხრილში
 -- ALTER TABLE table_name DROP COLUMN Email; = სვეტის წაშლა ცხრილიდან
 -- CREATE VIEW = ქმნის ვირტუალურ ცხრილებს რეალური ბაზიდან
 -- CREATE PROCEDURE procedure_name AS = პროცედურის შექმნა
 -- CREATE PROCEDURE SelectAllCustomers @City nvarchar(30), @PostalCode nvarchar(10) = პროცედურის შექმნა პარამეტრებით
 -- EXEC procedure_name = პროცედურის წაშლა

   პირობითი ოპერატორები
 -- NOT NULL = არ უნდა იყოს ნული 
 -- UNIQUE = უნდა იყოს უნიკალური(არ მეორდებოდეს)
 -- PRIMARY KEY = პირველადი გასაღები, სტროფების უნიკალური ID იდენტიფიკატორი 
 -- FOREIGN KEY = გარე გასაღები(სხვა ცხრილის ID-თან  დამაკავშირებელი) 
 -- DEFAULT = დეფაულტ მნიშვნელობა(თუ არ არის მითითებული)
 -- CREATE INDEX = ინდექსის შექმნა
 -- CHECK = შემოწმება რამე პირობაზე

    ლოგიკური ოპერატორები
 -- ALL = ყველა
 -- AND = და
 -- ANY = რაიმე
 -- BETWEEN = შორის
 -- EXISTS = არსებობს
 -- IN = -ში 
 -- LIKE = მსგავსი
 -- NOT = არა
 -- OR = ან
 -- SOME = რომელიმე

    SQL Date თარიღები
    MySQL თარიღის ტიპები და ფორმატები:
 -- DATE = ფორმატი YYYY-MM-DD
 -- DATETIME = ფორმატი YYYY-MM-DD HH:MI:SS
 -- TIMESTAMP = ფორმატი YYYY-MM-DD HH:MI:SS
 -- YEAR = ფორმატი YYYY ან YY

   რა საკითხების ცოდნა შეიძლება მოითხოვონ გასაუბრებაზე
 1. რა არის მონაცემთა ბაზები SQL
 - პასუხი: SQL(Structured Query Language) = მონაცემთა მართვის სისტემა(სტრუქტურირებულ მოთხოვნათა ენა).
 2. რა ტიპის მონაცემთა ბაზები არსებობს
 - პასუხი: არსებობს რელაციური, სტრუქტურული, ქსელური, ჰიბრიდული, მრავალგანზომილებიანი, ობიექტ-ორიენტირებული და ა.შ. 
 3. რა არის პირველადი გასაღები(PRIMARY KEY)
 - პასუხი: ჩანაწერის უნიკალური, არანული იდენტიფიკატორი. შეიძლება იყოს შედგენილიც.
 4. როდის გამოიყენება პირველადი გასაღები
 - პასუხი: როგორც ძირითადი იდენტიფიკატორი გამოიყენება სხვა ცხრილებთან დასაკავშირებლად, რომლებიც შეიცავენ გარე გასაღებს ამ იდენტიფიკატორზე მითითებით. 
 5. რა არის გარე გასაღები(FOREIGN KEY)
 - პასუხი: გარე იდენტიფიკატორი, მიეთითება სხვა ცხრილის ძირითად(PRIMARY KEY) გასაღებს.
 6. რა სახის შეზღუდვები(constraints) არსებობს 
 - პასუხი:
   UNIQUE — მნიშვნელობის კონტროლი უნიკალურობაზე
   NOT NULL — მნიშვნელობაზე კონტროლი არანულოვანზე
   INDEX — ცხრილის ინდექსის შექმნა სწრაფი დაკავშირებისათვის  
   CHECK — მნიშვნელობის კონტროლი გარკვეული პირობების დაცვით
   DEFAULT — სვეტის მნიშვნელობა დეფაულტად  
 7. რისთვის გამოიყენება ORDER BY
 - პასუხი: მნიშვნელობების დალაგება ზრდადობით ან კლებადობით(ASC და DESC)
   SELECT * FROM user ORDER BY name DESC;
 8. შეერთების(Join) 4 ძირითადი სახე SQL-ში
 - პასუხი:
   INNER JOIN = მხოლოდ საერთო გადაკვეთილი მნიშვნელობები
   FULL OUTER JOIN = გადაკვეთის მქონე ორივე არეალის მნიშვნელობები
   LEFT JOIN = საერთო გადაკვეთისა და + მარცხენა არეალის მნიშვნელობები
   RIGHT JOIN = საერთო გადაკვეთისა და + მარჯვენა არეალის მნიშვნელობები
 9. რა არის Self JOIN
 - პასუხი: ცხრილის გაერთიანება თავისივე დუბლიკატთან
 10. რისთვის არის საჭირო ოპერატორი UNION
 - პასუხი: ერთნაირი რაოდენობის სვეტებისა და მსგავსი მონაცემთა ტიპების გაერთიანება
   SELECT column(s) FROM first_table
   UNION
   SELECT column(s) FROM second_table;
 11. როგორ მუშაობს ჩასანაცვლებელი ნიშნები 
 - პასუხი: გამოიყენება LIKE ოპერატორთან ერთად სიმბოლოების ჩასანაცვლებლად
 12. რა სახის ჩასანაცვლებელი ნიშნებია 
 - პასუხი: ' % ' = ნული ან მეტი რაიმე სიმბოლო, ' _ ' = 1 ან მეტი რაიმე სიმბოლო
   SELECT * FROM user WHERE name LIKE '%test%';
   SELECT * FROM user WHERE name LIKE 't_est';
 13. რას აკეთებს ფსევდონიმი Aliases
 - პასუხი: გამოიყენება დროებითი სახელის მისაცემად
   SELECT very_long_column_name AS alias_name FROM table;
 14. რისთვის არის საჭირო INSERT INTO SELECT
 - პასუხი: აკოპირებს მონაცემებს ერთი ცხრილიდან მეორეში
   INSERT INTO second_table SELECT * FROM first_table WHERE condition; 
 16. რა განსხვავებაა DELETE და TRUNCATE შორის
 - პასუხი: ერთი შლის მთლიანად, მეორე ასუფთავებს
 17. რით განსხვავდება VARCHAR და NVARCHAR
 - პასუხი:
   VARCHAR = ASCII ფორმატის მონაცემები, სიმბოლო 1 ბაიტში
   NVARCHAR = Unicode ფორმატის მონაცემები, სიმბოლო 2 ბაიტში 
 18. როგორ ავარჩიოთ ჩანაწერები კენტი ID-ით
 - პასუხი: SELECT * FROM sample WHERE id % 2 != 0;
 19. როგორ ვიპოვოთ დუბლები მეილის ველში
 - პასუხი: 
   SELECT email, COUNT(email)
   FROM customers
   GROUP BY email
   HAVING COUNT(email) > 1; 
 21. ავირჩიოთ მხოლოდ უნიკალური სახელები
 - პასუხი: SELECT DISTINCT name FROM users;
 22. ვიპოვოთ ცხრილში საშუალო მნიშვნელობა
 - პასუხი: SELECT AVG(salary) FROM workers;
 23. მოვიპოვოთ სია საშუალოზე მეტი მნიშვნელობებით
 - პასუხი: 
   SELECT * FROM workers
   WHERE salary > (SELECT AVG (salary) FROM workers);
 24. გადავარქვათ სახელი ცხრილს
 - პასუხი: ALTER TABLE first_table RENAME second_table;

   მონაცემთა ბაზების ოპერატორები
 -- SELECT- ამოაქვს ბაზიდან მონაცემები 
 -- SELECT * FROM Customers; = SELECT(არჩევა)*(ყველა)FROM(საიდან)Customers(ცხრილის სახელი);
 -- SELECT column1, column2 FROM table_name; = არჩევს column1, column2 სვეტებს table_name ცხრილიდან

 -- DISTINCT = განსხვავებული
 -- SELECT DISTINCT Country FROM Customers; = ირჩევს სვეტ Country-დან განსხვავებულ(არაიგივე) მნიშვნელობებს

 -- COUNT = მთვლელი
 -- SELECT COUNT(DISTINCT Country) FROM Customers; = გვაჩვენებს არაერთნაირთა რაოდენობას Country სვეტიდან

 -- WHERE = ფილტრავს მონაცემებს
 SELECT column1, column2, ... = არჩევს სვეტებს column1, column2
 FROM table_name              = ცხრილიდან table_name
 WHERE condition;             = სადაც მნიშვნელობაა condition

 SELECT * FROM Customers  = არჩევს ყველაფერს ცხრილიდან Customers
 WHERE Country='Mexico';  = სადაც სვეტში Country მნიშვნელობა ტოლია 'Mexico'

 SELECT * FROM Customers  = არჩევს ყველაფერს ცხრილიდან Customers
 WHERE CustomerID=1;      = სადაც სვეტში CustomerID მნიშვნელობა არის 1

 -- SQL AND(და), OR(ან) და NOT(არა) დაკავშირების ოპერატორები
 SELECT column1, column2, ... = არჩევს სვეტებს column1, column2
 FROM table_name              = ცხრილიდან table_name
 WHERE condition1 AND condition2 AND condition3 ...;  = სადაც მნიშვნელობაა condition1, condition2 და condition3

 SELECT * FROM Customers  = არჩევს ყველაფერს ცხრილიდან Customers
 WHERE Country='Germany' AND (City='Berlin' OR City='München');  = სადაც Country უდრის 'Germany' და (City უდრის 'Berlin' ან 'München') ოპერატორი "და" ნიშნავს ორივე პირობის შესრულებას, "OR" ნიშნავს ერთერთის მაინც.

 -- ORDER BY ASC|DESC = დალაგება ზრდადობით/კლებადობით
 SELECT * FROM Customers = არჩევს ყველაფერს ცხრილიდან Customers
 ORDER BY CustomerName asc; = ალაგებს სვეტ CustomerName-ის მიხედვით ზრდადი ალფავიტით
 ORDER BY Country ASC, CustomerName DESC; = ალაგებს 2 სვეტის მიხედვით

 -- INSERT INTO = ჩასმა სვეტებში
 INSERT INTO Customers (CustomerName, City, Country) = ჩასვამს ცხრილ Customers-ში 3 სვეტში შესაბამისად
 VALUES ('Cardinal', 'Stavanger', 'Norway'); = ჩასმული მნიშვნელობები შესაბამის სვეტებში(სხვაგან NULL-ებს ჩასვამს)

 -- NULL ოპერატორი ნული (IS NULL, IS NOT NULL)
 SELECT CustomerName, ContactName, Address = არჩევს 3 სვეტს
 FROM Customers                            = ცხრილიდან Customers
 WHERE Address IS NULL;                    = სადაც მნიშვნელობები ნულია

 -- UPDATE- აახლებს ბაზაში მონაცემებს
 UPDATE Customers = განაახლებს ცხრილს Customers
 SET ContactName = 'Alfred Schmidt', City= 'Frankfurt' ჩასვამს ამ მნიშვნელობებს სვეტებში ContactName და City
 WHERE CustomerID = 1;     იმ ხაზში სადაც CustomerID = 1

 UPDATE Customers = განაახლებს ცხრილს Customers
 SET ContactName='Juan' = ჩასვამს მნიშვნელობას სვეტში ContactName
 WHERE Country='Mexico'; იმ ხაზში სადაც Country='Mexico'
 
 -- DELETE- შლის ბაზიდან მონაცემებს
 DELETE FROM Customers WHERE CustomerName='Alfreds Futterkiste'; წაშლის იმ ხაზს სადაც CustomerName='Alfreds Futterkiste';

 -- TOP = ზედა
 SELECT TOP 3 * FROM Customers;    = არჩევს ზედა 3 ხაზს ცხრილიდან Customers
 SELECT * FROM Customers LIMIT 23; = არჩევს 23 ხაზს ცხრილიდან Customers
 SELECT * FROM Customers FETCH FIRST 3 ROWS ONLY; = არჩევს პირველ 3 ხაზს ცხრილიდან Customers
 SELECT TOP 50 PERCENT * FROM Customers;  = არჩევს ზედა 50% ხაზებს ცხრილიდან Customers

 -- COUNT() = ხაზების რაოდენობა, AVG() = რიცხვითი სვეტის საშუალო, SUM() = ჯამი სვეტში
 SELECT COUNT(column_name) = ითვლის რაოდენობას სვეტში column_name
 FROM table_name           = ცხრილიდან table_name
 WHERE condition;          = სადაც მნიშვნელობაა condition

 SELECT AVG(column_name) = ითვლის საშუალო მნიშვნელობას სვეტში column_name
 FROM table_name         = ცხრილიდან table_name
 WHERE condition;        = სადაც მნიშვნელობაა condition

 -- MIN, MAX = სვეტის უმცირესი და უდიდესი რიცხვი
 SELECT MIN(column_name) = არჩევს უმცირესს სვეტიდან 
 FROM table_name         = ცხრილიდან table_name
 WHERE condition;        = სადაც მნიშვნელობაა condition 
 
 -- LIKE აღნიშნავს შაბლონს, % არის რაიმე სიმბოლო ან სიმბოლოები, _ არის 1 სიმბოლო
 SELECT * FROM Customers         = ირჩევს ცხრილიდან  Customers
 WHERE CustomerName LIKE '%a';   = სადაც სვეტში CustomerName მნიშვნელობის ბოლო სიმბოლოა a  

 -- დამხმარე სიმბოლოები 
  % = Represents zero or more characters, bl%= finds bl, black, blue, and blob
  _ = Represents a single character, h_t= finds hot, hat, and hit
  []  = Represents any single character within the brackets, h[oa]t= finds hot and hat, but not hit
  ^ = Represents any character not in the brackets, h[^oa]t= finds hit, but not hot and hat
  - = Represents any single character within the specified range, c[a-b]t= finds cat and cbt

 -- IN Operator(სად) = WHERE column_name IN (value1, value2, ...);
 -- BETWEEN Operator(ორ მნიშვნელობას შორის მყოფი) = WHERE column_name BETWEEN value1 AND value2;
   
 -- JOIN 
 (INNER) JOIN: Returns records that have matching values in both tables
 LEFT (OUTER) JOIN: Returns all records from the left table, and the matched records from the right table
 RIGHT (OUTER) JOIN: Returns all records from the right table, and the matched records from the left table
 FULL (OUTER) JOIN: Returns all records when there is a match in either left or right table

 -- SQL-ში კომენტარების სინტაქსი: -- comments ან /* comments */  
  
 საიტი SQL სწავლისთვის https://www.w3schools.com/sql/sql_and_or.asp