Testarea tranziției de stare cu exemplu

⚡ Rezumat inteligent

Testarea tranziției de stare este o tehnică de tip „cutie neagră” care validează modul în care o aplicație se mișcă între stări pe măsură ce condițiile de intrare se schimbă. Acest tutorial explică cele patru părți ale diagramei, diferența dintre diagramele de stare și tabele și exemple practice de ATM și conectare pentru testeri.

  • 🔄 Ideea de bază: Tehnica verifică comportamentul sistemului atunci când aceeași intrare produce ieșiri diferite pe baza unor evenimente anterioare (un sistem cu stare finită).
  • 🧩 Patru elemente constitutive: Fiecare model este construit din Stări, Tranziții, Evenimente și Acțiuni.
  • 🗺️ Diagramă vs. tabel: Diagramele dezvăluie tranziții valide; tabelele expun tranziții nevalide.
  • 🏧 Exemple practice: Blocarea codului PIN al bancomatului și autentificarea la rezervarea zborului demonstrează o acoperire reală.
  • 🤖 Activare prin inteligență artificială: Instrumentele de inteligență artificială generează automat modele de stare din cerințe și semnalează tranzițiile lipsă sau nevalide.

Testarea tranziției de stat — State

Ce este testarea tranziției de stat?

Testarea tranziției de stat este o tehnică de testare de tip „cutie neagră” în care modificările condițiilor de intrare provoacă modificări de stare sau modificări de ieșire în aplicația testată (AUT). Aceasta ajută la analiza comportamentului unei aplicații pentru diferite condiții de intrare, iar testerii pot furniza valori de intrare pozitive și negative în timp ce înregistrează comportamentul sistemului.

Se bazează pe modelul pe care sunt construite sistemul și testele. Orice sistem în care obțineți o ieșire diferită pentru aceeași intrare - în funcție de ce s-a întâmplat anterior - este un sistem cu stări finite. Tehnica de testare a tranziției de stare este utilă acolo unde trebuie să testați diferite tranziții de sistem.

Când se utilizează testarea tranziției de stare

  • Când un tester testează aplicația pentru un set finit de valori de intrare.
  • Când testerul testează o secvență de evenimente care apar în AUT, permițând verificarea comportamentului aplicației pentru o secvență de valori de intrare.
  • Când sistemul testat depinde de evenimente sau valori din trecut.

Când să nu te bazezi pe testarea tranziției de stat

  • Când testarea nu este efectuată pentru combinațiile de intrări secvențiale.
  • Când testarea vizează diferite funcționalități, cum ar fi testarea exploratorie.

Patru părți ale unei diagrame de tranziție de stare

Există patru componente principale ale modelului de tranziție statală, descrise mai jos.

1) Statele pe care software-ul ar putea-o atinge.

Testarea tranziției de stat — State

2) Tranziție de la o stare la alta.

Testarea tranziției de stat — Tranziție

3) Evenimente care declanșează o tranziție, cum ar fi închiderea unui fișier sau retragerea de bani.

Testarea tranziției de stat — Evenimente

4) Acțiuni care rezultă dintr-o tranziție, cum ar fi un mesaj de eroare sau primirea de bani.

Testarea tranziției de stat — Acțiuni

Diagrama de tranziție a stării vs. tabelul de tranziție a stării

Există două modalități principale de a reprezenta sau proiecta tranzițiile de stare: diagrama tranzițiilor de stare și tabelul de tranziții de stare.

Aspect Diagrama de tranziție a stărilor Tabel de tranziție de stat
Numit si Diagramă / Grafic de stare Tabel de stat
Reprezentare Boxes pentru stări, săgeți pentru tranziții Grilă de stări (rânduri) și evenimente (coloane)
Cel mai bun pentru identificare Tranziții valide Tranziții nevalide
Fiecare celulă arată - Starea atinsă după producerea unui eveniment

Cum se face o tranziție de stat (exemple)

Exemplul 1: Blocarea codului PIN al bancomatului

Să luăm în considerare o funcție de sistem ATM în care, dacă utilizatorul introduce o parolă nevalidă de trei ori, contul este blocat.

În acest sistem, dacă utilizatorul introduce o parolă validă în oricare dintre primele trei încercări, utilizatorul este autentificat cu succes. Dacă utilizatorul introduce parola invalidă la prima sau a doua încercare, i se cere să o reintroducă. În cele din urmă, dacă utilizatorul introduce parola greșită a treia oară, contul este blocat.

Diagrama de tranziție a stării (Exemplul 1)

Diagrama de tranziție a stării PIN a ATM-ului

În diagramă, ori de câte ori utilizatorul introduce codul PIN corect, acesta trece în starea Acces Permis. Dacă introduce parola greșită, trece la următoarea încercare, iar dacă o face a treia oară, se ajunge în starea Cont Blocat.

Tabel de tranziție a stărilor (Exemplul 1)

Stat PIN corect Cod PIN incorect
S1) Începeți S5 S2
S2) Prima încercare S5 S3
S3) A doua încercare S5 S4
S4) A 3-a încercare S5 S6
S5) Acces acordat - -
S6) Cont blocat - -

În tabel, când utilizatorul introduce codul PIN corect, starea trece la S5 (Acces Permis). Dacă utilizatorul introduce o parolă greșită, trece la starea următoare, iar după a treia încercare greșită ajunge la starea Cont Blocat.

Exemplul 2: Autentificare pentru rezervarea zborului

În ecranul de conectare pentru rezervarea zborului, trebuie să introduceți numele și parola corecte ale agentului pentru a accesa cerere de rezervare a zborului.

Grafic de tranziție a stării rezervării zborului

Graficul de tranziție de stat

Aplicația permite trei încercări; dacă utilizatorul introduce parola greșită la a patra încercare, sistemul închide automat aplicația.

Graful de stări vă ajută să determinați tranzițiile valide care vor fi testate. Testarea atât cu parola corectă, cât și cu una incorectă este obligatorie, iar pentru scenarii de testare, conectarea la a 2-a, a 3-a sau a 4-a încercare ar putea fi testată fiecare. Puteți utiliza un tabel de stări pentru a determina tranzițiile de sistem nevalide.

Tabel de tranziție a stării rezervării zborului

Într-un tabel de stări, toate stările valide sunt listate în stânga, iar evenimentele care le provoacă în partea de sus. Fiecare celulă arată starea în care trece sistemul atunci când are loc evenimentul. De exemplu, în starea S1, o parolă corectă vă duce la S6 (Acces acordat); o parolă greșită la prima încercare vă duce la S3 (a doua încercare). În mod similar, puteți determina toate celelalte stări.

Două stări nevalide sunt evidențiate folosind această metodă. Să presupunem că vă aflați în starea S6 (deja autentificat) și deschideți o altă instanță de rezervare de zbor și introduceți parole pentru același agent. Răspunsul sistemului pentru un astfel de scenariu trebuie testat.

Avantajele și dezavantajele tehnicii de tranziție de stat

Avantaje Dezavantaje
Oferă o reprezentare picturală sau tabelară a comportamentului sistemului, ajutăping acoperă testerul și înțelege sistemul eficient. Nu se poate baza pe el în orice moment — de exemplu, nu se potrivește sistemelor care nu sunt finite sau secvențiale.
Permite testerului să verifice dacă toate condițiile sunt acoperite și dacă rezultatele sunt înregistrate. Necesită definirea tuturor stărilor posibile. Acest lucru funcționează pentru sisteme mici, dar nu este posibil pentru cele mai mari din cauza creșterii exponențiale a numărului de stări.

Întrebări frecvente

Testarea tranziției de stare este o tehnică de tip „cutie neagră” care verifică modul în care un sistem se mișcă între stări pe măsură ce condițiile de intrare se schimbă. Este potrivită pentru sistemele cu stări finite, unde aceeași intrare poate produce ieșiri diferite în funcție de evenimentele anterioare.

Cele patru părți sunt Stări (condițiile în care se poate afla software-ul), Tranziții (mișcarea între stări), Evenimente (declanșatori care provoacă o tranziție) și Acțiuni (rezultatele unei tranziții, cum ar fi un mesaj sau o ieșire).

O diagramă de tranziție a stărilor folosește casete și săgeți și este cea mai potrivită pentru identificarea tranzițiilor valide. Un tabel de stări listează stările în raport cu evenimentele dintr-o grilă și este cel mai potrivit pentru detectarea tranzițiilor nevalide.

Evitați acest lucru atunci când intrările nu sunt secvențiale sau când faceți teste exploratorii ale unor funcționalități variate. De asemenea, este deficitar pentru sistemele foarte mari, deoarece numărul de stări crește exponențial.

Acoperirea cu 0 comutatoare testează fiecare tranziție validă o singură dată. Acoperirea cu 1 comutator testează fiecare pereche de tranziții consecutive. O acoperire mai mare a comutatoarelor găsește mai multe defecte legate de secvență, dar necesită mai multe cazuri de testare.

Este o tehnică de tip „cutie neagră”. Cazurile de testare sunt derivate din comportamentul extern așteptat al stărilor și tranzițiilor, fără a fi nevoie de cunoașterea codului sursă intern al aplicației.

Instrumentele de inteligență artificială citesc cerințele și construiesc automat modele de stare, apoi generează cazuri de testare care acoperă căi valide și tranziții de muchie. Acest lucru reduce efortul de modelare manuală și îmbunătățește acoperirea secvențelor complexe.

Da. IA poate analiza un model de stare și poate semnala tranzițiile lipsă, inaccesibile sau nevalide, comparându-l cu modelele de comportament așteptate.ping Testerii observă lacune pe care recenziile manuale ale tabelelor le trec adesea cu vederea.

Rezumați această postare cu: