Test unitaires visual studio

Preview:

DESCRIPTION

Vous avez entendu parler des tests unitaires, vous voulez en faire, mais il vous manque le comment ? OK pour faire des tests Unitaires, mais sans pondre des milliers de lignes de codes, sans réinstaller autre chose ? Votre Visual Studio a la réponse, Alexandre et Jade vous montreront comment tirer parti de MsTest, cet Outil intégré à Visual Studio. Au programme, ils vous feront un court rappel sur les TU, une présentation de l’interface, puis celle du catalogue de possibilités de l’outil, des démonstrations en live, son positionnement par rapport à la concurrence, et les évolutions futures de l’outil.

Citation preview

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite1

Périmètre de la présentation

⦿Visual Studio 2010 Professional

⦿Connaissance des Tests Unitaires

⦿Concentration sur l’Outil

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite2

Les présentateurs

⦿Alexandre MEYER

⦿ Concepteur-Développeur .Net

⦿alexandre.meyer@soat.fr

⦿ Jade DORVIL

⦿ Développeur .Net

⦿ Jade.dorvil@soat.fr

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite3

Plan de la présentation

I. Rappel sur les Tests unitaires

II. Présentation de MS Test

III. MsTest face à la Concurrence

IV. Les plus de la licence Pro/Ultimate

V. Les apports du passage à Visual Studio 2012

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite4

Alexandre MEYER et Jade DORVIL Les Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite5

I. Rappel sur les tests unitaires

1) Pourquoi tester?

2) Qu’est ce qu’un test unitaire ?

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite6

1. Pourquoi tester?

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite7

1. Pourquoi tester?

⦿Raisons liés au Projet :

⦿ Politique

⦿ Risques de pertes Financières

⦿ Criticité

⦿ Produit Grand Public

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite8

1. Pourquoi tester?

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite9

1. Pourquoi tester?

⦿Pour l’équipe :

⦿ Non-régression entre les commit : IC

⦿ Confiance améliorée entre les développeurs

⦿ Maintenabilité

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite10

1. Pourquoi tester?

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite

11

1. Pourquoi tester?

⦿Pour vous-mêmes :

⦿ Valider couche par couche

une architecture complexe

⦿ Faciliter le débogage

⦿ Connaître les performances

⦿Objectifs atteints ou non ?

⦿Amélioration de la

performance de manière

unitaire

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite12

1. Pourquoi tester?

2. Qu’est-ce qu’un test unitaire ?

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite13

I. Rappel sur les tests unitaires

2. Qu’est ce qu’un test unitaire ?

⦿Définition :

« le test unitaire est un procédé permettant de s'assurer

du fonctionnement correct d'une partie déterminée

d'un logiciel ou d'une portion d'un programme (appelée

« unité » ou « module »). »

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite14

2. Qu’est ce qu’un test unitaire ?

Les Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t,Diffusion Interdite15Alexandre MEYER et Jade DORVIL

2. Qu’est ce qu’un test unitaire ?

⦿Ses caractéristiques :

⦿ Taux de couverture

⦿ Réutilisation

⦿ Atomicité

⦿ Contexte(s) de

départ/d’arrivée

⦿ Synchrone/Asynchrone

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite16

2. Qu’est ce qu’un test unitaire ?

⦿Son exécution:

⦿ Réussite

⦿ Temps d’exécution

⦿ Contexte d’exécution

⦿ Environnement de test

⦿MTA/STA

⦿Mono-Cœur/Multi-Cœurs

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite17

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite18

Plan de la présentation

I. Rappel sur les Tests unitaires

II. Présentation de MS Test

III. MsTest face à la Concurrence

IV. Les plus de la licence Pro/Ultimate

V. Les apports du passage à Visual Studio 2012

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite19

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite20

II. Présentation de MsTest

1. Historique

2. Fonctionnement de l’outil

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite21

1. Son histoire

1998 Infrastructure

xUnit (eXtremeProgramming)

Années 2000

Constat : Trop de code

2005

Arrivé de MsTest (VS 2005 Team

System)

2010

Version améliorée de MsTest

2012

Evolutions notables :

- Isolation du code

- Méthodes annonymes

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite22

1. Son histoire

Concept de l'infrastructure xUnit

Équivalent VS 2005 (voir les attributs ci-dessous)

Description

Test TestMethod Ce sont vos tests. Fournit la logique pour vérifier que le

résultat est bien celui prévu et vous informe si le résultat

n'est pas atteint. Imaginez qu'il s'agit de votre

« méthode ».

Contexte du test

(Fixture)

TestClass Regroupement logique d'un à plusieurs tests. Imaginez

qu'il s'agit de votre « classe ».

Suite de tests Test List ** Regroupement logique d'un à plusieurs contextes de test.

Imaginez qu'il s'agit de votre « bibliothèque de classes ».

Remarque : Cette liste n'a pas besoin d'attribut.

Testeur Infrastructure de

tests unitaires VS

2005 VSTS

GUI/Application de console chargée de découvrir,

d'exécuter et de présenter les résultats des tests. Dans

cet article, Visual Studio 2005 Team System servira de

testeur.

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite

23

II. Présentation de MsTest

1. Son Histoire

2. Fonctionnement de l’outila. L’interface Utilisateur

b. Création des Tests Unitaires

c. Spécificités de l’Outil

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite24

a. L’interface Utilisateur

⦿ Les vues

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite25

Les vues

⦿Test View

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite26

Les vues

⦿Test List Editor

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite27

Les vues

⦿Test Results

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite28

Les vues

⦿Test Run

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite29

a. L’interface Utilisateur

⦿ L’anatomie d’un Test Unitaire

⦿ Microsoft.VisualStudio.TestTools.UnitTesting

⦿ TestClassAttribute

⦿ TestMethodAttribute

⦿ TestContext

⦿ Et autres attributs de test

⦿ [ClassInitialize()]

⦿ [ClassCleanUp()]

⦿ [TestInitialize()]

⦿ [TestCleanUp()]

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite30

a. L’interface Utilisateur

⦿ Les actions possibles sur les Tests

⦿ Test en Release

⦿ Test en Debug

⦿ Relance de Test sur des Assembly déjà déployés.

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite31

a. L’interface Utilisateur

⦿ Gestion des Tests

⦿ Listes de Tests

⦿ Séquences de Test ordonnées

⦿ Catégories

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite32

Alexandre MEYER et Jade DORVIL Les Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite33

a. L’interface Utilisateur

⦿ La configuration des environnements de Test

⦿ Déploiement

⦿ Timeout au niveau solution

⦿ Réglage des types d’Host

⦿ Lancement des scripts

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite34

Alexandre MEYER et Jade DORVIL Les Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite35

II. Présentation de MsTest

1. Son Histoire

2. Fonctionnement de l’outila. L’interface Utilisateur

b. Création des Tests Unitaires

c. Spécificités de l’Outil

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite36

b. Création des Tests Unitaires

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite37

Débit/Crédit sur compte Bancaire

Alexandre MEYER et Jade DORVIL Les Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite38

II. Présentation de MsTest

1. Son Histoire

2. Fonctionnement de l’outila. L’interface Utilisateur

b. Création des Tests Unitaires

c. Spécificités de l’Outil

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite39

c. Spécificités de L’Outil

⦿ Les tests introspectifs

⦿Multi-Cœurs

⦿Gestion Du MTA

⦿DataDriven Tests

⦿ Les génériques

⦿Tests pour Le Web

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite40

Les tests introspectifs

⦿Besoin de tester des méthodes privées ?

⦿Décapsulation => Accessor

⦿Pas de changement du code métier

⦿Accès autorisé à toute la classe.

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite41

Alexandre MEYER et Jade DORVIL Les Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite42

c. Spécificités de L’Outil

⦿ Les tests introspectifs

⦿Multi-Cœurs

⦿Gestion Du MTA

⦿DataDriven Tests

⦿ Les generics

⦿Tests pour Le Web

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite43

Multi-Cœurs

⦿Avant

⦿Après

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite44

Alexandre MEYER et Jade DORVIL Les Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite45

c. Spécificités de L’Outil

⦿ Les tests introspectifs

⦿Multi-Cœurs

⦿Gestion Du MTA

⦿DataDriven Tests

⦿ Les generics

⦿Tests pour Le Web

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite46

Gestion du MTA

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite47

Thread

Synchronisation

Appel Client

Processus

Appartenance

Gestion du MTA

⦿MTA = Multi-Threaded Appartment

⦿WaitHandle.WaitAll(WaitHandle[])

⦿Exemple : Plusieurs débiteurs et créditeurs

sur un seul compte.

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite48

Alexandre MEYER et Jade DORVIL Les Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite49

c. Spécificités de L’Outil

⦿ Les tests introspectifs

⦿Multi-Cœurs

⦿Gestion Du MTA

⦿DataDriven Tests

⦿ Les generics

⦿Tests pour Le Web

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite50

DataDriven Tests

⦿DDT = DataDriven Tests

⦿Faire un test du code métier sur plusieurs

paramètres différents

⦿Attacher une datasource : CSV, XML , DB

⦿Parcours de celle-ci ligne après ligne

⦿Exemple d’une calculatrice avec un CSV

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite51

Alexandre MEYER et Jade DORVIL Les Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite52

c. Spécificités de L’Outil

⦿ Les tests introspectifs

⦿Multi-Cœurs

⦿Gestion Du MTA

⦿DataDriven Tests

⦿ Les generics

⦿Tests pour Le Web

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite53

c. Les génériques

⦿Tests unitaires pour des méthodes

génériques

⦿Tests unitaires pour des méthodes avec

contraintes de type

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite

54

Alexandre MEYER et Jade DORVIL Les Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite55

c. Spécificités de L’Outil

⦿ Les tests introspectifs

⦿Multi-Cœurs

⦿Gestion Du MTA

⦿DataDriven Tests

⦿ Les generics

⦿Tests pour Le Web

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite56

Tests pour Le Web

⦿MVC

⦿ [Host Type ()]

⦿ [AspNetDevelopmentServerHost()]

⦿ [UrlToTest()]

Alexandre MEYER et Jade DORVIL Les Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite57

Alexandre MEYER et Jade DORVIL Les Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite58

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite59

Plan de la présentation

I. Rappel sur les Tests unitaires

II. Présentation de MS Test

III. MsTest face à la Concurrence

IV. Les plus de la licence Pro/Ultimate

V. Les apports du passage à Visual Studio 2012

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite60

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite61

Xunit.Net

⦿Ses avantages Face à Nunit

⦿ Complètement multithread, et Multi-Cœurs

⦿ Génération automatique des skeletons

⦿ Maîtrise sur Trois niveaux du Contexte(Vs Xunit)

⦿ Les tests introspectifs

⦿ Les Listes ordonnées de Test.

⦿ Supporte le MTA

⦿ Timeout au niveau Solution

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite62

III. Ms Test face à la concurrence

III. Ms Test face à la concurrence

⦿Ses Inconvénients

⦿ Coût temporel de démarrage d’une session de

test

⦿ Pour le DataDriven Test, un CSV au minimum

⦿ Pas D’assertion sur la présence de fichiers et

répertoires

⦿ Intégration continue un peu moins spontanée

⦿Gallio

⦿Visual Studio Agents 2010

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite63

III. Ms Test face à la concurrence

⦿Ses Limites

⦿ Pas d’extensibilité sur Les assertions

⦿ Pas d’accès aux méthodes des webSites

⦿ Pas de fourniture de Mocks, mais…

⦿Nmock3 ( Net 3.5, Net 4.0)

⦿Moq (->.Net 4.0)

⦿RhinoMocks ( ->.Net 3.5)

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite64

III. Ms Test face à la concurrence

⦿Migrer Nunit vs MsTest

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite65

⦿Synthèse de son positionnement

MsTest NUnitGénérateur de skeleton intégré et

gratuit

Vitesse d’exécution

Exécutions parallèles Simplicité

Bien intégré à TFS Assertions Nombreuses

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite66

Plan de la présentation

I. Rappel sur les Tests unitaires

II. Présentation de MS Test

III. MsTest face à la Concurrence

IV. Les plus de la licence Pro/Ultimate

V. Les apports du passage à Visual Studio

2012.

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite67

IV. Les plus de la licence Pro/Ultimate

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite68

IV. Les plus de la licence Pro/Ultimate

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite69

Plan de la présentation

I. Rappel sur les Tests unitaires

II. Présentation de MS Test

III. MS Test face à la Concurrence

IV. Les plus de la licence Pro/Ultimate

V. Les apports du passage à Visual

Studio 2012

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite70

VI. Visual Studio 2012

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite71

VI. Visual Studio 2012

⦿Code clone detection

⦿Code Metrics Values

⦿Microsoft Fakes isolation framework

⦿Extend the unit test type

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite72

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite73

En Conclusion…

⦿Sur ses spécificités

⦿Sur son positionnement

⦿Son potentiel en fonction des licences

⦿Son évolution future

Alexandre MEYER et Jade DORVILLes Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite74

Merci de Votre

attention

Alexandre MEYER et Jade DORVIL Les Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite75

http://dangerz.blogspot.fr/2012/01/converting-

nunit-to-mstest.html

http://blogs.developpeur.org/etienne/archive/200

9/05/23/visual-studio-2010-quoi-de-neuf-pour-les-

tests-web.aspx

http://bradwilson.typepad.com/blog/2010/07/test

ing-routing-and-url-generation-in-aspnet-

mvc.html#more

Alexandre MEYER et Jade DORVIL Les Tests Unitaires sous Visual Studio 2010

Document Propriété de So@t, Diffusion Interdite76

Recommended