Test funzionali e di accettazione side-by-side (SpecFlow)

2

Modifica: ho trovato una domanda strettamente correlata: StackOverflow

Questa domanda non riguarda le differenze tra test funzionali e test di accettazione! Quasi tutte le informazioni che ho trovato sul Web spiegano semplicemente la differenza tra loro. So che i test funzionali (FT) affrontano le condizioni marginali e gli scenari di bug, mentre i Test di accettazione (AT) rispondono ai requisiti aziendali. Raggiungo entrambi con SpecFlow.

Sto avendo qualche problema a ricoprire la separazione dei due, da una prospettiva di struttura / gerarchia del progetto. Attualmente, ho un progetto di test unitario con una cartella AcceptanceTests e una cartella FunctionalTests . Tutte le definizioni dei miei passi sono mescolate insieme in una cartella StepDefinitions .

Trovo che dovrò ripetere molto me stesso e che il pannello MsTest mischia tutto insieme quando faccio gruppo su Tratti. Voglio stabilire qual è lo standard del settore, quindi ho cinque domande:

  • Ripeto la trama "In order to... as a... I want to..." in un file-funzione separato per AT e FT?

  • Ripeto anche tutti gli scenari dell'AT nei FT, o solo scenari di condizioni marginali?

  • Devo tenere gli AT e i FT nei loro spazi dei nomi e / o nei loro progetti?

  • Dovrei provare a chiamare i metodi del passo dello scenario del FT dalle definizioni del passo dell'AT, visto che il lavoro dei grunt viene svolto dagli FT in ogni caso?

  • Qualche consiglio sulla mia attuale configurazione (ad es. è eccessivo fare entrambe le cose?) è il benvenuto.

posta Heliac 05.02.2016 - 12:14
fonte

1 risposta

4

Non so se sono d'accordo con la tua premessa. E penso che tu stia un po 'confondendo un sacco di idee e termini.

test funzionali è un test che verifica le funzioni del tuo sistema. questa può essere un'unità (dove stiamo testando solo una specifica classe e dipendenze / integrazione di simulazione / falsificazione (che è la verifica della scatola nera e verifica l'interazione tra tutti i pezzi in esecuzione del tuo sistema). Questo non è solo limitato a condizioni marginali e bug scenari, dovresti testare funzionalmente tutte le parti della tua applicazione.

Il test di accettazione è un test eseguito per / dai vostri stakeholder aziendali che il software soddisfa i loro criteri di accettazione. i test di accettazione possono essere i test di integrazione, ma non dovrebbero mai essere unit test perché i test unitari non esercitano l'intero sistema.

con quello fuori mano passiamo a SpecFlow. SpecFlow è uno strumento piacevole che consente di creare test di accettazione della sintassi del cetriolo in una rete .net.

Quindi prendiamo un esempio

Definisci prima una funzione: Crea un nuovo account

Per monitorare le persone che visitano il mio sito come proprietario del sito, vorrei che gli utenti creino account.

Definisci tutti gli scenari che potresti incontrare quando stai creando un nuovo utente.

Scenario Navigate to Account Creation Page:

Given I am logged in as 'Site owner'  
When I have navigate to the site creation page  
Then I see the following fields  
| Field    |
| Username |
| Password | 
And the required fields are marked with '*' 
| Field    | 
| Username |
| Password |

Scenario Create account - Happy: 
Given I am logged in as 'Site owner'
And I have navigated to the site creation page
When I fill out the form as follows
| Username  | Password       |
|'somename' | 'somepassword '|
And I click the 'save' button
Then I should see the 'confirmation' message 'Account created'



Scenario 3: Required fields Missing

Given I am logged in as 'Site owner'
And I have navigated to the site creation page
When I fill out the form as follows
|Username |Password |
|''       | ''      |
And I click the 'save' button
Then I should see the 'error' message 'some error message'

Una delle parti chiave di SpecFlow è che le definizioni dei passaggi sono globali, quindi utilizza i parametri o le tabelle in modo da poter riutilizzare i passaggi come visualizzare un messaggio di conferma / errore, o accedere o compilare un modulo. ti dà molta flessibilità nel modo in cui definisci i tuoi passi

    
risposta data 05.02.2016 - 19:28
fonte

Leggi altre domande sui tag