Questa domanda è un seguito alla mia precedente domanda , che era un po ' generale, così Sarò più specifico con questo.
Voglio automatizzare i test di accettazione su un'applicazione web. In breve, questa applicazione consente all'utente di creare contratti per gli abbonati con due vincoli:
- Non puoi creare più di un contratto per un sottoscrittore.
- Una volta creato un contratto, non può essere eliminato (dall'interfaccia utente).
Diciamo che TestCreate è un caso di test con test per la normale creazione di un contratto.
I vincoli hanno introdotto complessità nel processo di test, principalmente dipendenze tra casi di test ed esecuzioni di test.
- Prima di eseguire TestCreate dobbiamo assicurarci che l'applicazione sia in uno stato adatto (l'iscritto non ha contratto)
- Se eseguiamo TestCreate due volte, la seconda esecuzione avrà esito negativo poiché lo stato dell'applicazione sarà cambiato.
- Quindi dobbiamo tornare allo stato iniziale (ad esempio, eliminare il contratto), operazione impossibile dall'interfaccia utente.
Più in generale, dopo ogni test case dovremmo garantire che lo stato sia ripristinato. E poiché, in questo caso, è impossibile farlo dall'interfaccia utente, come gestirlo?
Possibile soluzione : ho pensato di fare un backup del database nello stato che desidero, e dopo ogni test case, eseguo uno script che cancella il db e ripristina il backup. Tuttavia, trovo che sia troppo pesante da fare per ogni singolo caso di test. Inoltre, cosa succede se alcune informazioni sono memorizzate nei file? o in database multipli o non accessibili?
La mia domanda: in questa situazione, cosa farebbe un tester esperto per scrivere test automatizzati e controllabili. Grazie.
Ulteriori informazioni : sto cercando di integrare i test in un framework BDD (Behaviour Driven Development), che trovo essere una soluzione perfetta per la documentazione di test e la comunicazione, ma non risolve questo problema problema particolare (rende anche più difficile)