Sviluppo guidato dai test e miglioramento delle capacità di test della scatola bianca


9

Sono un programmatore Java entry level appena uscito da scuola. Ho una buona conoscenza ed esperienza con J2SE. Qualcuno può consigliarmi su come migliorare o mettere a punto le mie abilità per diventare un tester Java white box? L'ampia gamma di input è benvenuta.

E cos'è Test Driven Development?


Perché non testare anche la scatola nera?
Martijn Verburg,

@Martijn, considerando lo sfondo, molto probabilmente a causa delle sfide tecniche dei test whitebox. Inoltre, mentre le tecniche della scatola nera sono molto utili per gli sviluppatori, le persone con buone qualità per uno sviluppatore non fanno buoni tester della scatola nera, siamo troppo curiosi e possiamo diventare impazienti. So di averlo fatto.
StuperUser

Risposte:


9

Test Driven Development (TDD) e suoi cugini estesi, Acceptance TDD (ATDD) e Behavior Driven Development (BDD) sono tecniche utili per apprendere come tester nell'ecosistema Java. Mi concentrerò su TDD mentre stai cercando test su white box.

Che cos'è TDD? - Al centro c'è la pratica di scrivere un test fallito (rosso), facendo passare quel test scrivendo un'implementazione (verde) e quindi ricopitalizzando. L' articolo di Wikipedia è un punto sufficiente per iniziare a scoprire ulteriori informazioni. Ma l'argomento è vasto, ti consiglio di leggere alcuni dei libri più noti in questo spazio come Test Driven Development by Example e lavorare efficacemente con il codice legacy . Inserirò anche una spina spudorata per il capitolo TDD in The Well-Grounded Java Developer

Nell'ecosistema Java, questo significa che vuoi imparare:

  1. La libreria JUnit e / o la libreria TestNG .
  2. Una libreria beffarda come Mockito o JMock
  3. Uno strumento di test del carico per attaccare il codice - JMeter
  4. Il concetto di Dependency Injection (una forma di Inversion of Control)

E poi pratica, pratica, pratica, pratica. I buoni tester Java white box sono molto rari, i migliori hanno test scritti su un'ampia gamma di basi di codice.

HTH ti ha iniziato!


Sono anche tecniche utili per apprendere come sviluppatore nell'ecosistema Java. A quanto ho capito, i tester dovrebbero fare test in scatola nera.
Tom,

1

Junit è uno dei migliori framework di unit test per il linguaggio di programmazione Java. È un framework open source per scrivere ed eseguire test ripetibili.


1

Normalmente non mi piace citare Wikipedia ma le informazioni su questo articolo sembrano abbastanza sicure ...

http://en.wikipedia.org/wiki/Test-driven_development

Essenzialmente in termini laici, si tratta di un approccio Test-First allo sviluppo del software in cui i test unitari sono progettati e scritti per utilizzare prima i casi, quindi si verifica uno sviluppo intenso per aiutare a superare quei test unitari.


0

Non sono sicuro che il mio suggerimento sarà considerato come uno strumento per i test su white box, ma puoi anche consultare dbUnit per i progetti basati su database e Selenium per i test sul web (ad es. Ispezione di elementi che dovrebbero esistere sulla base di alcuni risultati).


0

La domanda fa specificamente riferimento al "test della scatola bianca". È qui che i tuoi test hanno una profonda conoscenza della struttura interna del tuo codice e affermano il comportamento in ogni fase piuttosto che solo l'effetto input / output / side (test black box). Sebbene JUnit sia eccellente per fare entrambe le cose, sono necessari ulteriori framework aggiuntivi per farlo nel contesto di un unit test.

EasyMock e JMock sono buoni framework per fare questo. Tendo a favorire JMock.

A rischio di iniziare un dibattito OT, dovresti pensare attentamente alle implicazioni del test sulla scatola bianca. I test in white box sono intimamente legati al tuo codice (ovviamente) e, se non utilizzati con attenzione, i framework di derisione possono rendere i test piuttosto complicati, difficili da leggere e tendenzialmente più fragili durante il refactoring.

Tendo ad attenermi ad un mix di entrambi. Test della scatola nera ove possibile e test della scatola bianca applicati con parsimonia a codici più rischiosi / più complicati.

Ovviamente i framework sopra elencati possono essere utilizzati anche nei test in black box in cui il numero di classi (iniettate) che contribuiscono è grande e il semplice stubbing diventa ingombrante.

Per quanto riguarda TDD, si tratta principalmente di un approccio di design avanzato alla scrittura del codice, piuttosto che semplicemente di un modo di scrivere test. I test che hai alla fine sono un risultato importante, ma inoltre l'approccio ha lo scopo di migliorare il design e la struttura della tua applicazione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.