Affichage des articles triés par pertinence pour la requête TDD. Trier par date Afficher tous les articles
Affichage des articles triés par pertinence pour la requête TDD. Trier par date Afficher tous les articles

mardi 27 octobre 2020

C'est quoi le Property Based Testing dans le TDD

Dit de cette façon, c'est quoi le PBT dans le TDD, c'est indigeste mais ce sont des concepts de base du Testing. Le choix des données de test est important et l'on dit qu'il faut se retourner vers le PO (Product Owner) pour bien savoir comment tester trouver le bon jeux de données d'entré.

GitHub - FsCheck
Voici la porte d'entrée vers l'automatisation des tests et le chois des jeux de données en entré.

F# for fun and profit - An introduction to property-based testing
Pourquoi faut-il utiliser FsCheck et QuickCheck en F# mais facilement adaptable à un autre langage.

Voilà, il s'agissait de vous sensibiliser au choix de vos jeux de données en entrée de vos tests, c'était le Property Based Testing dans le TDD.

Le TDD maintenant tout le monde connait ;)

Outils de Développement Logiciel - TDD

lundi 9 mars 2015

Développer en Langage C avec Eclipse et MinGW

Quelques notes sur l'utilisation de l'environnement MinGW (Minimalist GNU (système d'exploitation constitué de logiciels libres (GNU means "not for unix"))  for Windows). Et l'IDE Eclipse dont la release actuelle est Luna.

Installation d'Eclipse

Il n'y a pas d'installeur pour Eclipse ! Il suffit de dézipper l'archive dans un répertoire. Aussi lorsque la boite de dialogue suivant apparaît :

Démarrage d'Eclipse
Elle indique qu'Eclipse ne peut pas fonctionner sans le Java Development Kit (JDK) et que celui-ci n'a pas été trouvé, il ne vous reste plus qu'à l'installer ...

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

Installation du Jave SE Development Kit
Pour moi ce n'a pas été la peine d'ajouter un chemin vers Java dans le path ... Eclipse s'est lancé tout seul comme un grand :

Eclipse Luna - Ecran d'accueil

Installation de MinGW

Allons directement sur le lien de sourceforge : MinGW - Minimalist GNU for Windows
Les dédales du site www.mingw.org sont impénétrables ...

Une fois le mingw-get-setup.exe télécharger les choses commencent, d'abord il va créer une arborescence dans : C:\MinGW\bin et puis envoyer un tas de messages d'alertes, d'erreurs, d'insultes, comme quoi il ne peut pas télécharger les packages ?! Ne pas s'affoler, trouver l'exe dans le répertoire C:\MinGW\bin\mingw-get.exe et relancer tranquillement l'exécutable : mingw-get.exe et l'installation recommence, faire les choix des packages à installer :

Exécutable de configuration de MinGW
C'est l'outil qu'il faut maîtriser pour configurer MinGW.

Mon premier projet MinGW GCC avec Eclipse

Lancer Eclipse : File->New :

Création d'un projet en Langage C avec Eclipse et MinGW
Eclipse création d'un projet en langage C avec MinGW comme compilateur
Evidemment, après, c'est l'erreur, ou l'horreur au choix !

Errors (1 item) - Program "g++" not found in PATH !

Errors : g++ not found in Path !

Sur le sujet, on pourra lire par exemple, la page suivante :
On y préconise entre autre, de faire un reset ... chaque fois que l'on trouve le bouton "Reset defaults", tout un programme.

Pourquoi cela ne fonctionne pas ?

Eclipse est un IDE multi-plateforme, capable d'adresser une multitude de chaînes de compilations.

Imaginez que vous développiez vous même votre compilateur, linker, débugger, vous pourriez l'utiliser avec Eclipse. Mais pour que cela fonctionne, il faut que le tout, Eclipse, MinGW, et tous les autres plugins soient installés correctement. Cela passe par le PATH de chacune des chaines de compilations mais toutes ne sont pas compatibles sur le même poste de développement. Par exemple 

D'abord vous allez découvrir que le projet MinGW est abandonné, même s'il semble vivre encore, une branche est en train de lui couper l'herbe sous le pied c'est MinGW-w64. Donc mingw-get-setup.exe l'installeur hyper compliqué impossible à maîtriser ne doit pas être utilisé ... !?? Lui succède mingw-w64-install.exe. Le problème : cela se ressemble trop.

Vous aurez perdu un temps fou à maîtriser tout cela mais ce ne sera pas totalement perdu car il faut maintenant recommencer avec MinGW-w64 (pour x86, win32 et win64 notez au passage).

Eclipse et MinGW enfin le début d'une solution propre

Utiliser MinGW-w64 au lieu de MinGW :

Comment configurer le Tout !

Installation d'Eclipse

Help->Install New Software->Working with Juno

Eclipse Management Packets

Installation de MinGW-w64

I use here the TDD gcc x64, a well done installer for MinGW64
Et là, je découvre enfin le Graal, un nouvel outils d'installation MinGW-w64 : TDD gss x64 ... je cours l'essayer ... Pour moi cela à fonctionné, mon programme à compilé du premier coup, l'installeur avait ajouté : C:\TDM-GCC-64\bin dans le path, j'ai pu lancer l'exécution en Debug

J'avais un nouveau template de MinGW :

Eclipse Template - MinGW-w64
Et quand j'ai créé mon projet :

MinGW-w34 configuré correctement pour une utilisation avec Eclipse
Au hasard de mes lectures, je trouve cette page :

Informations techniques sur l'installation de l'environnement MinGW 64. C'est un peu technique mais utile s'il on veut en savoir plus.

Error : Toolchain "MinGW GCC" is not detected

Toolchain "MinGW GCC" is not detected. Refer to "C/C++ Development User Guide", "Before you begin" how to install toolchains. 

Vous trouverez le page dans la documentation et là on vous dira d'installer correctement MinGW mais ce n'est pas MinGW-w64 !

Vous avez installé une version de MinGW-w64 par exemple dans : C:\Program Files (x86)\mingw-w64\i686-4.8.2-posix-dwarf-rt_v3-rev4, tout va bien mais il n'y a rien à faire ! MinGW-w64 n'est pas correctement supporté par Eclipse. Le souci c'est, si vous voulez utiliser par exemple MinGW-w64 i 686 v4.8.2 v3 rev 4, vous ne pourrez pas créer de nouveau projet : File->New->C++ Project MinGW GCC n'est pas présent dans la liste. Et pourtant votre projet fonctionne.

J'ai même recopier tout le contenu de C:\Program Files (x86)\mingw-w64\i686-4.8.2-posix-dwarf-rt_v3-rev4\mingw32 dans C:\MinGW cela n'a pas fonctionné ! Il est vrai que lorsque l'on regarde la page suivante qui nous explique l'algo d'Eclipse pour trouver MinGW on n'est pas surpris que cela ne fonctionne pas :

Astuce pour créer un nouveau projet MinGW-w64

Je n'ai rien trouvé de plus brillant, j'ai un MinGW (et non un MinGW-w64) d'installé dans C:\MinGW, je peux alors créer un nouveau projet et lorsque je souhaite utiliser la chaîne de développement MinGW-w64, je renomme le répertoire C:\MinGW en autre chose, tout simplement.

Et puis finalement, j'ai décoché la case "Show porject types and toolchains only if they are supported on the platform" :

Création d'un projet MinGW-w64 avec Eclipse
Et cela à fonctionné.

Cela vous aidé ? Nous ne sommes rémunéré que par la publicité alors n'hésitez pas à cliquer et n'oubliez pas,
Have Fun!

jeudi 26 octobre 2017

Blogs où trouver de vraies solutions ?

Voici un blog cool, une communauté qui à l'air sympa. Oui je suis outré par la démarche Internet de "Comment ça marche" un forum de mer(bip) avec aucune solution. Vous avez un problème, avec "Comment ça marche" vous restez avec.

Je ne sais pas comment ces gens ont fait mais leur système de blog est si pourri qu'il n'y a jamais de solution, ils agrègent des posts merdiques sans faire de modération, du coup vous vous retrouver à lire des posts interminables sans intérêt écris par des benêts et en bas toujours pas de solution à votre problème. Par contre il sont référencés entête dans les pages.

Alors dès que je peux, je cite les blogs qui eux fournissent de véritables solutions, voici une communauté intéressante à étudier : hack.guides


pluralsight - A reliable resource for just-in-time answers

C'est assez curieux comme approche toutes ces pages qui sont là exposées ... Certainement pour le SEO et après ils vendent des cours en ligne mais les articles sont réellement de qualité.

Hristo Georgiev - Introduction to Angular test-driven development
Il s'agit d'utiliser "karma" pour faire du TDD et ça à l'air assez complet. Donc voilà une vraie solution pour un vrai problème.

Have Fun!

vendredi 28 juin 2013

Outils d'intégration continue

Quand on a pratiqué l'intégration continue entièrement intégrée avec Team Foundation Server, on est un peu désarçonné par l'ensemble de tous les outils qui peuvent être utilisés afin de mettre en place une stratégie d'intégration continue avec d'autres chaînes de développement que TFS. 

Cet article est là pour faire un petit récapitulatif de ce qu'est l'intégration continue.

Team Foundation Server

Les principes d'intégration continue permettent de distinguer un développement artisanal d'un développement industriel ou développement maîtrisé de façon professionnelle.+

En intégration continue, vous avez forcément un serveur dédiée sur lequel le produit logiciel est déployé afin de faire une vérification complète du produit avant de déployer sur une cible finale, ce n'est pas le cas dans le cadre d'un développement artisanal.

Les Principes de l'Intégration Continue

  • le code source est partagé et versionné dans un gestionnaire de code source (un référentiel ou repository unique)
  • les développeurs intègrent (commit ou checkin) leur code le plus souvent possible (chaque jour par exemple)
  • des tests unitaires sont développés et des tests d'intégration permettent de valider l'application sur un serveur d'intégration (ou serveur de build)

La mise en place de ces principes permet de :

  • tester immédiatement les unités modifiées et leur compatibilité entre elles
  • découvrir immédiatement des codes manquants ou incompatibles
  • les problèmes d'intégration sont réparés pour éviter les problèmes de dernière minute
  • une version est toujours disponible pour un test une démonstration ou une distribution

Qu'est ce que l'intégration continue sur le site de So@t

Intégration continue des bases de données : RedGate avec SQL Toolbelt comparaison de schémas de base de données. BD SQL Server ou Oracle.

Team Foundation Server pour :
Gestion de Projet
Gestion de prérequis
Versionnement de code source
Gestion de cas de test
Automatisation de build
Génération de rapports

Configuration du serveur TFS : Team Server Foundation en pas à pas

Sur le Blog de Julien Carnelos : L'intégration continue Open Source en .NET

Principe : Tout ce qui peut-être automatisé doit l'être.
Contrôle de codes sources : SVN (Subversion)
Tests Unitaires : NUnit
Compilation et Build : NAnt
Contrôle de construction : CruiseControl.NET et CCTray

Pour aller plus loin : Mise en place d'outils d'analyse de codes sources de génération de métriques. Terminer le Build NAnt par la génération d'un package d'installation prêt pour la livraison. L’envoi d'un email de notification à un client ou mieux à une équipe de QA (Assurance Qualité).

Je me propose de recopier ici quelques bonnes phrases du blog de J.Carnelos car les liens cassent ...

On oppose généralement l’aspect industriel du développement à l’artisanal. Pour mieux saisir la signification de ce terme, je vous propose une petite histoire :

Après quatre mois de développement, c’est le grand jour de la livraison. Georges, après avoir testé une dernière fois que son code compile, décide de déployer la version finale du site Intranet de la mairie. La démarche est maîtrisée puisque cela fait maintenant une vingtaine de fois qu’il a répété l’opération. Comme à chaque fois, il commence par demander à son collègue sur quels fichiers il a travaillé. La liste connue, il récupère par le réseau ces fichiers, puis tente de compiler le projet. Chance, tout compile.

La suite est plus délicate, Georges doit se connecter à distance au serveur, migrer la base de données et insérer les données mis à jour. Vient ensuite la partie copie des fichiers sur le serveur et redémarrage du serveur. A ce moment, si tout va bien, le site devrait être mis à jour. Malheureusement, au premier test, impossible de se logger.

Si cette scène vous rappelle quelque chose, pas d’inquiétude car c’est courant et aujourd’hui de nombreuses sociétés fonctionnent dans ce mode de gestion. Mais l’industrialisation et l’automatisation sont maintenant un but plus facile que jamais à atteindre grâce à de nombreux outils. Preuve en est également l’implication de Microsoft sur le thème « Gestion du cycle de vie logiciel » et la fourniture d’une offre complète avec la suite Team System et son serveur Team Foundation Server.

Néanmoins pour des raisons de simplicité, nous nous attacherons ici à présenter les concepts de l’intégration continue à l’aide uniquement d’outils open-source.

Concept

Schéma d'une chaine d'intégration continue

L’intégration continue est un concept qui se base sur l’analogie avec une usine automatisée. Sauf qu’au lieu de construire des voitures, on construit un logiciel. Cette « usine » est construite sur enchaînement suivant :

  1. Un développeur travaille en local. Lorsque ses modifications sont terminées, il archive son code sur un serveur gestionnaire de sources.
  2. A la détection d’un changement (ou suivant une règle temporelle paramétrée), le serveur d’intégration récupère la dernière version des sources et déclenche la construction (« build ») de la solution.
  3. En étape facultative mais intéressante, il est possible d’appliquer des métriques et des tests sur la solution et d’en générer des rapports
  4. Enfin, la solution et le bilan de la construction sont déployés sur un serveur de résultat accessible à l’équipe projet. Dans le cas d’un sous traitance, ce portail peut aussi être mis à la disposition du client pour qu’il puisse constater l’avancement du projet. (Particulièrement utile dans le cadre d’une démarche agile).

Documentation des codes sources

On ne crée pas de bons codes sources sans bonne documentation.

NDoc : Open Source Documenter, Générateur de documentation pour .NET

Sous TFS : SharePoint, oups ce n'est pas aisé d'utiliser cet outil que je trouve un peu archaïque

Outils d'analyse des codes sources

Fédérer une équipe autour d'un développement passe par le partage d'un certain nombre de bonnes pratiques, on appelait cela les coding guidelines aujourd'hui des outils permettent d'automatiser cette tâche en analysant les codes sources.

StyleCop : analyse syntaxique du code source C# sur le CodePlex : StyleCop

StyleCop provides value by enforcing a common set of style rules for C# code.

ReSharper de JetBrains : payant

Un outil d'analyse de code dans Visual Studio Express 2012

FxCop : curieux on note Framework 2.0, semble ne plus exister

Contrôle de codes sources, gestionnaire de versions

C'est un serveur, un endroit centralisé pour récupérer les codes sources créés par les développeurs, un outil permettant de versionner. Permet de résoudre les conflits de réaliser un merge entre plusieurs développements.

Outils :

TFS

SVN ou Subversion

CVS

Git

Perforce 

Tests Unitaires

Il existe MSTest mais il semble que cet outils de tests unitaires soit maintenant supplanté par NUnit ...

MSTest vs. NUnit with Visual Studio 2010 & TDD

NUnit vs xUnit parmi les modules de Tests Unitaires lequel choisir ?

Sur la plateforme .NET : NUnit

Sur le site du code project, rapidement comprendre NUnit : Unit Testing Using NUnit

NUnit permet d'écrire des tests unitaires du genre :

Assert.AreEqual(expected, actual)

NUnit permet l'utilisation de Mock Objects (simulateur d'objets)

A priori le projet NUnit n'est plus hébergé sur source forge mais Ici

Serveur d'intégration ou serveur de builds

C'est un élément clef de l'intégration continue souvent manquant dans les organisation "amateurs".

Les opérations à effectuer grâce aux outils de builds sont :

Nettoyer le répertoire de sortie (les binaires)

Compiler le code source

Exécuter les tests unitaires

Exécuter le programme


Mais aussi :

zip de fichier

transfert ftp

redémarrage de serveur web

En partant des sources, effectuer toute la livraison jusqu’à l’étape déployable (ou même déployé).


Intégration continue avec Team Foundation Server
MSBuild

NAnt qui possède l'avantage d'être multi-plateforme, s'exécute en ligne de commande et prend en paramètre un fichier XML qui décrit les différentes étapes pour emmener le code source dans l'état prêt à l'exécution.

CruiseControl.NET

TeamCity : de JetBrains

For .NET :

Building Visual Studio solutions; native support for MSBuild, Powershell or NAnt
Code analysis for C#, VB.NET, XAML, and many other languages powered by ReSharper
Testing with .NET testing frameworks, including: NUnit, MSTest, MSpec, xUnit and all Gallio-based frameworks
Code coverage with dotCover, NCover or PartCover
Best-in-class NuGet support

Je compléterai plus tard ... vous avez des suggestions d'amélioration et de complétion de cet article, n'hésitez pas à le commenter. Vous avez compris l'intégration continue concerne toutes les phases de développement du logiciel et l'utilisation des outils qui permettent d'automatiser tout ce qui peut l'être.

To Be Continued