UNA GUIDA PER SVILUPPARE SISTEMI ELETTRONICI (QUARTA E ULTIMA PARTE): TESTING E PROVING

TESTING E PROVING

Dr. Val Lynch, CEO bei AND Technology Research
Steve Norman, Manager, Global Ecosystems, Renesas Electronics Europe
Quello del testing è spesso considerato come un compito da svolgere alla fine di ogni fase di un processo di sviluppo o una volta che la progettazione e lo sviluppo sono stati completati. Adottare questo approccio, tuttavia, può facilmente portare al fallimento del progetto. I prodotti che non soddisfano le aspettative stabilite o i problemi di qualità che sorgono a causa della mancanza di test approfonditi non sono difficili da trovare, e possono addirittura arrivare a causare danni all’azienda stessa o alla reputazione del marchio. L’unico modo per evitare che ciò accada è garantire che i test siano una priorità in tutte le attività di pianificazione e sviluppo. Per definire lo scenario di questo documento, fornisco tre definizioni.
Convalida: Il processo per dimostrare che il lavoro intrapreso soddisfa le aspettative.
Verifica: Il processo per dimostrare che il lavoro intrapreso è stato portato a termine seguendo dei requisiti specifici.
Conformità: Il processo per dimostrare che un prodotto o un servizio è stato testato per un particolare livello o standard definito. I requisiti di conformità regolatoria e legale sono spesso pre-impostati per lo sviluppo di sistemi elettronici.
Quando si valutano i requisiti per qualsiasi attività di sviluppo, la prima domanda da porsi e da risolvere dovrebbe essere: “Come si potrà dimostrare?” Rispondere a questa domanda aiuterà a stabilire la rotta da seguire.
Testing e prove comportano la misurazione della qualità di un progetto e la sua implementazione. Ciò determinerà se un prodotto è pronto per la produzione ed, eventualmente, il suo conseguente lancio sul mercato. Serie di test applicati durante le prime fasi di progettazione consentiranno di risparmiare tempo e denaro durante le fasi successive. Questi test possono, inoltre, evidenziare gli eventuali errori commessi prima che abbiano la possibilità di propagarsi e impedire che se ne verifichino di nuovi in seguito.
In particolare, l’applicazione di test ai requisiti e ai documenti delle specifiche diminuisce il rischio di apparizione di problemi sconosciuti che, verificandosi durante fasi inoltrate del processo di progettazione, risultano costosi da correggere e possono compromettere le tempistiche.
Al fine di determinare il tipo e l’entità dei test da intraprendere, è importante che siano pienamente comprese le aspettative relative al prodotto e che siano esplorati i rischi associati all’eventualità che il suddetto prodotto non soddisfi le aspettative richieste. Ad esempio, un dispositivo medico che fornisce informazioni che possono influenzare la tipologia di futuri trattamenti prescritti implicherà un livello di rischio maggiore rispetto a un dispositivo analogo utilizzato per la raccolta di informazioni a scopo personale. Ciò non significa che la qualità dei test intrapresi su prodotti meno “rischiosi” dovrebbe essere minore, ma solo che per pianificare il giusto tipo di test e copertura è necessario tener presente il rischio di fallimento del prodotto. Una volta stabiliti i rischi, è possibile specificare i requisiti di conformità necessari e da ciò si possono pianificare le attività di convalida e di verifica.
Quando si effettuano i test è necessario raggiungere un equilibrio, massimizzando cioè la copertura del test pur mantenendo un alto livello di efficienza. E’ quindi importante essere chiari sugli obiettivi del test: garantire che la funzionalità del prodotto soddisfi i requisiti delle specifiche, che nessun difetto sussista dopo il lancio del prodotto sul mercato e che la qualità del prodotto sia abbastanza alta da fornire un solido caso aziendale, sono i principali obiettivi.
Il segreto dell’arte di testare in modo efficiente risiede nella scelta delle unità testabili. Le unità software, le unità elettroniche e le unità funzionali devono essere tutte definite e possono essere grandi o piccole quanto è necessario per eseguire i test fondamentali a dimostrare la conformità ai requisiti. I test delle unità software intrapresi come progressi di sviluppo significheranno che la fiducia nel sistema generale si svilupperà man mano che il software sarà perfezionato. Inoltre, anche i progetti elettronici dovrebbero essere sottoposti ad un dettagliato unit testing. Le simulazioni del circuito e le revisioni del progetto possono essere intraprese prima della creazione dell’hardware. Una volta che l’hardware è disponibile, ogni blocco circuitale può essere testato individualmente. Analogamente al testing delle unità software, la fiducia nel sistema generale aumenterà con il completamento dei test unitari in questo campo. Verranno inoltre effettuati test funzionali e di sistema su software e hardware integrati e la solida base fornita dallo unit testing si rivelerà essere un buon punto di partenza per intraprendere ulteriori indagini.
Testare tutto risulta, tuttavia, impossibile. I metodi di prova formali che mostrano matematicamente la copertura dei test sono utilizzati per progetti ad alta integrità, ma possono risultare particolarmente dispendiosi in termini economici. E anche se possono essere utilizzati, se non è presente un punto finale di testing il prodotto interessato farà fatica a raggiungere il mercato e le opportunità di lancio saranno perdute. Pertanto, è buona norma fissare gli obiettivi dei test in base ai rischi valutati. Se i rischi vengono valutati durante la pianificazione dei test, è possibile stabilire le priorità e raccogliere le informazioni utili per la riduzione degli stessi. Il completamento della fase di testing può essere impostato come il punto in cui sono state raccolte sufficienti prove per dimostrare che i requisiti di conformità sono stati soddisfatti.
La disponibilità di buoni strumenti di assistenza alla fase di testing e debug è di fondamentale importanza. In mancanza, ad esempio, della possibilità di impostare punti di interruzione in un codice e ispezionare le variabili di dati mentre il codice viene eseguito, risulterebbe difficile portare in vita un sistema o persino eseguire lo unit testing in modo efficace. A tal proposito, gli strumenti Renesas Synergy incorporano molte funzionalità di testing e debug. Finestre di Watch, di trace e altre funzionalità sono incluse per assistere gli ingegneri durante il processo di testing e per dimostrare che il software funziona correttamente.
Tuttavia, è anche importante comprendere e classificare i limiti di un progetto, e per fare ciò risulta necessaria l’applicazione di test non convenzionali, che siano in grado di spingere la funzionalità del prodotto oltre l’uso previsto, individuando così gli eventuali confini funzionali del progetto. I test eseguiti in un ambiente controllato raramente riflettono l’interazione quotidiana tra il prodotto e l’utente. Inoltre, non è mai vero che i requisiti o i profili specificati dagli utenti tipici siano veramente accurati. Perciò, l’integrazione di test che considerano scenari limite o al di fuori dei requisiti contribuirà a garantire che vengano evitate sorprese spiacevoli durante il lancio sul mercato.
La chiave per un testing efficiente è nella pianificazione. I test pianificati fin dall’inizio e intrapresi durante lo sviluppo creeranno la sicurezza necessaria per il lancio del prodotto.

Quali risorse offre Renesas Synergy per supportare un design efficace del prodotto? https://www.renesas.com/en-eu/support/technical-resources/ecosystem.html

Guarda le puntate precedenti:

GUIDA ALLO SVILUPPO DI UN SISTEMA ELETTRONICO (PARTE PRIMA): SOFTWARE GARANTITO E VALORE AGGIUNTO

UNA GUIDA PER SVILUPPARE SISTEMI ELETTRONICI (SECONDA PARTE): IL PROGETTO HARDWARE

UNA GUIDA PER SVILUPPARE SISTEMI ELETTRONICI (TERZA PARTE): LA PROGETTAZIONE SOFTWARE

Redazione Fare Elettronica