Przywództwo w testowaniu: zarządzanie testami wydajnościowymi

Discover how to deliver better software and systems in rapidly scaling environments. Join our Community

Uwaga redakcyjna: Witamy w serii „Przywództwo w testowaniu” autorstwa guru testowania oprogramowania i konsultanta Paula Gerrarda. Seria ma pomóc testerom z kilkuletnim doświadczeniem — szczególnie tym pracującym w zespołach zwinnych — odnieść sukces w rolach liderów testów i menedżerów. W poprzednim artykule omówiliśmy testowanie usług i jego główne elementy: testowanie wydajności, testowanie przełączania awaryjnego i […]

Uwaga redakcyjna: Witamy w serii „Przywództwo w testowaniu” autorstwa guru testowania oprogramowania i konsultanta Paula Gerrarda. Seria ma pomóc testerom z kilkuletnim doświadczeniem — szczególnie tym pracującym w zespołach zwinnych — odnieść sukces w rolach liderów testów i menedżerów.

W poprzednim artykule omówiliśmy testowanie usług i jego główne elementy: testowanie wydajności, testowanie przełączania awaryjnego i testowanie odporności oraz łatwość zarządzania. Zgodnie z obietnicą, tutaj przyjrzymy się bliżej testowaniu wydajności.

Zapisz się do newslettera The QA Lead, aby otrzymywać powiadomienia o publikacji kolejnych części serii. Te wpisy są fragmentami kursu „Przywództwo w testowaniu” Paula, który zdecydowanie polecamy wszystkim, którzy chcą dokładniej zgłębić ten i inne tematy. Jeśli się zdecydujesz, użyj naszego ekskluzywnego kodu kuponu QALEADOFFER, aby otrzymać 60 USD zniżki od pełnej ceny kursu!

Witamy w serii „Przywództwo w testowaniu”. W poprzednim artykule przyjrzeliśmy się testowaniu usług dla aplikacji internetowych. 

Celem tego rozdziału jest przedstawienie porad i najlepszych praktyk dotyczących zarządzania kluczowym elementem testowania usług, wspomnianym w tamtym artykule — werble proszę... testowaniem wydajności!

Omówimy:

Zaczynajmy.

Cele testowania wydajności

Dla przypomnienia, główny cel testowania wydajności możemy zdefiniować następująco:

„Wykazanie, że system działa zgodnie ze specyfikacją, zapewniając akceptowalny czas odpowiedzi podczas przetwarzania wymaganej liczby transakcji na bazie danych o rozmiarze produkcyjnym.”

Środowisko testów wydajności jest stanowiskiem testowym, którego można używać także do innych testów o szerszych celach, które możemy podsumować następująco:

  • Ocena możliwości rozwoju systemu (Jeśli nie masz pewności, które oprogramowanie spełni Twoje potrzeby, nasza lista najlepszych rozwiązań do zarządzania bazami danych może Ci pomóc.)
  • Identyfikacja słabych punktów architektury
  • Dostrajanie systemu
  • Wykrywanie trudnych do zauważenia błędów w oprogramowaniu
  • Weryfikacja odporności i niezawodności.

Twoja strategia testów powinna określać wymagania dotyczące infrastruktury testowej, która umożliwia osiągnięcie wszystkich tych celów.

Cztery warunki wstępne testu wydajności

„Jeśli brakuje któregokolwiek z tych warunków wstępnych, zachowaj szczególną ostrożność przed przystąpieniem do wykonywania testów i publikowania wyników. Wykorzystanie narzędzi do automatyzacji zapewniania jakości może pomóc upewnić się, że warunki te są spełnione. Testy mogą być trudne lub niemożliwe do przeprowadzenia, a wiarygodność opublikowanych wyników może być poważnie podważona i łatwa do zakwestionowania.”

Get Free Access
Get regular tech leadership wisdom for delivering better software and systems.
Get Free Access

Have an account? Log In

1. Wymagania ilościowe, istotne, mierzalne, realistyczne i osiągalne

Jako podstawa wszystkich testów wymagania dotyczące wydajności (cele) powinny zostać uzgodnione przed testem, aby można było określić, czy system je spełnia. 

Wymagania dotyczące przepustowości systemu lub czasów odpowiedzi, aby mogły służyć jako punkt odniesienia do porównywania wyników wydajności, powinny mieć następujące cechy. Muszą być:

  • Wyrażone w kategoriach ilościowych.
  • Istotne dla zadania, które użytkownik chce wykonać.
  • Mierzalne za pomocą narzędzia (lub stopera) przy rozsądnych kosztach.
  • Realistyczne w porównaniu z czasem trwania zadania użytkownika.
  • Osiągalne przy rozsądnych kosztach.

Często wymagania dotyczące wydajności są niejasne lub nie istnieją. Jeśli to możliwe, poszukaj udokumentowanych wymagań. Jeśli występują luki, być może trzeba będzie udokumentować je retrospektywnie. 

Zanim będzie można określić i zaprojektować test wydajności, należy uzgodnić wymagania dotyczące:

  • Czasy odpowiedzi transakcji.
  • Profile obciążenia (liczba użytkowników i wolumeny transakcji, które mają zostać zasymulowane).
  • Wolumeny bazy danych (liczba rekordów w tabelach bazy danych przewidywana w środowisku produkcyjnym).

Wymagania dotyczące wydajności są często definiowane w nieprecyzyjny sposób. Wymagania te często opierają się na szacunkowych prognozach wolumenów biznesowych, dlatego może być konieczne skłonienie użytkowników biznesowych do realistycznego przemyślenia wymagań dotyczących wydajności. 

Może być również konieczne samodzielne przeprowadzenie analizy wymagań i udokumentowanie ich jako docelowych celów wydajnościowych. 

2. Stabilny system

Jeśli system jest pełen błędów i zawodny, niewiele osiągniesz za pomocą testu wydajności. Testy wydajności obciążają w pewnym stopniu wszystkie komponenty architektury. Aby jednak testy wydajności dostarczały użytecznych wyników, system i infrastruktura techniczna muszą być od początku względnie niezawodne i odporne.

3. Realistyczne środowisko testowe

Środowisko testowe należy skonfigurować tak, aby test miał znaczenie. Prawdopodobnie nie uda się odtworzyć systemu docelowego ani produkcyjnego, ale środowisko testowe powinno być w całości lub części porównywalne z ostatecznym środowiskiem produkcyjnym. Należy uzgodnić z architektem systemu, na jakie kompromisy można się zgodzić, a na jakie nie, lub przynajmniej ustalić, jaką użyteczną interpretację można nadać wynikom testów.

Stworzenie realistycznego środowiska testowego jest niezbędne do przeprowadzania miarodajnych testów wydajności. Informacje o narzędziach, które mogą pomóc w symulowaniu warunków rzeczywistych, znajdziesz w naszym starannie wybranym zestawieniu platform do testowania oprogramowania

4. Kontrolowane środowisko testowe

Testerzy wydajności wymagają stabilności. Dotyczy to nie tylko niezawodności i odporności sprzętu oraz oprogramowania, ale także ograniczenia zmian w środowisku lub testowanym oprogramowaniu. Jeśli na przykład interfejs zostanie zmieniony nawet w niewielkim stopniu, skrypty testowe zaprojektowane do obsługi interfejsów użytkownika mogą natychmiast przestać działać.

Wszelkie zmiany w środowisku powinny być ściśle kontrolowane. Jeśli zmiana naprawia błędy, które prawdopodobnie nie wpłyną na wydajność, można rozważyć nieprzyjmowanie wydania. Należy akceptować wyłącznie zmiany mające na celu poprawę wydajności lub niezawodności.

Zestaw narzędzi do testowania wydajności

Twój zestaw narzędzi do testowania wydajności składa się z pięciu głównych narzędzi:

  • Tworzenie i utrzymanie danych testowych - do tworzenia dużych ilości danych w bazie danych, które będą wymagane podczas testu. Można oczekiwać, że będzie to narzędzie oparte na języku SQL lub ewentualnie produkt przeznaczony na komputery osobiste, taki jak Microsoft Access, połączony z testową bazą danych.
  • Generowanie obciążenia – typowe narzędzia wykorzystują sterowniki testów, które symulują klientów wirtualnych, wysyłając komunikaty HTTP do serwerów internetowych.
  • Narzędzie do uruchamiania aplikacji – obsługuje jedną lub więcej instancji aplikacji za pomocą interfejsu przeglądarki i rejestruje pomiary czasu odpowiedzi. (Zwykle jest to to samo narzędzie, którego używa się do generowania obciążenia, ale nie musi tak być).
  • Monitorowanie zasobów - narzędzia monitorujące i rejestrujące zasoby systemowe klienta i serwera, ruch sieciowy, aktywność bazy danych itp.
  • Analiza i raportowanie wyników - narzędzia do uruchamiania testów i monitorowania zasobów generują duże ilości danych wynikowych do analizy.

Powiązany artykuł: 10 NAJLEPSZYCH USŁUG ANALITYKI SQL DLA ZESPOŁÓW QA

Proces testowania wydajności

Poniżej przedstawiono schemat ogólnego procesu testowania i dostrajania wydajności. Dostrajanie nie jest formalnie częścią procesu testowego, ale stanowi jego nierozłączny element, ponieważ służy poprawie wydajności i niezawodności. Dostrajanie może obejmować zmiany w infrastrukturze architektonicznej, ale nie powinno wpływać na funkcjonalność testowanego systemu.

Infografika przedstawiająca raport z testu wydajności

Teraz przyjrzymy się, jak opracować, przeprowadzić, przeanalizować i zaraportować wyniki testu wydajności.

Etapowe opracowywanie testu

Opracowywanie testu zwykle odbywa się etapami, w czterech fazach:

  1. Każdy skrypt testowy jest przygotowywany i testowany w izolacji w celu jego debugowania.
  2. Skrypty są integrowane z wersją deweloperską obciążenia, a następnie obciążenie jest uruchamiane w celu sprawdzenia zgodności nowego skryptu.
  3. W miarę rozrastania się obciążenia opracowywany system testowy jest stale udoskonalany, debugowany i zwiększana jest jego niezawodność. Rośnie również doświadczenie i znajomość narzędzi.
  4. Po zintegrowaniu ostatniego skryptu z obciążeniem test jest uruchamiany jako „próba na sucho”, aby upewnić się, że jest w pełni powtarzalny i niezawodny oraz gotowy do formalnych testów.

Testy pośrednie mogą dostarczyć użytecznych wyników

Uruchomienia częściowego obciążenia i transakcji testowych mogą ujawnić problemy z wydajnością. Testy przy małym obciążeniu mogą również wcześnie wskazać natężenie ruchu sieciowego i potencjalne wąskie gardła po zwiększeniu skali testu. 

Długi czas odpowiedzi może być spowodowany niewłaściwym projektem aplikacji i może zostać wcześniej zbadany oraz usunięty przez programistów. Wczesne testy można również uruchamiać przez dłuższy czas jako testy długotrwałe.

More Articles

Wykonywanie testów

Wykonywanie testów wymaga pewnego zarządzania etapami lub koordynacji. Należy współpracować z uczestnikami wspierającymi test, którzy będą monitorować system podczas jego uruchamiania. Zespół „monitorowania testu” może być rozproszony, dlatego należy na bieżąco przekazywać mu informacje, aby test przebiegał sprawnie, a wyniki były prawidłowo rejestrowane.

Poza koordynacją różnych członków zespołu wykonywanie testów wydajności zazwyczaj przebiega według standardowej procedury.

  1. Przygotowanie bazy danych (w razie potrzeby odtworzenie z taśmy).
  2. Przygotowanie środowiska testowego zgodnie z wymaganiami i sprawdzenie jego stanu.
  3. Uruchomienie procesów monitorowania (sieci, klientów i serwerów, bazy danych).
  4. Uruchomienie symulacji obciążenia i obserwowanie monitora lub monitorów systemu.
  5. Jeśli używane jest oddzielne narzędzie, po ustabilizowaniu obciążenia należy uruchomić narzędzie wykonujące test aplikacji oraz pomiar czasu odpowiedzi.
  6. Uważne monitorowanie testu przez cały czas jego trwania.
  7. Jeśli narzędzia wykonujące test nie zatrzymują się automatycznie, należy zakończyć test po upływie wyznaczonego czasu.
  8. Zatrzymanie narzędzi monitorujących i zapisanie wyników.
  9. Zarchiwizowanie wszystkich przechwyconych wyników i zapewnienie bezpiecznego utworzenia kopii zapasowej wszystkich danych wynikowych.
  10. Przygotowanie raportów pośrednich i omówienie wszelkich anomalii z innymi członkami zespołu.
  11. Przygotowanie analiz i raportów.

Koordynacja różnych członków zespołu podczas wykonywania testów może być trudna. Usprawnij ten proces, integrując zaawansowane narzędzia do zarządzania testami zaprojektowane dla Jira, które oferują takie funkcje jak współpraca w czasie rzeczywistym i raportowanie

Dostrajanie zwykle następuje po testach, gdy występują problemy lub wiadomo, że możliwe są optymalizacje. Jeśli test jest powtarzany, konieczne jest rejestrowanie wszelkich zmian w środowisku. Dzięki temu różnice w zachowaniu systemu, a tym samym w wynikach wydajności, można powiązać ze zmianami w konfiguracji.

Jeśli chodzi o zarządzanie przypadkami testowymi podczas testowania wydajności, oprogramowanie do zarządzania testami może całkowicie zmienić sposób pracy. Umożliwia ono lepszą organizację, śledzenie, a nawet automatyzację przypadków testowych.

Zasadniczo rozsądnie jest zmieniać tylko jedną rzecz naraz, aby po wykryciu różnic w zachowaniu można było powiązać je z wprowadzonymi zmianami.

Analiza wyników i raportowanie

Najbardziej typowy raport z przebiegu testu podsumowuje te pomiary, a dla każdego wykonanego pomiaru przedstawia:

  • Liczbę pomiarów.
  • Minimalny czas odpowiedzi.
  • Maksymalny czas odpowiedzi.
  • Średni czas odpowiedzi.
  • Czas odpowiedzi dla N-tego percentyla (zazwyczaj 95tego).

Narzędzie do generowania obciążenia z używanego zestawu narzędzi powinno rejestrować liczbę transakcji każdego typu w okresie testu. Podzielenie tych wartości przez czas trwania testu daje rzeczywiście osiągniętą szybkość transakcji lub przepustowość. 

Liczba transakcji stanowi obciążenie przyłożone do systemu. Zakłada się przy tym, że proporcje wykonanych transakcji odpowiadają profilowi obciążenia, który ma zostać zastosowany.

Zastosowane obciążenie powinno odpowiadać symulowanemu profilowi obciążenia — ale może tak nie być, jeśli system odpowiada powoli, a transakcje są wykonywane z różną szybkością.

Zwykle wykonuje się serię testów przy różnym obciążeniu. Korzystając z wyników serii testów, należy sporządzić wykres czasu odpowiedzi dla transakcji w zależności od zastosowanego obciążenia.

Narzędzia do monitorowania zasobów zwykle oferują funkcje raportowania statystycznego lub graficznego, które przedstawiają wykorzystanie zasobów w czasie. Rozszerzone raporty pokazujące wykorzystanie zasobów w zależności od zastosowanego obciążenia są bardzo przydatne i mogą pomóc w identyfikacji wąskich gardeł w architekturze systemu.

Powodzenia!

Zapisz się do newslettera The QA Lead, aby otrzymywać powiadomienia o publikacji kolejnych części serii. Te wpisy są fragmentami kursu Przywództwo w testowaniu autorstwa Paula, który gorąco polecamy, jeśli chcesz dokładniej zgłębić ten i inne tematy. Jeśli się zdecydujesz, użyj naszego ekskluzywnego kodu rabatowego QALEADOFFER, aby uzyskać $60 zniżki od pełnej ceny kursu!

Powiązany artykuł: WSKAŹNIKI MONITOROWANIA SERWERÓW, KTÓRE NALEŻY ŚLEDZIĆ DLA ZDROWIA I WYDAJNOŚCI SYSTEMU

Paul Gerrard
Paul is an internationally renowned, award-winning software engineering consultant, author, and coach. He is the host of the Technology Leadership Forum and the Programme Chair of the 2014 EuroSTAR Testing conference.

You may also like