Академический Документы
Профессиональный Документы
Культура Документы
INF
2018/2019 Session
Page 1 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Objectifs du cours
Apprendre les principes, les techniques et les outils des tests de logiciels afin
d'améliorer la qualité de l'information. la qualité du produit logiciel.
Les étudiants acquerront des connaissances et des compétences en tests logiciels leur
permettant ainsi de
- Appliquer et comparer les techniques sur des projets professionnels
- Analyser, évaluer et améliorer la qualité des logiciels
- Développer des logiciels de haute qualité
Les étudiants sont exposés à la technologie actuelle dans le cadre de tests automatisés
leur permettant ainsi de
- Construire des cadres de test en utilisant les principes et les paradigmes de test des
logiciels.
Les élèves en apprennent davantage sur
- La vérification du modèle comme procédure de vérification importante
- Effectuer des tests automatisés à l'aide d'outils de test automatisés
- Le débogage systématique comme moyen de localiser les causes d'erreurs
- Logiciel de débogage pour déboguer et signaler les bogues
Résultats du cours
À la fin du cours, les étudiants auront une vision unifiée des tests unitaires de logiciels
: où l'automatisation est possible à toutes les étapes - de la génération des cas de test, à
l'exécution, à l'évaluation de l'effort de test ; où le test automatisé est une activité
complémentaire au test manuel ; et où l'effet sur le test unitaire est une partie
intégrante du test logiciel. Test pratique de logiciels à l'aide de Junit et création d'un
rapport de test dans Bugzilla.
Concevoir et mettre en œuvre un cadre d'essai de logiciels à l'aide de diverses
méthodes, stratégies et techniques présentées dans le cours qui répondent aux
exigences des propriétés souhaitées.
Appliquer les principes du test logiciel dans un contexte réel et multidisciplinaire.
Page 2 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
TABLE DES MATIÈRES
Test unitaire
Test d'intégration
Test du système
Tests d'acceptation
Test de régression
Page 3 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Essai de débit de contrôle
TESTLINK
Avantages de TestLink
Création d'un projet test
Création d'un plan de test
Création de bâtiments
Création d'une suite de tests
Création d'un scénario de test
Affectation d'un scénario de test au plan de test
Création d'utilisateurs et affectation de rôles dans Testink
Exigences en matière de rédaction
Exécution d'un scénario de test
Génération d'un rapport de test
Exportation d'un jeu de test / d'une suite de tests
Importation d'une valise de test ou d'une suite de tests
Page 4 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
EXPOSÉ 7 : MÉTHODES D'ESSAIS AUTOMATISÉS
Tests automatisés
Qu'est-ce qu'un test automatisé ?
Pourquoi avons-nous besoin de l'automatisation des tests ?
Introduction à l'outil de test open source JUnit : Cadre pour le dépistage à l'unité
Outils pour les tests unitaires
Tests basés sur des modèles
Exécution symbolique pour les tests logiciels
Exécution symbolique dynamique
Contexte de la maintenance
Maintenance évolutive
Maintenance corrective
Retraite et remplacement
Politiques de test de régression
Manuels scolaires :
Page 5 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
1. Software Testing Principles, Techniques and Tools by M G Limaye, Publié par Tata
McGraw-Hill Education Private Limited, Publié en 2009, ISBN (13) : 978-0-07-013990-9,
ISBN (10) : 0-07-013990-3 (chapitres 1 et 3)
2. Essais de logiciels, deuxième édition Par : Ron Patton, publié par l'ASSM, ISBN-13 : 978-
0672327988 ISBN-10 : 0672327988 (chapitres 2, 4 & 6)
- Les tests de logiciels est une enquête empirique (expérimentale) menée pour fournir aux
intervenants de l'information sur la qualité du produit ou du service mis à l'essai.
Logiciel testant le processus d'exécution d'un programme dans le but de déterminer si les
exigences spécifiées ont été satisfaites ou non.
- Les tests sont essentiels au succès d'un système. Dans le cadre des essais du système, des
normes de rendement et d'acceptation sont élaborées.
- Le test est l'une des phases importantes du développement logiciel. Dans cette phase, le
programme testé est exécuté pour révéler les défauts et, après avoir détecté les défaillances,
des techniques de débogage sont appliquées pour isoler et supprimer les défauts.
Évidemment, les techniques utilisées pour ces différentes tâches dépendent des outils,
techniques et méthodologies utilisés pour développer le logiciel testé.
- Les tests automatisés ne peuvent pas remplacer les tests manuels, ils augmentent
(complètent) les efforts de test du testeur humain.
Page 6 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Le test de logiciels est le processus d'exécution d'un programme dans l'intention de trouver
des erreurs.
L'essai est le processus d'évaluation d'un système ou de ses composants dans le but de
déterminer s'il satisfait ou non aux exigences spécifiées.
Cette activité se traduit par les résultats réels, attendus et la différence entre leurs résultats. En
d'autres termes, le test est l'exécution d'un système afin d'identifier toute lacune, erreur ou
exigence manquante contrairement au désir ou aux exigences réelles.
Le test est la partie la plus importante du cycle de vie du développement logiciel (SDLC). On
ne peut pas libérer le produit final sans passer par le processus d'essai.
Le but des tests logiciels est de trouver des bogues/défauts dans le logiciel. Le test de
logiciels est une partie essentielle du génie logiciel.
(2) Le logiciel prévaut dans notre milieu de vie. La qualité des logiciels influence
considérablement notre qualité de vie. Le logiciel en tant qu'entité a affecté tous les aspects
de la vie. Personne n'aurait pu prévoir que des logiciels seraient intégrés dans des systèmes de
toutes sortes : Soins de santé, Affaires, Transport, Éducation, Télécommunications, Finances,
Militaire, Divertissement, Météo, etc. Malgré ces améliorations spectaculaires dans le
développement de logiciels (logiciels de conception Web, applications mobiles, logiciels
d'intelligence artificielle, systèmes d'exploitation, etc.), nous n'avons pas encore mis au point
une technologie logicielle qui fasse tout cela, et la probabilité qu'un tel développement se
produise dans l'avenir est faible.
(3) Les défaillances logicielles de systèmes logiciels critiques (un système critique pour la
sécurité est défini comme un système dans lequel le mauvais fonctionnement d'un logiciel
pourrait entraîner la mort, des blessures ou des dommages à l'environnement) peuvent
causer des dommages considérables sur nos vies. Par exemple
Page 7 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
- En 1986, deux patients cancéreux du East Texas Cancer Center ont reçu des
surdoses mortelles de rayonnement provenant de l'appareil de radiothérapie
commandé par ordinateur.
- Les erreurs logicielles peuvent être coûteuses pour l'économie d'un pays.
A partir de l'explication ci-dessus, quelles sont les différences entre Défaut logiciel, Erreur
logicielle et Défaillance logicielle ?
Erreur de Défaillance du
Défaut logiciel logiciel logiciel
L'objectif général des tests de logiciels est d'affirmer la qualité des systèmes logiciels en
exerçant systématiquement le logiciel dans des circonstances soigneusement contrôlées :
Révéler les défauts (erreurs de recherche : erreurs de syntaxe, erreurs logiques, erreurs
sémantiques, etc.)
Établir la confiance dans le logiciel
Clarification de la spécification des besoins de l'utilisateur
Le seul moyen d'élever le niveau confidence d'un programme significantly est de donner une
preuve convaincante de son exactitude.
Page 8 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Ces objectifs peuvent-ils être atteints sans difficultés ?
Test et débogage
La vérification et la validation (V&V) est le processus qui consiste à vérifier qu'un système
logiciel est conforme aux spécifications et qu'il remplit sa fonction prévue. On peut aussi
l'appeler contrôle de la qualité des logiciels.
Definitions
La vérification peut également être définie comme le processus d'évaluation d'un logiciel
afin de déterminer si les produits d'une phase donnée de développement logiciel satisfont aux
conditions imposées au début de cette phase.
Supposons que vous construisiez une table. Ici, la vérification consiste à vérifier toutes les
parties du tableau, si les quatre pieds sont de la bonne taille ou non. Si un pied de table n'est
pas de la bonne taille, il déséquilibre le produit final. Un comportement similaire est
Page 9 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
également observé dans le cas du produit logiciel ou de l'application. Si une caractéristique
du produit logiciel ou de l'application n'est pas à la hauteur de la marque ou si un défaut est
détecté, il en résultera la défaillance du produit final.
Il comprend des examens et des réunions, des visites, des inspections, etc. pour évaluer les
documents, les plans, les spécifications des exigences, la conception et le codage du système.
La vérification est donc très importante. Elle a lieu au début du processus de développement.
Page 10 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Ça répond à la question comme :
Est-ce que je construis le bon produit ? Ou le bon produit a-t-il été fabriqué ?
Ai-je accès aux bonnes données (en termes de données requises pour satisfaire à
l'exigence) ?
Effectué après la production d'un produit de travail en fonction de critères établis afin
de s'assurer que le produit s'intègre correctement dans l'environnement.
Validation des logiciels : La validation du logiciel vérifie que le produit logiciel satisfait ou
correspond à l'utilisation prévue (vérification de haut niveau), c'est-à-dire que le logiciel
répond aux exigences de l'utilisateur.
Non seulement le produit logiciel dans son ensemble peut être validé. Les exigences doivent
être validées avant que le logiciel dans son ensemble ne soit prêt.
Validation des entrées utilisateur : ) est validée en vérifiant si les données fournies par
les opérateurs du logiciel et les utilisateurs respectent les règles et les contraintes du
domaine (telles que le type, la portée et le format des données).
Page 11 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
satisfont aux conditions imposées au début de cette phase, c'est-à-dire les exigences de la
phase précédente.
Verification est généralement une activité plus technique qui utilise les connaissances sur les
artefacts logiciels individuels, les exigences et specifications. La validation dépend
généralement de la connaissance du domaine, c'est-à-dire de la connaissance de l'application
pour laquelle le logiciel est écrit. Par exemple, la validation d'un logiciel pour un avion exige
des connaissances de la part des ingénieurs en aérospatiale et des pilotes.
La vérification et la validation (V&V) sont des processus qui permettent de s'assurer que le
logiciel est correct et fiable, c'est-à-dire qu'il répond aux besoins de l'utilisateur.
Vérification
(En cours)
Planification : -
Utilisateurs cibles Processus : Produit logiciel
Besoins et attentes Spécification des Analyse et conception du Mise à l'essai et
des clients exigences système mise en œuvre du
-Validation à la Développement de système
fin systèmes
Validation à la fin
Validation
Validation à la fin de chaque phase, de la planification au à la fin de
déploiement chaque
phase
Page 12 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Le but de la vérification du logiciel est de trouver autant de défauts cachés dans le logiciel
avant la livraison.
Analyse statique : Comme l'indique le terme "statique", il repose sur l'examen d'un certain
nombre de documents, à savoir les documents d'exigences, les modèles logiciels, les
documents de conception et le code source. L'analyse statique traditionnelle comprend
l'examen du code, l'inspection, la visite, l'analyse des algorithmes et la preuve de l'exactitude.
Il n'implique pas l'exécution effective du code en cours d'élaboration. Au lieu de cela, il
examine le code et les raisons de tous les comportements possibles qui pourraient survenir
Page 13 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
pendant le temps d'exécution. Les optimisations du compilateur sont des analyses statiques
standard.
L'analyse dynamique d'un système logiciel implique l'exécution réelle d'un programme afin
d'exposer les défaillances possibles du programme. Les propriétés comportementales et de
performance du programme sont également observées. Les programmes sont exécutés avec
des valeurs d'entrée typiques et soigneusement sélectionnées. Souvent, l'ensemble d'entrée
d'un programme peut être impraticablement grand. Toutefois, pour des raisons pratiques, il
est possible de sélectionner un sous-ensemble finite du jeu d'entrées. Par conséquent, lors des
essais, nous observons certains comportements représentatifs du programme et tirons une
conclusion sur la qualité du système. Une sélection minutieuse d'un ensemble de tests finite
est cruciale pour parvenir à une conclusion fiable.
N/B :
En effectuant des analyses statiques et dynamiques, les praticiens veulent identifier autant de
fautes que possible afin que ces fautes soient fixed à un stade précoce du développement du
logiciel. L'analyse statique et l'analyse dynamique sont complémentaires par nature, et pour
une meilleure efficacité, elles doivent toutes deux être réalisées de façon répétée et alternée.
Les praticiens et les chercheurs doivent supprimer les frontières entre l'analyse statique et
l'analyse dynamique et créer une analyse hybride qui combine les forces des deux approches.
Page 14 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Techniques de vérification et de validation - Analyse et méthodes informelles et
statiques
Page 15 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Rappelons les définitions suivantes de l'analyse informelle et statique comme techniques de
vérification et de validation :
Le deuxième avantage des techniques statiques est qu'elles sont souvent moins chères que les
techniques dynamiques et que leur retour sur investissement est beaucoup plus élevé. Les
défauts étant identifiés plus tôt, leurs correctifs sont moins chers, et ils ne sont souvent pas du
tout introduits dans le logiciel, étant trouvés dans les documents de spécification.
Les techniques statiques peuvent être appliquées à de nombreux produits livrables, tels que
les composants logiciels, qu'ils puissent ou non être compilés, les spécifications de haut
niveau ou détaillées, les listes d'exigences, les contrats, les plans de développement ou de test,
ainsi qu'à de nombreux autres produits livrables. Les tests statiques peuvent ainsi être
exécutés très tôt dans le cycle de développement.
Les composants logiciels, qu'ils puissent être compilés ou non, peuvent être examinés à l'aide
de revues (revues de code) ou d'analyses statiques. Les autres éléments, tels que la
documentation, les exigences et les spécifications, les documents de conception d'essai, les
cas d'essai et les procédures d'essai, même les données d'essai, peuvent également être soumis
pour examen. Les plans de développement, les plans de test, les processus et les activités
commerciales peuvent également faire l'objet d'examens.
Les techniques de tests informelles et statiques sont des solutions efficaces et éprouvées pour
améliorer la qualité des logiciels.
Page 16 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Types d'examens
Revues de direction
Examens techniques ;
Inspections
Visites guidées
Audits.
Les examens peuvent être regroupés selon leur niveau de formalisme, du moins formel au
plus formel. Tous les examens ont un produit ou un processus auquel ils s'appliquent.
(Voir Bernard Homes, (2012) pour plus de détails pp. 94-)
Revues de direction
Les revues de direction ont pour but de suivre les progrès, de définir l'état d'avancement des
plans et du calendrier, ou d'évaluer l'efficacité des approches de gestion utilisées et leur
adéquation aux objectifs. Les examens de la direction permettent de déterminer la conformité
et les écarts par rapport aux plans ou aux procédures de gestion. Des connaissances
techniques peuvent être nécessaires pour gérer avec succès de tels types d'examens.
L'évaluation d'éléments ou d'objets peut nécessiter plus d'une seule réunion et les réunions
peuvent ne pas aborder tous les différents aspects du produit ou du procédé soumis à examen.
L'examen de la direction tient également compte des aspects de la faisabilité économique (c.-
à-d. l'évaluation de la rentabilité du logiciel).
Les revues de direction peuvent s'appliquer aux processus suivants (entre autres) :
Page 17 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Les revues de direction peuvent s'appliquer aux produits suivants (entre autres) :
- Rapports de défauts ;
- Rapports d'audit ;
- Rapports d'avancement ;
Définition :
L'analyse des flux de données consiste à évaluer les variables et à vérifier si elles sont
correctement définies et initialisées avant leur utilisation (référencées).
Les variables doivent être déclarées et utilisées (les variables doivent être déclarées
avant d'être utilisées)
La variable doit être initialisée
Les variables doivent être utilisées
Une variable est une zone de mémoire de l'ordinateur (un ensemble d'octets et de bits) à
laquelle un nom est associé (le nom de la variable). Lorsque la variable n'est pas utilisée, par
Page 18 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
exemple avant le lancement du programme ou après la fin du programme, la zone mémoire
est affectée à un autre programme ou au système. Il peut donc contenir n'importe quelle
donnée, alphabétique ou numérique. Lorsque le programme a besoin de la variable, une zone
de mémoire est allouée, mais n'est pas toujours initialisée. Le contenu de la zone mémoire
n'est donc pas garanti. Pour s'assurer que la zone de mémoire contient des données valides, il
est important de l'initialiser avec une valeur adéquate. Certains langages de programmation
initialisent automatiquement les variables lorsqu'elles sont déclarées, d'autres pas. De même,
certains langages de programmation allouent dynamiquement des variables (et leur type,
numérique ou alphanumérique) lors de leur identification, par exemple lors de leur première
utilisation dans le code. Nous pourrions donc avoir deux variables avec des noms similaires
"NOM" et "N0M" (ici le chiffre 0 au lieu de la lettre O), qui pourraient être considérées
identiques lorsqu'elles sont lues par le développeur mais qui sont définies comme deux
variables différentes par l'ordinateur. Nous pourrions également faire identifier le défaut ci-
dessous :
Erreur : Une erreur se produit lorsque le comportement d'un système n'est pas conforme à
celui prescrit dans le document d'exigences specification
L'erreur ci-dessus definition de l'erreur suppose que le specification donné est acceptable pour
le client. Toutefois, si le specification ne répond pas aux attentes du client, alors, bien sûr,
même une implémentation sans faille ne parvient pas à satisfaire le client.
- Un bogue logiciel est une erreur , un défaut, une défaillance, un défaut ou un défaut d'un
programme ou d'un système informatique qui produit un résultat ou des causes incorrects ou
inattendus.
Toute approche en matière de tests est fondée sur des hypothèses quant à la façon dont les
erreurs du programme se produisent. Les erreurs sont dues à deux raisons principales :
- Les erreurs sont dues à une mauvaise compréhension de toutes les conditions auxquelles un
programme doit faire face, ce qui entraîne des erreurs d'exigences, de conception ou de
codage.
Page 19 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
- Des erreurs se produisent parce que nous ne nous rendons pas compte que certaines
combinaisons de conditions nécessitent des traitements spéciaux.
Certains types d'erreurs majeures peuvent être vérifiés. Les erreurs de programme sont
classées comme :
Erreurs de syntaxe -- Une erreur de syntaxe est une instruction de programme qui
viole une ou plusieurs règles de la langue dans laquelle elle est écrite (langue
d'implémentation), c'est-à-dire une violation des règles de grammaire de la langue,
généralement détectée par le compilateur, et signalée par des messages d'erreur du
compilateur. Par exemple
- Il manque un appareil orthodontique : Si les accolades ne se produisent pas dans
les paires correspondantes, le compilateur indique une erreur.
- L'omission du type de valeur de retour dans une définition de fonction provoque
une erreur de syntaxe si le prototype de fonction spécifie un type de retour autre
que int.
- Oublier de retourner une valeur d'une fonction qui est censée retourner une valeur
peut conduire à des erreurs inattendues.
- Retourner une valeur pour une fonction dont le type de retour a été déclaré nul
entraîne une erreur de syntaxe.
- Définir une fonction dans une autre fonction est une erreur de syntaxe
Erreur logique - Une erreur logique se produit lorsqu'un programme produit des
résultats incorrects, c'est-à-dire qu'un programme qui compile et s'exécute
normalement peut ne pas faire ce que vous voulez.
Les défauts logiques peuvent être divisés en trois catégories :
- Erreurs d'exigences : Cela signifie que les besoins réels du client ne sont pas pris
en compte.
- Erreurs de conception : Si vous avez résolu le mauvais problème, vous avez une
erreur de conception. Les erreurs de conception surviennent lorsque les
spécifications ne correspondent pas au problème à résoudre.
Page 20 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Figure 1
Avec référencé à la figure 1, que se passera-t-il si la propriété de chaîne de connexion n'est
pas bien définie ? Un message d'erreur apparaîtra indiquant le type d'erreur syntaxique (par
exemple le type de données omis) et le programmeur devra déboguer (Identifier le point
défectueux, Isoler le point défectueux et réparer le point défectueux).
Question : Quelles sont les différences entre la durée de vie de développement logiciel
(SDLC) et le cycle de vie de test logiciel (STLC) ?
Test case
Test Case est simplement une entrée de données dans un produit logiciel.
Test Suit ou Test Set est un ensemble de Test case ou simplement une collection de Test
case.
Une définition commune d'un Test case est une description des conditions et des résultats
escomptés qui sont pris ensemble pour tester pleinement une exigence ou un cas d'utilisation.
Dans ce cours, j'autorise la description de plusieurs exigences dans un seul scénario de test et
je peux limiter un Test case à une partie d'un cas d'utilisation, comme un flux d'événements.
Les cas d'essai écrits devraient comprendre une description de la fonctionnalité à mettre à
l'essai et de la préparation requise pour s'assurer que l'essai peut être effectué. (Entrée test)
Page 21 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Un Test case est défini par un environnement de départ, des données d'entrée, des actions et
des résultats attendus, qui comprennent les données attendues et l'environnement résultant.
Un Test case est composé des valeurs du Test case, des résultats attendus, des valeurs de
prefix (conditions préalables) et des valeurs de postfix (post-condition) nécessaires pour
une exécution et une évaluation complètes du logiciel testé.
(c.-à-d. spécification d'un critère de validation de toutes les entrées dans le logiciel
basé sur la validation de la spécification de l'exigence parce que toutes les exigences
DOIVENT être validées avant de procéder à tout développement logiciel) (Critères de
validation de la spécification de l'exigence RSV)
N/B : Un bon cas de test est un cas qui a une forte probabilité de détecter une erreur non
découverte. La vérification de la validité et de l'invalidité des données d'entrée est une
condition nécessaire à la sélection des cas ; il est donc impossible d'effectuer des tests
exhaustifs.
Chaque cas de test nécessite une documentation appropriée, de préférence dans un format
fixe. Le format de la conception de votre scénario de test est très important. Il existe de
nombreux formats ; un format est suggéré ci-dessous :
Nous utiliserons un format particulier pour nos cas de test, comme le montre le tableau 1.
Page 22 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Tableau 1 : Exemple de format de Test case
Les essais doivent être défensifs (essais défensifs), c.-à-d. des essais qui comprennent des
essais dans des conditions normales et anormales.
Afin de vérifier pleinement que toutes les exigences d'une demande sont satisfaites, il doit y
avoir au moins deux cas de test pour chaque exigence : un test positif et un test négatif. Si une
exigence a des sous-exigences, chaque sous-exigence doit avoir au moins deux cas de test.
Procédures d'essai
Les procédures de test décrivent les activités spécifiques prises par un testeur pour configurer,
exécuter et analyser un test. Cela comprend la définition des valeurs des données, des fichiers
d'entrée et de sortie, des tests automatisés à exécuter et des activités de test manuelles
détaillées.
La procédure de test est un document spécifiant une séquence d'actions pour l'exécution d'un
test. Aussi connu sous le nom de script de test ou script de test manuel.
Page 23 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Les procédures de test peuvent être écrites pour des tests manuels, des tests automatisés ou
une combinaison des deux. Ils ne sont généralement nécessaires que si les tests sont
complexes.
Scripts de test
Un script de tests est ce qui est utilisé pour tester la fonctionnalité d'un système logiciel. Ces
scripts peuvent être manuels ou automatisés.
Les scripts de test manuels sont généralement des scripts écrits que le testeur doit exécuter.
Cela implique une interaction directe entre le testeur et le système testé. Les scripts de test
manuels spécifient les instructions étape par étape de ce que le testeur doit entrer dans le
système et les résultats attendus. Souvent, les scripts sont intégrés dans les procédures de test.
Les scripts de test automatisés sont des logiciels écrits pour tester le système. Ceux-ci
peuvent être générés avec des outils ou codés à l'ancienne. Habituellement, un langage de
script est utilisé pour contrôler l'exécution des tests de manière ordonnée. Ces tests sont
généralement initiés par les testeurs et sont référencés dans les procédures de test.
Listes de test :
Les listes de test sont un moyen de rassembler les tests unitaires en groupes logiques. Les
principaux avantages de l'ajout de tests unitaires à une liste de test sont que vous pouvez
exécuter des tests à partir de plusieurs fichiers de test unitaires, vous pouvez les exécuter dans
le cadre d'une compilation, et vous pouvez utiliser les listes pour appliquer une politique
d'archivage. Pour plus d'informations sur les listes de test
Plans de test :
Il s'agit de documents qui expliquent comment vous allez tester le système afin de le prouver
et quelles activités seront suivies pour accomplir le travail. Le niveau de formalité et de détail
de ces plans peut varier. Nous entrerons dans la planification du test en détail plus tard dans
ce cours avec l'accent sur la planification juste assez.
Page 24 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
La planification des essais doit se faire tout au long du cycle de développement, en particulier
au début du cycle de développement. Un plan d'essai est un document décrivant la portée,
l'approche, les ressources et le calendrier des activités d'essai prévues. Il identifie les éléments
de test, les caractéristiques à tester, les tâches de test, qui effectuera chaque tâche, et tout
risque nécessitant des plans d'urgence. Un élément important du plan de test est constitué par
les cas de test individuels. Un cas de test est un ensemble d'entrées de test, de conditions
d'exécution et de résultats attendus développés pour un objectif particulier, tel que l'exercice
d'une trajectoire de programme particulière ou la vérification de la conformité à une exigence
spécifique.
Rédigez le plan d'essai au début du cycle de développement, alors que les choses se déroulent
généralement encore assez bien et calmement. Cela vous permet de réfléchir à un ensemble
complet de cas de test. Si vous attendez jusqu'à la fin du cycle pour écrire et exécuter des
scénarios de test, vous risquez d'être dans une période très chaotique et précipitée. Souvent,
les bons cas de test ne sont pas écrits dans cet environnement précipité, et des tests ad hoc ont
lieu. Avec les tests ad hoc, les gens commencent simplement à essayer tout ce à quoi ils
peuvent penser sans aucune feuille de route rationnelle à travers les exigences du client. Les
tests effectués de cette manière ne sont pas reproductibles.
Il est essentiel, lors des essais, de commencer la planification dès que l'artefact nécessaire est
disponible. Par exemple, dès que l'analyse des besoins du client est terminée, l'équipe d'essai
devrait commencer à rédiger des cas de test de boîtes noires en fonction de ce document. En
le faisant si tôt, les testeurs pourraient se rendre compte que les exigences ne sont pas
complètes. L'équipe peut poser des questions au client pour clarifier les exigences afin qu'un
cas de test spécifique puisse être rédigé. La réponse à la question est également utile pour le
développeur de code. De plus, le testeur peut demander (au programmeur) que le code soit
conçu et développé pour permettre une exécution de test automatisée. En résumé, plus les
tests sont planifiés tôt à tous les niveaux, mieux c'est.
Il est également très important de considérer la planification et l'exécution des tests comme
des processus itératifs. Dès que la documentation des exigences est disponible, il est
Page 25 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
préférable de commencer à rédiger des cas de test fonctionnel et de test du système. Lorsque
les exigences changent, réviser les cas de test. Dès qu'un code est disponible, exécutez les cas
de test. Lorsque le code change, exécutez à nouveau les scénarios de test. En connaissant le
nombre et le type de cas de test réellement exécutés, vous pouvez suivre avec précision
l'avancement du projet. Dans l'ensemble, les tests doivent être considérés comme un élément
itératif et essentiel de l'ensemble du processus de développement.
La conception des cas types est restée au centre des préoccupations du milieu de la recherche
et des praticiens. Un processus de développement logiciel génère un grand nombre
d'informations, telles que les exigences specification, le document de conception et le code
source. Afin de générer des tests efficaces à moindre coût, les concepteurs de tests analysent
les sources d'information suivantes :
Page 26 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Dans les tests de boîtes noires, les cas de test sont générés à partir de la spécification des
exigences.
(2) Code source : Alors qu'une exigence specification décrit le comportement prévu d'un
système, le code source décrit le comportement réel du système. Les hypothèses et les
contraintes de haut niveau se concrétisent dans une mise en œuvre. Bien qu'un concepteur de
logiciel puisse produire une conception détaillée, les programmeurs peuvent introduire des
détails supplémentaires dans le système. Par exemple, une étape de la conception détaillée
peut être "trier tableau A". Pour trier un tableau, il existe de nombreux algorithmes de tri
ayant des caractéristiques différentes, comme l'itération, la récursivité et l'utilisation
temporaire d'un autre tableau. Par conséquent, les cas de test doivent être conçus en fonction
du programme.
Dans les tests en boîte blanche, les cas de test sont générés à partir du code source.
Il existe trois types de tests basés sur les défaillances : la devinette d'erreur,
l'ensemencement de fautes et l'analyse de mutation.
- En devinant les erreurs, un ingénieur d'essai applique son expérience pour (i) évaluer la
situation et deviner où et quels types de défauts peuvent exister, et (ii) concevoir des tests
pour specifically exposer ces types de défauts.
- Lors de l'ensemencement de fautes, les fautes connues sont injectées dans un programme et
la suite de tests est exécutée pour évaluer l'efficacité de la suite de tests. L'ensemencement de
fautes suppose qu'une suite de tests que finds a ensemencé des fautes est également
susceptible de provoquer d'autres fautes.
- Test de mutation : Un logiciel de haute qualité ne peut se faire sans des tests de haute
qualité. Les tests de mutation mesurent la " bonne " qualité de nos tests en insérant des
défauts dans le programme testé. Chaque défaut génère un nouveau programme, un mutant
légèrement différent de l'original. Les tests de mutation mesurent la qualité des cas de test.
L'analyse de mutation est similaire à l'ensemencement de défauts, sauf que des mutations
dans les énoncés de programme sont effectuées afin de déterminer la capacité de détection
des défauts de la suite de tests. Si les cas de test ne sont pas capables de révéler de tels
défauts, l'ingénieur de test peut spécifier des cas de test supplémentaires pour révéler les
défauts. Le test de mutation est basé sur l'idée de simulation de défaut, alors que
l'ensemencement de défaut est basé sur l'idée d'injection de défaut. Dans l'approche
d'injection de fautes, un défaut est inséré dans un programme, et un oracle est disponible pour
Page 27 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
affirmer que le défaut inséré a effectivement rendu le programme incorrect. En revanche,
dans la simulation d'erreur, un programme modification n'est pas garanti qu'il conduise à un
programme défectueux. Dans la simulation d'erreur, on peut modifier un programme
incorrect et le transformer en un programme correct.
(4) Heuristique, c'est-à-dire de raisonnement humain.
Un système de suivi des incidents permet de suivre les incidents qui devraient être corrigés au
cours du processus de développement afin que tous les incidents soient correctement résolus :
- Aucun incident ne sera laissé au hasard sur les caprices d'un seul programmeur.
Les tests de logiciels ne peuvent montrer que la présence d'erreurs et non leur absence.
C'est la principale limitation des tests de logiciels, car elle ne peut régler la question de
l'exactitude des programmes. En d'autres termes, en testant un programme avec un sous-
ensemble approprié du domaine d'entrée et en n'observant aucun défaut, nous ne pouvons pas
conclure qu'il n'y a plus de défauts dans le programme.
Bien que les essais ne puissent régler la question de l'exactitude du programme, différentes
méthodes d'essai continuent d'être mises au point. Par exemple, il existe des méthodes d'essai
fondées sur des spécifications et des méthodes d'essai fondées sur des codes. Il est important
de développer une théorie pour comparer la puissance des différentes méthodes de test.
Page 28 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
- Introduisez une seule faute à la fois pour créer des "mutants" du programme original.
Chaque défaut inséré entraîne un nouveau programme appelé Program Mutation. Appliquer
un ensemble de tests à chaque programme mutant.
L'"adéquation du test" est mesurée par le pourcentage de "mutants tués".
Ce n'est pas parce que tous vos tests sont verts que votre code est correct et exempt de bugs.
Cela ne signifie pas non plus que les tests sont inutiles (sans succès) ! Une bonne stratégie
consiste à ajouter de nouveaux cas de test chaque fois qu'un nouveau bogue est découvert. Le
scénario de test doit démontrer la présence du bogue. Quand le test est vert, vous savez que
cette instance particulière du bogue a disparu. Rédiger un nouveau test pour le bogue qui (i)
documente le bogue, (ii) vous aide à le déboguer, et (iii) garantit que le bogue sera signalé s'il
réapparaît un jour.
N/B : Une théorie permettant de comparer la puissance des méthodes d'essai en fonction
de leurs capacités de détection de défauts est un bon domaine de recherche.
Question : Comparez le test de mutation à d'autres approches de test avec détection de fautes.
Répondez : Les tests de mutation nécessitent généralement beaucoup plus de cas de test que
les autres méthodes.
TD 1 et TD 2 Questions : (ICT 304)
Page 29 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
1. Expliquer le concept de test logiciel et donner deux raisons pour effectuer un test
logiciel. Quelles sont les causes des pannes logicielles ? Des tests exhaustifs sont-ils
possibles ?
2. Expliquer les concepts suivants tels qu'ils sont utilisés dans les tests logiciels :
Bugs logiciels, Tests défensifs, Ensemencement de fautes, Tests de mutations, Test
Oracle, Script de test, combinaison de test, erreur de programme
3. Définissez les termes suivants tels qu'ils sont utilisés dans les tests logiciels, énumérez
la signification de chaque terme et, par conséquent, indiquez clairement à quel stade du
cycle de vie du développement logiciel se trouve le logiciel chacun s'appliquent :
(i) Vérification (ii) Validation (iii) Essais statiques (iv) Essais dynamiques
Qu'entendez-vous par le terme Cas d'essai, en utilisant le système de guichet
automatique bancaire (GAB), produire un document de cas d'essai pour le système.
5. En ce qui concerne la question quatre (4) ci-dessus, définissez les exigences
fonctionnelles et non fonctionnelles et donnez donc cinq exemples dans chaque
cas.
6. Distinguez les concepts suivants :
(a) Test et débogage
(b) Tests de régression et tests d'intégration
(c) Cycle de vie du développement logiciel (SDLC) et cycle de vie des tests
logiciels (STLC)
10. Quelles sont les différences entre les essais dynamiques et les essais statiques ?
11. Vous trouverez ci-dessous quatre programmes défectueux. Chacun d'entre eux
comprend un cas de test qui entraîne une défaillance du logiciel. Répondez aux questions
suivantes au sujet de chaque programme.
Page 30 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
(iii) Réparer le défaut et vérifier que le test donné donne maintenant les résultats
escomptés
Les méthodologies de test de logiciels sont les différentes approches permettant de s'assurer
qu'une application logicielle est entièrement testée. Celles-ci englobent tout, des tests
frontaux jusqu'aux tests back-end.
Les méthodologies de test de logiciels sont les diverses stratégies ou approches utilisées pour
tester une application afin de s'assurer qu'elle se comporte et se présente comme prévu.
Celles-ci englobent tout, des tests frontaux jusqu'aux tests back-end.
Les méthodologies de test de logiciels englobent tout, des tests unitaires de modules
individuels, des tests d'intégration d'un système entier aux formes spécialisées de test telles
que la sécurité et la performance.
Definition 1 :
Page 31 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Essais statiques : Tester sans exécuter le programme. Cela comprend l'inspection des
logiciels et certaines formes d'analyse.
Definition 2 :
La représentation schématique des méthodes de test des logiciels est présentée ci-dessous :
Page 32 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
ESSAIS STRUCTURAUX / ESSAIS DE BOÎTES BLANCHES
Les tests structurels ou les tests de boîtes blanches impliquent de tester la spécification des
exigences de l'application. Il intègre tous les types de tests conçus pour garantir que chaque
partie d'un logiciel se comporte comme prévu en utilisant les cas d'utilisation fournis par
l'équipe de conception ou l'analyste commercial.
Dans les tests en boîte blanche, le système testé n'est PAS traité comme une boîte noire parce
que :
- Dans White Box Testing, nous testons le logiciel du point de vue du développeur,
- Dans White Box Testing, les données des cas de test sont générées à partir du code
source et de la structure interne du programme. Cela nécessite la connaissance du
langage de programmation utilisé.
Ces objectifs peuvent-ils être atteints sans limites ? Non. Quelles sont donc les limites du
test de la boîte blanche ?
Page 33 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Les limites du test des boîtes blanches sont les suivantes :
Les développeurs testent souvent avec l'intention de prouver que le code fonctionne
plutôt que de prouver que ça ne marche pas
Les développeurs ont tendance à sauter les types plus sophistiqués de tests en boîte
blanche (p. ex. tests d'état, tests de flux de données, tests en boucle, etc.), en
s'appuyant surtout sur la couverture en ligne
Il y a plusieurs types d'erreurs que les tests en boîte blanche ne trouveront pas :
Bugs de synchronisation et de concomitance
Problèmes de performance (par exemple, trafic réseau,
Problèmes d'utilisabilité
Le test de la boîte blanche (aussi connu sous le nom de test transparent, de boîte de verre ou
de structure) est une technique de test qui permet d'évaluer le code et la structure interne du
programme.
Les tests de la boîte blanche se concentrent sur la structure interne du système testé. Les
chemins à travers le logiciel sont identifiés et testés. Pour ce faire, il faut connaître le langage
de programmation utilisé.
Dans White Box Testing, nous testons le logiciel du point de vue des développeurs.
Les tests interviennent à chaque étape du cycle de vie du logiciel (cycle de vie du
développement du système), mais les tests effectués à chaque niveau du développement du
logiciel sont de nature différente et ont des objectifs différents.
Test unitaire
Le test unitaire est le premier niveau de test et est souvent effectué par les développeurs eux-
mêmes. C'est le processus qui consiste à s'assurer que les composants individuels du logiciel
fonctionnent comme ils ont été conçus.
La partie test unitaire d'une méthodologie de test consiste à tester les modules ou composants
logiciels individuels qui constituent une application ou un système. Les tests unitaires sont
effectués sur des modules individuels du code source. Ce qui constitue une unité dépend de
Page 34 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
ce qui est construit et de la méthodologie utilisée. Par exemple, dans le développement
orienté objet, une classe peut être considérée comme la plus petite unité à tester.
But : S'assurer que chaque composante fonctionne séparément. Les développeurs effectuent
des tests unitaires pour s'assurer que le composant qu'ils construisent fonctionne.
Test d'intégration
Le test d'intégration consiste à tester différents modules/composants qui ont été testés avec
succès. Ce type de test est effectué lors de l'intégration des modules logiciels. Le test
d'intégration est effectué lorsque deux ou plusieurs unités testées sont combinées dans une
structure plus grande.
Le test d'intégration est effectué lorsque deux ou plusieurs unités testées sont combinées dans
une structure plus grande.
Les tests d'intégration impliquent une intégration descendante, une intégration ascendante et
une intégration hybride.
Test du système
Le test de système est le processus qui consiste à tester un système complètement intégré
pour vérifier qu'il répond aux spécifications de ses exigences. Ici, le test de bout en bout de
l'ensemble du système est établi.
La partie test du système d'une méthodologie de test consiste à tester l'ensemble du système à
la recherche d'erreurs et de bogues. Ce test est effectué en connectant les composants
matériels et logiciels de l'ensemble du système (qui ont été précédemment testés en unité et
en intégration), puis en le testant dans son ensemble. Ce test est répertorié sous la méthode de
test de la boîte noire, où le logiciel est vérifié pour les conditions de travail prévues par
l'utilisateur ainsi que les conditions d'exception et les conditions de bord potentielles.
Page 35 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Tester le comportement de l'ensemble du logiciel avec différents systèmes d'exploitation ou
différents périphériques matériels
But :
Le test du système tend à confirmer la qualité de bout en bout de l'ensemble du système. Le
test du système est souvent basé sur les spécifications fonctionnelles/besoins du système. Les
attributs de qualité, tels que la portabilité, la fiabilité, la sécurité et la maintenabilité, sont
également vérifiés.
Ce type d'essai est habituellement effectué sur scène (c.-à-d. dans l'environnement de
l'utilisateur).
Tests d'acceptation
Les essais d'acceptation font partie d'une méthodologie d'essai qui permet de s'assurer que les
spécifications du logiciel ont été respectées et que les utilisateurs finaux et les clients ont testé
le système pour s'assurer qu'il fonctionne comme prévu et répond à toutes leurs exigences
définies.
Les tests d'acceptation peuvent avoir lieu à différents niveaux de la vie d'un logiciel :
- Lors de la conception du logiciel ;
- Lorsque le logiciel est intégré à d'autres logiciels ;
- Lorsque le logiciel est acquis par un nouveau client ;
- Pour l'acceptation de nouvelles fonctionnalités ou caractéristiques.
TEST DE RÉGRESSION
- Le test de régression est le processus de re-test d'un logiciel qui a été modifié.
- Le test de régression est un type de test logiciel qui est effectué chaque fois que le système
est changé ou modifié.
- Le test de régression est le processus de validation des modifications introduites dans un
système pendant la maintenance logicielle.
- Le test de régression est la (ré)exécution d'une version incrémentale d'un produit logiciel.
- Le test de régression est fondamental pour la maintenance du logiciel, car il doit garantir
que les modifications apportées au logiciel ont été effectuées correctement et qu'elles n'ont
pas affecté les parties du logiciel qui étaient en ordre.
Un test de régression permet une validation cohérente et répétable de chaque nouvelle version
d'un produit. Ces tests permettent de s'assurer que les défauts signalés ont été corrigés pour
chaque nouvelle version et qu'aucun nouveau problème de qualité n'a été introduit dans le
Page 36 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
processus de maintenance. Bien que les tests de régression puissent être effectués
manuellement, une suite de tests automatisée est souvent utilisée pour réduire le temps et les
ressources nécessaires pour effectuer les tests requis. Ce type de test est utilisé lors de la
livraison incrémentale du produit logiciel.
But :
- S'assurer que les changements apportés au système n'ont pas introduit de nouvelles
erreurs.
- Trouver et éliminer les défauts nouvellement introduits.
- L'objectif est de gérer le risque qu'un changement corrige un problème connu ou qu'il
n'ait pas causé la panne d'une zone de travail antérieure de l'application.
Logiciel de re-test qui a été modifié. Test effectué chaque fois que le
système est changé ou modifié.
Test de régression Objectif : Récupérer tous les nouveaux bogues introduits par de
nouvelles modifications.
Le test fonctionnel, également connu sous le nom de black testing, est un processus
d'assurance qualité qui base ses cas de test sur les spécifications du composant logiciel à
tester. Les tests fonctionnels permettent de s'assurer que les exigences sont correctement
satisfaites par l'application.
Page 37 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Dans la plupart des méthodes d'essai, l'essai fonctionnel consiste à tester l'application par
rapport aux exigences opérationnelles. Les essais structuraux sont effectués à l'aide des
spécifications fonctionnelles fournies par le client ou à l'aide des spécifications de
conception, comme les cas d'utilisation fournis par l'équipe de conception.
D'autre part, le test fonctionnel consiste à tester l'application par rapport aux exigences non
fonctionnelles, ce qui implique généralement de mesurer/tester l'application par rapport à des
qualités techniques définies, par exemple : vulnérabilité, évolutivité, convivialité. Quelques
exemples de tests non fonctionnels sont décrits ci-dessous :
Le test de boîte noire se réfère au test d'un logiciel sans rien connaître de son fonctionnement
interne - Ceci n'exige pas la connaissance du langage de programmation utilisé.
Dans Black Box Testing, le système testé est en fait traité comme une boîte noire parce que :
- Dans Black Box Testing, nous testons le logiciel du point de vue de l'utilisateur,
- Dans les tests de boîte noire, les données des cas de test sont dérivées uniquement de
la spécification des exigences (c'est-à-dire sans connaissance de la structure interne du
programme). Cela ne nécessite pas la connaissance du langage de programmation
utilisé.
Les tests de boîtes noires jouent un rôle important dans les tests de logiciels, ils aident
à la validation globale de la fonctionnalité du système. Les tests de boîtes noires sont
effectués en fonction des besoins des clients, de sorte que toute exigence incomplète
ou imprévisible peut être facilement identifiée et peut être traitée plus tard.
Essais de performance
Les tests de performance sont un type de tests effectués pour déterminer comment un système
se comporte en termes de réactivité et de stabilité sous une charge de travail particulière,
c'est-à-dire que les tests de performance mesurent comment un système se comporte sous une
charge croissante (tant le nombre d'utilisateurs que les volumes de données),
Les tests de performance peuvent être appliqués pour comprendre l'évolutivité de votre
application ou de votre site Web, ou pour comparer la performance dans un environnement
de produits tiers tels que des serveurs et des intergiciels en vue d'un achat potentiel. Ce type
de test est particulièrement utile pour identifier les goulots d'étranglement de performance
dans les applications très utilisées. Les tests de performance impliquent généralement une
suite de tests automatisés car cela permet de simuler facilement une variété de conditions de
charge normales, de pointe et exceptionnelles. Voici quelques exemples de tests de
Page 38 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
performance : Test de charge, test de contrainte, test de trempage, test de pointes, test de
configuration et test d'isolation.
(a) Test de charge : L'essai en charge est le processus d'essai qui est habituellement
effectué pour étudier le comportement du système sous une charge spécifique prévue
(charge normale). Cette charge peut être le nombre d'utilisateurs simultanés attendus sur
l'application effectuant un nombre spécifique de transactions dans la durée définie. Ce test
permet de connaître les temps de réponse de toutes les transactions critiques importantes pour
l'entreprise.
(b) Tests de stress : Les essais sous contrainte sont le processus d'essai qui est
habituellement effectué pour étudier le comportement du système sous une charge extrême.
Ce type de test est effectué pour déterminer la robustesse du système en termes de charge
extrême et aide les administrateurs d'applications à déterminer si le système fonctionnera
suffisamment si la charge actuelle dépasse largement le maximum attendu. Cela aide
l'administrateur de l'application à comprendre les limites supérieures de la capacité du
système. L'essai sous contrainte consiste à trouver le(s) point(s) de défaillance dans le
système lorsque la charge testée dépasse celle qu'elle peut supporter.
Par exemple :
Combien d'utilisateurs peuvent être connectés à une base de données à un site Web (par
exemple Facebook) avant qu'elle ne s'écrase ? (Stress Testing).
Combien d'utilisateurs peuvent être connectés à un serveur avant qu'il ne plante ? (Stress
Testing).
Dans le cadre de tests de stress, diverses activités visant à surcharger les ressources existantes
d'emplois excédentaires sont menées afin de tenter de décomposer le système.
N/B :
- Si vous testez la charge normale prévue (par exemple, vous savez que le système sera
utilisé par 100 utilisateurs à la fois), c'est un test de charge. Mais lorsque vous voulez
déterminer comment le système se comporte sous une charge extrême (par exemple,
vous savez que le système sera utilisé par jusqu'à 100 utilisateurs à la fois, et vous
avez décidé d'ajouter 10 utilisateurs supplémentaires), et quand il se brise, c'est un test
de stress.
Page 39 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Pour ce faire, nous collerons à plusieurs reprises une ligne de données, jusqu'à ce
qu'elle atteigne son seuil limite de traitement d'un grand volume de texte. Dès que le
corps de caractère atteint 65 535 caractères, il refuserait simplement d'accepter plus de
données. Le résultat des tests de stress sur Writer 1.1.0 produit le résultat que, il ne
s'écrase pas sous le stress et qu'il gère la situation avec grâce, ce qui assure que
l'application fonctionne correctement même dans des conditions de stress rigoureuses.
Fondamentalement la même chose mais la charge est sous charge normale et le stress
est plus que la charge normale.
- Un autre exemple, dans un système ATM, les tests de charge et de contrainte sont
effectués pour vérifier comment le système se comportera lorsqu'il sera soumis au
trafic de données et à la congestion du réseau ATM, c'est-à-dire comment le logiciel
se comportera lorsqu'il sera soumis à une charge normale (test de charge) ou extrême
(stress testing).
Il peut comparer deux systèmes pour trouver celui qui fonctionne le mieux.
Il peut mesurer les parties du système ou la charge de travail qui causent un mauvais
fonctionnement du système.
- Certains des outils de test de performance sont Load Runner, Apache JMeter,
LoadRunner, Loadstorm, CloudTest, WebLOAD, Appvance, NeoLoad, LoadUI, Rational
Performance Tester, Testing Anywhere, OpenSTA, QEngine (ManageEngine), Httperf,
WAPT, Loadster, LoadImpact, etc.
Test d'utilisabilité
La partie test de convivialité d'une méthodologie de test porte sur l'aspect convivialité du
logiciel pour l'utilisateur final. La facilité avec laquelle un utilisateur peut accéder au produit
constitue le principal point de test. Les tests de convivialité portent sur quatre (4) aspects des
tests : la facilité d'apprentissage, l'efficacité, la satisfaction et la mémorisation.
Tests de sécurité
Auparavant, la sécurité était quelque chose qui était testé après coup. Avec la montée de la
cybercriminalité et la prise de conscience des risques liés aux vulnérabilités logicielles, la
sécurité des applications doit désormais être conçue et développée en même temps que la
fonctionnalité métier souhaitée. Les tests de sécurité testent la confidentialité, l'intégrité,
Page 40 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
l'authentification, la disponibilité et la non-répudiation du logiciel. Des tests individuels sont
effectués pour empêcher tout accès non autorisé au code logiciel.
Test de compatibilité
Tester la compatibilité d'une application ou d'un site Web avec différents navigateurs,
systèmes d'exploitation et plates-formes matérielles. Les tests de compatibilité peuvent être
effectués manuellement ou peuvent être pilotés par une suite de tests fonctionnels ou de
régression automatisés.
(a) Tests Alpha : Tests effectués par le client sur le site du développeur.
c) TEST DE CONFORMITÉ
Vérification de la conformité de la mise en œuvre aux normes de l'industrie. Produire
des tests pour le comportement d'une implémentation afin de s'assurer qu'elle fournit
la portabilité, l'interopérabilité et/ou la compatibilité qu'une norme définit.
En résumé, les différences entre le test des boîtes blanches et le test des boîtes noires peuvent
être résumées dans le tableau ci-dessous :
Page 41 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
programmation utilisé.
Test de boîtes noires : Les tests de boîtes noires jouent un rôle important dans les
tests de logiciels, ils aident à la validation de la fonctionnalité globale du système.
Les tests de boîtes noires sont effectués en fonction des besoins des clients, de sorte
que toute exigence incomplète ou imprévisible peut être facilement identifiée et ainsi
empêcher son introduction dans le logiciel.
Test de régression : Des tests de régression sont effectués pour montrer que les
parties inchangées mais vulnérables du système n'ont pas été affectées de manière
négative. Les tests de régression permettent de s'assurer que le logiciel est validé
après un changement de logiciel.
Essais de performance : Certains jours, les activités bancaires ont peut-être atteint
des sommets, en particulier dans les pays suivants festivals ou période pendant laquelle il y
a une offre. Les défaillances de performance peuvent nuire à la réputation de
l'institution financière.
Test d'utilisabilité : L'application du guichet automatique serait utilisée par de
nombreux utilisateurs - certains seraient techniquement solides et d'autres pourraient
manquer de compétences techniques. L'application doit être simple afin que même les
personnes qui n'ont pas tant d'expérience technique soient capables de bien gérer
l'application. L'application doit être testée pour sa conception simple et efficace afin
que tout utilisateur puisse naviguer dans l' application bancaire sans assistance.
L'application bancaire doit être simple, de sorte que si un utilisateur reste absent pendant
une longue période sans l'utiliser, il ne devrait pas être difficile pour lui de
recommencer.
Essais de sécurité :
Test de compatibilité :
Page 42 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Tests de base de données - Ceci doit être fait pour s'assurer que l'intégrité des
données, la migration des données , la validation et les tests de règles sont corrects.
2. Vérifier que l'utilisateur est capable d'effectuer des transactions financières de base.
3. Vérifier que l'utilisateur est en mesure d'ajouter un bénéficiaire dont le nom et les
détails de compte sont valides.
4. Vérifier que l'utilisateur est en mesure d'effectuer des transactions financières avec le
bénéficiaire additionnel.
5. Vérifier que l'utilisateur est capable d'ajouter un nombre décimal dans le montant
(limité par 2 chiffres)
6. Vérifiez que l'utilisateur n'est pas capable d'ajouter un nombre négatif dans le champ
montant.
7. Vérifiez que l'utilisateur n'est autorisé à transférer de l'argent que si le solde de son
compte est correct.
10. Vérifier que le client est capable d'envoyer de l'argent à plusieurs personnes
11. Vérifier que l'utilisateur est autorisé à changer son mot de passe
12. Vérifiez que les détails du compte reflètent également les transactions financières.
13. Vérifiez que l'utilisateur dont le mot de passe est invalide n'est pas autorisé à se
connecter.
14. Vérifiez qu'après plusieurs tentatives répétées de connexion avec un mot de passe
incorrect ( selon les limites), l'utilisateur doit être bloqué.
16. Vérifiez que si l'un des deux noms d'utilisateur ou mots de passe est vide, l'utilisateur
n'est pas autorisé à se connecter. L'utilisateur doit également recevoir une alerte.
Page 43 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Diagramme d'activité pour ATM
(b)
T Condition
F
Si (Condition 1) 1
x= a ;
Score de
retour
Page 44 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Quelques techniques d'essai de boîte blanche incluent :
Test de flux de contrôle
Test de flux de données
Un graphique de flux de contrôle pour un programme se compose d'un nœud pour chaque
instruction du programme et de bords représentant le flux de contrôle entre les instructions.
Certaines des limites des essais de débit de contrôle sont les suivantes :
(1) Le Test de flux de contrôle ne peut pas détecter toutes les erreurs d'initialisation.
(2) Les erreurs de spécification des exigences ne sont pas détectées par les tests de flux de
contrôle.
(3) Il est peu probable de trouver des chemins et des caractéristiques manquants si le
programme et le modèle sur lequel les tests sont basés sont effectués par la même personne.
L'adéquation des cas de test mesurés avec une métrique appelée couverture (la
couverture est un mesure de l'exhaustivité de l'ensemble des cas de test).
Considérez les termes suivants : Tests exhaustifs, tests complets ou couverture complète. En
gardant ces trois termes à l'esprit, les questions suivantes se posent :
Est-il possible d'effectuer des tests exhaustifs, des tests complets ou une couverture
complète ?
Specifically, le nombre d'entrées potentielles pour la plupart des programmes est si important
qu'il s'agit en fait de infinite. Considérez un compilateur Java - le nombre d'entrées
potentielles pour le compilateur n'est pas seulement tous les programmes Java, ou même tous
les programmes Java presque corrects, mais toutes les chaînes. La seule limitation est la taille
du file qui peut être lu par l'analyseur. Par conséquent, le nombre d'entrées est
effectivement infinite et ne peut pas être explicitement énuméré.
C'est là qu'interviennent les critères de couverture. Comme nous ne pouvons pas tester avec
toutes les entrées, les critères de couverture sont utilisés pour décider quelles entrées de test
utiliser. La communauté des testeurs de logiciels croit qu'une utilisation efficace des critères
de couverture augmente la probabilité que les ingénieurs de test commettent des erreurs dans
un programme. D'un point de vue pratique, les critères de couverture fournissent des règles
utiles pour savoir quand arrêter les tests.
Page 45 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Définition :
Critère de couverture
L'adéquation des cas de test est mesurée à l'aide d'une mesure appelée couverture (la
couverture est une mesure de l'exhaustivité de l'ensemble des cas de test).
La couverture de code est une mesure utilisée dans les tests logiciels. Il décrit le degré
auquel le code source a été testé.
Selon les paramètres d'entrée, différentes parties des codes seront exécutées. Le test unitaire
doit être écrit de manière à couvrir toutes les parties des codes.
L'adéquation des tests est évaluée par la mesure de couverture qui décrit le degré auquel le
code source d'un programme a été testé. Les critères de suffisance comprennent la couverture
du Sentier, la couverture de l'énoncé, la couverture de la condition, de la direction générale ou
de la décision.
Si la couverture n'est pas complétée, d'autres cas de test peuvent être conçus pour tester les
éléments qui ont été manqués et ainsi augmenter la couverture. Il existe différents types de
couverture utilisés pour les tests. Ils incluent :
Couverture des chemins - toutes les chemins possibles d'un programme doivent être testées
au moins une fois.
Couverture des instructions - tous les instructions dans les programmes doivent être
exécutés au moins une fois.
Couverture des branches - toutes les branches du programme doivent être exécutées au
moins une fois.
Couverture de la condition - elle exécute le résultat vrai ou faux de chaque condition.
Les tests en boîte blanche testent la mesure dans laquelle le code source est couvert. C'est ce
qu'on appelle les critères de couverture.
N/B : Les élèves peuvent noter que pour chaque cheminement possible, nous pouvons
générer un cas de test.
Diagramme de contrôle
Control Flow Graph est une représentation graphique d'une unité de programme.
La notation simple utilisée pour représenter le flux de contrôle est appelée graphique de flux.
Le graphique de déroulement représente le déroulement logique du contrôle qui est utilisé
pour représenter la structure de contrôle du programme.
Page 46 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
- Les flèches sont appelées bords ou liens (représentent le flux de contrôle).
- Les zones délimitées par des noeuds et des bords sont appelées régions.
Lire (p, q)
Étant donné le code suivant, produire le graphique de flux de contrôle correspondant.
SI
P+q>100
Read p
Readq Grand
Ifp+q>100THEN
Fin Si
Print "Large" Diagramme de contrôle
END SI
IF p > 50 THEN
P+q>50
Print "p Large"
ENDIF P Grand
Fin Si
(i) Commencer
Read(x) ; read(y) ;
Tandis que (pas (x = y)) boucle
Si x > y Alors
x := x - y ;
Sinon
y := y - x ;
Fin si ; Commencer
Boucle d' extrémité ;
Imprimer pgcd := x ;
Fin ; Entrée (x, y)
Diagramme de
Commencer contrôle
Bien que
Entrée (x, y)
Pas x=y x=y
Page 47 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Bien
Dr X. Y.
queKimbi
Si pgcd := x
x> o,y>0 x<=o ou y<=0
x<=y
Si Sortie (x+y)
x:=x-y y:=y-x
Fin
x>y x<=y
Fin Si
x:=xy y:=y-x
Fin Si
Graphique de
contrôle
(ii) Commencer
Entrée (x, y) ;
Tandis que (x>0 et y>0) Faites
Si (x>y)
Puis x : = x-y
Sinon y : = y-x
EndIf ;
EndWhile ;
Sortie (x+y) ;
Fin
Passe Echec
Fin Si
Diagramme de contrôle
SI
Page 48 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Total>=80 Total <80
A B+
Fin Si
(iv) Commencer
Entrée (x, y) ;
Commencer
Tandis que (x>0 et y>0) Faites
Si (x>y)
Puis x : = x-y Entrée (x, y)
Sinon y : = y-x
EndIf ;
EndWhile ; Bien que
Sortie (x+y) ;
Fin
x<=o,y<<=
x> o,y>0 0
Si
x>y x<=y
x:=xy y:=y-x
Fin Si
Les techniques discutées jusqu'à présent ont toutes été basées sur le "contrôle du
flux".
Le test de flux de données est un autre type de test en boîte blanche qui examine
comment les données se déplacent dans un programme.
Les tests de flux de données tiennent compte de l'association entre la définition des
variables et leur utilisation.
Dans le test de flux de données, le graphique de flux de contrôle est annoté avec les
informations suivantes comment les variables du programme sont définies et utilisées.
Les tests de flux de données ont tendance à découvrir des bogues comme les variables
utilisées mais non initialisées, ou déclarées mais non utilisées, etc.
Page 49 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Dans tout langage de programmation, il doit y avoir des instructions qui
déclarent/définissent des variables
(" Variable definition ") et d'autres énoncés qui utilisent les variables déclarées ("
Variable use ").
Vous pouvez également concevoir des cas de test basés sur le "flux de données".
(c.-à-d., comment les données circulent dans le code)
- Certains énoncés "utilisent" la valeur de la variable (c.-à-d. une "utilisation variable") (c.-à-
d. que certains énoncés utilisent une définition de variable) :
L'essai de flux de données (DFT) tient compte des associations entre la définition des
variables et les utilisations variables. La définition d'une variable modifie un élément de
données alors que l'utilisation d'une variable fait référence à un élément de données sans le
modifier.
- Déterminer tous les endroits possibles dans le programme où la variable aurait pu être
définie (c.-à-d., étant donné sa valeur la plus récente).
- Créez un scénario de test pour chaque paire possible (Définition-Utilisation) (c.-à-d. Pour
chaque chemin possible, nous pouvons générer un scénario de test).
Si (condition 1) {
x= a ;
}
Sinon { {
x= b ;
}
Si (condition 2) {
y =x+ 1 ;
}
Sinon { {
y = x- 1 ;
}
Page 50 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
De combien de cas de test avons-nous besoin ?
Pour que nous puissions répondre à cette question, nous devons nous identifier : Toutes les
définitions, toutes les utilisations et toutes les paires définition-utilisation
Exemple 2 :
Page 51 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Critères d'essai des flux de données
Ces critères reposent sur deux concepts fondamentaux, à savoir la variable definitions et les
usages variables.
La DFT est une famille de critères d'adéquation qui comprend tous les nœuds, toutes les
arêtes et toutes les utilisations.
- Un ensemble de tests satisfait au critère de tous les nœuds si chaque nœud du CFG est
exécuté par un test dans l'ensemble de tests.
- Un ensemble d'essai satisfait au critère de tous les bords si chaque bord du CFG est
exécuté par un essai dans l'ensemble d'essai.
- Un ensemble de test satisfait au critère de tous les usages si chaque paire définition-
usage du programme est exécutée par un test dans l'ensemble de test.
Page 52 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Anomalie de flux de données
Une anomalie est une façon déviante ou anormale de faire quelque chose. L'anomalie de flux
de données est l'identification de certains défauts (appelés anomalies de flux de données).
(1) Une valeur ne doit pas être affectée deux fois à une variable.
(2) Une variable non définie ne doit pas être référencée, c'est-à-dire qu'une
variable non définie/non déclarée ne doit pas être référencée.
(3) Une variable définie/déclarée doit être utilisée
Par conséquent, trois actions fondamentales associées à une variable sont undefine (u),
define(d), et référence (r). Une variable est implicitement undefined lorsqu'elle est créée sans
qu'une valeur lui soit attribuée. D'autre part, une variable peut être explicitement undefined.
Par exemple, lorsqu'un file ouvert est fermé, la variable contenant le pointeur file devient
undefined. Nous avons expliqué l'idée des "états" d'une variable, à savoir undefined (U),
defined (D), référencée (R), et anormale (A), en considérant les trois actions fondamentales
sur une variable. L'état A représente le fait que la variable a été accédée d'une manière
anormale causant une anomalie des données.
- Ces anomalies de flux de données peuvent être détectées par analyse statique
- Ces anomalies pourraient être des manifestations d'erreurs de programmation
potentielles.
- L'anomalie de données flow peut être détectée en utilisant l'idée d'instrumentation de
programme. Intuitivement, l'instrumentation de programme signifie l'incorporation d'un
code additionnel dans un fichier pour surveiller son état d'exécution.
- Les élèves peuvent noter que, pour chaque cheminement possible, nous pouvons
générer un scénario de test.
-
Questions TD 3 et TD4
Page 53 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
(2) Dans les tests en boîte blanche, le système testé n'est PAS traité comme une boîte
noire alors qu'il est en mode la boîte noire testant le système testé est traitée comme une
boîte noire. Discuter explicitement.
(2) En tant qu'Ingénieur Logiciel, vous avez été sollicité par l'Université de Yaoundé I pour
concevoir et mettre en œuvre un logiciel de traitement des résultats des étudiants. En utilisant
le langage C+++ ou tout autre langage de programmation de votre choix, écrivez la
FONCTION pour calculer les GRADES de N élèves. Recommander trois types d'approches
de test pour le système en donnant votre justification et l'importance de chaque test et ainsi
produire le graphique de contrôle du flux (CFG) de la fonction.
(3) A l'aide d'un diagramme, définir les Méthodologies de Test Logiciel, avec référence à un
projet logiciel choisi, Expliquer les critères de sélection des cas de test, Présenter le
Document de Cas de Test du Projet choisi, Expliquer le concept de Test Fonctionnel et ainsi
décrire le Graphique de Flux de Contrôle (CFG) du Système.
Recommandez trois approches de test logiciel pour le système en donnant votre justification
et l'importance de chaque test.
Si (Condition 1)
x= a ;
Sinon (Condition 2)
y =x+ 1 ;
Sinon (Condition 3)
(b) Compte tenu yde= x-la 1structure
; du programme ci-dessous, produire l'organigramme de
Sinoncorrespondant.
contrôle (GPC) {{
y= x+2
Rendement (Score)
(5) En supposant que vous développiez un logiciel de gestion des résultats des étudiants
à l' Université de Yaoundé I avec le système de notation suivant :
Page 54 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Notes Gamme
80≤x≤100 A+
75≤x<80 A
70≤x<75 B+
65≤x<70 B
60≤x<65 B-
55≤x<60 C+
50≤x<55 C
45≤x<50 C-
40≤x<45 D+
35≤x<40 D
0≤x<35 E
(a) Ecrire un algorithme pour le projet de logiciel ci-dessus et par conséquent indiquer
l'option caractéristiques des Algorithmes ?
(b) Définir les cas d'essai et donc expliquer les critères de sélection des cas d'essai.
(c) Présenter le document de cas d'essai du projet choisi et, par conséquent, produire
le document de cas d'essai du diagramme de séquence, diagramme de classes et diagramme
d'objets correspondants de l'élément projet. .
(d) En ce qui concerne le projet ci-dessus, expliquer le concept des tests perturbateurs.
(e) Utiliser C++ ou VB.Net ou toute autre programmation de votre choix : écrivez
la fonction de calcul des notes de N élèves et donc de représentation du
Contrôleur Diagramme de flux (CFG) du système.
(e) Recommandez trois approches de test de logiciels pour le système en donnant
à votre et l'importance de chaque test.
(6) Énumérez cinq (5) énoncés de contrôle utilisés dans la programmation et décrivez le
GPC de chacun.
Il s'agit de techniques de test de boîtes noires pour l'identification des cas de test.
Quelques techniques d'essai de boîte noire sont énumérées ci-dessous :
Équivalence Partitionnement
Tests comportementaux
Page 55 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Tests aléatoires
D'ÉQUIVALENCE
Un domaine d'entrée peut être trop vaste pour que tous ses éléments puissent être utilisés
comme entrée de test (Figure 3a). Cependant, le domaine d'entrée peut être divisé en un
certain nombre de sous-domaines finite pour sélectionner les entrées de test. Chaque sous-
domaine est connu sous le nom de classe d'équivalence (CE) et sert de source d'au moins une
entrée de test (Figure 3b). L'objectif du partitionnement d'équivalence est de diviser le
domaine d'entrée du système testé en classes ou groupes d'entrées. Toutes les entrées d'une
même classe ont un effet similaire sur le système testé. Un EC est un ensemble d'entrées que
le système traite de la même manière lorsqu'il est testé. Il représente certaines conditions, ou
prédicats, sur le domaine d'entrée. Une condition d'entrée sur le domaine d'entrée est un
prédicat sur les valeurs du domaine d'entrée. Une entrée valide dans un système est un
élément du domaine d'entrée dont on s'attend à ce qu'il renvoie une valeur sans erreur. Une
entrée non valide est une entrée dont on s'attend à ce qu'elle renvoie une valeur d'erreur. Les
conditions d'entrée sont utilisées pour partitionner le domaine d'entrée en CE afin de
sélectionner les entrées.
Page 56 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Figure 3 : (a ) Trop d'entrées de test b) Une entrée sélectionnée dans chaque sous-domaine
Stratégie
Page 57 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
logiciel (système d'exploitation et ses paramètres, autres logiciels pouvant interagir avec le
logiciel, tant au niveau logiciel que matériel) qui est impossible, pour toutes intentions ou
fins.
Il n'est pas possible de démontrer l'absence réelle d'un défaut dans le logiciel, mais seulement
la présence de tels défauts. L'exécution de tests de logiciels permet de réduire les risques de
défauts résiduels - non identifiés - mais ne peut garantir que tous les défauts ont été identifiés.
(Bernard Homès (2012), p. 11)
Le test d'une application ne peut que révéler l'existence d'un ou plusieurs défauts dans
l'application, cependant, le test seul ne peut pas prouver que l'application est sans erreur. Il est
donc important de concevoir des cas de test qui trouvent autant de défauts que possible.
Les tests de logiciels ne peuvent montrer que la présence d'erreurs et non leur absence.
Un test réussi devrait révéler de nouvelles erreurs, et non "prouver" qu'il n'y a pas
d'erreurs, car le premier ajoute plus de valeur au programme.
Page 58 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Plus tôt nous commencerons les activités de test, mieux nous pourrons utiliser le temps
disponible. Dès que les produits initiaux, tels que le cahier des charges ou les documents de
conception sont disponibles, nous pouvons commencer les tests. Il est courant que la phase de
test soit écrasée à la fin du cycle de développement, c'est-à-dire lorsque le développement est
terminé, de sorte qu'en commençant le test tôt, nous pouvons préparer le test pour chaque
niveau du cycle de développement.
Un autre point important concernant les tests précoces est que lorsque les défauts sont
détectés plus tôt dans le cycle de vie, ils sont beaucoup plus faciles et moins coûteux à
réparer. Il est beaucoup moins coûteux de modifier une exigence incorrecte que d'avoir à
modifier une fonctionnalité dans un grand système qui ne fonctionne pas comme demandé ou
comme prévu !
Page 59 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Si vous continuez à exécuter le même ensemble de tests encore et encore, il y a de fortes
chances qu'aucun nouveau défaut ne soit découvert par ces cas de test. Parce qu'au fur et à
mesure de l'évolution du système, la plupart des défauts signalés précédemment auront été
corrigés et les anciens cas de test ne s'appliquent plus. Chaque fois qu'un défaut est corrigé ou
qu'une nouvelle fonctionnalité est ajoutée, nous devons effectuer un test de régression pour
nous assurer que le nouveau logiciel modifié n'a pas cassé une autre partie du logiciel.
Cependant, ces cas de tests de régression doivent également être modifiés pour refléter les
changements apportés au logiciel afin d'être applicables et, espérons-le, de corriger de
nouveaux défauts.
Les systèmes critiques pour la sécurité seront testés différemment et avec un effort plus
intense que la plupart des systèmes de commerce électronique. Cependant, ce principe va
beaucoup plus loin, car il s'applique également à l'évolution du contexte de votre propre
application logicielle. Lors des premiers tests de votre logiciel, vous concevrez des tests basés
sur votre connaissance du logiciel à ce moment précis. Au cours des tests ultérieurs, ou des
tests de la prochaine version du logiciel, votre connaissance du logiciel aura évolué, et vous
concevrez d'autres tests, en vous concentrant, par exemple, sur les risques identifiés, sur les
composants où des regroupements de défauts sont survenus, ou en tenant compte du paradoxe
des pesticides. Votre effort de test sera influencé par le temps et les ressources disponibles,
par les défauts antérieurs, la qualité du code et les objectifs qui vous ont été assignés.
(Bernard Homès (2012), p. 13)
Page 60 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
site Web très populaire doit subir des tests de performance rigoureux ainsi que des tests de
fonctionnalité pour s'assurer que les performances ne sont pas affectées par la charge sur les
serveurs.
Ce n'est pas parce que les tests n'ont révélé aucun défaut dans le logiciel que celui-ci est prêt
à être expédié. Les tests exécutés étaient-ils vraiment conçus pour détecter le plus grand
nombre de défauts ? ou pour voir si le logiciel correspondait aux exigences de l'utilisateur ? Il
y a beaucoup d'autres facteurs à considérer avant de prendre la décision d'expédier le logiciel.
TD 5
Page 61 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
EXPOSÉ 6 : UNE APPROCHE PRATIQUE DES TESTS LOGICIELS
TESTLINK
TestLink est un outil de gestion des tests en ligne qui facilite l'assurance qualité des logiciels.
Il est développé et maintenu par Teamtest. La plate-forme offre un support pour les cas de
test, les suites de test, les plans de test, les projets de test et la gestion des utilisateurs, ainsi
que divers rapports et statistiques.
Utilisation
Les unités de base utilisées par TestLink sont : Test Case, Test Suite, Test Plan, Test Project,
Test Project et User
Page 62 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Utilisateur
Chaque utilisateur TestLink a un rôle assigné qui définit les fonctions disponibles. Les types
par défaut sont : Invité, concepteur de test, testeur principal, testeur, responsable et
administrateur, mais des rôles personnalisés peuvent également être créés.
Avantages de TestLink
Filtrage facile des cas de test avec la version, les mots-clés, l'ID et la version du cas de
test
Facile à générer un plan de test et des rapports de test dans différents formats
TEST AUTOMATISÉ
Qu'est-ce qu'un test automatisé ?
L'automatisation des tests est l'utilisation d'un logiciel (dans le cadre d'un paramétrage des
conditions préalables aux tests) pour exécuter les tests et déterminer ensuite si les résultats
réels et les résultats prévus sont les mêmes.
Page 63 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Reduces the need for manual testing and discovers defects manual testing cannot expose and
also manual testing is error prone and a time consuming process.
Running the tests again and again gives us the confidence that the new features added to the
system did not break the code that worked before and also to make sure that the changes we
introduced are working. This can be achieved faster through automated testing.
Executing the tests (particularly acceptance tests) can also help us understand what portion of
the desired functionality has been implemented.
The set of the automated test suite can form a regression test suite. The purpose of the
regression suite is to make sure that the software behavior is unchanged unless due to data
change or latest software.
Automated unit test suite helps find the problems at an earlier stage and solve them
Junit
NUnit
Selenium API
Selenium WebDriver
Bugzilla
QTP
SOAP UI
JMeter
QC
JIRA
qTest
N/B: Students are encourage to look into recent literatures and see the techniques used to
develop automated testing tool.
Page 64 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
JUnit : Cadre pour le dépistage à l'unité
The JUnit is a unit testing framework for the Java programming language designed by Kent
Beck and Erich Gamma. The idea in the JUnit framework has been ported to other languages,
including C# (NUnit), Python (PyUnit), Fortran (fUnit) and C++ (CPPUnit). This family of
unit testing frameworks is collectively referred to as xUnit. This section will introduce the
fundamental concepts of Junit to the students:
Performing unit testing leads to a programmer consuming some resources, especially time.
Therefore, it is useful to employ a general programming framework to code individual test
cases, organize a set of test cases as a test suite, initialize a test environment, execute the test
suite, clean up the test environment, and record the result of execution of individual test
cases.
The JUnit framework has been developed to make test writing simple. The framework
provides a basic class, called TestCase, to write test cases. Programmers need to extend the
TestCase class to write a set of individual test cases. It may be noted that to write, for
example, 10 test cases, one need not write 10 subclasses of the class TestCase. Rather, one
subclass, say MyTestCase, of TestCase, can contain 10 methods — one for each test case.
Programmers need to make assertions about the state of objects while extending the TestCase
class to write test cases. For example, in each test case it is required to compare the actual
outcome of a computation with the expected outcome. Though an if() statement can be used
to compare the equality of two values or two objects, it is seen to be more elegant to write an
assert statement to achieve the same. The class TestCase extends a utility class called Assert
in the Junit framework. Essentially, the Assert class provides methods, as explained in the
following, to make assertions about the state of objects created and manipulated while
testing.
Page 65 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
otherwise, it fails.
The students may note that the above list of assertions is not exhaustive. Infact, one can build
other assertions while extending the TestCase class. When an assertion fails, a programmer
may want to know immediately the nature of the failure. This can be done by displaying a
message when the assertion fails. Each assertion method listed above accepts an optional first
parameter of type String — if the assertion fails, then the String value is displayed. This
facilitates the programmer to display a desired message when the assertion fails. As an aside,
upon failure, the assertEquals() method displays a customized message showing the expected
value and the actual value. For example, an assertEquals() method can display the following:
N/B: Even though JUnit is design mainly for unit testing, it can also be used to write arbitrary
kinds of automated tests, for example, we also use it to test complete scenarios (i.e., module
testing or even system testing).
Coverage Tools
EclEmma is a free Java coverage tool for Eclipse
Page 66 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Here we see in green which code has been exercised and in red which code has not. By
running your tests with the coverage tool you can quickly discover which code has not been
covered by your test suite.
Page 67 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Projet (Création d'un rapport de test dans Bugzilla)
Developing test cases for a particular project
During maintenance, evolutions or fixes are usually caused by external events such as
changes in regulations that translate in a corresponding change in the software. Development
and testing time become a major constraint. Of course it is also paramount to ensure that
there is no impact on other functionalities provided by the software.
– When the software is modified, updated, when defects are corrected, and when the
operating environment is modified.
– When the software or sub-system is retired, which will require its replacement.
The principles associated with maintenance testing is to make sure that all areas that are
changed are correctly changed, and that all areas that are not changed are not changed, either
in form (content), or in terms of supported functionalities.
Maintenance Context
Software is developed during a relatively short period of time, but is used for many years. For
example, Java programs, developed in the late 1990s are still used at this time (about 15 years
Page 68 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
later) in most organizations. Maintainability (ability of the software product to be modified,
corrected, improved, or adapted to changes in its environment, in its requirements or its
functional specifications) includes aspects of developers reading and understanding the code,
naming rules for variables and functions, and can include rules on the amount and type of
comments to make the code more readable, and ease its comprehension.
These aspects, which continue long after the software is delivered to its market, have an
impact on the costs – and duration – of fixes before software delivery (ease of defect
identification and correction during the tests phases), and an impact throughout the life of the
software and its maintenance. Taking care of these aspects as early as possible in the
development cycle is thus important and will provide an increased return on investment.
Maintenance évolutive
Example: corrective maintenance includes evolution of the software and the evolution of the
context in which the software operates (interfaces, operating system, etc.).
We may remember the portability issues associated with migration from Windows XP to
Windows Vista, or from a 32 bit system to a 64 bit system, or from a single processor
computer to a multicore machine.
When the environment is modified all the functionalities of the software must remain
available. This is done through the execution of regression tests, which are frequently
functional, on the software and all software with which it exchanges data. End-to-end
functional tests at the acceptance level are another solution.
Maintenance corrective
Corrective maintenance takes into account the correction of defects found by customers or
users. In such cases there are more important time constraints than during evolutive
maintenance.
The first stage is to identify the extent of the modification required, and the tests that are
impacted by the corrections. This will enable evaluation of the effort and duration of changes.
The first stage is to identify the extent of the modification required, and the tests that are
impacted by the corrections. This will enable evaluation of the effort and duration of changes.
Page 69 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
In a second stage, the testing activities must focus on two aspects: – ensuring that the
software fits the user’s needs, through:
- Confirmation tests or retesting, to verify that the fixes correct the identified defects,
Identification of the root causes of defects that are to be fixed during maintenance enables
process improvement, increases in productivity, efficiency, and effectiveness of the testing
activities.
Retraite et remplacement
When software or systems are retired and replaced, it is also necessary to execute tests. These
can include:
– Verification of the data conversion and data transfer software, to ensure that the data from
the old system or software will be correctly migrated to the new system or software. It is also
necessary to ensure that conversion from the new system to the old works correctly so that if
the new system does not work correctly, a rollback of the data is available;
– Verification of the backup, archival, and restoration of data, to ensure that the software in
charge of conversion of backups and archives are able to process the data from the old
software version, and archive the data from the new software in compatible form. This is
important with regards to mandatory access to archived electronic data;
We have seen previously that maintenance requires us to ensure that no regression occur on
areas that are not modified. There are different types of regression:
– Modification exposes a defect that is already present in the software or in the functionality
that was modified;
Page 70 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
– Correction or change exposes a defect already present in an unrelated area of the software.
The two first cases can usually be identified through tests in the software area that underwent
the change, while the last case will require exhaustive regression tests throughout the
software.
– Either re-execution of all tests designed during the creation of the software, possibly with
an emphasis on system and acceptance tests levels. This re-execution, if manual, can result in
a large (and costly) workload;
Automated tests can be a solution to execute a large number of tests in a short time frame.
However, the fact that automated tests must be maintained and kept in synch with the
software and its interfaces must be taken into account.
TD 6 Questions
Page 71 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Lecture 9: Professional Project Presentation
This will be conducted in four different sessions due to the class size
Page 72 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Professional Project Presentation
PROFESSIONAL PROJECT
Given two Software development projects, choose any of the given projects of your
choice and a chosen programming language (Java, Python, C++, VB.Net, PHP, etc) develop a
software product for a nominated client and hence perform software testing using at least two
of the techniques done in class:
Each group is coordinated by a team leader who acts a project manager. Teams are
required to produce a feasibility report , including Software Requirement
Page 73 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Specification Document and equally depict the Logical design that are in accordance
with currently accepted Software Engineering Principles and Concepts in order to
meet the demands of the industries. These requirements must involve analysis of the
project in details (Functional and Non-Functional Software Requirements)
The conceptual view of the system must be depicted using either Win Design,
ArgoUML or any other Analysis tool of your choice. (Sequence Diagram, Class
Diagram and State Transition Diagram).
A Test Case document must be produce in accordance to the functional requirements
of the chosen project. All Test Cases must be indicated in the logical design.
Perform automated testing using JUnit or any other related automated testing tool
depending on the programming language used.
Recommend three types of testing approaches for the system with justification and the
significant of each test.
Page 74 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
High(0.8), Very High(1.0)
PEC4: Students Satisfaction and None(0), Very Low(0.2), Low(0.4), Moderate(0.6),
Performance High(0.8), Very High(1.0)
PEC5: Head Of Department Satisfaction None(0), Very Low(0.2), Low(0.4), Moderate(0.6),
High(0.8), Very High(1.0)
PEC6: Punctuality and Responsibilities None(0), Very Low(0.2), Low(0.4), Moderate(0.6),
High(0.8), Very High(1.0)
PEC7: Academic Awards and None(0), Very Low(0.2), Low(0.4), Moderate(0.6),
Achievements High(0.8), Very High(1.0)
PEC8: Colleagues Opinion None(0), Very Low(0.2), Low(0.4), Moderate(0.6),
High(0.8), Very High(1.0)
PEC9: Professional Ethics None(0), Very Low(0.2), Low(0.4), Moderate(0.6),
High(0.8), Very High(1.0)
PEC10: Opportunities for Professional None(0), Very Low(0.2), Low(0.4), Moderate(0.6),
Development High(0.8), Very High(1.0)
PEC11: Contribution to Institutional None(0), Very Low(0.2), Low(0.4), Moderate(0.6),
Development High(0.8), Very High(1.0)
Teacher Performance Output Unsatisfactory (0.1), Average (0.4), Proficient (0.8),
Outstanding (1.0)
Note:
Page 75 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
- State clearly a well-defined software methodology and give the reason for the chosen
methodology. (You are require to use eXtream Programming (XP) Approach or any
chosen but appropriate software methodology).
- Project Choice Form must be filled and return before 31th October, 2017
- Project Presentation Date: 14th December, 2017
- Marks will be awarded as follows:
General Introduction
Aim and Objectives
Problem Statement
CHAPTER TWO: LITERATURE REVIEW
Software Development Methodologies
Comparison between different Software Development Methodologies
Reason for the choice of Methodology
General review of related concepts with respect to your chosen project
Review of related literature with respect to your chosen project
Research Methodology
Software Requirements
Software Requirement Specification Document
A Test Case document
Proposed Algorithm
Proposed Model (Mathematical Model or otherwise) for Teacher Performance
Evaluation
Conceptual View of System
Page 76 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
LICENSE
Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting
work only under a license identical to this one with referenced to the original author.
• For any reuse or distribution, you must make clear to others the license terms of this
work.
• Any of these conditions can be waived if you get permission from the copyright
holder.
• Your fair use and other rights are in no way affected by the above.
Page 77 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi
Page 78 de 78 ICT304 : Notes de cours sur les essais de logiciels par le Dr X. Y. Kimbi