Quello che so è:
- Un test funzionale mira a testare un singolo componente (come un controller WebApp) dal punto di vista dello sviluppatore . = > Ho raggiunto tutti i requisiti per farlo funzionare bene?
- Un test di accettazione mira a testare un gruppo di componenti insieme e si concentra sul punto di vista del business. = > Il mio programma soddisfa i requisiti forniti dal Cliente / Azienda / Cliente?
Oggi, lavoro su un progetto personale e ho iniziato a seguire i metodi BDD / test e ho quindi creato test di accettazione e test funzionali.
Ho notato che molti requisiti per i test funzionali sono esattamente gli stessi dei test di accettazione.
Supponiamo che un controller webapp tenti di aggiungere un prodotto al paniere del mio e-commerce.
Uno dei test funzionali interessati sarebbe:
When I go to productList.html page and I call the addProductToBasket action, I expect my controller to retrieve the right quantity and the right product name, and expect my view to display it. (very generic)
Sicuramente, Business si aspetta che l'applicazione si comporti nello stesso modo in cui uno sviluppatore aveva scritto in alcuni dei suoi test funzionali, quindi in questo caso, un test di accettazione sarebbe:
Given Bob enters in the product list page, when he clicks on the button "addToBasket" near to the "Nike basket n°2" product, basket should display quantity '1' and "Nike basket n°2". (specification by example)
Entrambi i test sono molto simili, vero?
Quindi la mia domanda è: rischiamo di creare un sacco di codice di duplicazione e test ridondanti durante la creazione di test funzionali e di accettazione in parallelo?
Che cos'è una buona pratica? Fare test funzionali portano solo cose puramente tecniche, come comportamenti eccezionali / buggy, scenari variabili incoerenti, ecc ... e lasciare che i test di accettazione si occupino dell'intero scenario degli scenari di business?
Direi anche: I test funzionali sono davvero necessari quando attribuiamo una grande importanza al test di accettazione?