Sviluppo basato sui test e miglioramento delle capacità di test della scatola bianca

9

Sono un programmatore Java entry-level che esce da scuola. Ho una buona conoscenza ed esperienza con J2SE. Qualcuno mi può consigliare su come migliorare o mettere a punto le mie capacità per essere un tester Java white box? Una vasta gamma di input sono i benvenuti.

E che cos'è lo sviluppo di Test Driven?

    
posta user892871 06.09.2011 - 12:40
fonte

5 risposte

9

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

Che cos'è il TDD? - Nel suo cuore è la pratica di scrivere un test negativo (rosso), facendo passare quel test scrivendo un'implementazione (verde) e poi ri-factoring. Lo articolo di Wikipedia è un punto sufficiente per iniziare a scoprire ulteriori informazioni. Ma l'argomento è vasto, consiglio di leggere alcuni dei libri più conosciuti in questo spazio come Sviluppo guidato dai test per esempio e Lavorando efficacemente con il codice legacy . Inserirò anche uno plug spudorato per il capitolo TDD in Lo sviluppatore Java ben fondato

Nell'ecosistema Java, questo significa che vuoi imparare:

  1. La JUnit biblioteca e / o TestNG libreria.
  2. Una libreria di derisione come Mockito o JMock
  3. Uno strumento di test del carico per attaccare il codice - JMeter
  4. Il concetto di Iniezione di dipendenza (una forma di Inversione di controllo)

E poi pratica, pratica, pratica, pratica. I buoni tester Java white box sono molto rari, i migliori hanno scritto test su una vasta gamma di basi di codice.

HTH ti consente di iniziare!

    
risposta data 06.09.2011 - 13:03
fonte
1

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

    
risposta data 06.09.2011 - 12:45
fonte
1

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

link

Essenzialmente in termini laici è un approccio Test-First allo sviluppo del software in cui i test unitari sono progettati e scritti per utilizzare i casi in primo luogo, quindi il duro sviluppo si verifica in seguito per contribuire a far passare quei test unitari.

    
risposta data 06.09.2011 - 12:56
fonte
0

Non sono sicuro che il mio suggerimento verrà considerato come uno strumento per i test del white box ma puoi anche consultare dbUnit per database- progetti guidati e selenio per i test web (ad es. ispezione di elementi che dovrebbero essere esistenti sulla base di alcuni risultati).

    
risposta data 10.09.2011 - 22:20
fonte
0

La domanda fa specifico riferimento al "test white box". È qui che i test hanno una conoscenza approfondita della struttura interna del codice e affermano il comportamento ad ogni passo piuttosto che l'input / output / effetto collaterale (test della black box). Sebbene JUnit sia eccellente per fare entrambe le cose, è necessario disporre di ulteriori framework aggiuntivi per poterlo fare nel contesto di un test unitario.

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

A rischio di iniziare un dibattito sugli OT, dovresti riflettere attentamente sulle implicazioni dei test della scatola bianca. I test di white box sono intimamente legati al tuo codice (ovviamente), e se non usati con attenzione, i framework di simulazione possono rendere i tuoi test piuttosto complicati, difficili da leggere e tendenzialmente più fragili durante il refactoring.

Tendo ad attenermi a un mix di entrambi. I test della scatola nera, ove possibile, e i test della scatola bianca applicati con parsimonia al codice più rischioso / più complicato.

Ovviamente i framework sopra elencati possono anche essere usati nei black box test dove il numero di classi contributive (iniettate) è ampio e lo stub semplice diventa ingombrante.

Riguardo al TDD - è principalmente un approccio di design per migliorare la scrittura del codice, piuttosto che un semplice modo di scrivere test. I test che hai alla fine sono un risultato importante, ma inoltre l'approccio mira a migliorare il design e la struttura della tua applicazione.

    
risposta data 11.09.2011 - 16:40
fonte

Leggi altre domande sui tag