35 votes

Application de base de données de tests unitaires avec logique métier exécutée dans l'interface utilisateur

Je gère une assez grande de demande (50k+ lignes de code) par moi-même, et il gère assez critique les actions commerciales. Pour décrire le programme simple, je dirais que c'est une fantaisie de l'INTERFACE utilisateur avec la possibilité d'afficher et de modifier des données de la base de données, et dont il a la charge, autour de 1 000 unités de location, et environ 3k locataires et de toutes les finances.

Quand je fais des changements, parce que c'est tellement grand d'une base de code, j'ai parfois de casser quelque chose quelque part d'autre. En général, je test si les trucs que j'ai changé au niveau fonctionnel (c'est à dire je lance le programme et de travailler par le biais de l'INTERFACE utilisateur), mais je ne peux pas tester pour chaque situation. C'est pourquoi je veux commencer avec des tests unitaires.

Cependant, ce n'est pas un véritable, de trois niveaux de programme avec un niveau de base de données, une couche d'entreprise, et une couche utilisateur. Beaucoup de la logique d'affaires est réalisé dans les classes de l'INTERFACE utilisateur, et beaucoup de choses sont faites sur les événements. Pour compliquer les choses, tout est piloté par base de données, et je ne l'ai pas vu (pour l'instant) de bonnes suggestions sur la façon de l'unité de test de la base de données des interactions.

Comment être un bon moyen de se familiariser avec les tests unitaires pour cette application. Garder à l'esprit. Je n'ai jamais fait de tests unitaires ou TDD avant. Dois-je réécrire pour enlever la logique métier de l'classes de l'INTERFACE utilisateur (beaucoup de travail)? Ou est-il un meilleur moyen?

16voto

yamspog Points 3923

Je voudrais commencer en utilisant certains outil qui permettrait de tester l'application par le biais de l'INTERFACE utilisateur. Il y a un certain nombre d'outils qui peuvent être utilisés pour créer des scripts de test qui simule l'utilisateur en cliquant sur l'application.

Je suggère également que vous commencez à ajouter des tests unitaires à mesure que vous ajoutez des morceaux de nouvelles fonctionnalités. Il est temps de créer une couverture complète une fois que l'application est développée, mais si vous le faites de manière incrémentielle puis de distribuer l'effort.

Nous avons test la base de données des interactions par le fait d'avoir une base de données distincte qui est utilisé seulement pour les tests unitaires. De cette façon, nous avons une statique et contrôlable ensemble de données afin que les demandes et les réponses ne peuvent être garantis. Nous créons ensuite le code c# pour la simulation de divers scénarios. Nous utilisons nUnit pour cela.

9voto

Sean Points 336

Je vous recommande fortement de lire l'article Travailler efficacement avec le code hérité . Il décrit une stratégie viable pour ce que vous essayez d'accomplir.

6voto

Jim Kiley Points 2754

Une option est la suivante: chaque fois qu’un bogue survient, écrivez un test pour vous aider à trouver le bogue et à résoudre le problème. Faites en sorte que le test passe lorsque le bogue est corrigé. Ensuite, une fois le bogue résolu, vous disposez d'un outil qui vous aidera à détecter les modifications futures susceptibles d'avoir une incidence sur le bloc de code que vous venez de corriger. Au fil du temps, votre couverture de tests s'améliorera et vous pourrez exécuter votre suite de tests sans cesse croissante à chaque fois que vous apporterez un changement de grande envergure.

6voto

Otávio Décio Points 44200

TDD implique que vous construisiez (et exécutiez) des tests unitaires au fur et à mesure. Pour ce que vous essayez de faire - ajoutez des tests unitaires après coup - vous pouvez envisager d’utiliser quelque chose comme Typemock (un produit commercial). De plus, vous avez peut-être construit un système qui ne se prête pas à l’unité de test et, dans ce cas, une refactorisation (ou beaucoup) peut être appropriée.

5voto

Prutswonder Points 5146

Tout d'abord, je vous recommande de lire un bon livre sur les tests unitaires, comme L'Art De Tests Unitaires. Dans votre cas, c'est un peu tard pour effectuer le Test Driven Development sur votre code existant, mais si vous voulez écrire vos tests unitaires autour d'elle, alors voici ce que je recommande:

  1. Isoler le code que vous souhaitez tester dans des bibliothèques de code (si elles ne sont pas déjà dans les bibliothèques).
  2. Écrire le plus commun des scénarios de Cas d'Utilisation et les traduire dans une application qui utilise votre code bibliothèques.
  3. Assurez-vous que votre programme de test fonctionne comme vous l'attendez.
  4. Convertir votre programme de test en tests unitaires à l'aide d'un framework de test.
  5. Obtenir le feu vert. Si non, alors vos tests unitaires sont défectueux (en supposant que vos bibliothèques de code de travail) et vous devriez faire un peu de débogage.
  6. L'augmentation le code et le scénario de la couverture des tests unitaires: Que faire si vous avez entré des résultats inattendus?
  7. Obtenir le feu vert à nouveau. Si l'unité de test échoue, alors il est probable que votre code de bibliothèque n'a pas la prolongation de la couverture du scénario, il est donc refactoring temps!

Et pour le nouveau code, je vous suggère d'essayer en utilisant le Test Driven Development.

Bonne chance (vous en aurez besoin!)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X