2010-04-20 4 views
2

Je voudrais construire mon propre outil de test de charge en Java avec l'objectif de pouvoir tester une application web que je construis tout au long du cycle de développement. L'application Web recevra des requêtes HTTP Post serveur à serveur et je voudrais trouver sa capacité de transaction par seconde (TPS) de démarrage avec le temps de réponse avgéré.Test de charge Java Web Application - trouver le temps de réponse de la transaction TPS/Avg

Les messages de demande de réponse et de réponse seront en XML (je ne pense pas que c'est vraiment applicable si :)).

J'ai écrit une application Java très simple pour envoyer des transactions et compter le nombre de transactions qu'elle pouvait envoyer en une seconde (1000 ms) mais je ne pense pas que ce soit la meilleure façon de charger le test. Vraiment ce que je veux est d'envoyer un certain nombre de transactions exactement au même moment - c'est-à-dire 10, 50, 100 etc.

Toute aide serait appréciée!

Oh, et voici mon code actuel d'application de test:

Thread[] t = new Thread[1]; 

    for (int a = 0; a < t.length; a++) { 
     t[a] = new Thread(new MessageLoop()); 
    } 
    startTime = System.currentTimeMillis(); 
    System.out.println(startTime); 
    for (int a = 0; a < t.length; a++) { 
     t[a].start(); 
    } 
    while ((System.currentTimeMillis() - startTime) < 1000) { 

    } 

    if ((System.currentTimeMillis() - startTime) > 1000) { 
     for (int a = 0; a < t.length; a++) { 
      t[a].interrupt(); 
     } 
    } 
    long endTime = System.currentTimeMillis(); 
    System.out.println(endTime); 
    System.out.println("Total time: " + (endTime - startTime)); 
    System.out.println("Total transactions: " + count); 

private static class MessageLoop implements Runnable { 
    public void run() { 
     try { 
      //Test Number of transactions 

      while ((System.currentTimeMillis() - startTime) < 1000) { 
       // SEND TRANSACTION HERE 
       count++; 
      } 
     } 
     catch (Exception e) { 

     } 
    } 
} 
+0

Quelle est votre question exactement? Aussi, avez-vous envisagé d'utiliser un outil existant? Certaines options sont ici: http://www.opensourcetesting.org/performance.php. Le test de stress approprié est une tâche non triviale à mon avis. – DMKing

+0

Merci pour votre commentaire. Exact Question: Quelle est la meilleure méthode d'envoi de plusieurs transactions http post en même temps? Ref un outil existant: en fin de compte je veux fournir des rapports aux utilisateurs avec diverses informations telles que le temps de réponse moyen dans la dernière heure etc, donc je prévois que l'outil nécessitera beaucoup de personnalisation à l'avenir, donc je pense construire mon propre est la meilleure option. – Steve

+0

Aussi, merci pour le pointeur sur opensourcetesting.org/performance.php, j'essaie quelques trucs avec Apache JMeter. – Steve

Répondre

1

Il y a quelques problèmes dans votre code. Il est mauvais choix d'utiliser System.currentTimeMillis() car il utilise minuterie du système qui ont précision de 1 milliseconde, mais précision environ 10-20 millisecondes. Vous devez utiliser System.nanoTime() pour ces mesures. Et aussi outil de test de charge devrait être en mesure de tester le code dans un environnement multithread.

, vous devez utiliser open source tools :)

Questions connexes