2012-05-02 23 views
9

Supponiamo, durante i test, di testare come il software gestisce un file "corrotto".Come creare un file "corrotto"

Ho due domande:

1. In generale, come si fa a definire un file "corrotto"? In altre parole, cosa costituisce un file corrotto?

Per fare un esempio:

Si supponga di dover testare un file .pdf "corrotto".

Un suggerimento è semplicemente prendere un file .zip, cambiare l'estensione e testare con quello. Tuttavia, direi che non stai testando come il programma gestisce un "file .pdf corrotto", ma piuttosto come gestisce un file .zip.

Un altro suggerimento è aprire il file e inserire/eliminare byte casuali. Questo suggerimento è ok, ma ci sono alcuni problemi:

  • È possibile (anche se improbabile) che le sezioni modificate o rimosse siano irrilevanti. Ad esempio, è possibile eliminare semplicemente una sezione di una stringa enorme, che modificherà i dati, ma non necessariamente corromperà il file.
  • È possibile che il file possa essere modificato in modo tale che il programma rifiuta di leggere il file. Ad esempio, se l'intestazione .pdf viene eliminata, forse l'API (o qualsiasi altra cosa tu stia utilizzando) non supererà quel punto e il file non potrà essere testato affatto.
  • Simile al primo proiettile: se il file viene modificato in modo drammatico, esiste un argomento secondo cui il file risultante non ha più lo stesso formato dell'originale. Quindi, di nuovo, se dovessi eliminare l'intestazione .pdf, forse quel file non è più un file .pdf. Quindi provare a testarlo non prova un file .pdf corrotto, ma prova invece qualche variazione dispari di un file .pdf.

2. Una volta definito un file danneggiato, come si procede a crearne uno?


Ecco quello che ho pensato finora:

A "lima corrotta" è un file che soddisfi correttamente le specifiche del formato di file, ma che contiene i dati/byte che sono intrinsecamente imperfetto .

L'unico esempio a cui potevo pensare era se si modificava la codifica del file in qualche modo. Si potrebbe quindi applicare questo metodo a file di formato arbitrario.

Grazie per la lettura.

+2

La risposta a queste domande dipende interamente dal particolare formato di file e dai tipi di corruzione che si prevede di gestire con il software. Non vi è alcun punto di test con i vettori di input che non si intende gestire. –

risposta

2

Un altro suggerimento è aprire il file e inserire/eliminare byte casuali.

Questo è quello che faccio generalmente. Pur comprendendo i problemi sopra elencati, ritengo che un file sia corrotto se non è leggibile dalla sua applicazione nativa.

Eg., Un xls non si apre in Excel, un docx non si apre in Word, ecc

2

Facile, annullare il download di un file (forse un file rar).Ottengo la maggior parte di questi corrotti in questo modo.

1

Uso il comando head e tail di linux per dividere un file, quindi raggrupparli nuovamente con byte mancanti o aggiuntivi.

1

Suggerisco di eseguire il test con file incompleti, ovvero la maggior parte dei file corrotti creati da download interrotti.

4

Il formato del file è definito da due fattori. 1. Estensione del file - che dovrebbe dire al sistema operativo quale formato è il file. 2. Il MimeType del documento. Molti documenti hanno estensioni errate (.avi .jpg), ma in realtà il tipo mime indica di cosa si tratta.

Come corrompere un documento? Non puoi semplicemente aggiungere byte casuali o smile (il file .txt per esempio non sarà danneggiato)

ci sono 2 cose che devi fare in realtà.

Primo: si modifica il tipo di mime del file, quindi è possibile aggiungere alcuni byte casuali. Se il tipo myme è diverso (non simile) all'estensione - ad esempio "text/html" per il file .avi, il file non può essere riconosciuto dal programma per tale tipo di mime.

Tuttavia, per diversi scenari di test potrebbe essere necessario creare diverse "versioni" di file danneggiati.

Spero che aiuti.

+1

Il tipo MIME è una cosa di internet; non si applica alle applicazioni arbitrarie. –

+0

Ciò è parzialmente vero. Ad ogni modo, diciamo "noto", il formato del file (con la propria estensione) ha mime tipe. Se vuoi creare il tuo tipo di file (diciamo la tua estensione) saprai perfettamente cosa significa "file corrotto" per questo. –

+0

Solo nel contesto di trasferimento sopra ad es. HTTP. I file memorizzati su disco non hanno un tipo MIME; sono solo una raccolta di byte. –