I bug di Fuzzing appartengono ai miei test di sistema?

5

Recentemente ho implementato il test fuzz su uno dei miei progetti. Sono emersi diversi bug, generalmente classificabili come bug di validazione degli input (oserei dire banali?) E li ho sistemati. In nessun caso finora le rotture hanno coinvolto la logica di business, che immagino sia ragionevole.

La mia domanda è la seguente: Quando ottengo una nuova richiesta di funzionalità per il progetto, di solito scrivo un test automatico per descrivere il comportamento desiderato (usando Lattuga , ad esempio). I bug del test fuzz appartengono a queste descrizioni del comportamento?

Io stesso ho determinato che il vantaggio di scrivere casi di test espliciti è verificare in modo deterministico contro regressioni. Il test fuzz tende a non essere deterministico, sebbene nel nostro caso i nostri test non abbiano un intero un sacco di casualità sorprendente in loro.

Allo stesso tempo, ne ho scritti alcuni e confrontati con altri test che descrivono sequenze di comando e risultati interessanti, i bug di sicurezza sono noiosi, al punto da creare rumore per il lettore. Considera la seguente forma di test:

Scenario: Some jerk user doesn't fill in the "home address" form field.
  Given an otherwise correctly-filled form on my web page
  And a "number of hats" field filled with string "banana"
  When the user submits the form
  The application should not crash
  And the user should be redirected back to the form
  And the form should display an error

[repeat for each of 10 fields that could have ridiculous input]

Devo lasciare questo tipo di controllo per il fuzzer che li sta già catturando attraverso incantesimi neri e opportunità casuali? O i miei test di regressione dovrebbero riflettere ogni errore che abbia mai fatto o pensato di fare?

    
posta Andres Jaan Tack 15.02.2011 - 10:46
fonte

2 risposte

6

Non penso che ci dovrebbe essere troppa (leggi: quasi nessuna) casualità nei test di regressione. Se il tuo buzz test ha riscontrato un errore che si verifica quando "bvcyjkfa76!" è inserito in "numero di cappelli", crea esattamente questa stringa (o "banana" se ti piace di più e fa scattare lo stesso errore) un caso di test, ma non lasciare che il tuo test dell'unità lanci una stringa casuale al programma.

L'ultima cosa che vuoi è un test che a volte passa, a volte fallisce, solo perché il generatore casuale a volte colpisce il punto debole e talvolta lo manca.

    
risposta data 15.02.2011 - 11:17
fonte
3

Personalmente aggiungerei il test. Se la domanda è "dovrei aggiungere un test per" generalmente cado dalla parte di Sì se il test potrebbe essere informativo in qualche modo.

Se non altro aggiungendo il test, sai quando il bug è stato corretto.

    
risposta data 15.02.2011 - 10:53
fonte

Leggi altre domande sui tag