Résultats des tests de charge VS 2010 avec des compteurs personnalisés

Je suis nouveau sur les tests de charge (et en général, sur les tests) avec visual studio 2010 et je rencontre plusieurs problèmes.

Ma question est la suivante: existe-t-il un moyen possible d’append une variable de test personnalisée dans les résultats du test de charge?

J’ai le UnitTest suivant:

[TestMethod] public void Test() { Stopwatch testTimer = new Stopwatch(); testTimer.Start(); httpClient.SendRequest(); testTimer.Stop(); double requestDelay = testTimer.Elapsed.TotalSeconds; } 

Cet UnitTest est utilisé par de nombreux LoadTests et je souhaite append la variable requestDelay au résultat du test de charge afin de pouvoir obtenir les valeurs Min, Max et Avg comme tous les autres compteurs de test de charge (par exemple, temps de réponse du test).

Est-ce possible?

En utilisant le lien du commentaire @Pritam Karmakar et les procédures pas à pas à la fin de mon message, j’ai finalement réussi à trouver une solution.

J’ai d’abord créé un plug-in Load Test et utilisé l’ événement LoadTestStarting pour créer ma catégorie de compteurs personnalisés et y append tous mes compteurs:

 void m_loadTest_LoadTestStarting(object sender, System.EventArgs e) { // Delete the category if already exists if (PerformanceCounterCategory.Exists("CustomCounterSet")) { PerformanceCounterCategory.Delete("CustomCounterSet"); } //Create the Counters collection and add my custom counters CounterCreationDataCollection counters = new CounterCreationDataCollection(); counters.Add(new CounterCreationData(Counters.RequestDelayTime.ToSsortingng(), "Keeps the actual request delay time", PerformanceCounterType.AverageCount64)); // .... Add the rest counters // Create the custom counter category PerformanceCounterCategory.Create("CustomCounterSet", "Custom Performance Counters", PerformanceCounterCategoryType.MultiInstance, counters); } 

Ensuite, dans l’éditeur LoadTest , j’ai cliqué avec le bouton droit de la souris sur l’ Agent CounterSet et sélectionné Add Counters … Dans la fenêtre Pick Performance Counters , j’ai choisi ma catégorie de performance et ajouté mes compteurs à CounterSet afin que Load Test rassemble leurs données:

entrez la description de l'image ici

Enfin, chaque UnitTest crée des instances des compteurs dans la méthode ClassInitialize , puis met à jour les compteurs à l’étape appropriée:

 [TestClass] public class UnitTest1 { PerformanceCounter RequestDelayTime; [ClassInitialize] public static void ClassInitialize(TestContext TestContext) { // Create the instances of the counters for the current test RequestDelaytime = new PerformanceCounter("CustomCounterSet", "RequestDelayTime", "UnitTest1", false)); // .... Add the rest counters instances } [TestCleanup] public void CleanUp() { RequestDelayTime.RawValue = 0; RequestDelayTime.EndInit(); RequestDelayTime.RemoveInstance(); RequestDelayTime.Dispose(); } [TestMethod] public void TestMethod1() { // ... Testing // update counters RequestDelayTime.Incerement(time); // ... Continue Testing } } 

Liens:

  • Création de compteurs de performance par programme
  • Définition des compteurs de performance
  • Inclure les valeurs de variable de test unitaire dans les résultats du test de charge

Je pense que ce dont vous avez réellement besoin est d’utiliser:

 [TestMethod] public void Test() { TestContext.BeginTimer("mytimer"); httpClient.SendRequest(); TestContext.EndTimer("mytimer"); } 

Vous pouvez trouver une bonne documentation ici .

Question interessante. Je n’ai jamais essayé, mais j’ai une idée.

Créez 3 propriétés de niveau de classe MAX, MIN et AVG. lors de chaque test manipuler ces valeurs. Ensuite, écrivez toutes les valeurs finales une fois que le test de charge complet est exécuté via l’ atsortingbut de test Classcleanup ou assemblycleanup. Vous devez exécuter le test de charge pendant 1 à 2 minutes et voir quelle méthode d’atsortingbut est appelée à la fin. Vous pouvez ensuite imprimer ces valeurs finales dans un fichier plat dans le lecteur local via textwriter.