Tester unitairement la performance en Java

L'importance accordée aux tests lors du développement joue un rôle primordial dans la réussite et la qualité d'une application. Si dans bon nombre d'applications il existe des tests unitaires, les tests de performance sont souvent absents ou interviennent tardivement (bien souvent lorsque des problèmes commencent à être remontés).
Pour diagnostiquer au plus tôt ces problèmes, il existe des outils permettant de tester unitairement la performance. Parmi ceux disponibles, j'ai retenu ContiPerf.

Petit tour d'horizon des fonctionnalités offertes par l'outil.

ContiPerf est une surcourche JUnit4 qui permet :

  • D'écrire facilement des tests de performance pour tout développeur ayant l'habitude d'écrire des tests
  • De transformer rapidement des tests classiques en tests de performance afin de simuler des traitements parallèles (multi-utilisateurs)

Parmi les points forts de ContiPerf, il faut noter :

  • Son intégration avec les IDEs standards Eclipse et NetBeans : le lancement d'un test de performance se fait comme pour le lancement d'un test unitaire classique sans avoir besoin d'installer des plugins supplémentaires
  • Son intégration avec maven : par défaut les tests de performance sont activés mais il est possible de les désactiver en valorisant la propriété contiperf.active
  • L'export de résultats et la production de rapports
  • La possibilité de regrouper des tests en suite

Comment écrire un test ? En 3 étapes

  • Etape 1 : Création d’un objet ContiPerfRule avec l’annotation @Rule

@Rule public ContiPerfRule rule = new ContiPerfRule()

  • Etape 2 : Définition du protocole de test (nombre d’itérations, nombre de threads, choix des timers d’attente, durée de test) avec l’annotation @PerfTest

@PerfTest(invocations = 100, threads = 10)

  • Etape 3 : Définition des critères d’acceptation du test (temps de réponses moyen, maximum / percentiles / durée totale / nombre d’exécution de tests moyen par seconde) avec l’annotation @Required

@Required(max = 1100, average = 550, throughput = 10)

Exemples de protocole de test (@PerfTest) :

ContiPerf-PerfTest

Exemples de critères d’acceptation (@Required) :

ContiPerf-Required

Par défaut, un rapport HTML recense les mesures des tests de performance mais il est possible d'ajouter d'autres rapports (ConsoleReportModule, CSVInvocationReportModule, CSVLatencyReportModule, CSVSummaryReportModule, ... ) et même de créer le vôtre si ceux existants ne vont satisfont pas !

ContiPerf-Rapport

Pour la documentation officielle de ContiPerf, c'est ici

2 commentaires

  1. http://www.nsn.com.au

    Our dental partners will work with your agenda and timeframe to ensure quick access to care. Through Dental Destinations DDS well-informed online quote system, your dental and medical records will be made accessible to the dental supplier of your…

Laisser un commentaire

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

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.