Découvrez comment intégrer facilement l'analyse statique, les tests unitaires et d'autres méthodes de test de logiciels C et C++ dans votre pipeline CI/CD. Inscrivez-vous pour la démo >>

15 secondes pour trouver une erreur de pointeur dans plus de 500,000 lignes de code

Par Parasoft

21 mars 2013

5  min lire

Voici l'histoire de la façon dont 15 secondes d'analyse ont découvert une erreur causant un crash qui a échappé à 40 heures d'inspection manuelle

Entreprises BITTT se spécialise dans les processus d'affaires et fournit des solutions d'affaires stratégiques pour la gestion de l'information. BITTT aide ses clients à améliorer les systèmes technologiques internes, en augmentant l'efficacité et la productivité pour des résultats plus sains.

Timothy W. Okrey, Managing Partner, est en charge du développement chez BITTT. En fait, il est le cerveau derrière le code écrit par BITTT. Récemment, Okrey continuait le développement d'un projet en cours depuis quelques années. Le programme était en production virtuelle quand il a soudainement commencé à planter. La situation laissa Okrey complètement abasourdi.

Après avoir essayé de résoudre le problème par lui-même et avoir heurté des murs de briques dans toutes les directions, Okrey a découvert la solution de Parasoft pour l'analyse d'exécution C / C ++ et la détection d'erreurs. Parasoft Insure ++ non seulement aidé Okrey à résoudre le problème, mais lui a également permis d'améliorer simultanément et efficacement une douzaine de projets distincts.

Apparition d'une erreur de pointeur critique

Le produit développé par Okrey était stable et fonctionnait en mode de production virtuelle. Mais le programme a commencé à échouer après une version récente pour répondre à un certain nombre d'améliorations demandées par le client.

BITTT avait investi deux ans sur le produit, une solution liée à la paie conçue pour aider le client à réduire les 60 à 70 heures de travail investies chaque semaine pour compléter manuellement la paie de 1000 employés dans 14 États. Grâce au travail de BITTT, la paie de leurs clients était désormais automatisée, ce qui leur permettait d'y consacrer moins de 12 heures de travail par semaine. Malheureusement, l'erreur de blocage qui a émergé avec la dernière version a poussé le client de BITTT à revenir à son processus de paie manuel.

Basé sur plus de 20 ans d'expérience en développement, Okrey sait que si vous vous heurtez à un mur de briques, il est temps de refaire l'ensemble du projet d'une manière différente. Malheureusement, ce n'était même pas une option dans cette situation car "Il n'y avait pas de pistolet fumant ou même une erreur traçable." Okrey explique en outre: «Ce n'était pas un nouveau développement. Nous n'avons pas non plus essayé de rassembler des parties de code pour le faire fonctionner. Ce programme particulier a été écrit à partir de zéro en utilisant une boîte à outils comme backend pour les détails. »

La boîte à outils est celle qu'Okrey a commencé à créer en 1993. Elle lui permet d'extraire des fonctions de travail dans du code source brut ou de les utiliser comme bibliothèque pour n'importe quel projet. La boîte à outils fournit une base stable pour tous ses projets et réduit le besoin de réécrire le code encore et encore. Cette boîte à outils est passée à bien plus de 500,000 XNUMX lignes de code, qui ont été rédigées avec la plus grande diligence. Okrey suit strictement les règles de la programmation structurée et veille à garder son code propre. Il n'avait jamais utilisé un outil tiers pour analyser son code et n'en avait jamais eu besoin.

Réduire la durée et le coût des processus de développement en aval

Pendant plus d'une semaine, Okrey a essayé de réorganiser différentes parties de la classe qui causaient des problèmes.

Mais ses tentatives pour résoudre le problème n'ont eu pour résultat que de modifier certains des composants internes de sorte que le point de défaillance se produise à un endroit différent. «J'ai passé plus de 40 heures à parcourir tout mon code avec un peigne à dents fines et une loupe, comme je le fais habituellement. Je n'ai pas pu localiser le problème. Je pouvais voir ce qui se passait; Je ne pouvais tout simplement pas voir pourquoi cela se produisait », a déclaré Okrey.

C'est alors que sa recherche d'aide a commencé. Il n'a trouvé qu'une poignée d'outils capables de faire ce qu'il voulait. Sur cette poignée, la plupart des produits permettaient simplement une révision statique du code. Parasoft était le seul produit qui effectuait également une analyse dynamique. «Parasoft me donne la possibilité d'analyser mon contenu dans l'environnement dans lequel il est exécuté au lieu de simplement regarder le code sur papier», a déclaré Okrey.

Après avoir été configuré et exécuté, Parasoft a parcouru la première version du code source d'Okrey, toutes les 500,000 15 lignes et plus. Dans les XNUMX secondes suivant le lancement, Parasoft a fait surface aiguille Erreur. «Si je n'avais pas trouvé Parasoft, cela aurait conduit à des exigences très drastiques de la part du client», a déclaré Okrey en réfléchissant au retour rapide sur investissement. Il a ajouté que «Passer d'une version fonctionnelle du programme à une version non fonctionnelle simplement en raison d'une mise à niveau aurait conduit à un renversement des progrès et forcé des concessions financières que je ne veux même pas envisager. C'était une situation horrible.

Amélioration de la qualité, de la stabilité et de la conformité du code

Parasoft a permis à Okrey de réorganiser complètement le code source de la boîte à outils; en particulier, améliorer la gestion des chaînes. L'amélioration s'est étendue à d'autres projets. Okrey a des dizaines d'autres programmes pour divers clients qui utilisent la même boîte à outils backend, donc tous ces programmes en ont récolté les avantages. Okrey déclare: «Je ne peux même pas commencer à vous dire tous les programmes qui dépendent de la boîte à outils backend. Grâce aux améliorations que Parasoft m'a permis d'apporter, elles sont d'autant plus stables et conformes. »

Okrey a déclaré que la solution Parasoft lui donnait la possibilité de mettre en œuvre et d'appliquer ses normes de codage élevées. «Parasoft vous oblige à vérifier que les normes et les pratiques utilisées sont absolument parfaites», a déclaré Okrey. «L'un des défis en tant que chef de projet - ou associé directeur, comme moi - est de confirmer que votre équipe écrit du code qui répond à des normes élevées. Parasoft peut m'aider à vérifier que mon équipe est en train d'écrire du code qui répond à mes normes et me permettre de garantir des résultats. Je suis vraiment excité à ce sujet.

Tirer parti de la solution de Parasoft

Okrey est satisfait de la qualité que Parasoft a rapidement intégrée dans son processus de développement d'applications. Non seulement il a été en mesure de corriger un problème pour un client estimé, mais il a également été en mesure d'améliorer la qualité de dizaines de programmes pour d'autres clients.

Okrey dit: «Je suis très attentif aux produits que je choisis d'approuver. La majorité des logiciels écrits dans le monde ne fonctionnent tout simplement pas comme ils sont censés fonctionner pour diverses raisons. Peut-être qu'il est mal conçu, donc il fonctionne lentement ou que les exigences du système ne sont pas réalistes. La liste continue.

«Cependant, il y a quelques produits que j'aime vraiment. L'un de ceux-ci est un logiciel système sur lequel je m'appuie. Je n'ai jamais expérimenté de GPF avec. Jamais. Quand j'ai appris que le fournisseur de ce produit était un client de Parasoft, c'était tout. C'est ce qui m'a poussé à essayer Parasoft et je suis très heureux de l'avoir fait.

Nouvel appel à l'action

Par Parasoft

Les outils de test de logiciels automatisés de pointe de Parasoft prennent en charge l'ensemble du processus de développement logiciel, depuis le moment où le développeur écrit la première ligne de code jusqu'aux tests unitaires et fonctionnels, jusqu'aux tests de performance et de sécurité, en exploitant des environnements de test simulés en cours de route.

Recevez les dernières nouvelles et ressources sur les tests de logiciels dans votre boîte de réception.