Traçabilité des exigences

La gestion des exigences permet un bon audit sur les exigences.

La traçabilité permet de trouver les conséquences de changements. Elle permet la réutilisation d'exigence puisqu'on a une vue d'ensemble des parties qui entoure une exigence. Elle permet une meilleure communication des exigences. En voyant ce que l'on doit faire, la traçabilité peut diminuer le risque. On peut comprendre l'origine d'un item, évaluer l'impact des tests et éviter de sur-développer ou encore de sous-développer le logiciel.

On peut tracer toutes les exigences: d'affaire, fonctionnel, non-fonctionnel, système.

On se limite généralement aux exigences fonctionnels parce qu'elles sont plus faciles à tracer.

Exemple de document ou gabarit traçable par défaut par Requisite Pro (rationale) : cas d'utilisation, exigences des normes, document de vision.

Documents

Le document de vision contient les besoins des parties prenantes (stakeholders).

Le SRS contient les fonctionnalité du produit (product feature).

Tests

Tests BRO
Branch Relational Testing
Complexité cyclomatique
V(G) = e - n + 2. e=nombre de flèches (ligne/bords) et n=nombre de noeuds/structure de condition.
Tests système: Alpha, Bêta, Acceptation
Partitionnement équivalent
Partition des classes d'entrées (type d'entrée bonne et mauvaise) d'une fonction/méthode.
Classe d'équivalence
Si elles sont correctement trouvés, elles permettent d'élaborer des tests visant à découvrir les erreurs d'un logiciel. Permet d'analyser les valeurs frontières.
Tests de boite blanche.
Test effectué en parcourant les chemins possibles à l'aide du pseudo-code ou du code d'un module.
Boucle simple
Le nombre minimum de tests pour vérifier une boucle est de 7. Il faut passer: 0, 1, 2, m<n, n-1, n et n+1 fois dans une boucle de n répétition.

Boucles

Boucle simple

i=0; 
while ( i<10 ) {
 i++
}

Boucles liées ???

i=0;
while ( i<10 ) {
 i++;
 if ( i % 3 == 0) {
  i = i*2;
 }
}

Boucle concaténés

for ( i=0; i<10;i++ ) {
 if ( i % 2 ) {
  i = i*3;
 }
}
for ( j=i; j<100;j++ ) {
 j*=2;
}