Question

Je mets en œuvre des tests de fumée sur notre site Web.

J'utilise un format donné / quand / puis pour les tests d'acceptation automatisés existants / histoires d'utilisateurs. Mais maintenant, je veux faire un premier test de fumée de:

Given I'm on the homepage

Then I should see "Welcome To The Site"

Est-ce que je manque quelque chose? Est-ce "ok" de ne pas avoir quand?

Outils utilisés: MVC3, SpecFlow, Nunit, Wasing

Était-ce utile?

La solution

Il s'agit de syntaxe complètement valide pour omettre tout ce qui est donné, quand ou alors (et même pour les mélanger dans n'importe quel ordre - SpecFlow s'en fiche.)

Cependant, à des fins de lisibilité, plutôt que d'omettre quand je reformuche souvent le don, c'est-à-dire

When I view the homepage
Then I should see "Welcome To The Site"

Je préfère omettre la section donnée, car le moment est censé indiquer quelle est l'action testée.

Si le code de la liaison étape est le même et que vous souhaitez le réutiliser, vous pouvez toujours lier votre don et mon quand à la même méthode.

[Given(@"I'm on the homepage"]
[When(@"I view the homepage"]
public void NavigateToHomePage()
{
     ...

Autres conseils

Je pense que vous manquez vraiment le point ici. Tu TOUJOURS besoin d'un When. C'est la chose que vous devriez tester! Ce que vous pouvez laisser de côté est le Givens

Ce que vous devriez dire, c'est;

When I visit the homepage
Then I should see "Welcome To The Site"

Given When Then est vraiment une façon plus agréable de représenter une machine d'état.

Given some initial state // in your case, non
When I perform some action // in your case, visiting the homepage
Then I have some final state // in your case, text displayed to a user

Ce que j'aime faire, c'est penser à toutes les choses qui doivent être présentes pour permettre When se passer. Dans votre cas, il ne semble pas y avoir d'état initial. Mais considérez si vous aviez une application Web. Vous devez avoir un état initial avant de visiter la page d'accueil (vous devez vous assurer que l'utilisateur est connecté);

Given a user // user must be stored in the database
And the user is logged in // a logged in user must be in the session
When the user visits their homepage
Then the user should see "Welcome To Your Homepage"

Un scénario alternatif serait;

Given no logged in user // some people would leave this Given out, but I add it for completness
When a user visits their homepage
Then the user should be redirect to the login page

Comme quelqu'un l'a souligné correctement, la plupart des outils BDD ne font pas réellement la différence entre Given When Then mais tu devrais! La nature verbale de «donnée quand alors» a été choisie comme plus facile pour nous, les humains, à comprendre et aident nos processus de pensée. Une machine ne s'en soucie pas moins de ce que vous appelez les étapes. Le cas étant le cas, vous devez tout faire pour utiliser correctement les mots clés à tout moment.

Excuses pour la résurrection de fil ...

J'aurais probablement parti avec:

Given there is a homepage
When I view the homepage
Then I should see "Welcome To The Site"

J'aime en garder au moins un Given, When et Then dans chaque Scenario - N'oubliez pas que vous pouvez également utiliser And et But (Pas qu'ils soient particulièrement pertinents pour ce scénario). Vous pouvez même faire une liste de style bullet-point avec *.

Je dirais:

Given I have requested the home page
When the home page loads
Then I should see 'Welcome To The Site'

J'ai tendance à voir donné comme l'équivalent des conditions préalables traditionnelles. Quand comme l'équivalent de l'action de test. Puis comme l'équivalent du résultat attendu.

Par conséquent, s'il n'y a pas de préditions, je laisserais de côté et me concentrerais simplement sur le moment et ensuite:

When I'm on the homepage
Then I should see "Welcome To The Site"

SpecFlow vous permettra d'utiliser donné ou quand, mais Visual Studio vous permettra également d'écrire une seule classe qui fait 1000 lignes longues. Ce n'est pas parce que les deux sont possibles.

Vous n'avez pas besoin d'un quand. J'aime la réflexion sur les mots clés donnés / alors comme

Étant donné - il s'agit d'une étape de préparation, faites tout ce dont vous avez besoin pour pouvoir effectuer le test lorsque - cela devrait être une action que votre test vérifiera. Ensuite - cela devrait être là que vous vérifiez votre test en fonction de l'action effectuée dans les étapes du moment.

Comme la suggestion précédemment, ils affectent uniquement l'ordre d'exécution.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top