2009-05-29 6 views
9

Sto lottando per capire cosa dovrebbe essere escluso dai test funzionali (nel mio caso, usando Rails, ma credo che il framework sia probabilmente irrilevante).Confusione: tralascia test funzionali che coprano la stessa base dei test unitari?

Ho l'impressione che non dovrei preoccuparmi di utilizzare i test funzionali per le cose che verranno catturate nei test unitari, come controllare che un campo non possa avere troppi caratteri o che un campo possa ' essere vuoto Se questo è il caso, quali imprevisti dovrebbero assolutamente essere testati con test funzionali e/o quale è la regola per lasciare gli altri solo per il test unitario?

Oppure questa impressione non è corretta all'inizio?

Ho guardato this e this ma io sono ancora in perdita.

risposta

7

Test funzionale: fa le cose marketing/usabilità/clienti firmati off per? Ad esempio, se la tua specifica specifica specificamente che la casella di testo ZIP consente solo codici postali statunitensi validi, allora dovresti testarlo in un test funzionale.

Test unità: fa ciò che lo sviluppatore si aspetta che lo sia? In questi test è necessario utilizzare duplicati di prova per isolare il codice dalle dipendenze.

Quindi sì, ci sarà una sovrapposizione di un tipo.

+0

Quindi nei funzionali, dovresti testare ogni possibile eventualità? Sembra che tu non possa davvero lasciare nulla fuori dai funzionali. – fig

+0

Non penso che testate ogni contingenza nei funzionali, testate le contingenze che sono espressamente dichiarate nelle specifiche. Probabilmente avrai anche dei test unitari per questi, e spero che alcuni altri test unitari per le cose che hai pensato e che non abbiano fatto. – Robert

+0

Sono decisamente * non * un esperto di test. Quindi fai attenzione a non farmi dei consigli, ma farei almeno un controllo di sanità della funzionalità richiesta nelle specifiche. Il test dell'unità può eseguire il test di forza bruta su tutti i possibili codici postali statunitensi, ma il test funzionale può provare 1 invalid e 1 zip valido. – dss539

3

I per uno "spike" attraverso la funzionalità con test funzionali e non preoccuparsi di coprire tutto e concentrarsi invece sui test delle unità.

Motivi:

  • test funzionali sono lenti
  • test funzionali sono difficili da scrivere e mantenere
  • test funzionali in grado di catturare solo due elementi in più oltre il test di unità:
    • bug GUI
    • disallineamenti cross-layer

Tutto sommato, ho trovato che non si paga per coprire tutto due volte.

+0

Con il tuo approccio, come scegli le cose da coprire e quali saltare? È casuale o esiste una regola empirica? – fig

+1

La regola del pollice è quella di coprire un caso d'uso da una "storia" con un test di integrazione. Ad esempio, se avessi una pagina di pagamento, elaborerei semplicemente un pagamento andato a buon fine per verificare che l'integrazione sia eseguita correttamente. Il test unitario coprirà tutti gli altri casi. –