Sobes.tech
Middle

Kokius testavimo atvejus galima sukurti duomenų bazių testavimui?

sobes.tech AI

Atsakymas iš AI

Duomenų bazės struktūros testavimas, įskaitant schemas, lenteles, indeksus, Constraints (PRIMARY KEY, FOREIGN KEY, UNIQUE, CHECK, NOT NULL):

Duomenų testavimas:

  • Tinkamumo patikrinimas po operacijų: INSERT, UPDATE, DELETE:
  • Duomenų atitikimo verslo logikai patikrinimas:
  • Duomenų vientisumo testavimas atliekant vienu metu vykdomas operacijas (konkurentinis prieigos):
  • Duomenų importo/eksporto testavimas:
  • Duomenų migracijos testavimas:

Saugojamų procedūrų, funkcijų ir trigerių testavimas:

  • Įvesties parametrų ir rezultatų testavimas:
  • Klaidos ir išimčių apdorojimo testavimas:
  • Duomenų įtakos testavimas lentelėse:
  • Našumo testavimas:

Našumo ir apkrovos testavimas:

  • Užklausų vykdymo laiko testavimas (SELECT):
  • Duomenų modifikavimo operacijų greičio testavimas (INSERT, UPDATE, DELETE):
  • Aukštos apkrovos metu duomenų bazės elgsenos testavimas:
  • Mastelio testavimas:

Saugumo testavimas:

  • Vartotojų teisių patikrinimas:
  • SQL-injekcijų pažeidimų testavimas:
  • Audito ir žurnalų įrašymo testavimas:

Regresijos testavimas po schemos ar kodo pakeitimų:

Duomenų atsarginės kopijos ir atkūrimo testavimas:

Constraints pavyzdžiai:

ID Atvejis pavadinimas Žingsniai Laukiamas rezultatas
1 PRIMARY KEY - dubliavimas Bandymas įterpti naują įrašą su ID, kuris jau egzistuoja lentelėje. Sistema turėtų išmesti klaidą dėl unikalumo pažeidimo PRIMARY KEY.
2 FOREIGN KEY - nuoroda į neegzistuojantį įrašą Bandymas įterpti įrašą priklausomoje lentelėje, nuoroda į ID, kurio nėra tėvų lentelėje. Sistema turėtų išmesti klaidą dėl užsienio rakto pažeidimo.
3 NOT NULL - NULL reikšmės įterpimas Įterpti įrašą, paliekant NULL toje srityje, kurioje nurodyta kaip NOT NULL. Sistema turėtų išmesti klaidą dėl NOT NULL apribojimo pažeidimo.
4 CHECK - neteisinga reikšmė Įterpti arba atnaujinti įrašą su reikšme, kuri neatitinka CHECK apribojimo (pvz., neigiamas amžius). Sistema turėtų išmesti klaidą dėl CHECK apribojimo pažeidimo.

SQL užklausos pavyzdys, skirtas pažeidžiamumų testavimui:

-- SQL-injekcijos galimybės patikrinimas įvesties lauke
SELECT * FROM users WHERE username = 'admin' AND password = '' OR '1'='1';

Veikimo laiko testavimui pavyzdinė užklausa:

-- Sudėtingo SELECT užklausos vykdymo laiko matavimas
EXPLAIN ANALYZE SELECT o.order_id, c.customer_name, p.product_name
FROM orders o
JOIN customers c ON o.customer_id = c.customer_id
JOIN order_items oi ON o.order_id = oi.order_id
JOIN products p ON oi.product_id = p.product_id
WHERE c.country = 'USA' AND o.order_date > '2023-01-01';