La taverne du testeur

Automatisation des Tests & Revue de code

”Automation does not do what testers used to do, unless one ignores most things a tester really does. Automated testing is useful for extending the reach of the James Bach testers work, not to replace it.”

  • Définition de l’automatisation 

L’automatisation de test permet de faciliter les tests de non-régression à la suite de la livraison d’une nouvelle version d’une application.

1
  • Quand on peut faire l’automatisation des tests

L’automatisation d’un test n’a de sens que si le test répond à un certain nombre de critères :

Le test est systématique : il doit être exécuté à chaque nouvelle version de l’application.

Le test est répétitif : il est présent dans de nombreux scénarios de test (il est intéressant d’automatiser si le test est rejoué 8 fois ou plus).

Le test est automatisable : il est possible techniquement de faire jouer le test par un robot.

De plus, il faut se focaliser sur le type de notre test : En effet, s’il s’agit d’un test de performance ou de composant, il est alors préférable de l’automatiser afin d’éviter des erreurs humaines (que ce soit un test fonctionnel pour lequel nous souhaitons récupérer des mesures de temps de réponse ou bien un vrai test de stress simulant un certain nombre d’utilisateurs simultanés).

2
  • Avantages de l’automatisation 
  1. Faciliter les maintenances logicielles
  2. Accélérer le cycle de test
  3. Gagner le temps d’exécution : (temps d’exécution du test lui-même mais aussi une exécution sans contrainte horaire) ce qui rend possible d’étendre les tests sur une plus grande partie de l’application.
  4. Réduire le temps de préparation notamment concernant le jeu de données : l’automate peut très souvent mettre à jour son jeu de données dynamiquement.
  5. Eviter le signalement des bugs de non régression par le client
  6. Réduire les risques d’erreurs humains
  7. Ré utilisabilité des tests
  8. Volume : lancer le même test sur plusieurs devices (pour les applications mobiles) ou sur plusieurs navigateurs (pour les applications web)
  9. L’augmentation de la couverture des tests
  • Inconvénients de l’automatisation
  1. Le coût du premier test
  2. La maintenabilité des tests à chaque mise à jour
  3. L’automatisation ne peut pas être appliquée à tous les tests
  4. Risque de non fiabilité des tests
  • Définition de revue de code

“A well-written program is a program where the cost of implementing a feature is constant throughout the programs lifetime.”

La revue de code est un examen systématique du code source d’un logiciel.

 l’objectif étant de trouver des bugs ou des vulnérabilités potentielles ou de corriger des erreurs de conception afin d’améliorer la qualité, la maintenabilité et la sécurité du logiciel.

Une revue de code peut s’appuyer sur la vérification (manuelle ou automatisée) du respect d’un ensemble de règles de programmation

3
  • Avantages de revue de code
  1. Améliorer la qualité du code
  2. Favoriser la collaboration, le travail en équipe
  3. Appliquer un standard
  4. Détecter et corriger les défauts au plus tôt durant SDLC
  5. Économiser les coûts
  • Outils de revue de code

Sonar est une plate-forme Open Source permettant d’effectuer l’analyse statique de code selon différentes règles. Elle fournit des indicateurs et des métriques de qualité qui sont visualisés via un conteneur Web (Jetty) intégré dans Sonar.

Les fonctionnalités principales sont l’analyse du respect des règles de codage, des conventions de nommage, du pourcentage de commentaires, la détection de bugs, la détection de duplication de code, la détection de code mort, le calcul de couverture des tests unitaires et d’intégration, la détection de cycles, le calcul du nombre de lignes de code, de classes, de méthodes et le calcul de la complexité cyclomatique.

Les fonctionnalités de Sonar :

●Support de plus de vingt-cinq langages (Java, C/C++, Objective-C, C#, PHP, Flex, Groovy, JavaScript, Python, PL/SQL, COBOL…)

●Reporting sur :

○Identification des duplications de code

○Mesure du niveau de documentation

○Respect des règles de programmation

○Détection des bugs potentiels

○Évaluation de la couverture de code par les tests unitaires

○Analyse de la répartition de la complexité

○Analyse du design et de l’architecture d’une application

●Analyses entièrement automatisées : integration avec Maven, Ant, Gradle et serveurs d’intégration continue (Atlassian Bamboo, Jenkins, Hudson…).

●Intégration avec l’environnement de développement Eclipse

●Intégration avec des outils externes : JIRA, Mantis, LDAP, Fortify…

●Extensible par des plugins. Cela signifie qu’il est possible d’étendre ce cœur afin d’augmenter les fonctionnalités (ajout d’un nouveau langage, calcul d’une nouvelle métrique, ajout de règles de programmation…).

●Implémentation de SQALE pour évaluer la dette technique.

4

3 réponses

  1. Pour info :
    Il est aussi possible d’utiliser Sonar sans avoir de gestionnaire de dépendance comme Maven, Ant, Gradle. (Je sais à l’heure actuelle faire un projet sans gestionnaire de dépendance est une hérésie … Mais je l’ai vécu sur un projet …).

    Pour cela il suffit de configurer SonarRunner, un script sh (si nous sommes sur du Linux) et un gestionnaire de cron (natif sur linux. ou jenkins) pour lancer l’analyse.

  2. Bonjour @Antoine,

    Merci pour votre commentaire, est ce que vous avez utilisé Sonar Qube sous Windows dans le but de faire la revue de code des scripts automatiques pour assurer la qualité des tests et les optimiser qui vont eux même assurer la qualité de l’application testée ?

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

recrutement

Questions en entretien

Introduction Je suis régulièrement contacté pour des conseils ou des informations sur les questions en entretien d’embauche (que je préfère appeler entretien de collaboration) et sur ce qu’il faut faire/réviser pour le préparer. Je réponds en général qu’il faut être soi même et bien réviser son vocabulaire ISTQB! Même si

Lire la suite »
culture générale

Introduction aux tests de performance

Les tests de performance ont pour but d’observer un comportement (temps de réponse, erreurs) sur une application sous charge. Cette charge est générée par des outils d’injection (donc forcément automatisée) qui reproduisent de l’activité sur l’application. Les tests de performance permettent d’anticiper des situations de production afin d’apporter un maximum

Lire la suite »