Billets

Êtes-vous prêts à améliorer la qualité de vos logiciels ? Retour vers le haut

Améliorer votre assurance qualité et vos tests signifie également l’amélioration de votre processus de développement.

Par Vincent Siveton, conseiller stratégique, Centre de tests et d'interopérabilité, CRIM 
13 avril 2012

Dans le monde du développement logiciel, l’assurance qualité et les tests demeurent le parent pauvre. D’un côté, les méthodes agiles progressent constamment en promettant une meilleure qualité des produits, de l’autre côté, les méthodes traditionnelles comme Waterfall continuent à assurer une qualité formelle.

Mais comment vraiment améliorer la qualité des logiciels développés par votre entreprise ? En faisant une rétrospective de vos processus régulièrement.

Problématique

Les processus de développement logiciel ne tiennent pas assez compte de l’assurance qualité et des tests. Il existe beaucoup de bonnes pratiques en développement, principalement basées sur des normes. Ces pratiques peuvent être adoptées progressivement et appliquées à presque n’importe quel projet ou processus, y compris lorsqu’il s’agit d‘approche formelle telle que CMMI ou Waterfall.

Néanmoins, l’assurance qualité et les tests ne sont généralement pris en compte par les entreprises que lorsqu’elles n’arrivent plus à satisfaire les besoins de ses clients.

La qualité du logiciel développé touche principalement trois aspects :

  • Le système qualité qui touche l’ensemble de l’organisation, des responsabilités, des processus, des procédures, des moyens et des techniques.
  • Le logiciel qui doit répondre aux spécifications définis.
  • Le processus de développement du logiciel.

Les entreprises pensent généralement à améliorer la qualité du logiciel en mettant en place des tests, et plus rarement à se questionner sur les limites de leurs processus de développement : si le processus actuel fonctionne, pourquoi le changer ?

Solution

Afin d’aider votre entreprise à réussir le développement de logiciels de qualité dans un délai et à un coût permettant de générer des profits, il faudrait faire une rétrospective de deux éléments : la partie organisationnelle et la partie technologique dans une optique d’aboutir à l'objectif final : avoir un produit de qualité. Pour y parvenir, vous pouvez utiliser ou adapter des normes comme ISO 9000 ou encore les normes élaborées par l’IEEE.

La direction devra fournir les ressources nécessaires à la mise en oeuvre des audits, notamment avoir recours à un auditeur externe afin d’éviter tout risque de conflits, interpersonnels ou autres. L’objet de l’audit peut porter sur toutes les activités ayant une influence directe ou indirecte sur la qualité du logiciel élaboré. Après avoir procédé à l’audit et l’inspection des documents concernés, entrevues avec les personnes impliquées, évaluation de l'application des procédures et des instructions mises place, conformités avec les normes et les exigences internes de l’entreprise, etc., l’équipe chargée de l’audit doit effectuer les activités suivantes :

  • Préparer le rapport de l’audit qui doit identifier les points à améliorer.
  • Proposer un plan d’actions correctives à mettre en place échelonnés dans le temps.

L'entreprise devra par la suite exécuter les actions suivant un échéancier défini.

Gain

Les gains apportés par un audit se font à moyen et long terme mais rarement à court terme. Il est important de se questionner régulièrement pour faire vivre le processus de développement d'un logiciel avec les besoins des clients et de l'entreprise. Dans les méthodes agiles, cette rétrospective se fait en fin de sprint et ce, de façon continue au cours du projet.

Ces rétrospectives permettront à l'entreprise :

  • Accroître l'efficacité des employés. 
  • Assurer le savoir-faire tout en s’adaptant aux nouveaux besoins des clients.
  • Réduire les coûts de développement et de production.

Alors, êtes-vous prêts à vous améliorer ?  
Des commentaires ? vincent.siveton@crim.ca  

Preuve de concept : Pour réduire le risque Retour vers le haut

Par Raymond Rivest, conseiller senior, spécialiste de tests, Centre de tests et d'interopérabilité, CRIM - 15 mars 2012

Problématique :

Quand vient le temps de penser à effectuer des tests de performance afin d’évaluer l'infrastructure qui sera requise pour la mise en services d’un système, le mot « Automatisation » vient presque automatiquement à l’esprit. Qui dit « Automatisation » dit « Outils ». Quoi choisir ? Comment choisir ? Combien ça coûte ? Combien de temps faut-il ? Ce sont les questions courantes qui viennent à l’esprit dans ce genre de situation.

L’inconvénient principal est le nombre d’inconnus auxquels il faut faire face lorsqu’arrive ce genre de projet. Le risque de dépassement de coûts devient très élevé si on n’a jamais eu à effectuer ce genre de projet, ou s’il s’agit d’une toute nouvelle technologie. Difficile de se lancer dans l’acquisition d’un outil de plusieurs milliers de dollars sans garantie qu’il sera adéquat pour les besoins et qu’il permettra d’atteindre les objectifs de performance que l’on s’est fixés. 

Solution :

La preuve de concept permet de réduire les risques liés au nombre d’inconnus. Lors d’une preuve de concept, vous validez :

  • le fonctionnement de l’outil face à la technologie,
  • les mécanismes de montée en charge*, 
  • le temps requis à l’automatisation des scénarios, 
  • l’effort requis à la paramétrisation** des scénarios, 
  • la structure des données de test qui seront nécessaires pour générer la charge, 
  • le coût des licences pour le nombre d’usagers virtuels requis, 
  • le mécanisme de gestion des licences.

Gain :

Les gains qu’apporte une preuve de concept sont énormes tant en termes de réduction du risque que de précision des estimés de l’effort. De plus, la preuve de concept permet une familiarisation avec l’outil, une meilleure évaluation de la courbe d’apprentissage mais aussi, de pouvoir mieux préciser les besoins en termes de modules, licences et composantes requises pour effectuer les tests de charge.

Le LaboAgile du CTI offre aux organisations et développeurs d’utiliser ses infrastructures virtuelles, ainsi que sa vaste gamme d’outils pour effectuer des preuves de concept dans un milieu neutre, tout en maintenant des environnements de travail distincts et sécurisés. De plus, le LaboAgile met à la disposition des utilisateurs des outils à la fine pointe de la technologie, sans les investissements que ceux-ci requièrent, avec entre autres, des outils d’automatisation de tests fonctionnels. Et bien que l’autonomie des organisations dans le LaboAgile soit favorisée, elles peuvent aussi compter sur le soutien et l’e xpertise de l’équipe du CTI pour optimiser leurs processus et leurs méthodes, voire même les conseiller dans le choix des outils appropriés.

*Montée en charge : Mécanisme par lequel le flot et l’ordre des transactions seront gérés par l’o util. La définition de la montée en charge devrait normalement représenter une utilisation réaliste de l’application à tester, afin que les résultats soient représentatifs.
**Paramétrisation : Introduction de variables qui sont remplacées par des données de tests durant le test de charge.

Des commentaires ? raymond.rivest@crim.ca

Tests manuels ou tests automatisés ? Retour vers le haut

Par Phuong Thao Trinh, analyste, conseillère en tests, Centre de tests et d'interopérabilité, CRIM 
15 février 2012

C’est un fait, les tests manuels nécessitent un temps considérable et mobilisent de façon accaparante les ressources devant y être dédiées. Ce temps passé à exécuter les tests implique un coût direct qui ne pourra pas être récupéré. Cependant, c’est une méthode de tests très flexible et qui demande peu d’habiletés techniques (toutefois, un professionnel trouve les bogues plus efficacement).

D’un autre côté, l’automatisation des tests apporte un lot séduisant d’avantages : délais d’e xécution des tests plus courts, meilleure couverture de tests, constance, répétabilité, etc. Par contre, l’automatisation est plus complexe à mettre en œuvre, est relativement onéreuse au départ, nécessite une expertise technique et les efforts de maintenance peuvent s’avérer coûteux à la longue si le tout est mal planifié et mal réalisé.

Il faut se demander alors dans quelles conditions il est préférable de s’orienter vers l’a utomatisation et dans lesquelles il faut plutôt s’en tenir aux tests manuels. Plusieurs facteurs peuvent influencer la décision. Souvent, une combinaison intelligente des deux types de tests s’a vère être une bonne solution.

Automatisation des tests : un investissement initial qui doit rapporter

Automatiser les tests implique un investissement initial non négligeable. L’achat d’un outil d’a utomatisation de tests, l’acquisition d’une expertise sur cet outil et le temps passé à la création et la maintenance des scripts de tests génèrent des coûts importants. La question que l’on peut se poser est la suivante : « Quel est mon retour sur investissement si j’automatise les tests? ».

Un élément clé de la réponse est la réutilisation des scripts de tests. Plus un script est réutilisé, plus il devient rentable. En effet, un script doit être utilisé un nombre minimal de fois avant qu’il ne devienne désuet. Si, disons 1 heure est investie dans la conception d’un script et que ce dernier sauve environ 20 minutes en temps de tests manuels, il faut alors s’assurer d’u tiliser le script un nombre suffisant de fois, soit au moins 3 fois dans ce cas-ci, pour que son coût de conception en soit réduit.

D’ailleurs, certaines caractéristiques de l’application favorisent la réutilisabilité des scripts de tests : la portabilité d’une plateforme à une autre, la disponibilité en plusieurs langues, un cycle de développement qui se fait de façon incrémentale, un éventail de produits aux fonctionnalités similaires, une interface et un code relativement stable.

Utiliser l’automatisation dans les tests de non-régression

Les tests de non-régression servent à déterminer si des erreurs ont été introduites dans ce qui fonctionnait bien lors de l’addition de nouvelles fonctionnalités ou lors de la correction d’e rreurs précédentes dans l’application. On s’assure que celle-ci n’ait pas « régressée » depuis la dernière version.

En général, le travail de tests de non-régression augmente sensiblement de version en version car ce qui était une nouvelle fonctionnalité à tester devient une fonctionnalité courante qui doit être ajoutée dans la prochaine série de tests de non-régression. Ainsi, après chaque itération, il y a plus de tests à couvrir. Il faut donc consacrer de plus en plus de temps et de ressources. Le coût cumulatif peut en conséquence devenir énorme.

Il est donc avantageux d’automatiser ce type de tests avant que la phase de validation ne devienne d’une envergure telle qu’il est quasi impossible de tout couvrir manuellement par les ressources en place et dans des délais raisonnables.

Avec l’automatisation des tests de non-régression, les tests manuels, quant à eux, peuvent ainsi être focalisés sur les nouvelles fonctionnalités.

Les facteurs propices aux tests automatisés versus manuels

Certains tests sont avantageux à automatiser comme les tests sur les fonctionnalités critiques et centraux. En effet, celles-ci qui sont peu portées au changement.

Il faut aussi privilégier l’automatisation des tests qui sont plus susceptibles à l’erreur humaine. De ce fait, les résultats de tests ne dépendront plus de la concentration du testeur qui peut varier selon son humeur du jour.

Les tests fastidieux et répétitifs sont un bon choix pour l’automatisation. Par exemple, ceux qui ne demandent que de changer la valeur d’un paramètre.

Les applications qui n’ont pas ou peu d’interface utilisateur sont aussi des bonnes candidates à l’automatisation ou encore celles avec un cycle rapide de sorties de version.

Dans certains cas, il est plutôt préférable de se tourner vers les tests manuels. Par exemple, un code instable ne maximisera pas la réutilisation des scripts, les tests exploratoires, c’e st-à-dire lorsque le testeur génère de façon créative de nouveaux cas de tests en naviguant à travers l’application, ou encore, les tests qui ont besoin de l’œil humain.

La maturité du système est un autre facteur à considérer. Il est en général préférable d’a utomatiser au milieu du cycle de vie d’un logiciel. Au début, trop d’éléments sont en effervescence, à la fin, le retour sur investissement est diminué.

Automatiser : oui mais pas n’importe comment

Nous avons vu qu’il est parfois opportun d’automatiser les tests et parfois non. La stratégie à adopter n’est donc pas de s’investir à 100% dans l’un ou l’autre type de tests, mais de bien balancer les deux types en considérant tous les facteurs pertinents.

Cependant, mettre en œuvre l’automatisation n’est certes pas une mince affaire. Avoir une bonne planification, adopter une méthodologie adéquate, choisir les outils appropriés et tenir compte du temps d’apprentissage de ces outils sont des exemples d’aspects cruciaux à ne pas négliger afin que l’aventure soit payante. Mais cela est en soi un autre sujet…

Des commentaires ?   ptrinh@crim.ca

Goulots d'étranglement et performances Retour vers le haut

Publié à partir du Workshop On Performance and Reliability (WOPR-17) qui a eu lieu en octobre 2011, au « Executive Center » de HP en Californie.

Problématique :

Lorsqu’on parle de goulot d’étranglement (« Bottlenecks » en anglais), on pense bien souvent en ces termes :

Étrangement, une autre définition s’y rapporte :

En informatique, les goulots d'étranglement requièrent couramment la maîtrise de connaissances approfondies, que ce soit en programmation, télécommunication, bases de données, systèmes d'exploitation et même en analyse statistique. Dans chacun des cas, il faut avoir un accès complet à l'information, ce qui constitue la principale problématique organisationnelle à laquelle nous devons faire face.

Qu’il s’agisse de processus d’affaires, de hiérarchie d’entreprise ou encore d’accessibilité aux infrastructures ou code sous test, en général, le goulot se situe à l’un de ces endroits.

Dans un monde idéal, comme c’est le cas chez Facebook, les spécialistes de performance ont un accès complet à l’ensemble des infrastructures, au code, et à tout ce qui peut leur être utile pour faire leur travail. L’environnement de test et l’environnement de production sont les mêmes et cela permet aux spécialistes d’apporter des correctifs de façon instantanée.

Dans la majorité des entreprises, il en va tout autrement. La disponibilité des ressources humaines constitue en soit un goulot d’étranglement. Des objectifs d’affaires nébuleux n’aident en rien à prioriser la recherche et l’élimination des goulots.

Solution :

L’un des aspects fondamentaux, auquel se rattachent la recherche et la résolution de goulots d’é tranglement est le suivant :

La qualité de service (QdS) ou Quality of service (QoS) est un concept de gestion qui a pour but d’optimiser les ressources d'un réseau (en management du système d'information) ou d'un processus (en logistique) et de garantir de bonnes performances aux applications critiques pour l'organisation. La qualité de service permet d’offrir aux utilisateurs des débits et des temps de réponse différenciés par applications (ou activités) selon les protocoles mis en œuvre au niveau de la structure (SLA ou Service Level Agreement).

Pour répondre à ces objectifs, ces derniers doivent être clairement identifiés et réalisables. Il faut aussi que les personnes responsables disposent des moyens de répondre à ces objectifs. Le processus organisationnel doit donc comporter des mécanismes permettant l’accès aux ressources et informations nécessaires à la réalisation, dans le respect des objectifs d’affaires de l'organisation.

La recherche et la résolution de goulots informatiques sont essentiellement des processus itératifs qui doivent disposer d’informations et d’accès aux ressources appropriées, qu’il s’agisse d’informations, d’outils, de connaissances ou de ressources humaines.

Gain :

L’utilisation de la méthode PRET* avant le déploiement d’une application permet d’avoir une connaissance accrue des limites particulières d’une technologie face aux conditions de déploiement sur un réseau étendu, mais aussi, d’éviter les pertes liées au surdimensionnement d’une infrastructure coûteuse alors que le problème n’est pas là, ainsi que le mécontentement des utilisateurs à cause de temps de réponses désastreux.

Le LaboAgile du CTI offre aux organisations et développeurs d’utiliser la méthode PRET et l'émulateur de réseaux étendus dans un milieu neutre, tout en maintenant des environnements de travail distincts et sécurisés. De plus, le LaboAgile met à la disposition des utilisateurs des outils à la fine pointe de la technologie, sans les investissements que ceux-ci requièrent, avec entre autres, des outils d’analyse sophistiqués. Et bien que l’autonomie des organisations dans le LaboAgile soit favorisée, elles peuvent aussi compter sur le soutien et l’e xpertise de l’équipe du CTI pour optimiser leurs processus et leurs méthodes.

Note : Les conclusions et publications issus du WOPR17 sont les résultats des efforts collectifs des participants de ce workshop: AJ Alhait, Scott Barber, Goranka Bjedov, Jeremy Brown, Dan Downing, Craig Fuget, Dawn Haynes, Doug Hoffman, Paul Holland, Pam Holt, Ed King, Richard Leeke, Yury Makedonov, Emily Maslyn, Greg McNelly, John Meza, Blaine Morgan, Mimi Niemiller, Eric Proegler, Raymond Rivest, Bob Sklar, Roland Stens, and Nishi Uppal.

*PRET :(Performant sur Réseau Étendu de Télécommunication).

Tests de performance pour être PRET Retour vers le haut

Par Raymond Rivest, conseiller, spécialiste de tests, Centre de tests et d'interopérabilité, CRIM
12 septembre 2011

Problématique :

Lorsque l’on parle de tests de performance, la première idée qui vient à l’esprit est une infrastructure lourde, des logiciels couteux et un investissement financier majeur. Les technologies Web ayant grandement évoluées, la préoccupation de performance se résume souvent à définir la capacité requise des serveurs, souvent, en surdimensionnant cette même infrastructure ainsi que la taille des liens au point de service.

Cette approche, bien que logique, apporte souvent son lot de mauvaises surprises :

  • Pages lentes à charger ; 
  • Lenteur de temps réponses ;
  • Besoin d’augmentation du parc informatique ; 
  • Besoin d’augmentation de la taille du lien ; 
  • Panne de services clés et appels de support de clients mécontents.

Le problème fondamental est souvent une méconnaissance des comportements de l’application face à des conditions réseaux réelles (latence, perte de paquets, capacité de liens) et l’impact de ces conditions sur les performances globales de l’application. En télécommunication, la règle fondamentale suivante s’applique :

L’évolution des technologies vers les plateformes mobiles amènent de nouveaux facteurs de risques en termes de télécommunications et de performances.

Solution :

Le CTI dispose depuis plusieurs années d’outils permettant l’évaluation du comportement de systèmes dans diverses conditions réseaux. La méthode PRET (Prêt sur Réseau Étendu de Télécommunication) permet de valider le comportement applicatif avant le déploiement en reproduisant des conditions réseaux réelles. 

Gains :

Les gains qu’apportent PRET avant le déploiement d’une application sont une connaissance accrue des limites particulières d’une technologie face aux conditions de déploiement sur un réseau étendu, mais aussi, d’éviter les pertes liées au surdimensionnement d’une infrastructure coûteuse alors que le problème n’est pas là, ainsi que le mécontentement des utilisateurs à cause de temps de réponses désastreux.

Le LaboAgile du CTI offre aux organisations et développeurs d’utiliser la méthode PRET et l’é mulateur de réseaux étendus dans un milieu neutre, tout en maintenant des environnements de travail distincts et sécurisés. De plus, le LaboAgile met à la disposition des utilisateurs des outils à la fine pointe de la technologie, sans les investissements que ceux-ci requièrent, avec entre autres, des outils d’automatisation de tests fonctionnels. Et bien que l’autonomie des organisations dans le LaboAgile soit favorisée, elles peuvent aussi compter sur le soutien et l’expertise de l’équipe du CTI pour optimiser leurs processus et leurs méthodes.

Des commentaires ? raymond.rivest@crim.ca

Interopérabilité : des environnements partageables  Retour vers le haut

Par Raymond Rivest, conseiller, spécialiste de tests, Centre de tests et d'interopérabilité, CRIM
3 juin 2011

Problématique :

Le terme « interopérabilité » préoccupe de plus en plus les entreprises. En effet, elles doivent s’adapter à un marché régit par des normes spécifiques et des besoins pointus, tout en conservant leur avantage concurrentiel et surtout leur « recette secrète ».

Le principal défi est de parvenir à développer un environnement commun et neutre qui permet à chacun des intervenants de garder ses petits secrets, tout en favorisant le regroupement des ressources et des informations.

Solution :

Les environnements partageables sont maintenant possibles grâce à la virtualisation. Prenons par exemple le diagramme suivant :

Dans un tel environnement, chaque entreprise gère son propre espace et peut décider de partager des composantes. Une tierce partie, telle une agence gouvernementale ayant des besoins d'interopérabilité, ou encore un agent neutre comme le Centre de tests et d’interopérabilité (CTI) du CRIM, peut gérer l’espace commun, les processus et les outils de normalisation. Qu’il s’agisse de séquence de tests, données de tests, résultats de tests, les informations peuvent être accessibles selon qu’elles soient de nature privée ou d’intérêt commun.

Gains :

Les gains qu’apporte la mise en commun des processus, outils et services partageables favorisent la collaboration, mais aussi une connaissance accrue des objectifs communs. Ce regroupement de services permet d’éviter le dédoublement des informations et des infrastructures.

Le LaboAgile du CTI offre aux organisations et aux développeurs de partager des ressources pour tester l’interopérabilité dans un milieu neutre, tout en maintenant des environnements de travail distincts et sécurisés. De plus, le LaboAgile met à la disposition des utilisateurs des outils à la fine pointe de la technologie, sans les investissements que ceux-ci requièrent, avec entre autres, la capacité de reproduire des conditions de réseaux étendus réelles. Et bien que l’autonomie des organisations soit favorisée, les entreprises peuvent aussi compter sur le soutien et l’expertise de l’équipe du CTI pour optimiser leurs processus et leurs méthodes.

Des commentaires ? raymond.rivest@crim.ca

La virtualisation : Test de charge rapide pour anomalies fonctionnelles  Retour vers le haut

Par Raymond Rivest, conseiller, spécialiste de tests, Centre de tests et d'interopérabilité, CRIM
11 mai 2011

Problématique :

Dans un cycle de développement où les tests fonctionnels sont automatisés, il n’est pas toujours possible de reproduire certains types d’anomalies qui ne se retrouvent qu’en production. Ces anomalies sont souvent liées à des fuites mémoires, blocage de record dans une table sous l’effet de la concurrence d’accès, gestion des processus d’un service, etc.

L’inconvénient principal est qu’une fois en production, les coûts pour résoudre ces anomalies sont beaucoup plus élevés : pertes de production, soutien téléphonique, main-d’œuvre pour reproduire et résoudre l’anomalie, déploiement de la mise à niveau, sans compter que ces anomalies peuvent nuire à la réputation de l’entreprise.

Solution :

La virtualisation propose une solution simple et peu coûteuse qui permet de détecter certaines de ces anomalies avant la mise en production. Il suffit d’utiliser des scénarios automatisés qui représentent généralement les tests d’acceptation, reproduits sur une dizaine de machines virtuelles qui tournent à vitesse maximale.

Gains :

Sans être aussi élaborée et coûteuse que des tests de charge traditionnels, la virtualisation a l’avantage de pouvoir s’intégrer facilement dans le cycle de développement, à moindres coûts. Une session de 2 heures suffit généralement à trouver les anomalies liées à la concurrence de processus ou de blocage de record. Une session de 24 heures permettra de détecter les fuites de mémoire et la rétention de processus.

Somme toute, sans l’investissement que représentent les tests de charge poussés, la virtualisation de scénarios fonctionnels permettra d’augmenter la couverture de test et d’éviter de mauvaises surprises lors d’une mise en production.

D’ailleurs, le LaboAgile peut permettre aux organisations et développeurs de mettre la virtualisation en place rapidement et facilement, à peu de frais, dans un environnement neutre et flexible.

Des commentaires ? raymond.rivest@crim.ca

 
boite_recherche_g

Recherche

boite_recherche_d