Test del software per macchine a stati

Molte tipologie di test del software hanno acquisito importanza, poiché gli sviluppatori cercano modi per migliorare la qualità e rispettare le scadenze dei progetti: revisione del codice, test unitari, test di regressione, test beta, sviluppo guidato dai test e altro ancora. Indipendentemente dagli obiettivi di un progetto o dal linguaggio del codice sorgente utilizzato, è ampiamente riconosciuto che prima viene rilevato un difetto, più facile, economico e rapido sarà risolverlo. Generazione di codice da Diagrammi a stati UML, una nuova funzionalità introdotta in Altova UModel 2011 La versione 2 può essere utilizzata per validare la logica concettuale nelle prime fasi dello sviluppo del progetto.

Progettazione pratica rappresentata in un diagramma a stati

Un esempio incluso con UModel presenta un diagramma di macchina a stati semplice e realistico, corredato da una piccola applicazione di test che potete eseguire per constatare di persona quanto sia facile testare la logica di un progetto. Il diagramma della macchina a stati nel progetto AirCondition.ump, presente nella cartella degli esempi di UModel 2011, descrive il funzionamento di un tipico sistema di riscaldamento e condizionamento.

Il sistema include un pulsante di accensione, visibile sul lato sinistro, che permette di passare dallo stato di spegnimento. Include inoltre una funzione "modeSelect" che permette di scegliere tra riscaldamento e raffreddamento, una funzione "speedSelect" per la ventola e un pulsante di standby che mette il sistema in modalità standby, come mostrato sul lato destro. La cartella del progetto di esempio contiene tutto il codice generato per il diagramma da UModel, in Java, C# e Visual Basic. Per provare la versione Java, è sufficiente utilizzare il comando javac STMTester.java per compilare il codice e java STMTester per eseguirlo. L'applicazione di test visualizza un pannello di controllo simulato, con finestre informative sull'unità di riscaldamento e condizionamento. I pulsanti di controllo sono disposti nella parte superiore, lo stato attuale è descritto nella prima finestra e i messaggi di output generati dalle modifiche del sistema appaiono nella seconda finestra.

Come mostrato sopra, il sistema si avvia nello stato "spento", la modalità è impostata su "riscaldamento" e la ventola è disattivata. Prima di utilizzare il sistema, potrebbe essere utile ridimensionare il pannello di controllo e il diagramma a stati per seguire le azioni dell'applicazione di test direttamente nel diagramma, come mostrato nell'immagine ridimensionata qui sotto.

Gestire la macchina a stati

Quando si preme il pulsante di alimentazione, la finestra dello stato corrente viene aggiornata e una descrizione dettagliata delle operazioni eseguite viene visualizzata come "Evento 1" nella finestra dei messaggi di debug.

Se fa caldo, potremmo voler cambiare la modalità in "raffreddamento" e aumentare la velocità della ventola. Possiamo farlo cliccando sui pulsanti "modalità" e "velocità". La finestra "stato attuale" si aggiorna ad ogni clic, e gli eventi 2 e 3 vengono aggiunti alla finestra dei messaggi di output.

Ora possiamo vedere come l'applicazione di test ci permette di verificare completamente la logica del nostro diagramma a stati macchina, cliccando su ogni possibile sequenza di selezioni dei pulsanti per vedere se producono i risultati attesi. Ad esempio, se mettiamo l'unità in modalità Standby (Evento 4 di seguito), e poi premiamo il pulsante "speedSelect", possiamo vedere nei messaggi di output per l'Evento 5 che non si verifica alcun cambiamento di stato nel sottostato chiamato "RegionSpeed". Confrontate l'Evento 5 con l'Evento 3 nella finestra dei messaggi di output, come mostrato di seguito.

Ora che il sistema è in modalità di attesa e non abbiamo bisogno di riscaldamento o raffreddamento, risparmiamo energia premendo il pulsante di alimentazione per spegnerlo.

Aspetta un attimo, sembra che non sia successo nulla. Non c'è stata alcuna transizione nell'Evento 6, e lo stato corrente nella finestra superiore è ancora "Standby"! Osservando il diagramma del sistema a stati, possiamo vedere che l'unico modo per uscire dalla modalità "Standby" è premere nuovamente il pulsante "Standby". È davvero questo il comportamento che un utente medio si aspetterebbe? Che il pulsante di alimentazione non spenga il sistema dalla modalità "Standby"?

Immaginate quanto potrebbe costare risolvere questo problema se fosse stato individuato molto più tardi, durante lo sviluppo del prodotto, quando il prototipo veniva testato da un'agenzia di controllo! Ecco una sfida che proponiamo ai nostri lettori: come progettereste un percorso più diretto dallo stato di "standby" allo stato di "spento"?

Testare i propri automi a stati

È possibile utilizzare i progetti di esempio di generazione del codice per macchine a stati UModel come modelli per creare applicazioni di test per i propri progetti. Si consiglia di sfruttare la funzionalità di UModel che crea automaticamente operazioni all'interno di una classe, man mano che si aggiungono nomi di operazioni alle transizioni nella macchina a stati.

Inoltre, il sistema di aiuto di UModel include informazioni dettagliate sulla generazione di codice a partire dai diagrammi a stati, e utilizza anche il file di progetto "AirCondition.ump" come esempio.

Scoprite di persona come potete migliorare lo sviluppo dei progetti testando la logica dei vostri diagrammi di macchine a stati con Altova UModel – scaricate oggi stesso una versione di prova gratuita di 30 giorni!