2010-07-12 36 views
0

J'ai écrit un plugin Webtest pour Visual Studio (2008) et j'ai besoin d'afficher le temps qu'il faut pour exécuter dans la fenêtre de lecture de l'interface utilisateur.Afficher l'heure pour le plugin webtest dans la fenêtre de l'interface de lecture

J'ai essayé:

e.WebTest.BeginTransaction("B2BValidate"); 

// then call my plugin 

e.WebTest.EndTransaction("B2BValidate"); 

Cela ajoute en effet une transaction "B2BValidate" à la fenêtre de lecture, mais la colonne affiche "Temps total" en 0.000 sec. Qu'est-ce que je rate?

-Matt

Répondre

0

Transactions dans Visual Studio attendent à contenir une demande - ils ne fonctionnent tout simplement pas directement en ligne dans le code comme ça, sans une demande entre les deux.

Vous devez utiliser quelque chose comme http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.aspx pour démarrer et arrêter une minuterie, puis utiliser la méthode AddCommentToResult() de WebTest pour afficher le temps écoulé dans la visionneuse de résultats webtest.

Une autre option est de mettre votre webtest dans un loadtest puis reportez-vous aux compteurs de performance:

  • % Temps LoadTestPlugin
  • % Temps dans les règles
  • % Temps dans le code WebTest

bien que cela ne donne évidemment que des proportions plutôt que des données de synchronisation précises.

-1

Il existe une classe TransactionTimer qui doit être instanciée et la portée de la demande pour la temporisation définie.

 public class DynamicTransactionTimer : WebTestRequestPlugin 
{ 
public override void PreRequest(object sender, PreRequestEventArgs e) 
{ 
    TransactionTimer t = new TransactionTimer(); 
    t.Name = "trx3"; 
    t.Items.Add(e.Request); 
    e.WebTest.BeginTransaction("trx3"); 
} 

    public override void PostRequest(object sender, PostRequestEventArgs e) 
    { 
     e.WebTest.EndTransaction("trx3"); 
    } 
    } 
+2

Ceci ne fonctionne pas. Si vous l'essayez, vous verrez que 'trx3' signale un temps de réponse de 0,00 secondes et un temps écoulé, dans un test Web autonome ou un test de charge. Vous ne pouvez pas EndTransaction() dans l'événement WebTestRequestPlugin PostRequest ou l'heure de la dernière demande est exclue. De plus, votre objet 't' n'est pas utilisé du tout dans les appels BeginTransaction/EndTransaction. Un objet TransactionTimer complètement nouveau est créé par le moteur webtest. Il ne semble pas que la classe TransactionTimer est destinée à être utilisée directement. – agentnega