2011-07-28 18 views
5

Testuję duży system BizTalk przy użyciu testu obciążenia programu Visual Studio. Załaduj test, aby przesłać wiadomości do MQ, są one pobierane przez BizTalk, a następnie przetwarzane.Określ warunek końca testu w Visual Studio Load Test

Zamiast kończenia testu (i wszystkich liczników wydajności kończących się), gdy tylko Visual Studio zakończy wysyłanie wiadomości do MQ, chcę zakończyć test tylko wtedy, gdy spełniony jest jakiś warunek (w moim przypadku if (SELECT COUNT(*) FROM BizTalkMsgBoxDb.dbo.Spool) == 4).

Widzę kilka sposobów na uruchomienie rzeczy po zakończeniu testu, ale nie ma oczywistego sposobu na przedłużenie testu i kontynuowanie monitorowania, o ile nie zostanie spełniony warunek wyjścia zdefiniowany przez użytkownika.

Czy to możliwe, a jeśli nie, czy ktoś ma pomysł na dobre obejście/hak, aby to osiągnąć?

Odpowiedz

0

W czasie pisania nie można (nadal) wydłużyć czasu trwania testu za pomocą niestandardowej wtyczki testu obciążenia, ani nie mając wirtualnego użytkownika, który odmówił wyjścia, ani też nie blokując okresu zamykania test i uniemożliwienie mu wyjścia w ten sposób.

Jedynym sposobem, w jaki udało nam się zrobić coś takiego, było bezpośrednie manipulowanie bazą danych LoadTest i wprowadzenie danych licznika wydajności później z plików dziennika, ale nie jest to ani mądre, ani zalecane.

Oh well ..

2

Będziesz chciał napisać niestandardową wtyczkę testu obciążenia. Szczegóły zaczynają się pod tym adresem URL: http://msdn.microsoft.com/en-us/library/ms243153.aspx

Wtyczka może manipulować scenariuszem, wydłużając czas trwania testu, aż do spełnienia warunku.

1

Wyobrażam chcesz zachować bieg test obciążenia w kolejce po kilka wniosków w celu dalszego monitorowania wydajności, podczas gdy żądania są przetwarzane. Chociaż nie możemy kontrolować czasu trwania testu obciążenia, jest sposób na osiągnięcie tego.

  1. Nie ograniczyć czas trwania testu: Ustaw czas trwania testu obciążenia (lub ilość powtórzeń) do bardzo dużej wartości - większy niż przewidywania (lub wiedzieć) potrwa do stanu końcowego być zadowolonym.
  2. Ogranicz scenariusz oczekujących żądań: W scenariuszu testu obciążenia, w sekcji Opcje ustaw Maksymalne iteracje testowe, aby obciążenie użytkownika spadło do zera po wysłaniu żądanej liczby żądań. Jeśli ustawienie limitu iteracji nie jest możliwe z jakiegoś powodu, można zamiast tego napisać wtyczkę testu obciążenia, która ustawia obciążenie użytkownika na zero w określonym scenariuszu po upływie określonego czasu testu.
  3. Sprawdź, czy warunek końcowy: Napisz wtyczkę testową, która sprawdza bazę danych pod kątem Twojego stanu końcowego. Załącz tę wtyczkę do nowego testu internetowego w nowym scenariuszu i ustaw Zastanowienie czasu między testowymi iteracjami w scenariuszu, aby test był uruchamiany tak często, jak to konieczne (60 sekund?). Gdy warunek zostanie osiągnięty, wtyczka powinna zapisać wcześniej określoną wartość w kontekście użytkownika (kontekst użytkownika jest dostępny w kontekście testu sieci jako $LoadTestUserContext i jest dostępny tylko w teście obciążenia, a nie podczas uruchamiania autonomicznego testu internetowego).
  4. Przerwij test: Napisz wtyczkę testu obciążenia, która szuka wartości flagi w kontekście użytkownika w wydarzeniu TestFinished. Po znalezieniu wartości wtyczka wywołuje LoadTest.Abort().

Jest jedna niewielka wada tej metody: stan testu jest oznaczony jako Aborted w bazie danych wyników.

Powiązane problemy