Exercise Variation of the Weinberg-Myers Triangle Problem Durée 1 heure A faire: introduire jeu de rôle avec client (mez), dev et tester Comm par mail 1’ temps: Dev: ecrit la spec ie definit l’interface et la passe au tester puis implemente la fonction Tester: ecrit la suite des tests 2’ temps: Implémentation et suite de tests finie Execution des tests Conclusion ? Au programme de ce TD Pair Programming: travail en binome Le fait d’avoir une personne à coté a 2 effets: La personne qui regarde peut réagir de suite pour corriger du code, poser des questions, verifier que tout va bien La personne qui écrit a un regard sur elle et un comportement Bug dans une fonction et on seche completement Pourtant c’est le type de bug trivial, evident mais on a les yeux usés et on voit plus ce On demande à quelqu’un de nous aider et on lui explique ce qu’on a ecrit Rien qu’en expliquant on trouve le bug de suite Test Driven Development: les tests avant le code Couverture de test Metriques avec outil Understand R`wgles de codage Philippe CHARMAN charman@fr.ibm.com http://users.polytech.unice.fr/~charman/ Last update: 04-16-2013
Different types of triangles invalid doesn’t exist point reduced to a point segment reduced to a line segment equilateral all sides have the same length isosceles 2 sides have the same length right rectangle rectangled triangle scalene none of above types
Fonction triangle TriangleType triangle(double x, ` double y, double z) { // returns the triangle type according // to the values of the 3 sides x, y and z return TriangleType; }
First step: Writing the test suite Work in pair: 2 testers Tester A writes the tests for testing the triangle function Tester B reviews the test suite Example of the test suite: void allTests () { test( triangle(0, 0, 0), point); test( triangle(1, 1, 1), equilateral); test( triangle(3, 4, 5), rectangle); etc. } void test(TriangleType computedType, TriangleType expectedType) { if (computedType == expectedType) NbSuccess++; else NbFails++;
Second step: Writing the triangle function Works in pair: 2 developers Tester B becomes Developer A Tester A becomes Developer B Dev A writes the triangle functio Dev B reviews the written code
Third step: executing the test suite Display the number of failures How many failures after the very first execution How many test case have been written?