Ce este testarea distructivă în software?

⚡ Rezumat inteligent

Testarea distructivă forțează în mod deliberat o aplicație software până când aceasta eșuează, expunând punctele exacte în care robustețea se deteriorează din cauza utilizării necorespunzătoare, a intrărilor nevalide și a unui comportament imprevizibil pe care verificările funcționale obișnuite nu îl ating niciodată.

  • 💥 Idee de bază: Aplicația este concepută să eșueze intenționat, astfel încât punctele sale de eșec să devină vizibile și măsurabile.
  • 🔎 Nu sunt necesare cerințe: Cunoașterea prealabilă a specificației este opțională, deși perfecționează strategia de testare.
  • 🇧🇷 Pereche opusă: Testarea nedistructivă merge pe calea cea bună; testarea distructivă o atacă din toate unghiurile greșite.
  • 🧰 Abordari: Analiza punctelor de defecțiune, evaluarea inter pares a testerilor, analiza afacerii și rulări exploratorii cu fișe de rulare.
  • 🧪 Metode reutilizate: Regresia, interfața, partiționarea prin echivalență, bucla și testarea de acceptare servesc toate obiective distructive.
  • 📉 Limite oneste: Acoperirea este greu de garantat, efortul este mare, iar rezultatele pot fi dificil de reprodus.

Ce este testarea distructivă în software cu metode și tehnici

Ce este testarea distructivă?

Testare distructivă este o metodă de testare software utilizată pentru a găsi puncte de eroare într-un program software. În cadrul acestei tehnici, o aplicație este făcută intenționat să eșueze, astfel încât robustețea acesteia să poată fi verificată și punctele sale de eroare identificate. Spre deosebire de metodele de testare care verifică ce ar trebui să facă aplicația, testarea distructivă examinează comportamentul imprevizibil al utilizatorului în cadrul aplicației.

Cunoașterea cerințelor inițiale nu este necesară pentru testarea distructivă. Cu toate acestea, unele cunoștințe ajută la dezvoltarea...ping o bună strategie de testare.

Ilustrația de mai jos surprinde ideea — testerul lucrează împotriva produsului, nu cu acesta.

Conceptul de testare distructivă: o aplicație împinsă deliberat până la punctul de eșec

De ce se fac teste distructive?

  • Ajută la înțelegerea comportamentului previzibil al software-ului atunci când acesta este utilizat necorespunzător.
  • Ajută la verificarea robusteței unui produs software.
  • Scoate la iveală defecte rare pe care utilizatorii obișnuiți nu le declanșează niciodată, dar care apar mai târziu în producție.

Testare distructivă vs. testare nedistructivă

Cele două abordări sunt complementare, nu rivale. Testarea nedistructivă — numită și testare pozitivă sau testare cu cale fericită — interacționează corect cu software-ul și lasă construcția intactă. Testarea distructivă face opusul: furnizează date nevalide și secvențe greșite până când ceva se defectează.

Aspect Testare distructivă Testarea nedistructivă
Scop Forțați eșecul aplicației Confirmați că aplicația funcționează conform specificațiilor
Intrare utilizată Invalid, malformat, în afara intervalului, în afara secvenței Date valide în intervalul așteptat
Întrebare răspunsă Unde și cum se rupe? Face ceea ce ar trebui?
Cunoștințe despre cerințe Opțional Esenţial
Costul tipic Nivel superior — exploratoriu și deschis Inferior — scriptat și repetabil
Rezultat Puncte de defecțiune, limite de gamă, comportament de recuperare Admite sau respinge specificația

Ce verificați în cadrul testelor distructive?

Testarea distructivă analizează ambele părți ale limitei comportamentale:

  • Comportamentul corect al software-ului
  • Comportament inadecvat al software-ului
  • Utilizare necorespunzătoare
  • Date de intrare necorespunzătoare
  • Date de ieșire adecvate

Două condiții trebuie respectate pe tot parcursul exercițiului:

  • Software-ul nu va procesa sau accepta niciodată date de intrare nevalide.
  • Indiferent de validitatea sau corectitudinea datelor de intrare, software-ul ar trebui să producă întotdeauna date de ieșire corecte.

Cum se face testarea distructivă?

Testarea distructivă implică numeroase activități, cum ar fi proiectarea unui set de scripturi de testare, executarea acelor scripturi, semnalarea erorilor, închiderea erorilor și furnizarea de metrici de succes sau eșec părților interesate la sfârșitul iterației.

Există numeroase moduri de a-l rula. Urmează câteva exemple.

  • Metoda de analiză a punctului de eșec: o prezentare generală a sistemului care evaluează ce ar putea merge prost în diferite puncte. Ajutor de la un analist de afaceri poate fi luată în considerare pentru această strategie.
  • Evaluare inter pares a testerilor: ia-ti cazuri de testare analizate sau revizuite de un coleg tester care este mai puțin familiarizat cu sistemul sau funcția.
  • Revizuirea afacerii a cazurilor de testare: Utilizatorii finali sau experții se gândesc adesea la scenarii valide pe care testerii le ratează, deoarece accentul testerului se concentrează pe cerințele declarate.
  • Efectuați teste exploratorii folosind fișe de execuție: testare exploratorie cu fișe de execuție se înregistrează ce a fost testat, se permite repetarea testelor și se menține acoperirea testelor sub control.
  • Folosește o altă sursă: Roagă pe altcineva să demonteze produsul software și analizează scenariile pe care le găsește.

Exemplu de testare distructivă

Luați în considerare ecranele de conectare și de profil ale unei aplicații bancare. O pasă distructivă ar funcționa în cazuri precum acestea:

  • Lipiți un șir de 5,000 de caractere într-un câmp limitat la 50 de caractere și confirmați că acesta îl respinge în loc să îl trunchieze în tăcere.
  • Introduceți litere, simboluri și valori negative într-un câmp cu sume numerice.
  • Întrerupeți secvența așteptată — deschideți direct pagina de confirmare a plății fără a finaliza pasul precedent.
  • Apăsați butonul Trimite în mod repetat și rapid pentru a vedea dacă sunt create înregistrări duplicate.
  • Deconectați rețeaua în timpul tranzacției și verificați dacă aplicația se recuperează corect sau lasă o înregistrare parțială.

Fiecare caz are o așteptare definită: un mesaj de validare clar, nicio corupere a datelor și nicio excepție netratată. Orice altceva este un punct de eroare care merită semnalat ca defect.

Metode de testare distructivă

Următoarele metode sunt utilizate în ingineria software pentru a îndeplini obiectivele de testare distructivă:

Tehnici de testare distructivă

Tehnicile de mai jos pot fi utilizate cu modificări:

Tehnicile adiacente care merită adăugate atunci când obiectivul este robustețea sunt testare negativă, testare stresanta, testarea de recuperare și testarea fuzz.

Avantajele și dezavantajele testării distructive

Compromisul merită menționat clar înainte ca tehnica să fie planificată într-o lansare.

Avantaje

  • Revpuncte de eșec EALS pe ​​care testarea bazată pe specificații nu le atinge niciodată.
  • Stabilește limite reale de acțiune, astfel încât produsul poate fi operat în interiorul acestora cu încredere.
  • Expune defecte rare care apar în producție la mult timp după lansare.
  • Verifică durabilitatea, recuperabilitatea și gestionarea erorilor în condiții de abuz.

Dezavantaje

  • Este deschisă prin natura sa, astfel încât acoperirea nu poate fi garantată sau măsurată cu ușurință.
  • Consumator de timp și dependent de experiența și creativitatea testerului.
  • Constatările pot fi dificil de reprodus fără o înregistrare atentă a pașilor utilizați.
  • Rulațiile prost controlate pot corupe datele de testare partajate, așa că este necesar un mediu izolat.

Întrebări frecvente

Se suprapun, dar diferă ca domeniu de aplicare. Testare negativă verifică intrările nevalide definite în raport cu gestionarea erorilor așteptate. Testarea distructivă este mai amplă și deschisă, căutând orice condiție care face ca aplicația să eșueze.

De obicei, ingineri QA cu experiență, susținuți de colegi nefamiliarizați cu modulul și de utilizatori din mediul de afaceri. Perspectiva externă contează, deoarece persoanele care au construit funcționalitatea tind să o testeze așa cum a fost concepută.

După ce suita funcțională este stabilă, deci eșecurile indică robustețea mai degrabă decât funcționalități neterminate. Multe echipe programează acest lucru în timpul testării sistemului și îl repetă înainte de lansările majore din... ciclul de viață al testării.

Modelele generează sarcini utile malformate, valori limită și secvențe de acțiuni neobișnuite la un volum pe care niciun tester nu îl poate egala, apoi le clasifică pe cele care au produs anomalii. Învățarea automată pe baza datelor privind defectele anterioare prezice, de asemenea, care module merită cel mai dur tratament.

Copilotul GitHub elaborează rapid generatoare de intrări, cazuri limită și rutine de demontare. Un tester decide în continuare ce moduri de defecțiune contează și dacă comportamentul observat este considerat un rezultat acceptabil.

Intrarea sau secvența exactă utilizată, eroarea observată, jurnalele și capturile de ecran, mediul și severitatea impactului. Metricile de succes sau eșec pentru iterație sunt transmise părților interesate, alături de... înregistrări de defecte.

Nu ar trebui să ajungă niciodată în producție. Rulați-l într-un mediu izolat cu date care pot fi restaurate, deoarece intrările intenționat nevalide și erorile forțate pot lăsa înregistrări parțiale a căror curățare este costisitoare.

Păstrați o foaie de execuție în timpul sesiunii, înregistrând fiecare acțiune și intrare în ordine. Repetați foaie dintr-o stare curată, apoi reduceți-o la cea mai scurtă secvență care încă declanșează eroarea.

Rezumați această postare cu: