Edit: j'ai trouvé cet article seulement maintenant décrire la notion de limiter vous-même à parler seulement sur des domaines spécifiques afin d'éviter fragile scénarios.
Son principal argument est que le nombre minimal de domaines, vous pouvez parler du domaine du problème, et la solution de domaine. Si vous parlez de quelque chose en dehors de ces deux domaines, alors vous impliquer trop d'intervenants, d'introduire trop de bruit, et de vous rendre vos scénarios fragile.
Il mentionne également un absolu "déclaratif" ou "impératif" modèle d'être un mythe. Il parle d'une cognative modèle appelé "chunking", en disant qu'à toute votre niveau d'abstraction, vous pouvez "morceau" ou "mettre bas". Cela signifie que vous pouvez obtenir plus explicite (comment?) ou plusieurs méta (ce qui ou pourquoi?). Vous morceau à partir d'un impératif modèle en demandant: "que faisons-nous?" Vous morceau vers le bas en disant: "comment allons-nous faire cela?" Donc je suppose que je n'aurais pas trop accroché sur déclarative vs impératif - il ne sera pas vous obtenir n'importe où autant que ce problème va.
Ce que vous obtiendrez quelque part à l'est de déterminer les domaines dont chaque terme appartient, et éventuellement par l'identification des parties prenantes est l'expert pour le domaine que ce terme appartient. Une fois que vous avez identifié tous les domaines, vous pouvez choisir des termes connexes qui sont dans l'un des scénario les plus éminents de domaines, ou de supprimer des non-côté d'états entièrement. Si ce n'est pas suffisant, vous pouvez partager jusqu', préciser, ou de déplacer le scénario de sorte qu'il peut satisfaire à ces exigences.
BTW, il utilise également le scénario de se connecter sur une INTERFACE utilisateur, de sorte que vous avez une orientation concrète :)
Avant la modification: (une partie de cette s'applique toujours. Le "DB ou pas de DB" et "UI ou non de l'INTERFACE utilisateur" des questions sont indépendantes)
1 - Déclarative ou Impérative scénarios?
Déclarative quand vous le pouvez, alors impératif a une certaine valeur (à certaines étapes du cycle de vie du projet).
L'impératif est un moyen plus facile de penser pour les testeurs et les analystes d'affaires qui ne sont pas familiers avec la théorie de l'information et de la conception. Il est aussi plus facile de penser plus tôt dans un projet, avant même que vous avez cloué en bas de votre problème de domaine et des flux de travail. Il peut être utile pour la pensée exploratoire.
Déclarative est moins sujet à changement au cours du temps. Depuis une interface graphique est la partie d'une application plus soumis à des taux de désabonnement à un coup de tête, ce qui est extrêmement précieux. Il est plus facile de réfléchir une fois que vous avez identifié votre problème de domaine et des flux de travail, et qui sont plus concentrés sur relationnelle de concepts. Il est plus stable et plus généralement de modèle applicable.
Si vous écrivez des cas de test avec un médicament générique et un modèle déclaratif, vous pourriez les mettre en œuvre à l'aide de n'importe quelle combinaison de la pleine application de la GUI de l'automatisation, les tests d'intégration, ou des tests unitaires.
comment vous décrire de tels trucs comme "page d'Accueil" ou "Produits" page d'?
Je ne suis pas sûr que je serais au niveau de la base de caractéristiques et les exigences. Vous pouvez faire des sous-fonctions et sous-exigences qui décrivent les détails de mise en œuvre, à l'instar de l'INTERFACE utilisateur spécifique des flux de travail. Si vous êtes à la description d'un morceau de l'INTERFACE utilisateur, alors vous devriez être la définition d'une fonctionnalité de l'INTERFACE utilisateur/exigence.
2 - l'Exercice de l'INTERFACE utilisateur ou pas?
Les deux.
Je pense que c'est extrêmement lent et fragile
Oui, il est. Exécuter toutes les tâches de haut niveau scénario/exigence avec l'INTERFACE utilisateur et le plein DB intégration, mais ne faites pas d'exercice chaque code unique chemin avec la fin à la fin UI automation, et certainement pas des cas limites. Si vous le faites, vous passerez plus de temps à arriver au travail, et beaucoup moins de tests de votre application.
Vous pouvez l'architecture de votre application, de sorte que vous pouvez le faire à moindre coût des tests d'intégration, y compris d'une seule pièce de l'INTERFACE utilisateur en fonction des tests. Les tests unitaires sont également précieux.
Mais la moins de tests d'intégration vous le faites, plus le front-gifles bugs que vous allez manquer. Il peut être plus facile d'écrire des tests unitaires, et ils seront certainement moins fragiles, mais vous allez tester votre application, par définition.
3 - Réel de la base de données ou pas?
Les deux.
Haut niveau de bout en bout, les tests d'intégration doit être fait avec l'ensemble du système en place. Cela comprend un réel DB, l'exécution de vos tests avec chaque système sur un autre serveur, etc.
Le niveau inférieur, vous obtenez, plus je défends les objets fantaisie.
- Les tests unitaires doivent seulement tester les différentes classes
- À mi-niveau des tests d'intégration devraient éviter de coûteux, fragiles, percutants, dépendances, telles que le système de fichiers, bases de données, le réseau, etc. Essayez de tester la mise en œuvre de ces fragiles et percutants, des dépendances avec les tests unitaires et de bout en bout tests seulement.