Rapport Qualité
Rapport Qualité
Rapport Qualité
Université de la Manouba
Qualité Logiciel
Réalisé par
Aya Lazzem
Safouene Ben Yedder
Syrine Jendoubi
Omar Kammoun
3. Conclusion 20
4. Bibliographie 21
5. Webographie 21
1
1. Introduction
La gestion de la qualité logicielle est un ensemble de processus et de pratiques visant à s'assurer que
les logiciels produits répondent aux exigences de qualité et de performance fixées, et à améliorer la
qualité des logiciels au fil du temps. Cela peut inclure des activités comme la planification de tests,
la rédaction de cas de test, l'exécution de tests, l'analyse des résultats de test, la gestion des bugs et
l'amélioration continue des processus de développement de logiciels. La gestion de la qualité
logicielle est importante car elle peut aider à réduire les erreurs et les défauts dans le logiciel, ce qui
peut entraîner des coûts de développement et de maintenance plus élevés à long terme.
Le management de la qualité logiciel est une discipline qui vise à s'assurer que les
logiciels développés répondent aux exigences et aux attentes des utilisateurs. Il
comprend un ensemble de pratiques, de processus et de méthodologies qui visent à
garantir la qualité et la fiabilité des logiciels.
1) Questionnaire
Voici quelques exemples de questions qui pourraient être incluses dans un questionnaire de recueil
d'informations au début du cycle de développement:
2
1. Quel est l'objectif principal de ce projet de développement?
2. Qui sont les utilisateurs cibles de ce logiciel? Quelles sont leurs principales préoccupations
et attentes en matière de qualité?
3. Quels sont les principaux enjeux du projet de développement (par exemple, délai, coût,
fonctionnalités clés)?
4. Quels sont les principaux défis techniques ou de gestion de projet auxquels vous vous
attendez à être confrontés pendant le développement?
5. Quels sont les principaux indicateurs de performance que vous aimeriez suivre pendant le
développement (par exemple, temps de réponse, taux de disponibilité)?
Une fois qu' on a recueilli les réponses à ces questions, on peut analyser les résultats pour
déterminer les principaux objectifs et enjeux du projet, identifier les principaux défis et
opportunités, et établir un plan de gestion de projet pour atteindre les objectifs de qualité souhaités.
Enfin, on peut tirer des conclusions sur les principaux défis et opportunités du projet et sur les
actions à entreprendre pour garantir la qualité du logiciel développé.
● Taux de défauts: il s'agit du nombre de défauts trouvés par unité de mesure (par
exemple, par ligne de code ou par fonctionnalité).
● Temps de réponse: il s'agit du temps que le logiciel prend pour répondre à une
demande ou une action de l'utilisateur.
● Fiabilité: il s'agit de la probabilité qu'un logiciel fonctionne sans erreur pendant une
période donnée.
● Utilisabilité: il s'agit de la facilité d'utilisation du logiciel pour les utilisateurs.
● Performances: il s'agit de la rapidité avec laquelle le logiciel exécute des tâches ou des
actions.
● Conformité aux normes: il s'agit de la conformité du logiciel aux normes et aux
réglementations en vigueur.
● Maintenabilité: il s'agit de la facilité avec laquelle le logiciel peut être modifié ou
maintenu.
● Interopérabilité: il s'agit de la capacité du logiciel à fonctionner avec d'autres logiciels
ou systèmes.
Ces métriques/mesures peuvent être utilisées pour évaluer la qualité interne d'un produit
logiciel et aider à identifier les domaines dans lesquels le produit peut être amélioré.
3
Il existe plusieurs façons d'évaluer les caractéristiques de qualité et les métriques associées
d'une application développée avec le stack MERN (React, Node.js, Express.js et MongoDB).
Voici quelques exemples de méthodes et d'outils qui peuvent être utilisés:
1. Tests: Vous pouvez utiliser des outils de test comme Jest (pour React), Mocha (pour
Node.js) ou Postman (pour les API) pour exécuter des tests unitaires, d'intégration et
de validation de l'application. Ces tests peuvent nous aider à mesurer la couverture
de test, le taux de défauts et la performance de l'application.
2. Évaluation de l'utilisabilité: Vous pouvez utiliser des outils comme UserTesting ou
Optimal Workshop pour recueillir des données d'utilisabilité auprès d'utilisateurs
réels. Ces outils nous permettent de créer des tâches à accomplir, de demander aux
utilisateurs de remplir un questionnaire d'évaluation ou d'enregistrer leur utilisation
de l'application pour analyser la facilité d'utilisation de l'application.
3. Analyse de code: Vous pouvez utiliser des outils d'analyse de code comme ESLint
(pour JavaScript) ou SonarQube pour analyser la qualité du code de votre application.
Ces outils peuvent nous aider à identifier les problèmes de qualité tels que les erreurs
de syntaxe, les mauvaises pratiques de codage ou les codes smells.
4. Tests de charge: Vous pouvez utiliser des outils de test de charge comme JMeter ou
Loader.io pour tester la performance de l'application sous différents niveaux de
charge. Ces outils nous permettent de simuler de nombreux utilisateurs qui utilisent
simultanément l'application et de mesurer les temps de réponse et la stabilité de
l'application.
Il est important de choisir les outils et les méthodes qui conviennent le mieux à vos objectifs
d'évaluation et à votre projet. Vous devrez peut-être expérimenter avec plusieurs outils et
approches pour trouver ce qui convient le mieux à votre situation.
En résumé, le management de la qualité logiciel est une discipline clé pour garantir la qualité
et la fiabilité d'une application. Dans votre rapport, n'oubliez pas de décrire les pratiques, les
processus et les méthodologies que nous avons utilisés pour gérer la qualité logicielle de
votre application MERN stack.
4
ci-dessous :
On remarque ici que le nombre de lignes de code est égale à 27690. On dit que c’est un projet
organique puisque LOC<50KLOC. Ces projets sont souvent simples et menés avec de petites
équipes.
5
● Facilité de maintenance: il s'agit de la facilité avec laquelle le logiciel peut être modifié ou
maintenu.
● Interopérabilité: il s'agit de la capacité du logiciel à fonctionner avec d'autres logiciels ou
systèmes.
● Efficacité en termes de coût: il s'agit de la mesure dans laquelle le coût total associé à
l'utilisation du logiciel est raisonnable par rapport à ses bénéfices.
Pour évaluer ces caractéristiques de qualité et les métriques associées, nous pouvons utiliser des
méthodes et des outils tels que des tests en service, des enquêtes auprès d'utilisateurs, des analyses
de données de support et de maintenance, des tests de sécurité et de compatibilité, et des analyses
de coût-bénéfice. Il est important de choisir les outils et les méthodes qui conviennent le mieux à vos
objectifs d'évaluation et à votre projet.
Voici quelques exemples d'outils et de méthodes qui peuvent être utilisés pour évaluer les
caractéristiques de qualité externe et les métriques associées d'une application développée avec le
stack MERN (React, Node.js, Express.js et MongoDB):
1. Tests en service: Vous pouvez utiliser des outils de test en service comme Splunk ou New
Relic pour surveiller l'utilisation de l'application en production et collecter des données sur
la fiabilité, la performance et d'autres métriques clés.
2. Enquêtes auprès d'utilisateurs: Vous pouvez utiliser des outils comme SurveyMonkey ou
Google Forms pour recueillir des données d'utilisabilité auprès des utilisateurs réels de
l'application. Ces enquêtes peuvent nous aider à mesurer la facilité d'utilisation de
l'application et à identifier les domaines à améliorer.
3. Analyses de données de support et de maintenance: Vous pouvez utiliser des outils de
gestion de support comme Zendesk ou Jira pour collecter des données sur les problèmes
signalés par les utilisateurs et sur les temps de réparation. Ces données peuvent nous aider
à évaluer la facilité de maintenance de l'application.
4. Tests de sécurité et de compatibilité: Vous pouvez utiliser des outils de test de sécurité
comme Burp Suite ou Nessus pour vérifier la sécurité de l'application et des outils de test de
compatibilité comme Sauce Labs ou BrowserStack pour vérifier la compatibilité de
l'application avec différents navigateurs et appareils.
5. Analyses de coût-bénéfice: Vous pouvez utiliser des outils de gestion de projet comme
Microsoft Project ou Asana pour collecter des données sur les coûts associés au
développement, à la maintenance et à l'utilisation de l'application, ainsi que sur les
bénéfices attendus. Ces données peuvent être utilisées pour évaluer l'efficacité en termes de
coût de l'application.
Il est important de choisir les outils et les méthodes qui conviennent le mieux à vos objectifs
d'évaluation et à votre projet. Vous devrez peut-être expérimenter avec plusieurs outils et
approches pour trouver ce qui convient le mieux à votre situation.
LCOV reports :
LCOV est un outil graphique pour la couverture des tests. Il contient des pages HTML contenant
l’ensemble des couvertures de tests de l’application. Pour cela, on a utilisé Istanbul qui instrumente
le code javascript avec des compteurs de lignes, afin que nous puissions suivre dans quelle mesure
les tests unitaires exercent la base de code.
Dans la figure 4, nous présentons notre LCOV report :
Dans le dossier qui contient la configuration avec la base de données, nous n'avons pas besoin de
couvrir les tests c’est pourquoi les pourcentages sont réduits.
Nous avons découvert par cette métrique combien de tests requis a été exécuté durant la phase test.
Pour cela, nous avons la formule suivante X = A / B où A est le nombre de cas de test effectué et B
est le nombre de cas de tests pour couvrir les exigences. Et plus le pourcentage élevé plus qu’on a
assuré un livrable qui a couvrir les exigences nécessaires
Voici quelques exemples de métriques de produits qui peuvent être utilisées pour évaluer la qualité
d'un logiciel développé selon une approche classique ou orientée objet:
7
● Lines of code (LOC): il s'agit du nombre de lignes de code dans le logiciel. Une grande
quantité de code peut être indicatif d'une complexité accrue et d'une plus grande
probabilité de défauts.
● Cyclomatic complexity (CC): il s'agit de la mesure de la complexité d'un module de code en
fonction du nombre de chemins indépendants à travers celui-ci. Un module de code à faible
complexité cyclomatique est généralement considéré comme plus facile à tester et à
maintenir.
● Fan-in et fan-out: il s'agit respectivement du nombre de modules qui utilisent un module
donné et du nombre de modules utilisés par un module donné. Des valeurs élevées de fan-in
et de fan-out peuvent indiquer une dépendance accrue entre les modules et une complexité
accrue.
● Coupling: il s'agit de la mesure de la dépendance entre les modules de code. Des valeurs de
coupling élevées peuvent indiquer une complexité accrue et une plus grande probabilité de
défauts.
● Nombre de classes: il s'agit du nombre de classes dans le code source d'un logiciel. Cette
métrique peut être utilisée pour mesurer la complexité du logiciel et pour identifier les
domaines du code qui pourraient être simplifiés.
● Inheritance depth: il s'agit de la profondeur de l'héritage dans le code source d'un logiciel.
Cette métrique peut être utilisée pour mesurer la complexité de l'héritage et pour identifier
les parties du code qui pourraient être simplifiées en utilisant des techniques de refactoring.
Voici comment nous pouvez évaluer les caractéristiques de qualité et les métriques suivantes dans
un logiciel développé selon une approche classique ou orientée objet:
1. PF (Function Points): pour évaluer cette métrique, nous pouvons utiliser un outil d'analyse
de code statique qui calcule le nombre de points de fonction d'un logiciel en fonction de la
complexité des fonctionnalités. Vous pouvez également utiliser une méthode manuelle
d'évaluation des points de fonction en suivant une grille de points de fonction qui attribue
un nombre de points à chaque fonctionnalité en fonction de sa complexité.
2. LCOM (Lack of Cohesion of Methods): pour évaluer cette métrique, nous pouvons utiliser un
outil d'analyse de code statique qui calcule le LCOM d'une classe en fonction du degré de
coopération entre ses méthodes. Vous pouvez également utiliser une méthode manuelle
d'évaluation du LCOM en examinant chaque classe et en notant le degré de coopération
entre ses méthodes.
3. Nombre de classes: pour évaluer cette métrique, nous pouvons utiliser un outil d'analyse de
code statique qui compte le nombre de classes dans le code source d'un logiciel. Vous
pouvez également compter le nombre de classes manuellement en parcourant le code
source.
4. Inheritance depth: pour évaluer cette métrique, nous pouvons utiliser un outil d'analyse de
code statique qui mesure la profondeur de l'héritage dans le code source d'un logiciel. Vous
pouvez également mesurer la profondeur de l'héritage manuellement en parcourant le code
source et en notant le nombre de niveaux de classes héritées.
Il est important de choisir les outils et les méthodes qui conviennent le mieux à vos objectifs
d'évaluation et à votre projet. Vous devrez peut-être expérimenter avec plusieurs outils et
approches pour trouver ce qui convient le mieux à votre situation. Il est également important de
8
tenir compte des limites et des biais potentiels de chaque méthode d'évaluation et de les prendre en
compte dans votre analyse des résultats.
(cf. Product Metrics, CHAPTER 23, Page 613, Pressman, Roger S. , Software Engineering: A
Practitioner's Approach, 7th International edition, McGraw-Hillhigher education, 2010, ISBN
978–0–07–337597–7).
Voici quelques exemples de métriques de produits qui peuvent être utilisées pour évaluer la qualité
d'une application web, selon la liste proposée dans le livre Software Engineering: A Practitioner's
Approach de Roger S. Pressman:
● Nombre de pages vues: il s'agit du nombre de pages d'une application web qui sont visitées
par les utilisateurs. Cette métrique peut aider à évaluer l'utilisation de l'application et à
identifier les pages les plus populaires.
● Temps moyen passé sur chaque page: il s'agit du temps moyen passé par les utilisateurs sur
chaque page d'une application web. Cette métrique peut aider à évaluer l'intérêt des
utilisateurs pour les différentes pages de l'application.
● Taux de rebond: il s'agit du pourcentage d'utilisateurs qui quittent une application web
après avoir visité une seule page. Cette métrique peut aider à évaluer l'intérêt des
utilisateurs pour l'application et à identifier les pages qui ont un taux de rebond élevé.
● Nombre de transactions: il s'agit du nombre de transactions effectuées sur une application
web (par exemple, achats en ligne, inscriptions à un service, etc.). Cette métrique peut aider
à évaluer l'utilisation de l'application et à identifier les fonctionnalités les plus utilisées.
● Temps de chargement: il s'agit du temps qu'il faut à l'application pour charger et afficher
correctement le contenu. Un temps de chargement faible est généralement préférable pour
améliorer l'expérience utilisateur.
Voici quelques exemples d'outils et de méthodes qui peuvent être utilisés pour évaluer les
caractéristiques de qualité et les métriques associées d'une application web:
1. Analyse de données de trafic web: Vous pouvez utiliser des outils d'analyse de données de
trafic web comme Google Analytics ou Adobe Analytics pour collecter des données sur
l'utilisation de votre application web. Ces outils nous permettent de suivre les données de
trafic, de performance et de comportement de l'utilisateur, qui peuvent être utilisées pour
évaluer les métriques mentionnées ci-dessus.
2. Tests de performance: Vous pouvez utiliser des outils de test de performance comme
LoadRunner ou Apache JMeter pour simuler l'utilisation de votre application web et
mesurer les temps de réponse et les temps de chargement de page.
3. Surveys en ligne: Vous pouvez utiliser des outils de sondage en ligne comme SurveyMonkey
ou Google Forms pour recueillir des données auprès des utilisateurs de votre application
web sur leur expérience d'utilisation et leur satisfaction.
4. Tests de compatibilité: Vous pouvez utiliser des outils de test de compatibilité comme
BrowserStack ou Sauce Labs pour vérifier la compatibilité de votre application web avec
différents navigateurs, systèmes d'exploitation et appareils.
9
Il est important de choisir les outils et les méthodes qui conviennent le mieux à vos objectifs
d'évaluation et à votre projet. Vous devrez peut-être expérimenter avec plusieurs outils et
approches pour trouver ce qui convient le mieux à votre situation.
● FRONTEND :
10
Le seuil p50 est la valeur à laquelle 50 % des durées de transaction sont supérieures au
seuil. C'est aussi la médiane. Par exemple, si le seuil p50 est de 10 millisecondes, alors 50 %
des transactions ont dépassé ce seuil, prenant plus de 10 millisecondes.
Dans notre cas , 50% des transactions ont dépassé 119ms
Le seuil p75 est la valeur à laquelle 25% des durées de transaction sont supérieures au seuil.
Par exemple, si le seuil p75 est de 10 millisecondes, alors 25 % des transactions ont dépassé
ce seuil, prenant plus de 10 millisecondes.
Dans notre cas , 25 % des transactions ont dépassé 2s.
11
Slow HTTP Ops affiche les transactions avec des extensions HTTP cumulatives lentes.
● BACKEND :
Apdex est une mesure standard de l'industrie utilisée pour suivre et mesurer la satisfaction des
utilisateurs en fonction des temps de réponse de votre application. Un score Apdex plus élevé est
meilleur qu'un score inférieur ; le score peut aller jusqu'à 1.0, ce qui représente 100% des
utilisateurs ayant une expérience satisfaisante. Le score Apdex fournit le ratio de demandes
satisfaisantes, tolérables et frustrées dans une transaction ou un point de terminaison spécifique.
Cette métrique vous fournit une norme pour comparer les performances des transactions,
comprendre celles qui peuvent nécessiter une optimisation ou une enquête supplémentaire, et
définir des cibles ou des objectifs de performances.
Dans notre cas , apdex vaux 0.603.
12
failure_rate() indique le pourcentage de transactions infructueuses. Sentry traite les
transactions avec un statut autre que "ok", "annulé" et "inconnu" comme des échecs.
Dans notre cas, Failure Rate est 18%.
13
Voici quelques exemples de caractéristiques et de métriques de qualité à l'utilisation qui peuvent
être évaluées selon le standard ISO 9126-4:
Voici comment on peut évaluer les caractéristiques de qualité et les métriques suivantes à
l'utilisation:
1. Fiabilité: pour évaluer cette caractéristique, nous pouvons utiliser des outils de surveillance
de l'application pour suivre le nombre de pannes et le temps de disponibilité du logiciel.
Vous pouvez également recueillir des données de terrain auprès des utilisateurs pour
obtenir des informations sur les pannes ou les défaillances qu'ils ont rencontrées.
2. Disponibilité: pour évaluer cette caractéristique, nous pouvons utiliser des outils de
surveillance de l'application pour suivre le temps de réponse et le temps de chargement de
page. Vous pouvez également recueillir des données de terrain auprès des utilisateurs pour
obtenir des informations sur leur expérience de l'utilisation du logiciel.
3. Utilisabilité: pour évaluer cette caractéristique, nous pouvons utiliser des tests utilisateur
pour mesurer le temps nécessaire pour apprendre à utiliser le logiciel et le nombre d'erreurs
commises par les utilisateurs. Vous pouvez également recueillir des données de terrain
auprès des utilisateurs pour obtenir des informations sur leur satisfaction générale avec le
logiciel.
4. Performance: pour évaluer cette caractéristique, nous pouvons utiliser des outils de test de
performance pour mesurer les temps.
Ci-dessous quelques captures qui décrit les questions utilisées et leurs résultats :
15
16
Une fois le formulaire de collecte de données sur l'utilisabilité de qualité du logiciel créé et les
réponses recueillies, il est possible de constater que le logiciel fonctionne correctement dans
l'ensemble. Cependant, il est possible qu'il y ait quelques petits bugs qui peuvent être améliorés pour
offrir une expérience encore plus fluide et sans problème à l'utilisateur. Ces bugs peuvent être
identifiés grâce aux commentaires et aux scores donnés par les utilisateurs dans le formulaire, et
peuvent être corrigés grâce aux données collectées. En travaillant pour améliorer ces petits
problèmes, il est possible de garantir que le logiciel fonctionne de manière optimale et offre une
expérience satisfaisante à tous les utilisateurs.
17
7) Questionnaire de satisfaction client
( Pouvant être appliqué avec les livrables partiels, et/ou le produit final ).
Voici quelques exemples de questions qui pourraient être incluses dans un questionnaire de
satisfaction client:
Une fois qu’on a recueilli les réponses à ces questions, nous pouvons analyser les résultats pour
déterminer le niveau de satisfaction général des clients, identifier les aspects les plus appréciés et
les moins appréciés du logiciel, et évaluer la qualité du support client fourni. Enfin, on peut tirer des
conclusions sur les points forts et les points faibles du logiciel selon les clients et sur les actions à
entreprendre pour améliorer la satisfaction des clients.
3. Conclusion
La qualité logiciel est un enjeu crucial dans le développement de logiciels de qualité. Elle concerne
toutes les étapes du cycle de vie du logiciel, de la conception à la maintenance. Il est important de
définir clairement les objectifs de qualité en amont du projet et de mettre en place des méthodes et
des outils pour évaluer la qualité à chaque étape du développement. Il est également essentiel de
veiller à ce que tous les membres de l'équipe de développement soient conscients de leur rôle dans la
garantie de la qualité du logiciel et de mettre en place des processus de gestion de la qualité pour
s'assurer que ces objectifs sont atteints. Enfin, il est important de suivre et de mesurer régulièrement
la qualité du logiciel pour s'assurer qu'elle répond aux attentes des utilisateurs et pour mettre en
place des actions correctives en cas de besoin.
4. Bibliographie
[Norme qualité interne du produit selon 9126-2 standard]
[Norme qualité interne du produit selon 9126-3 standard]
[Norme qualité interne du produit selon 9126-4 standard]
[Product Metrics, CHAPTER 23, Page 613, Pressman, Roger S. ,Software Engineering: A
Practitioner's Approach, 7th International edition, McGraw-Hillhigher education, 2010,
ISBN 978–0–07–337597–7).]
5. Webographie
18
19