Știi momentul acela când raportezi un bug în JIRA, development‑ul îți spune „datele din baza de date sunt corecte" și tu nu poți să verifici singur? Frustrant, nu? Ei bine, exact pentru asta există SQL‑ul în trusa unui tester.
Nu ai nevoie de un curs de trei ani în administrare de baze de date. Ai nevoie de câteva zeci de query‑uri bine alese, pe care să le înțelegi și să le poți adapta pe loc, indiferent că lucrezi în banking, retail, automotive sau energie. MySQL este, în continuare, unul dintre cele mai răspândite sisteme de gestiune a bazelor de date pe proiectele românești, și este prezent în portofoliul a sute de companii cu care absolvenții noștri colaborează.
Hai să trecem prin cele 10 query‑uri pe care le vei folosi, fără exagerare, aproape în fiecare zi la job.
1. SELECT – prima ta unealtă de investigație
Totul pleacă de la SELECT. Vrei să vezi ce e în tabelă? Simplu:
SELECT * FROM orders WHERE status = 'pending';
Regula de aur: evită `SELECT *` în producție pe tabele mari. Specifică mereu coloanele de care ai nevoie. Nu e doar o chestie de performanță — e și un semn că știi ce cauți.
2. COUNT – câte înregistrări există, de fapt?
Un test case clasic: „Aplicația afișează 50 de produse pe pagină." Tu verifici în UI, dar vrei confirmarea din DB:
SELECT COUNT(*) FROM products WHERE category_id = 7 AND is_active = 1;
Dacă UI‑ul îți arată 48 și query‑ul returnează 50, ai un bug clar de raportat. Punct ochit, punct lovit.
3. DISTINCT – găsește duplicatele înainte să o facă clientul
Duplicatele sunt printre cele mai enervante bug‑uri în producție, mai ales în domenii precum ospitalitate sau electrocasnice, unde un SKU duplicat poate genera comenzi incorecte.
SELECT DISTINCT email FROM users ORDER BY email;
Sau, mai util, să numeri câte apariții are fiecare valoare
SELECT email, COUNT(*) as aparitii FROM users GROUP BY email HAVING COUNT(*) > 1;
Dacă returnează ceva, ai găsit ceva interesant de raportat.
4. JOIN – conectează tabelele și înțelege fluxul de date
Unul dintre momentele în care testerul crește cu adevărat este atunci când nu mai privește datele în silozuri, ci înțelege relațiile dintre tabele. Un INNER JOIN îți arată doar înregistrările cu corespondent în ambele tabele:
SELECT o.id, o.total, u.email
FROM orders o
INNER JOIN users u ON o.user_id = u.id
WHERE o.created_at >= '2024‑01‑01';
Un LEFT JOIN îți arată toate înregistrările din tabela stângă, inclusiv pe cele fără corespondent — ideal pentru a depista date orfane.
5. ORDER BY + LIMIT – testează ce vede utilizatorul
Aplicația afișează „cele mai recente 5 comenzi"? Tu verifici:
SELECT id, created_at, status FROM orders ORDER BY created_at DESC LIMIT 5;
Dacă ordinea din UI nu coincide cu ce returnează query‑ul, ai o problemă de logică în cod sau un index lipsă — ambele merită un ticket în JIRA.
6. WHERE cu condiții compuse – filtrează precis, ca un chirurg
Pe proiecte reale nu lucrezi cu date curate de training. Combinarea condițiilor AND, OR și NOT îți permite să izolezi exact scenariul pe care îl testezi:
SELECT * FROM transactions
WHERE amount > 1000
AND currency = 'RON'
AND status != 'completed'
AND created_at BETWEEN '2024‑06‑01' AND '2024‑06‑30';
Acest tip de query este de aur când validezi rapoarte financiare sau când pregătești date de test pentru un sprint nou.
7. UPDATE – setează starea pentru un test case specific
Da, testerul poate și trebuie să modifice date în mediul de test (niciodată în producție, niciodată fără backup!). Vrei să simulezi un user cu abonamentul expirat?
UPDATE users SET subscription_end = '2023‑01‑01' WHERE id = 42;
Înainte de orice UPDATE, rulează mai întâi un SELECT cu același WHERE, ca să știi exact ce vei modifica. Este o regulă pe care o vei repeta ca o mantră.
8. INSERT – creează date de test fără să depinzi de alții
Autonomia testerului crește dramatic când poate să-și genereze propriile date
INSERT INTO customers (name, email, phone, created_at)
VALUES ('Test User QA', 'qa_test@example.com', '0700000000', NOW());
Pe proiecte Agile, unde sprint‑urile se succed rapid, capacitatea de a-ți pregăti singur datele de test îți economisește ore întregi de așteptat după un coleg de development.
9. DELETE + TRUNCATE – curățenia după teste
La fel de important ca inserarea datelor este și ștergerea lor după ce ai terminat scenariul:
DELETE FROM customers WHERE email LIKE '%qa_test%';
TRUNCATE este mai rapid și resetează și auto‑increment‑ul, dar șterge tot din tabelă — folosește‑l cu cap, doar în medii de test izolate.
#FunFact: una dintre cele mai frecvente greșeli pe care le văd la juniorii care intră pe piață este un DELETE fără WHERE. Rulează SELECT mai întâi. Mereu.
10. EXPLAIN – înțelege de ce merge greu
Query‑urile lente sunt bug‑uri de performanță. Dacă o pagină se încarcă în 8 secunde și baza de date e de vină, EXPLAIN îți arată ce se întâmplă sub capotă:
EXPLAIN SELECT * FROM orders WHERE user_id = 101;
Dacă vezi „type: ALL" în output, înseamnă că MySQL face un full table scan — un semn că lipsesc index‑uri. Notează, raportează, adaugă în bug report contextul tehnic. Development‑ul te va respecta imediat mai mult.
De la query la mindset: ce schimbă SQL‑ul în cariera unui tester
Cunoașterea SQL nu este un „nice to have" — la A4Q Summit și DevTalks, temele despre calitate inginerească revin an de an cu același mesaj: testerul modern trebuie să înțeleagă datele, nu doar interfața. Pe piața locală — în banking, telecomunicații, retail sau automotive — aproape orice aplicație enterprise are în spate o bază de date relațională. MySQL, PostgreSQL, Oracle, SQL Server: sintaxa variază puțin, logica rămâne aceeași.
Când stăpânești query‑urile de mai sus, nu mai ești testerul care „dă click". Ești cel care validează end‑to‑end: de la UI prin API până în baza de date. Asta înseamnă bug‑uri depistate mai devreme, rapoarte mai credibile și o conversație mai echilibrată cu development‑ul.
Iar dacă vrei să mergi mai departe — să combini SQL cu Postman pentru validarea răspunsurilor API sau cu Selenium 4 / Playwright pentru teste end‑to‑end — ușa este deschisă.
Vrei să practici tot ce ai citit astăzi?
La Academia Testarii lucrăm hands‑on, cu baze de date reale, scenarii din industrie și feedback direct de la traineri cu experiență în proiecte din România și Europa. Am adus profesia de „Analist Testare Software" în COR (cod 351108) și continuăm să construim generația de testeri pe care companiile o caută.
Dacă ești la început de drum sau vrei să-ți completezi skill‑urile tehnice, intră pe academiatestarii.ro și descoperă cursurile noastre — de la fundamente de testare manuală până la automatizare și SQL aplicat în QA. 🚀
Ne auzim în curs. Abia aștept!
#DeAziEstiTester #AcademiaTestarii #SoftwareTesting #TestareSoftware #QualityAssurance
