2009-12-14 7 views
7

Je suis relativement nouveau en matière de tests unitaires et de TDD. Ce n'est que récemment que j'ai terminé ma première application de production qui a (au moins en théorie) 100% de couverture de code. J'ai déjà fait des tests unitaires dans des projets précédents pendant un certain temps, mais pas de façon vraiment TDD et avec une bonne couverture de code. Cela avait toujours été une pensée après-coup. Je pense que j'ai une assez bonne compréhension maintenant. J'essaie également de former le reste de l'équipe sur le TDD et les tests unitaires afin que nous puissions nous développer et commencer à faire des tests unitaires dans toutes nos applications, et finalement progresser vers un TDD complet avec constructions automatisées & intégration continue. J'ai posté a thread here concernant mon plan d'attaque/programme de formation pour les commentaires & critisism. L'une des réponses (en fait la plus élevée) a suggéré que je configure d'abord l'infrastructure avant de poursuivre la formation. Malheureusement je n'ai aucune exposition à cela, et googling sur les sujets est difficile parce que les pages pour CruiseControl.NET/nAnt/etc n'expliquent pas vraiment le «pourquoi» nous devrions mettre cela en place et le «comment» tout se connecte à temps.Infrastructure requise pour TDD?

Nous sommes une petite boutique (environ 10 développeurs) et utilisons presque exclusivement les technologies Microsoft et faisons notre développement dans VB.NET. Nous cherchons à commencer à utiliser C#, mais c'est pour une autre fois. J'ai utilisé le projet MSTest fourni avec VS2008 pour mes tests unitaires, et j'ai construit mes applications en utilisant Visual Studio, et en les déployant en utilisant des projets d'installation MSI ... Nous utilisons aussi (malheureusement) VSS pour notre contrôle soure - mais c'est aussi sur le billot et j'aimerais vraiment m'en débarrasser et utiliser la subversion.

Je sais que j'ai besoin d'utiliser CruiseControl.NET pour CI, et nAnt ou MSBuild pour construire les applications. Et j'ai probablement besoin d'un serveur de build pour exécuter toutes ces builds. Mais je ne trouve rien qui "connecte" les points et explique comment ils interagissent entre eux, ce qui devrait être sur votre serveur de construction, quand vous devriez construire avec votre serveur de construction (est-ce juste pour les builds de déploiement, ou même quand vous je veux juste compiler l'application que vous développez après avoir fait un petit changement, sur votre environnement local?). Je prévois également de réduire MSTest car je l'ai trouvé buggé et j'utiliserai nUnit à la place.

Est-ce que quelqu'un peut peut-être éclaircir cette lacune que j'ai de 'savoir comment faire TDD' à 'mettre en place l'infrastructure adéquate pour que toute l'équipe puisse le faire et travailler au mieux'? Je comprends ce qu'est l'intégration continue, mais encore une fois, je ne suis pas sûr de savoir comment un serveur de build devrait être configuré et comment il se connecte à tout, et pourquoi nous en avons besoin (par exemple, le pitch pour la gestion).

merci beaucoup pour votre temps.

De quelle partie de finalbuilder ai-je besoin? Il semble qu'il y ait un certain chevauchement avec le constructeur final et teamcity. Le serveur Finalbuilder semble être un serveur CI, donc je suppose que je n'ai pas besoin de ça. FinalBuilder semble être un serveur de construction - mais je pensais que TeamCity est aussi un serveur de build ... Et Automise semble être un outil d'automatisation visuelle Windows, comme une sorte de plate-forme de développement pour les applications winforms ...

_J'ai aussi ne voient pas de support pour le constructeur final dans The Team City Supported Apps Diagram: _

+1

Je pense que le lien suivant contient un ensemble assez complet d'informations sur ce sujet: http://martinfowler.com/articles/continuousIntegration.html – Tomas

Répondre

5

Jetez un coup d'œil à un webinaire que j'ai fait il ya quelques semaines - How To Start Unit Testing Successfully. Dans ce webinaire, j'ai parlé d'outils et de bonnes pratiques en matière de tests unitaires et il s'adressait à des développeurs comme vous qui souhaitent introduire les tests unitaires dans leur organisation.

Première commande d'entreprise que vous voulez mettre un CI processus (intégration continue) en place et que vous aurez besoin de trois outils:

  1. contrôle Source
  2. Création du serveur
  3. client Build/script

J'espère que vous avez déjà une forme de contrôle de la source en place, alors parlons des deux autres.

Création du serveur - vérifie le contrôle de code source et lorsqu'il change (ou une autre condition remplie) exécute un script de compilation sur certains client (ou même machine) il y a plusieurs Je recommande disponibles serveur de build JetBrain de TeamCity il est facile à installer et utilisez (super interface web) et est gratuit pour jusqu'à 20 développeurs (c'est vous).

Générer le script - Sur votre client de génération, vous voulez exécuter un script de construction qui créerait votre solution et exécuterait vos tests unitaires. TeamCity a quelques capacités de test de base &, mais pour des options plus avancées (installateur de build, documentation, etc.) vous aurez besoin d'un scripteur au travail, nous utilisons FinalBuilder - ce n'est pas gratuit mais il a un très bon éditeur. Si vous cherchez une alternative gratuite, jetez un oeil à ANT ou NANT - mais soyez prêt à éditer beaucoup de XML.

Autres outils - Comme une bonne partie des tests unitaires avec succès est de savoir comment il est facile d'écrire et exécuter des tests sur les machines du développeur, je vous suggère de vérifier s'il y a de meilleures années IDE ou des outils externes qui pourraient aider les développeurs à écrire & exécuter leurs tests unitaires.

+1

+1 pour TeamCity. Nous avons commencé avec CruiseControl.NET et sommes passés à TeamCity parce que c'était beaucoup plus facile à administrer. Les scripts NAnt sont assez faciles à éditer, mais vous n'avez pas besoin de faire grand chose avec TeamCity. – TrueWill

+0

Merci beaucoup pour l'information. J'ai édité mon article original pour noter que nous utilisons VSS. Bien que je déteste VSS =). J'espère obtenir une configuration de subversion afin que nous puissions finalement nous débarrasser de ce VSS bogué. J'ai cependant une question: utilisez-vous votre serveur de compilation pour compiler vos propres builds locaux au fur et à mesure que vous développez? Ou est-ce seulement pour les builds de déploiement? – dferraro

+1

Je lance le script de construction sur ma machine locale mais généralement VS suffit pour construire et tester mon projet –