Test di accettazione automatizzati in base a vincoli specifici

1

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)

    
posta H-H 19.02.2011 - 17:00
fonte

2 risposte

1

Che ne dici di creare un gruppo di macchine virtuali con istantanee degli stati desiderati, quindi automatizzare i test in questi? VMware offre un'API ( VIX ) per automatizzare le operazioni della macchina virtuale.

    
risposta data 19.02.2011 - 19:11
fonte
0

Non capisco perché le soluzioni BDD siano insufficienti qui. Cetriolo sembra adattarsi al disegno di legge. Imposta il tuo sistema con la stringa "Given" e scrivi i tuoi matchers (passaggi) per impostare il sistema in base a tali vincoli.

Scenario: No contracts
Given a subscriber named "HH" that has no contract
When I create a contract
Then I should see "Contract Created!"

Scenario: Has a contract
Given a subscriber named "HH" that has one contract
When I create a contract
Then I should see the error "HH already has a contract!"

...

Se ricordo correttamente, cucumber ripristina il sistema dopo ogni scenario. Penso che tu stia cambiando i quadri BDD ...

    
risposta data 20.02.2011 - 17:29
fonte