Bonjour,
Quelles sont les techniques que vous employez pour augmenter la fiabilité de votre code??
Merci
Version imprimable
Bonjour,
Quelles sont les techniques que vous employez pour augmenter la fiabilité de votre code??
Merci
qu'entend tu par fiabilité du code ???
le rendre robuste, infaillible au bug ???
si c'est ca ben les trucs de base :
-tester chaque pointeur avant de s'en servir
-pour ca eviter les pointeurs -> privilégier les reférences
-tester chaque allocation dynamique (new)
-mettre des try/catch autour des blocs critiques avec les bonnes exceptions qui vont bien
-faire tres attention au domaine de définitions (un int est toujours inférieur a 65535, a faire attention quand on transforme une string en int par exemple)
-creer des exceptions perso ex : "intOutOfRange",...
-ne surtout pas faire de cast type long dans int ou signed/unsigned
...
J'entends par fiabilité : la capacité à exécuter une séquence d'opérations d'une façon déterministe, même dans des conditions exceptionnelles.
bon alors si tu appliques ce que j'ai posté précédement je pense que tu peux balancé une routine de test infini et aléatoire du type :
et voila, sachant qu'il faut lancer ca le vendredi en partant du boulot, et si quand tu reviens le lundi matin ca tourne encore personnelement je valide la méthode. (oui avant j'ai fais les test de base, si j ai besoin d'un int je lui envoi 1, s'il est unsigned j'essaye avec -1...).Code:
1
2
3
4
5
6
7
8
9 Générer paramètres d'entrée while( true ) { AppelerCeQuIlFautTester peutEtreVerifierRetour //en meme temps si ca n'a pas planté c'est bon }
J'aime bien cette méthode elle permet de tombé sur des cas auquel tu ne pensait vraiment pas
En fait, je me demande s'il n'existe pas des logiciels, des techniques connus.
Ici tu teste juste ta fonction, mais comment savoir si ton prog a testé tous les cas possibles, ne plantera pas lors des cas extrèmes etc...
Par exemple, sur les systèmes critiques du genre matériel d'hopital, aéronautique, il doit bien exister des méthodes fiables pour tester leur programmes.
ben a vrai dire tester un programme revient a tester chaque instruction de celui ci, donc pour simplifier on teste chaque méthode de la couche la plus base, chaque méthode de la couche juste supérieur et tout ca jusqu'a la couche la plus haute.
Pour les outils existant il en existe des quantité mais beaucoup sont sous licence et accessible uniquement par les entreprises
Ils existe des outils qui teste les fuites mémoires (les new sans delete :evil: )
ceux qui analyse la couverture de code (il peux te prevenir que selon la suite de if que tu a coder certaines eventualité ne seront jamais atteintes)
et aussi des outils qui permette de faire ce que je t'ai dis au précedent post( qui simplifie mais pas tant que ca et qui ne couvre qu'un domaine de valeur bien moindre)
Pour info je boss pour l'armée . Chaque rendu de programme se fait accompagné du rapport de test de chaque méthode de l'application.
Les logiciels critiques, par exemple celui qui pilote le Météore (métro automatique à Paris), sont conçus à l'aide de méthodes de spécification prouvables à 100% (méthode B pour ce que je sais). Ce qui signifie que l'on est certain de leur fiabilité algorithmique.
En règle générale, beaucoup de choses sont réglées au niveau de la conception (identification des cas d'utilisation, des scénarios, identification de patterns, ...).
Enfin, au niveau purement C++, il y a des concepts et règles pour éviter les comportements indéterminés, les failles, et rendre le code plus maintenable. Le RAII est par exemple un concept primordial.
Les tests unitaires sont également de bons procédés.