OOAD - Test et assurance qualité

Une fois qu'un code de programme est écrit, il doit être testé pour détecter et ensuite gérer toutes les erreurs qu'il contient. Un certain nombre de schémas sont utilisés à des fins de test.

Un autre aspect important est la pertinence de l'objectif d'un programme qui vérifie si le programme sert l'objectif pour lequel il vise. La forme physique définit la qualité du logiciel.

Test des systèmes orientés objet

Le test est une activité continue pendant le développement logiciel. Dans les systèmes orientés objet, les tests englobent trois niveaux, à savoir les tests unitaires, les tests de sous-systèmes et les tests de système.

Test unitaire

Dans les tests unitaires, les classes individuelles sont testées. On voit si les attributs de classe sont implémentés conformément à la conception et si les méthodes et les interfaces sont sans erreur. Les tests unitaires sont sous la responsabilité de l'ingénieur d'application qui met en œuvre la structure.

Test de sous-système

Cela implique de tester un module ou un sous-système particulier et est de la responsabilité du responsable du sous-système. Il s'agit de tester les associations au sein du sous-système ainsi que l'interaction du sous-système avec l'extérieur. Les tests de sous-système peuvent être utilisés comme tests de régression pour chaque version nouvellement publiée du sous-système.

Test du système

Le test du système implique le test du système dans son ensemble et relève de la responsabilité de l'équipe d'assurance qualité. L'équipe utilise souvent des tests système comme tests de régression lors de l'assemblage de nouvelles versions.

Techniques de test orientées objet

Test de la boîte grise

Les différents types de cas de test qui peuvent être conçus pour tester des programmes orientés objet sont appelés cas de test en boîte grise. Certains des types importants de tests de boîte grise sont:

  • State model based testing - Cela englobe la couverture d'état, la couverture de transition d'état et la couverture de chemin de transition d'état.

  • Use case based testing - Chaque scénario de chaque cas d'utilisation est testé.

  • Class diagram based testing - Chaque classe, classe dérivée, associations et agrégations sont testées.

  • Sequence diagram based testing - Les méthodes des messages des diagrammes de séquence sont testées.

Techniques de test de sous-système

Les deux principales approches des tests de sous-systèmes sont:

  • Thread based testing - Toutes les classes nécessaires pour réaliser un cas d'utilisation unique dans un sous-système sont intégrées et testées.

  • Use based testing- Les interfaces et services des modules à chaque niveau de hiérarchie sont testés. Les tests commencent des classes individuelles aux petits modules comprenant des classes, progressivement vers des modules plus grands, et enfin tous les principaux sous-systèmes.

Catégories de tests de système

  • Alpha testing - Ceci est effectué par l'équipe de test au sein de l'organisation qui développe le logiciel.

  • Beta testing - Ceci est effectué par un groupe restreint de clients coopérants.

  • Acceptance testing - Ceci est effectué par le client avant d'accepter les livrables.

Assurance qualité des logiciels

Qualité du logiciel

Schulmeyer et McManus ont défini la qualité du logiciel comme «l'aptitude à l'emploi de l'ensemble du produit logiciel». Un logiciel de bonne qualité fait exactement ce qu'il est censé faire et est interprété en termes de satisfaction de la spécification d'exigence établie par l'utilisateur.

Assurance qualité

L'assurance qualité logicielle est une méthodologie qui détermine dans quelle mesure un produit logiciel est apte à être utilisé. Les activités incluses pour déterminer la qualité du logiciel sont:

  • Auditing
  • Développement de normes et de lignes directrices
  • Production de rapports
  • Examen du système qualité

Facteurs de qualité

  • Correctness - L'exactitude détermine si les exigences logicielles sont satisfaites de manière appropriée.

  • Usability - La convivialité détermine si le logiciel peut être utilisé par différentes catégories d'utilisateurs (débutants, non techniques et experts).

  • Portability - La portabilité détermine si le logiciel peut fonctionner sur différentes plates-formes avec différents périphériques matériels.

  • Maintainability - La maintenabilité détermine la facilité avec laquelle les erreurs peuvent être corrigées et les modules peuvent être mis à jour.

  • Reusability - La réutilisation détermine si les modules et les classes peuvent être réutilisés pour développer d'autres produits logiciels.

Métriques orientées objet

Les métriques peuvent être globalement classées en trois catégories: les métriques de projet, les métriques de produit et les métriques de processus.

Mesures du projet

Les métriques de projet permettent à un chef de projet logiciel d'évaluer l'état et la performance d'un projet en cours. Les métriques suivantes sont appropriées pour les projets logiciels orientés objet -

  • Nombre de scripts de scénario
  • Nombre de classes clés
  • Nombre de classes de support
  • Nombre de sous-systèmes

Mesures du produit

Les métriques de produit mesurent les caractéristiques du produit logiciel qui a été développé. Les métriques de produit adaptées aux systèmes orientés objet sont:

  • Methods per Class- Il détermine la complexité d'une classe. Si toutes les méthodes d'une classe sont supposées être également complexes, alors une classe avec plus de méthodes est plus complexe et donc plus sensible aux erreurs.

  • Inheritance Structure- Les systèmes avec plusieurs petits réseaux d'héritage sont plus bien structurés que les systèmes avec un seul grand réseau d'héritage. En règle générale, un arbre d'héritage ne doit pas avoir plus de 7 (± 2) niveaux et l'arbre doit être équilibré.

  • Coupling and Cohesion - Les modules à faible couplage et à forte cohésion sont considérés comme étant mieux conçus, car ils permettent une plus grande réutilisabilité et maintenabilité.

  • Response for a Class - Il mesure l'efficacité des méthodes appelées par les instances de la classe.

Métriques de processus

Les métriques de processus aident à mesurer les performances d'un processus. Ils sont collectés sur tous les projets sur de longues périodes. Ils sont utilisés comme indicateurs pour les améliorations à long terme des processus logiciels. Certaines métriques de processus sont -

  • Nombre de KLOC (Kilo Lines of Code)
  • Efficacité d'élimination des défauts
  • Nombre moyen de pannes détectées lors des tests
  • Nombre de vices cachés par KLOC