Après l’avoir utilisé en production pour ses propres besoins en interne, Twitter rend open source son outil Diffy. Ce morceau de programme permet aux développeurs de repérer automatiquement - donc plus facilement et plus vite – des bugs potentiels dans leur code après y avoir apporté des mises à jour. Si Diffy nécessite une configuration minimale, il évite toutefois aux développeurs d’écrire de nombreux tests, comme l’explique l’entreprise de réseautage social.
La technique utilisée par Diffy pour détecter des bugs potentiels dans un service est d’exécuter côte à côte plusieurs instances du nouveau et de l’ancien code et ensuite comparer les réponses afin de faire ressortir les régressions. L’idée est que « si deux implémentations du service retournent des réponses similaires pour un ensemble suffisamment large et diversifié de requêtes, alors les deux implémentations peuvent être considérées comme équivalentes et la mise en œuvre récente libre de régression. »
Plus précisément, il y a trois instances qui entrent en jeu ici. Une instance candidate qui exécute le nouveau code, une instance primaire qui exécute l’ancien code en bon état et une instance secondaire qui exécute également l’ancien code comme l’instance primaire. Les instances primaire et secondaire devraient normalement fournir les mêmes réponses puisqu’elles exécutent le même code, mais il peut arriver que les réponses diffèrent à cause d’un comportement non déterministe, ce qui est attendu selon Twitter. Diffy mesure donc la fréquence à laquelle les instances primaire et secondaire ne concordent pas les unes avec les autres qu’il compare à la fréquence à la laquelle les instances primaire et candidate ne concordent pas les unes avec les autres. « Si ces mesures sont à peu près les mêmes, alors Diffy détermine qu'il n'y a rien de mal », alors les deux implémentations sont équivalentes, donc il n’y a aucune régression.
L’outil vise en particulier les architectures orientées services comme la plateforme de Twitter qui voient un grand nombre d’évolutions à un rythme très rapide. Les nouvelles fonctionnalités ajoutées, en modifiant le code existant pourraient « casser » quelque chose. Selon l’entreprise, les tests unitaires offrent une certaine confiance pour détecter s’il y a un problème après la nouvelle implémentation, « mais l'écriture de bons tests peut prendre plus de temps que d'écrire le code lui-même. En plus, les tests unitaires offrent une couverture pour de petits segments de code à faible portée, mais ne traitent pas le comportement global d'un système composé de plusieurs segments de codes ».
Le système devenant de plus en plus complexe avec des mises à jour fréquentes, « il devient très rapidement impossible d'obtenir une couverture adéquate en utilisant des tests écrits à la main, et il y a un besoin de techniques automatisées les plus avancées qui nécessitent un minimum d'effort des développeurs. Diffy utilise une telle approche que nous utilisons », ajoute Twitter.
L’outil open source permet de détecter automatiquement les bugs dans Apache Thrift et les services basés sur HTTP. Il est publié sous la licence Apache Version 2.0.
Sources : Blog Twitter, GitHub
Et vous ?
Que pensez-vous de cet outil qui permet de détecter automatiquement les bugs dans les codes ?
Twitter rend open source son outil Diffy
Qui permet de détecter automatiquement des bugs potentiels dans un code
Twitter rend open source son outil Diffy
Qui permet de détecter automatiquement des bugs potentiels dans un code
Le , par Michael Guilloux
Une erreur dans cette actualité ? Signalez-nous-la !