2010-11-11 32 views
0

Dans notre application client/serveur, le côté serveur est exposé par une collection de services Web. Le client interagit avec ce que nous appelons un contexte d'application pour effectuer des appels au serveur. Je voudrais être en mesure de se moquer du contexte d'application pendant les tests d'acceptation afin d'isoler le test au client, plutôt que de laisser les tests circuler du client au serveur vers la base de données et de configurer la base de données avec le client. données correctes pour chaque test que nous voulons exécuter.Existe-t-il un moyen d'injecter un faux lors de l'utilisation de blanc pour les tests d'acceptation?

Est-ce possible? Ou devrais-je adopter une approche différente?

Répondre

2

Blanc s'exécute à l'aide de Microsoft UI Automation, qui s'intéresse à toute interface graphique prise en charge. Il ne s'inquiète pas du tout du code, et vous ne pouvez pas interagir avec ce code de la même manière que vous le feriez avec un test unitaire.

En règle générale, vous démarrez votre application via son fichier .exe, puis utilisez White pour l'automatiser. Pour le démarrer avec seulement le client, vous devez provoquer le processus lui-même pour démarrer avec le contexte d'application simulé. Cela signifierait compiler le .exe en conséquence, ou avoir deux exécutables différents, dont l'un configure vos paquets correctement et l'autre pas.

Sans la base de données, vous n'effectuez pas réellement un test d'acceptation, qui vérifie que le code est en bon état pour être accepté en production. Donc, je ne m'inquiéterais pas de me moquer de la base de données.

je prendrais une de ces approches:

  • Recréez la base de données pour chaque essai, le peuplant avec un contexte approprié si nécessaire

  • Tag les données générées par le test avec la date -temps pour que vous puissiez le distinguer des données normales

  • Faites une version fictive de votre serveur qui répond avec des réponses fixes pour les demandes, et demandez à l'application de l'utiliser à la place (peut-être avec juste un argument de ligne de commande). S'il vous plaît noter que cela ne vérifie toujours pas que tout fonctionne avec la base de données. Cela peut être approprié si vous voulez simplement montrer le traitement des erreurs, ou si une autre équipe sera responsable de la production du service.

Espérons que ces idées aident et offrent des options, de toute façon!