Coping con il codice di test che diventa troppo complesso [duplicato]

0

Il nostro team di automazione dei test scrive tonnellate di test di automazione per la nostra applicazione WEB, ma mi sembra che il loro codice stia diventando troppo complesso e garantisce che qualcuno testerà anche questo.

Esiste una best practice per scrivere questi test di automazione? Apprezzerò qualsiasi risposta con input concreti da parte di qualcuno che ha riscontrato questo problema.

Se è importante - stiamo usando jSystem per automatizzare i nostri test delle applicazioni WEB - se ci sono framework che semplificano la vita - mi piacerebbe sentirli.

    
posta RonK 14.04.2013 - 09:37
fonte

1 risposta

3

Dovresti dare un esempio di cosa sia "troppo complesso" per te.

In generale, i test dovrebbero esercitare una piccola parte di un sistema mantenendo tutto il resto costante. Ad esempio, se il tuo sito web legge i documenti da un database, puoi testare il sito web contro un database preparato di documenti noti. Detto questo, testare le funzionalità sui siti Web è difficile perché i siti Web sono sistemi complessi e di grandi dimensioni, mentre le funzionalità potrebbero essere abbastanza semplici.

Se i tuoi test richiedono un sistema pienamente funzionante, allora sono veramente "test di integrazione", non "test di unità". Per assicurarti che la pagina "/ utente / RonK / profilo" mostri "ronkitay.wordpress.com", implicitamente testerai anche che questa pagina restituisce un codice di stato HTTP 200 e che il corpo della risposta è text / html. Se i test sono eseguiti all'interno di un browser, verificherete anche la gestione da parte del browser del DOM HTML e degli script sul lato client. Infine, testerai che "ronkitay.wordpress.com" è nella pagina. Se non lo è, allora una qualsiasi delle condizioni implicite in precedenza potrebbe aver fallito: il componente che rende l'URL del sito Web di RonK potrebbe essere codificato correttamente, ma semplicemente non è stato eseguito. Uno strumento come Selenium ti permetterà di controllare un'istanza di un browser Firefox e testare le aspettative / i comportamenti controllando il DOM. Questo di solito è ok, ma non prova Safari o Chrome o IE.

Una cosa che viene spesso trascurata nei test automatici dei siti Web è il layout della pagina: il DOM può essere organizzato correttamente in modo che le cose che stai testando esisteranno, ma potrebbero essere presentate molto male (o non del tutto, se il Il file CSS non è referenziato correttamente.) Questo è trascurato perché è difficile testare le condizioni del layout: come si esprime questo codice: "l'elemento della pagina del Bollettino Comunità non deve passare all'elemento Correlati, il testo deve essere avvolto bene, e i collegamenti non devono essere sottolineati "?

Quello che ho visto è che parti della generazione del contenuto del sito Web possono essere isolate e testate senza il server web. Se si utilizza un framework MVC (come SpringMVC), i modelli e le viste e i controller possono essere testati indipendentemente come puro codice Java. (Il framework jUnit ti permetterà di fare test generici abbastanza facilmente.)

Testando le parti M, V e C di un sito web strutturato su MVC, si concentra il test sulle regole aziendali nel codice, che di solito è dove si trovano i bug. Ad esempio, è possibile creare (o prendere in giro) un oggetto utente fittizio che viene fornito al modello UserProfile. Ci si aspetta che il campo websiteURL di questo modello UserProfile sia impostato correttamente. Puoi quindi associare il modello UserProfile alla sua vista (il framework SpringMVC lo fa normalmente, ma puoi farlo tu stesso) e confermare che il risultato è HTML corretto per quella parte della pagina.

Per quanto riguarda il tuo commento sui test di prova ... se c'è una copertura completa del tuo codice, allora i test hanno esercitato tutto ciò che esiste e probabilmente stai bene. (Potrebbero essere difficili da estendere o modificare, ma queste sono scelte di progettazione.) Se ciò non è sufficiente, potresti avere due persone che scrivono indipendentemente i test per la stessa cosa e cercano il consenso. ; -)

    
risposta data 14.04.2013 - 10:54
fonte

Leggi altre domande sui tag