state transition testing technique
Scopri cos'è il test di transizione di stato e come utilizzare il diagramma di transizione di stato:
Nel nostro ultimo articolo, abbiamo visto il ' Grafico causa ed effetto 'Tecnica di scrittura del caso di test. Oggi passiamo al prossimo metodo di scrittura del caso di test dinamico: la tecnica della transizione di stato.
Questo documento esplora l'espansione di questo concetto di test ad applicazioni più grandi, che non sono FSM nel loro insieme, ma alcuni dei loro componenti lo sono, in modo da adottare la sua caratteristica unica di 'essere stateful' e regole di transizione, con conseguenti molti vantaggi.
Test di transizione di stato
Il test di transizione di stato è un file Tecnica di test black-box , che può essere applicato per testare 'Macchine a stati finiti'.
Una 'macchina a stati finiti (FSM)' è un sistema che si troverà in diversi stati discreti (come 'pronto', 'non pronto', 'aperto', 'chiuso', ...) a seconda degli input o degli stimoli.
Gli stati discreti con cui il sistema finisce, dipende dalle regole di transizione del sistema. Cioè, se un sistema fornisce un output diverso per lo stesso input, a seconda del suo stato precedente, allora è un sistema a stati finiti.
Inoltre, se ogni transazione viene testata nel sistema, viene chiamata copertura '0-switch'. Se il test copre 2 coppie di transazioni valide, si tratta di una copertura '1-switch' e così via.
Cosa imparerai:
Qual è la tecnica del test di transizione statale?
La tecnica di transizione di stato è una tecnica di verifica dinamica, che viene utilizzata quando il sistema è definito in termini di un numero finito di stati e le transizioni tra gli stati sono governate dalle regole del sistema.
In altre parole, questa tecnica viene utilizzata quando le caratteristiche di un sistema sono rappresentate come stati che si trasformano l'uno nell'altro. Le trasformazioni sono determinate dalle regole del software. La rappresentazione pittorica può essere mostrata come:
Quindi qui vediamo che un'entità transizioni dallo Stato 1 allo Stato 2 a causa di alcuni ingresso condizione, che porta a un evento e risultati in azione e infine dà il produzione .
Per spiegarlo con un esempio:
Visiti un bancomat e ritiri $ 1000. Ottieni i tuoi soldi. Ora esaurisci il saldo e fai esattamente la stessa richiesta di prelevare $ 1000. Questa volta ATM si rifiuta di darti i soldi a causa del saldo insufficiente. Quindi, qui il file transizione , che ha causato il cambiamento di stato è il ritiro precedente
Definizione del test di transizione di stato
Avendo compreso cos'è la Transizione di Stato, possiamo ora arrivare a una definizione più significativa per il test di Transizione di Stato. Quindi, è una sorta di test black-box in cui il tester deve esaminare il comportamento di AUT (Application Under Test) rispetto a varie condizioni di input date in una sequenza.
Il comportamento del sistema viene registrato sia per i valori di prova positivi che per quelli negativi.
Quando utilizzare il test di transizione dello stato?
Il test di transizione di stato può essere impiegato nelle seguenti situazioni:
come aprire i file bin su Windows 8
- Quando l'applicazione sottoposta a test è un sistema in tempo reale con diversi stati e transizioni compresi.
- Quando l'applicazione dipende da eventi / valori / condizioni del passato.
- Quando è necessario testare la sequenza degli eventi.
- Quando l'applicazione deve essere testata rispetto a un insieme finito di valori di input.
Quando non utilizzare i test di transizione di stato?
Non dovresti fare affidamento sui test di transizione di stato nelle seguenti situazioni:
- Quando il test non è richiesto per le combinazioni di input sequenziali.
- Quando è necessario testare diverse funzionalità dell'applicazione (più simile al test esplorativo).
Esempio di test di transizione di stato nel test del software
Nello scenario pratico, ai tester vengono normalmente forniti i diagrammi di transizione di stato e ci viene richiesto di interpretarli.
Questi diagrammi sono forniti dagli analisti aziendali o da uno stakeholder e li utilizziamo per determinare i nostri casi di test.
Consideriamo la situazione seguente:
Nome del software - Manage_display_changes
Specifiche - Il software risponde alle richieste di input per cambiare la modalità di visualizzazione per un dispositivo di visualizzazione dell'ora.
La modalità di visualizzazione può essere impostata su uno dei quattro valori:
- Due corrispondenti alla visualizzazione dell'ora o della data.
- Gli altri due quando si modifica l'ora o la data.
I diversi stati sono i seguenti:
- Cambia modalità (CM): L'attivazione di questo farà sì che la modalità di visualizzazione si sposti tra 'visualizzazione ora (T)' e 'visualizzazione data (D)'.
- Ripristina (R): Se la modalità di visualizzazione è impostata su T o D, un 'reset' farà sì che la modalità di visualizzazione venga impostata sulle modalità 'modifica ora (AT)' o 'modifica data (AD)'.
- Time Set (TS): L'attivazione di questo farà ritornare la modalità di visualizzazione su T da AT.
- Data Set (DS): L'attivazione di questo farà tornare la modalità di visualizzazione su D da AD.
Diagramma di transizione di stato
Ora passiamo a interpretarlo:
Qui:
# 1) Vari Stati sono:
- Tempo di visualizzazione (S1),
- Cambia ora (S3),
- Visualizza data (S2) e
- Modifica data (S4).
# 2) I vari input sono:
- Cambia modalità (CM),
- Ripristina (R),
- Time Set (TS),
- Data Set (DS).
# 3) I vari output sono:
- Alter Time (AT),
- Tempo di visualizzazione (T),
- Visualizza data (D),
- Alter Date (AD).
# 4) Gli Stati modificati sono:
- Tempo di visualizzazione (S1),
- Cambia ora (S3),
- Visualizza data (S2) e
- Modifica data (S4).
Passo 1: Scrivi tutti gli stati iniziali. Per questo, prendi uno stato alla volta e guarda quante frecce ne escono.
- Per lo stato S1, ci sono due frecce che escono da esso. Una freccia indicherà S3 e un'altra freccia indicherà S2.
- Per lo stato S2: ci sono 2 frecce. Uno andrà allo stato S1 e l'altro andrà a S4
- Per lo stato S3: ne esce solo 1 freccia, andando allo stato S1
- Per lo stato S4 - Ne esce solo 1 freccia, andando allo stato S2
Mettiamolo sul nostro tavolo:
Poiché per gli stati S1 e S2 sono in uscita due frecce, l'abbiamo scritto due volte.
Passo 2: Per ogni stato, annota i loro stati di transizione finali.
- Per lo stato S1 - Gli stati finali sono S2 e S3
- Per lo stato S2 - Gli stati finali sono S1 e S4
- Per lo stato S3 - Lo stato finale è S1
- Per lo stato S4, lo stato finale è S2
Mettilo sul tavolo come uno stato di output / risultante.
Passaggio 3: Per ogni stato iniziale e il corrispondente stato finale, annotare le condizioni di ingresso e uscita
- Affinché lo stato S1 passi allo stato S2, l'input è Change Mode (CM) e l'output è Display Date (D) mostrato di seguito:
In modo simile, annotare le condizioni di ingresso e il suo output per tutti gli stati come segue:
Passaggio 4:
Ora aggiungi l'ID del test case per ogni test mostrato di seguito:
Ora convertiamolo in casi di test formali:
In questo modo è possibile derivare tutti i restanti casi di test. Presumo l'altro attributi dei casi di test come precondizioni, gravità, priorità, ambiente, build, ecc. sono inclusi anche nel test case.
Riassumendo ancora una volta i passaggi:
- Identificare gli stati iniziali e il loro stato finale in base alle linee / frecce che escono dallo stato iniziale.
- Per ogni stato iniziale, trova la condizione di input e il risultato di output
- Contrassegna ogni set come un caso di test separato.
Altri esempi di tecnica di transizione di stato
Ecco un altro esempio della tecnica del test di transizione dello stato in applicazioni software più grandi.
Descrizione:
' Stateful Functional Testing ' approccio può essere utilizzato per testare parti o componenti specifici dell'applicazione, con la caratteristica di una macchina a stati finiti (FSM).
miglior decifratore DVD per Windows 10
Fasi di implementazione:
# 1) Il primo passo nell'implementazione del 'Stateful Functional Testing' è identificare i diversi componenti / parti dell'applicazione che possono essere classificati come FSM. Gli input, gli stati e gli output vengono attentamente monitorati per ciascuno di questi FSM.
#Due) Il passo successivo sarebbe sviluppare casi di test per questi FSM basati su regole di transizione, input, output e stati di transizione.
# 3) Il terzo passaggio consiste nell'integrare il test di questi componenti con altri componenti di interfaccia per convalidare l'applicazione end-to-end.
Ciò può essere spiegato mediante un esempio di un'applicazione denominata 'Progetto casa', che traccia la costruzione di una casa, con vari componenti dell'applicazione come l'approvazione dell'architettura della casa, la registrazione del lotto e della casa, la selezione dell'imprenditore edile , approvazione del mutuo per la casa, ecc.
Per esempio,
Prenderemo in considerazione la sperimentazione di una componente FSM della domanda 'Progetto casa': l'approvazione del prestito immobiliare.
Domanda di approvazione del prestito immobiliare (HLA)
L'applicazione HLA verrà eseguita da un utente indipendente per l'elaborazione del prestito, che elabora la richiesta di prestito. Di seguito vengono descritte in dettaglio le diverse fasi dell'elaborazione della domanda:
1.1.1 Passaggio 1: raccolta di documenti
Il primo passo è la raccolta dei documenti rilevanti per la richiesta del prestito come indicato nella tabella sottostante. Sono le 'condizioni' per un'applicazione di successo. Il richiedente raccoglie i documenti richiesti e li applica al mutuo casa.
L'utente che elabora il prestito riconosce la ricezione dei documenti e trasferisce lo stato della richiesta di prestito (ovvero lo stato della componente della domanda HLA) allo stato 'Applicato'.
Tabella 1: Elenco dei documenti
1.1.2 Fase 2: valutazione del prestito
In questa fase, il prestatore valuta la richiesta di prestito per determinare se soddisfa i suoi requisiti di credito. I documenti giustificativi vengono verificati in questo momento.
Tabella 2: criticità dei documenti
Vengono convalidati i documenti necessari per la valutazione, ovvero le “condizioni” da validare in questa fase. A ciascuna condizione è associata una criticità (indicata come 'Y' nella tabella sopra). Una volta soddisfatte tutte le condizioni critiche richieste, l'applicazione passa allo stato 'Confermato', ovvero il componente dell'applicazione HLA è nello stato 'Confermato'.
Punto da notare:
# 1) Questo principio introduce una struttura e un'obiettività nelle condizioni di test e nelle definizioni di 'stato' del sistema .
Inoltre, non tutte le 'condizioni' per la convalida del sistema sono fondamentali per il raggiungimento di questo stato 'Confermato'. Nella tabella sopra, 4 condizioni sono contrassegnate come 'Non critico' affinché l'applicazione raggiunga lo stato 'Confermato'.
#Due) Il numero di convalide può essere ridotto in modo ottimale, a seconda del rischio o della criticità delle regole richieste per ogni stato. Ciò ridurrà significativamente il tempo necessario per l'esecuzione del test e allo stesso tempo non comprometterà la qualità del test.
# 3) Questo non è solo utile per testare i singoli componenti, ma anche per testare il sistema end to end.
# 4) Inoltre, molto utile durante la creazione di suite di test di regressione.
Quindi, in questa fase, è un tipo di test a commutazione 0. Ma le fasi successive di approvazione possono essere tipi di convalida a 1 o 2 interruttori per quella fase.
Per esempio, Il 'certificato di matrimonio' potrebbe non essere troppo rilevante in questa fase, ma nelle ultime fasi dell'approvazione, quando viene considerato il rischio che il richiedente paghi l'IME, il certificato di matrimonio può diventare rilevante, cioè se anche il coniuge è impiegato , riduce il rischio e, se non impiegato, aumenta il rischio.
# 5) Il principio di cui sopra può essere utilizzato per espandere le condizioni di prova a seconda del requisito del componente in quella fase.
1.1.3 Passaggio 3: approvazione condizionale
Lo stato attuale dell'applicazione è 'Confermato'. L'istituto di credito darebbe 'approvazione condizionale' per il processo di prestito per andare avanti. Sono necessarie ulteriori convalide per spostare l'applicazione HLA nello stato 'Approvato'.
1.1.4 Passaggio 4: approvazione
In questa fase vengono condotte convalide critiche:
- Valutazione da parte del Lenders Mortgage Insurance (LMI): ciò comporterebbe 2 o più convalide per la genuinità della proprietà.
- Il prestatore può richiedere informazioni che non sono state fornite durante la fase di “Conferma”.
Una volta soddisfatte le condizioni di cui sopra, l'applicazione passa allo stato 'Approvato'. L'autorità finale del processo di approvazione può verificare la credibilità del richiedente il prestito chiedendo maggiori dettagli o non può chiedere se gli altri documenti del richiedente sono conclusivi. Cioè, sarebbero necessari più input da diversi componenti dell'applicazione principale per dimostrare la validità .
# 6) In altre parole, potrebbero essere necessarie (o ridotte) più convalide per la transizione a uno stato diverso a seconda delle condizioni di ingresso al componente da altri componenti dell'applicazione.
Il diagramma seguente mostra il processo di approvazione.
Figura 1: processo di approvazione del prestito
Rischi e sfide
- Per applicazioni di grandi dimensioni, una conoscenza approfondita dell'applicazione è essenziale per suddividere l'applicazione in diversi componenti logici per consentire la categorizzazione come FSM e componenti regolari. Ciò potrebbe richiedere tempo costoso alle PMI.
- Non tutte le applicazioni avrebbero la fattibilità di questo tipo di categorizzazione FSM.
- Poiché i componenti FSM interagiscono con i componenti regolari nell'applicazione, gli input agli FSM da componenti differenti richiedono un'attenta pianificazione ed esecuzione.
Vantaggi del test di transizione di stato
- Con questa tecnica, utilizzando una rappresentazione grafica o tabellare del comportamento del sistema, il tester acquisisce familiarità con la progettazione dell'applicazione e si sente facile coprire e progettare i test in modo efficace ed efficiente.
- Anche gli stati non pianificati o non validi del sistema vengono coperti utilizzando questa tecnica.
- Utilizzando il diagramma di transizione di stato, è facile verificare se tutte le condizioni sono coperte.
Svantaggi del test di transizione statale
- Questa tecnica non può essere utilizzata per sistemi a stati non finiti.
- Definire tutti gli stati possibili per sistemi grandi e complessi è un compito piuttosto complicato.
Conclusione
Il test di transizione di stato è un approccio utile quando è necessario testare diverse transizioni di sistema per sistemi a stati finiti.
Il test di un'applicazione con il concetto di 'Stateful Functional Testing' può fornire alle organizzazioni di test un approccio di test unico per testare applicazioni complesse, che aumenterebbe la produttività dell'esecuzione dei test senza compromettere la copertura dei test.
Il test di transizione di stato è un approccio di test unico per testare applicazioni complesse, che aumenterebbe la produttività dell'esecuzione dei test senza compromettere la copertura dei test.
La limitazione di questa tecnica è che non può essere utilizzata fino a quando ea meno che il sistema in prova non abbia solo stati finiti.
Lettura consigliata
- Che cos'è la tecnica di test basata sui difetti?
- Che cos'è la tecnica di test sugli array ortogonali (OATS)?
- Test funzionale vs test non funzionale
- Che cos'è il test di confronto (impara con esempi)
- Che cos'è il test di mutazione: tutorial con esempi
- Che cos'è il test di resistenza nel test del software (esempi)
- Che cos'è il test end-to-end: Framework di test E2E con esempi
- Migliori strumenti di test del software 2021 (Strumenti di automazione del test QA)