Come testare il codice di elaborazione dell'immagine dell'unità?

11

Sto lavorando nell'elaborazione delle immagini (principalmente OCR) e mi chiedo come integrare i test unitari nel mio sviluppo.

Sto già utilizzando i test unitari per un codice più "comune", ma quando si tratta di codice di elaborazione delle immagini non sono sicuro su come gestirlo. Questo tipo di codice ha sempre bisogno di input / output di dati di immagine e questo non è ovvio. Per ora eseguo per lo più test di integrazione, ma impiegano un po 'di tempo per essere eseguiti e vorrei alcune idee su come suddividere questo tipo di codice in test unitari in modo da poterli eseguire più rapidamente.

Modifica: L'analisi di un personaggio può attraversare molti passaggi che implicano più operazioni di rotazione, ridimensionamento e morfologia. Questi passaggi cambiano spesso mentre l'algoritmo viene sviluppato. Quindi l'input e l'output atteso possono evolvere molto durante il test. Ogni personaggio può essere di 100x100 pixel, quindi è difficile escluderli nel codice o lavorare con i dati generati.

    
posta rold2007 28.09.2012 - 07:00
fonte

1 risposta

9

Lavoro con software di registrazione / analisi / streaming video e abbiamo affrontato un problema molto simile. Di seguito la nostra soluzione, non so come funzionerà a lungo termine, ma per ora sembra funzionare.

Salva immagini di input / output come risorse nel progetto di test dell'unità. Quindi verifica il test dell'unità che quando viene fornito un input specifico, viene prodotto quell'output specifico.

9/10 volte quando si rifatta il codice e si aggiungono altre funzionalità, ci si aspetterebbe che il comportamento delle routine di gestione delle immagini non cambi, quindi se improvvisamente tutti i test unitari iniziano a non riuscire, è probabile a causa di un errore.

D'altra parte, se apporti modifiche all'algoritmo reale, ciò provocherà anche un fallimento del test dell'unità. In questo caso, dovrai verificare manualmente / visivamente che i risultati siano corretti e, se sembrano buoni, aggiornare le risorse dell'immagine per far passare nuovamente il test dell'unità.

Nel nostro progetto, abbiamo finito per sviluppare "false" (o finte se volete) fonti video, che possono fornirci dati sia per l'input che per l'output. Ma i dati stessi non sono falsi, sono stati effettivamente catturati utilizzando le classi di registrazione dei dati di supporto da un sistema in esecuzione quando abbiamo eseguito test manuali e verificato che tutto funzionava.

    
risposta data 28.09.2012 - 07:06
fonte

Leggi altre domande sui tag