Come testare l'unità con un sacco di IO

3

Scrivo software embedded Linux che si integra strettamente con l'hardware.

I miei moduli sono come:

Ingresso video CMOS con driver del kernel (v4l2)
-Hardware encoder h264 / mpeg4 (strumenti texas)
-Audio Capture / Playback (alsa)
-Network IO

Mi piacerebbe avere test automatici per quelle funzionalità, come i test di integrazione. Non sono sicuro di come automatizzare questo processo poiché la maggior parte delle funzionalità di primo livello che ho di fronte sono legate all'IO. Certo, è facile testare le funzioni individualmente, ma l'intero processo di verifica significa che dipende da tonnellate di dipendenze esterne disponibili solo in fase di esecuzione.

    
posta Eric 03.06.2012 - 08:08
fonte

1 risposta

1

Sembra un lavoro per i test di loopback. A rigor di termini, i test di loopback potrebbero sembrare test di integrazione tanto quanto fare test di unità, anche se l'obiettivo principale è testare solo il supporto di una particolare periferica per configurazione, input e output.

Per il dispositivo audio, forse puoi fare quanto segue:

  • Collega un loop fisico di output all'immissione.
  • Configura i guadagni, le frequenze di campionamento, ecc. secondo necessità per assicurare copertura funzionale e del codice.
  • Riproduce un file di dati A e lo riprende come B.
  • Confronta A e B in un modo adeguato per determinare il pass / fail.
  • Ripeti con più set di dati per coprire casi di test validi e non validi.

Approcci simili sono possibili con loopback video e di rete.

Alcuni suggerimenti aggiuntivi:

  • L'uso di compressione o rumore con perdita potrebbe limitare la tua capacità di confrontare i file di acquisizione.
  • L'uso di input semplificati come i toni dei generatori di frequenza o video dalle barre dei colori generate potrebbe funzionare meglio di una traccia della tua rock band preferita e una clip da un film d'azione.
  • Si potrebbe voler giocare con il guadagno o eseguire i campioni attraverso una FFT e confrontare le uscite della FFT.
  • Se confrontare i contenuti diventa troppo difficile, controllarne la durata o verificarli a occhio o occhio potrebbe essere un modo per ottenere il risultato senza fare codice di test più complicato del codice di produzione.

Buona fortuna. Spero che questa risposta aiuti.

    
risposta data 13.08.2012 - 00:49
fonte

Leggi altre domande sui tag