Test del flusso binario

0

Sto costruendo un importatore di file binario usando Python. La struttura di file specifica è definita in una specifica. Questo sembra:

File

  • Blocco mappa

String, Short Integer, Long Integer, String, Short Integer, Long Integer ...

  • Blocco1

String, String, Long Integer, String, Short Integer, String, Long Integer, Long Integer ....

  • Block2

  • Block3

etc

Ho dimostrato il concetto di raccolta e decodifica dei dati binari e posso accedere a ciascun blocco di dati singolarmente raccogliendo prima il blocco mappa.

Tuttavia non riesco a capire il modo migliore per testarlo. I test attuali che ho sono: test_get_string test_get_short test_get_long

Puoi suggerire quale suite di test potrei costruire in seguito? Sarebbe meglio testare con un file reale o creare lunghe stringhe binarie per testare con?

    
posta fiberman 12.05.2015 - 10:34
fonte

2 risposte

0

Se lavori con uno stream da importare (come suggerito da Killian), puoi testare ognuna delle funzioni per ottenere valori individuali prendendo in giro quel flusso. Mocking the stream significa che si impostano i pochi byte successivi prima di chiamare la funzione da testare e lasciare che il test fallisca quando richiede più del numero necessario di byte. Dopo la funzione dovrebbero essere letti tutti quei byte.

Parte dell'asserzione di correttezza sarebbe che non legge più o meno della quantità di byte che ha bisogno di decodificare e della correttezza del valore.

Puoi anche testare di nuovo ogni blocco singolarmente assicurandoti che legge solo esattamente quanti byte ha bisogno e correttezza dei valori letti.

Per testare la decodifica del blocco della mappa, puoi costruirne una e quindi interrogare gli offset di alcuni blocchi usando quel blocco di mappa.

    
risposta data 12.05.2015 - 10:52
fonte
0

Lo scopo della tua implementazione è quello di decodificare la comething. Non è per spostare i dati da disco a memoria, è solo una funzione ausiliaria accidentale. Pertanto, il codice deve essere disaccoppiato in modo che l'importatore lavori con un flusso e, in pratica, dovrebbe essere accoppiato a un'implementazione di lettura di file standard (preferibilmente dalla libreria standard).

Allo stesso modo, il test dell'unità dovrebbe testare la logica di decodifica, non l'I / O del file. Spero che sia stato testato con la libreria standard, e comunque non è un problema. Pertanto, testare con dati di input fatti a mano, senza toccare il file system, è sia più veloce che migliore in base ai principi di ingegneria del suono.

    
risposta data 12.05.2015 - 10:38
fonte

Leggi altre domande sui tag