Devops for Growth
107.5K views | +0 today
Follow
Devops for Growth
For Product Owners/Product Managers and Scrum Teams: Growth Hacking, Devops, Agile, Lean for IT, Lean Startup, customer centric, software quality...
Curated by Mickael Ruau
Your new post is loading...
Your new post is loading...

Popular Tags

Current selected tag: 'tests de mutations'. Clear
Scooped by Mickael Ruau
Scoop.it!

Mutation Testing Guide: What You Should Know

Mutation Testing Guide: What You Should Know | Devops for Growth | Scoop.it

Mutation test can be done using four simple steps, they are as follows

  1. Modify the source code with mutants.
  2. Develop test cases for those specific areas.
  3. Run the test cases for both original and mutant programs.
  4. Compare the results

 

 
Mickael Ruau's insight:

The goals of mutation testing are:

  • To find a set of code that is not proper.
  • To identify hidden defects that can’t be detected using other testing methods.
  • To identify new kinds of errors or bugs.
  • To calculate the mutation score.
  • To check both the coverage and effectiveness of the test cases.

Mutation Testing Types

Mutation tests are of several types, each of them has its own goal and usage.

  1. Value mutation involves interchanging small values with big values i.e modification of different values
  2. Statement mutation is implemented by altering statements in the source code.
  3. Decision mutation identifies defects by changing the logical, arithmetic, and relational operators of the defects to be identified.
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Mutation Testing, un pas de plus vers la perfection | OCTO Talks !

Mutation Testing, un pas de plus vers la perfection | OCTO Talks ! | Devops for Growth | Scoop.it

Il n’est plus à prouver l’utilité des tests unitaires. Ils sont essentiels dans la conception d’une application de qualité. Mais, savons-nous quantifier leur pertinence, leur qualité ?

Un indicateur de couverture du code par les tests à 100%, ne signifie pas du code 100% testé. Cet indicateur ne détermine que  grossièrement le pourcentage de code exécuté lors du passage des tests unitaires, pas plus.

Voici une technique qui vous permettra d’accorder plus de confiance à vos tests.

Le processus de cette technique se déroule en deux grandes étapes : la génération de mutants, puis le carnage de ceux-ci. WTF ?

No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Mutation Testing – Vérifiez la qualité de vos tests unitaires

Mutation Testing – Vérifiez la qualité de vos tests unitaires | Devops for Growth | Scoop.it
Vos tests unitaires sont-ils fiables ? Dans cet article nous allons voir comment s’en assurer
Mickael Ruau's insight:

Les tests de mutation sont un moyen simple et efficace de détecter la fiabilité des tests unitaires. La couverture de code n’est pas une métrique très fiable, un code peut être couvert à 100% sans une seule assertion ! Nous avons vu avec Humbug que nous pouvons automatiser ces tests, il devient alors possible de les greffer dans notre workflow d’intégration continue. Attention toutefois au temps d’exécution qui grandit de manière exponentielle lorsque la base de code grandit, on utilisera en priorité les tests de mutation là où il y a un véritable enjeu : le code métier.

No comment yet.
Scooped by Mickael Ruau
Scoop.it!

AFSY - Association Francophone des Utilisateurs de Symfony - calendrier de l'avent 2017 - Jour 18 - Structurer sa démarche de test

AFSY - Association Francophone des Utilisateurs de Symfony - calendrier de l'avent 2017 - Jour 18 - Structurer sa démarche de test | Devops for Growth | Scoop.it
L'AFSY est un groupe d'utilisateurs francophones du framework qui a pour objectif de promouvoir l'usage de Symfony en milieu professionnel et universitaire
Mickael Ruau's insight:

 

Tester une seule et unique assertion par test permet d'obtenir des tests simples et bien ciblés, il sera donc plus facile de détecter une erreur dans nos tests. Ce n'est toutefois pas toujours simple, et très difficilement mesurable de manière objective.

C'est là qu'interviennent les tests de mutation.

Le principe : faire muter le code couvert par des tests unitaires, puis jouer les tests et compter le nombre de mutants qui n'ont pas été détectés.
Quelques exemples de mutation :

  • supprimer un « return » ;
  • transformer une addition en soustraction ;
  • inverser le sens d'une condition, d'un incrément, d'une assertion, …

Dans notre cas, la première méthode de test (qui ne teste rien) n'échouera pas si on transforme l'addition en soustraction. La deuxième, par contre, échouera (et permettra de détecter la mutation).

La librairie Humbug permet de le faire en PHP.

 

Tester une seule et unique assertion par test permet d'obtenir des tests simples et bien ciblés, il sera donc plus facile de détecter une erreur dans nos tests. Ce n'est toutefois pas toujours simple, et très difficilement mesurable de manière objective.

C'est là qu'interviennent les tests de mutation.

Le principe : faire muter le code couvert par des tests unitaires, puis jouer les tests et compter le nombre de mutants qui n'ont pas été détectés.
Quelques exemples de mutation :

  • supprimer un « return » ;
  • transformer une addition en soustraction ;
  • inverser le sens d'une condition, d'un incrément, d'une assertion, …

Dans notre cas, la première méthode de test (qui ne teste rien) n'échouera pas si on transforme l'addition en soustraction. La deuxième, par contre, échouera (et permettra de détecter la mutation).

La librairie Humbug permet de le faire en PHP.

No comment yet.
Scooped by Mickael Ruau
Scoop.it!

La pyramide des tests par la pratique (4/5) | OCTO Talks !

La pyramide des tests par la pratique (4/5) | OCTO Talks ! | Devops for Growth | Scoop.it
Dans le dernier article, nous décrivions les tests de composant, tests mi-unitaires mi-intégration permettant de valider à la fois l’intégration au sein de notre application (injection de dépendances) et aussi avec les composants périphériques. Le tout en restant suffisamment isolés de ces derniers pour limiter les frottements à l’exécution. L’isolation fonctionnant à merveille, le test de client d’API souffre d’un défaut majeur : lorsque le fournisseur change la signature du service, nous en sommes au courant bien trop tard. C’est ce que les tests de contrats tentent de parer et que nous allons aborder dans cet article.
Mickael Ruau's insight:

 

Comme nous venons de le voir, le test de contrat n’est autre qu’un test de composant, mais il a en plus l’avantage de valider que fournisseur et consommateur(s) sont toujours alignés. Je ne saurais donc que recommander d’utiliser ce dernier, en tout cas dans un environnement maîtrisé (typiquement des microservices au sein de votre entreprise). Cela n’a pas de sens lorsqu’on utilise une open API (typiquement l’API de transport), dans ce cas, on restera sur un test de composant.

Dans les 2 cas, je considère ces tests suffisamment importants et relativement rapides à exécuter pour être intégrés au build continu, encore et toujours dans l’objectif d’avoir une feedback rapide.

Les tests de contrats, souvent associés au pattern Consumer-Driven Contracts, sont donc un excellent moyen de vérifier que consommateur et fournisseur d’un service (qu’il soit REST ou via un message) sont toujours alignés sur un contrat commun et partagé. Ils ont également l’avantage de s’exécuter assez rapidement (isolation grâce à wiremock) et donc intégrables à la chaîne d’intégration continue. Dans le prochain article, nous aborderons des tests beaucoup moins simples à exécuter puisqu’il s’agit des tests d’intégration et tests de bout en bout.

No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Mutation testing - Wikipedia

Mutation testing

Mutation testing (or mutation analysis or program mutation) is used to design new software tests and evaluate the quality of existing software tests. Mutation testing involves modifying a program in small ways. Each mutated version is called a mutant and tests detect and reject mutants by causing the behavior of the original version to differ from the mutant.

No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Mutation testing, enfin une bonne mesure de la qualité des tests ?, R…

On écrit tous des tests (n’est-ce pas ?), mais comment savoir s’ils sont utiles ?

- Par leur nombre ? Faux, beaucoup de tests ne garantissent pas que l’application fonctionne correctement
- Avec une bonne couverture du code ? Encore faux, mieux mais pas suffisant

L’important est d'être confiant sur la capacité des tests à détecter les problèmes (c’est pourquoi en TDD un test doit échouer au début, pour etre sur qu’il teste bien quelque chose). Laissez-moi donc vous présenter le mutation testing ! Cette technique modifie votre code, lance les tests et s’attend à ce qu’ils échouent. Si non, c’est que cette partie est mal testée… Dans ce talk je détaillerai les principes du mutation testing, expliquerai comment l’utiliser sur un projet scala et montrerai les résultats obtenus sur un projet réel.

No comment yet.