Cos'รจ il test incorporato nel test del software?

โšก Riepilogo intelligente

Il testing embedded verifica congiuntamente il comportamento funzionale e non funzionale del software e dell'hardware, poichรฉ in un sistema embedded i due elementi sono strettamente interconnessi e nessuno dei due puรฒ essere validato correttamente singolarmente.

  • ๐Ÿ”˜ Accoppiamento stretto: L'hardware viene sviluppato in parallelo con il software, quindi l'ambiente di test reale spesso arriva in ritardo.
  • โ˜‘๏ธ Cinque livelli: Ogni test di unitร  software, di integrazione, di unitร  di sistema, di integrazione di sistema e di validazione di sistema si rivolge a un diverso confine di modulo.
  • โœ… In gioco c'รจ la sicurezza: I prodotti per il settore medico, ferroviario, aeronautico e automobilistico necessitano di test rigorosi e documentati prima di poter ottenere la certificazione.
  • ๐Ÿงช Preferenza per la scatola grigia: Il test unitario di sistema osserva le risorse interne e i messaggi del sistema operativo in tempo reale (RTOS), quindi i metodi grey box sono i piรน adatti.
  • ๏ธ Principali ostacoli: Accesso limitato all'hardware, componenti open-source, difetti misti di software e hardware e difetti difficili da riprodurre.

Test integrati di software e hardware in un sistema embedded

Cosa sono i sistemi Embedded?

Sistemi integrati I sistemi embedded sono dispositivi controllati elettronicamente in cui software e hardware sono strettamente interconnessi. Possono contenere una varietร  di dispositivi di elaborazione. Si tratta di PC integrati in altri dispositivi per svolgere funzioni specifiche di un'applicazione. L'utente finale di solito non รจ nemmeno consapevole della loro esistenza.

Test integrati

Test integrato รจ un processo di test per verificare la funzionalitร  e non funzionale attributi sia del software che dell'hardware in un sistema embedded e garantire che il prodotto finale sia privo di difetti. Lo scopo principale del testing embedded รจ verificare e convalidare se il prodotto finale, costituito da hardware e software embedded, soddisfa o meno i requisiti del cliente.

Il collaudo del software embedded verifica e garantisce che il software in questione sia di buona qualitร  e conforme a tutti i requisiti. Il collaudo del software embedded รจ un approccio eccellente per garantire la sicurezza in applicazioni critiche come apparecchiature mediche, ferrovie, aviazione, industria automobilistica, ecc. Test rigorosi e accurati sono fondamentali per ottenere la certificazione del software.

Come eseguire il test del software incorporato

In generale, esegui il test per quattro motivi:

  • Per trovare bug nel software
  • Aiuta a ridurre i rischi sia per gli utenti che per l'azienda
  • Ridurre i costi di sviluppo e manutenzione
  • Per migliorare le prestazioni

Nei test su sistemi embedded, vengono eseguite le seguenti attivitร :

  1. Il software viene fornito con alcuni input.
  2. Viene eseguita una parte del software.
  3. Lo stato del software viene monitorato e gli output vengono controllati per verificarne le proprietร  attese, come ad esempio la corrispondenza tra l'output e il risultato previsto, la conformitร  ai requisiti e l'assenza di arresti anomali del sistema.

Tipi di test del software incorporato

Fondamentalmente, esistono cinque livelli di test applicabili al software embedded.

Test di unitร  software

Il modulo unitario รจ una funzione o una classe. Il test unitario viene eseguito dal team di sviluppo, principalmente dallo sviluppatore, e di solito si svolge secondo un modello di peer-review. I casi di test vengono sviluppati in base alle specifiche del modulo.

Test d'integrazione

Test d'integrazione puรฒ essere classificato in due segmenti:

  • Test di integrazione del software
  • Test di integrazione software/hardware

Infine, viene testata l'interazione tra il dominio hardware e i componenti software. Ciรฒ puรฒ includere l'esame dell'interazione tra i dispositivi periferici integrati e il software.

Lo sviluppo di software embedded presenta una caratteristica peculiare: l'ambiente effettivo in cui il software viene eseguito viene generalmente creato in parallelo con il software stesso. Ciรฒ comporta degli inconvenienti per la fase di test, poichรฉ non รจ possibile effettuare test completi in un ambiente simulato.

Test delle unitร  di sistema

Ora il modulo da testare รจ un framework completo che consiste nel codice software completo piรน tutto sistema operativo in tempo reale (RTOS) e componenti correlati alla piattaforma come interruzioni, meccanismi di gestione dei task, comunicazioni e cosรฌ via. Il protocollo Point of Control non รจ piรน una chiamata a una funzione o un'invocazione di metodo, bensรฌ un messaggio inviato o ricevuto tramite le code di messaggi dell'RTOS.

Le risorse di sistema vengono osservate per valutare la capacitร  del sistema di supportare l'esecuzione del sistema incorporato. Per questo aspetto, test a scatola grigia รจ il metodo di test preferito. A seconda dell'organizzazione, il test unitario del sistema รจ compito dello sviluppatore o di un team dedicato all'integrazione del sistema.

Test di integrazione del sistema

Il modulo da testare parte da un insieme di componenti all'interno di un singolo nodo. I Punti di Controllo e Osservazione (PCO) sono un mix di protocolli di comunicazione di rete ed eventi RTOS, come i messaggi di rete. Oltre a un componente, un Virtual Tester puรฒ anche svolgere il ruolo di nodo.

Test di convalida del sistema

Il modulo da testare รจ un sottosistema con un'implementazione completa, oppure l'intero sistema embedded. L'obiettivo di questo test finale รจ soddisfare i requisiti funzionali di un'entitร  esterna. Si noti che un'entitร  esterna puรฒ essere una persona, un dispositivo in una rete di telecomunicazioni o entrambi.

Differenza: test integrati e test del software

La tabella seguente mette a confronto i test integrati con quelli convenzionali test del software.

Software Testing Test integrati
Il test del software รจ relativo solo al software. I test integrati riguardano sia il software che l'hardware.
In media, il 90% dei test effettuati nel mondo รจ puramente manuale. test della scatola nera. Il test integrato viene eseguito su sistemi o chip integrati e puรฒ essere a scatola nera o test della scatola bianca.
Le aree principali di test sono i controlli della GUI, la funzionalitร , la convalida e un certo livello di test del database. Le principali aree di test riguardano il comportamento dell'hardware in relazione al numero di input che gli vengono forniti.
I test del software vengono eseguiti principalmente su applicazioni client-server, Web e mobili. I test sui sistemi embedded vengono generalmente eseguiti sull'hardware.
per esempio, Google Mail, Yahoo Mail, Android applicazioni. Ad esempio, macchinari del settore sanitario, microcontrollori utilizzati nei computer.

Sfide: test del software incorporato

Alcune delle sfide che si possono incontrare durante il test del software embedded:

Dipendenza hardware

La dipendenza dall'hardware รจ una delle principali difficoltร  riscontrate durante il test del software embedded, a causa dell'accesso limitato all'hardware stesso. Tuttavia, emulatori e simulatori potrebbero non rappresentare con precisione il comportamento del dispositivo reale e potrebbero fornire un'impressione errata delle prestazioni del sistema e dell'usabilitร  dell'applicazione.

Software Open Source

La maggior parte dei componenti software embedded รจ di natura open source, non รจ sviluppata internamente e non dispone di una suite di test completa. Esiste un'ampia gamma di combinazioni di test e relativi scenari.

Difetti software e hardware

Un altro aspetto riguarda lo sviluppo di software per hardware di nuova creazione. Durante questo processo, si puรฒ riscontrare un'elevata percentuale di difetti hardware. I difetti rilevati non si limitano al software, ma possono essere correlati anche all'hardware.

Difetti riproducibili

Nel caso di un sistema embedded, i difetti sono piรน difficili da riprodurre o ricreare. Ciรฒ obbliga la procedura di test dei sistemi embedded ad attribuire un valore significativamente maggiore a ogni occorrenza di difetto rispetto a un caso standard, e a raccogliere quanti piรน dati possibile per individuare la causa principale del difetto.

Aggiornamenti software continui

I sistemi embedded richiedono aggiornamenti software regolari, come aggiornamenti del kernel, correzioni di sicurezza, driver di dispositivo diversi, ecc. I vincoli associati agli aggiornamenti software rendono difficile l'identificazione dei bug. Inoltre, ciรฒ aumenta l'importanza della procedura di compilazione e distribuzione.

DOMANDE FREQUENTI

Le pile tipiche combinano analisi statica, framework di test unitari per C e C++, analizzatori di bus, tracdebugger e-capable e sistemi hardware-in-the-loop, oltre automazione di test quindi le suite di regressione vengono eseguite senza supervisione.

La tecnologia Hardware-in-the-loop (HIL) esegue il firmware reale sul controller reale, mentre un simulatore fornisce i segnali che verrebbero prodotti dall'impianto circostante, simulando condizioni di guasto che sarebbero pericolose da riprodurre fisicamente.

Un simulatore modella il comportamento ed esegue una versione compilata del sistema host; un emulatore riproduce il set di istruzioni di destinazione in modo che il binario reale venga eseguito. Nessuno dei due riproduce esattamente gli effetti analogici e di temporizzazione.

La norma IEC 61508 รจ lo standard generico per la sicurezza funzionale. Le versioni settoriali includono ISO 26262 per i veicoli stradali, DO-178C per il software di bordo, IEC 62304 per i dispositivi medici e EN 50128 per il controllo ferroviario.

I modelli di IA gestiscono il log di grandi dimensioni e trace i volumi prodotti da un impianto, raggruppano i guasti ripetuti e classificano quali test di regressione eseguire per primi su hardware limitato. La valutazione della sicurezza rimane di competenza dell'ingegnere.

Copilota GitHub bozze di cablaggi di prova e stub per C o C++ moduli e velocizza il mocking ripetitivo. Il comportamento del registro e i vincoli di temporizzazione che non ha mai visto devono ancora essere verificati.

Attraverso l'analisi del tempo di esecuzione nel caso peggiore, strumentato trace sul target e test di stress al carico massimo. I mancati tempi e la latenza degli interrupt vengono misurati su hardware reale, che le build host non possono riprodurre.

Lettura C e C++, familiaritร  con schemi e analizzatori logici, familiaritร  con i concetti di RTOS e protocolli bus, oltre allo scripting. Lavori correlati come Test dell'IoT si basa sulla stessa base.

Riassumi questo post con: