Geeek - Le blog Geek & High-tech

Les tests JUnit jouent un rôle très important dans un projet Java :

  • Ils permettent au développeur de vérifier son travail et de prendre un recul sur le métier que réalise le composant qu'il vient de développer.
  • Ils permettent de réaliser des tests de non régression au niveau de la post-compilation grâce aux taches ANT JUnit .
  • Ils permettent aussi de réaliser des tests de performance.

Quels sont les caractéristiques d'un tests de performance ?

  • Il y a tout d'abors une notion d'utilisateurs parallèles, symbolisés par des "Threads".
  • Il y a une notion d'itérations , symbolisées par une boucle "While" ou "For".
  • Il y a une notion de temps de réponse, symbolisé par un "Timer".
  • Enfin, il y l'aspect quantatif du CPU et de la mémoire consommé au cours du test.

En cherchant sur Internet, j'ai trouvé deux projets OpenSource permettant de réaliser des tests de performance à partir de tests Junit.
Il y a tout d'abord JUnitPerf, pour réaliser des tests il faudra encapluser les appels de vos tests JUnit avec les classes ''LoadTest'' et ''TimedTest'' fournies par JunitPerf.

 

import com.clarkware.junitperf.*;
import junit.framework.Test;

public class ExampleResponseTimeUnderLoadTest {

    public static Test suite() {
     
        int maxUsers = 10;
        long maxElapsedTime = 1000;
        
        Test testCase = new ExampleTestCase("testOneSecondResponse");
        Test timedTest = new TimedTest(testCase, maxElapsedTime);
        Test loadTest = new LoadTest(timedTest, maxUsers);

        return loadTest;
    }
    
    public static void main(String[] args) {
        junit.textui.TestRunner.run(suite());
    }
}


Et il y a JunitScenario qui permet de décrire en XML des enchainements d'appels de tests JUnit avec un nombre d'itérations définis et aussi un nombre d'utilisateurs simultanées.


 <scenario name="cashier" users="20" loops="500">
  <task JUnitClass="org.mybank.MyFirstTest" JUnitMethod="testCreateAccount" wait="10"/>
  <task JUnitClass="org.mybank.MyFirstTest" JUnitMethod="testDipositMoney" wait="10"/>
  <task JUnitClass="org.mybank.MyFirstTest" JUnitMethod="testWithdrawMoney" wait="50"/>
</scenario>

L'avantage de JunitScenario face à JunitPerf est qu'il n'est pas nécéssaire de modifier les tests Junit pour changer l'enchainement des tests, ces tests peuvent donc être lancées par des personnes différentes de celles qui les ont développés.

L'autre avantage de JunitScenario est la gestion des temps d'attente entre chaque appel de tests JUNIT, chose non réalisable avec JUnitPerf, à moins de modifier les sources de celui-ci.

Enfin, pour conclure, l'inconvénient de JunitScenario, est qu'il {semble} être laissé à l'abandon, la seule et unique version de cet outils est la version 0.1 publiés sans ses sources début 2005 ... aucune autre release depuis.

Une piste à investiger est JellyUnit qui permet dans du XML de définir des tests Junit, en modifiant les tags XML de JellyUnit il est peut être possible d'implémenter des fonctions de charge... Chose à étudier ...


Vous êtes correctement abonné à Geeek
Bienvenue ! Vous êtes correctement connecté.
Parfait ! Vous êtes correctement inscrit.
Votre lien a expiré
Vérifiez vos emails et utiliser le lien magique pour vous connecter à ce site