5 rodzajów testów wydajnościowych + najlepsze narzędzia

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

Poznaj znaczenie testów wydajnościowych, które umożliwiają optymalizację pod kątem maksymalnej wydajności. Poprawiając doświadczenia użytkowników, zapewniając stałą wydajność systemu przy dużym obciążeniu i ograniczając przestoje, zwiększysz satysfakcję klientów i zdobędziesz ich lojalność.

Testy wydajnościowe oszczędzają firmom miliony dolarów. Według raportu Dun & Bradstreet, 59% firm z listy Fortune 500 doświadcza co tydzień co najmniej 1,6 godziny przestoju. Policzmy to szybko. Średnio firma z listy Fortune 500 zatrudnia 52 810 osób. Jeśli każdy pracownik zarabiałby zaledwie 10 dolarów na godzinę, kosztowałoby to firmę 528 100 dolarów tygodniowo z powodu utraconej produktywności – czyli 27 461 200 dolarów rocznie.

To dużo pieniędzy, które po prostu... znikają.

W interesie wszystkich leży dokładne przeprowadzenie testów wydajnościowych oprogramowania. Przyjrzyjmy się znaczeniu testów wydajnościowych, ich różnym rodzajom, typowym problemom i przydatnym narzędziom.

Czym są testy wydajnościowe?

Testy wydajnościowe sprawdzają, czy oprogramowanie może działać na wysokim poziomie przy oczekiwanym obciążeniu. Deweloperzy chcą uniknąć tworzenia oprogramowania, które jest responsywne i szybkie, gdy połączony jest tylko jeden użytkownik, ale staje się powolne podczas obsługi wielu użytkowników.

Testy kontroli jakości nie dotyczą wyłącznie błędów. Dodatkowymi kwestiami są szybkość oprogramowania, jego responsywność i wykorzystanie zasobów. Testy wydajnościowe koncentrują się na identyfikowaniu i usuwaniu wąskich gardeł wydajnościowych. Wąskie gardła są identyfikowane poprzez symulowanie ruchu użytkowników. W idealnej sytuacji testerzy kontroli jakości chcą przeprowadzać testy wydajnościowe w warunkach rzeczywistych. To jedna z pierwszych podróży oprogramowania poza bezpieczną przystanią idealnych warunków i w niepewny świat doświadczeń użytkownika końcowego.

Dlaczego należy testować wydajność?

Zapewniają interesariuszom konkretne informacje na temat szybkości, stabilności i skalowalności oprogramowania. Bez testów wydajnościowych oprogramowanie może po wdrożeniu mieć problemy z szybkością i niezawodnością.

Wspomnieliśmy już o kosztach produktywności związanych z awarią systemu. W wielu przypadkach jest to wystarczający powód. Chociaż nie każde oprogramowanie jest używane wewnętrznie, jest ono dostarczane i sprzedawane klientom. W takim przypadku testy wydajnościowe stają się jeszcze ważniejsze, ponieważ ostatnią rzeczą, jakiej chcemy, jest tłum klientów niezadowolonych z jakości produktu.

Na etapie tworzenia testy wydajnościowe zapewniają wyraźniejszy obraz tego, co należy poprawić pod względem szybkości, stabilności i wykorzystania zasobów. Bez nich oprogramowanie może zostać wydane z kilkoma poważnymi błędami, takimi jak powolne działanie przy wielu użytkownikach, awarie z powodu przeciążenia użytkownikami oraz niespójne doświadczenia użytkownika w różnych systemach operacyjnych i przeglądarkach. 

Testowanie pod kątem błędów nie daje jasnego obrazu tego, jak oprogramowanie będzie działać pod obciążeniem. Ważne jest, aby testy wydajnościowe były przeprowadzane niezależnie i miały wyłączny cel w postaci znajdowania wąskich gardeł. Dobrzy testerzy wydajności wiedzą, że szybkość nie jest jedynym wyznacznikiem wydajności. Na przykład aplikacja, która ładuje się szybko, ale wykorzystuje 100% procesora użytkownika, nie jest wydajna. Taki przykład przysporzyłby użytkownikowi końcowemu wielu problemów, takich jak przegrzewanie się urządzenia, skrócenie żywotności procesora, wolniejsze działanie wielu aplikacji i sporadyczne awarie.

Jak przeprowadzać testy wydajnościowe

Sposób przeprowadzania testów wydajnościowych różni się w zależności od oprogramowania. Tester kontroli jakości może zastosować kilka różnych podejść. Jest to forma testowania niefunkcjonalnego, co oznacza, że w dużej mierze nie koncentruje się na interfejsie użytkownika. 

Testerzy wydajności chcą mieć pewność, że komponenty wewnętrzne są dostrojone tak dokładnie, jak to możliwe. Są ekipą serwisową w wyścigu F1.

Zdjęcie F1

Rodzaj przeprowadzanych testów będzie zależeć od metodyki stosowanej przez organizację. Jeśli stosuje ona tradycyjne podejście kaskadowe do tworzenia oprogramowania, testerzy wydajności prawdopodobnie nie będą mieli dostępu do produktu aż do zakończenia prac programistycznych. Jeśli jednak organizacja korzysta z metodyki zwinnej, testy wydajnościowe w metodyce zwinnej będą prawdopodobnie przeprowadzane przez cały proces tworzenia oprogramowania.

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

Have an account? Log In

Rodzaje testów wydajnościowych

Niektóre wymagają testowania ręcznego, a inne testowania automatycznego, jednak wraz z szybkim rozwojem testów automatycznych i opracowywaniem każdego dnia coraz skuteczniejszych i bardziej niezawodnych narzędzi, w takich sytuacjach zdecydowanie preferuje się testowanie automatyczne, ponieważ wymaga ono wielu wirtualnych użytkowników uruchamiających oprogramowanie tak, jakby byli rzeczywistymi użytkownikami końcowymi. Trudno odtworzyć to ręcznie, ponieważ wymagałoby to znacznie większej liczby testerów, niż zespół prawdopodobnie zatrudnia.  

Sam fakt, że znaczna część testów wydajnościowych jest obsługiwana przez maszyny, nie oznacza, że nie ma istotnych różnic między rodzajami testów. Tester kontroli jakości powinien rozumieć różne rodzaje testów wydajnościowych, aby wiedzieć, które narzędzie najlepiej nadaje się do danego zadania.  

Przeanalizujmy różne rodzaje testów wydajnościowych i to, co każdy z nich ma na celu osiągnąć. 

Testowanie pojemności

Sprawdza, ilu użytkowników system może obsłużyć, zanim wydajność spadnie poniżej akceptowalnego poziomu. Testowanie pojemności oprogramowania pomaga deweloperom przewidywać problemy związane ze skalowalnością i przyszłym wzrostem liczby użytkowników. 

Testowanie obciążenia

Potwierdza, że system może obsłużyć wymaganą liczbę użytkowników i nadal działać na wysokim poziomie wydajności. Narzędzia do testowania obciążenia zapewniają brak codziennych problemów z wydajnością. 

Testowanie dużych ilości danych

Sprawdza, czy oprogramowanie może jednocześnie obsługiwać i przetwarzać dużą ilość danych bez awarii, spowolnienia lub utraty informacji.

Testowanie przeciążeniowe

Celowo próbuje doprowadzić do awarii oprogramowania, symulując liczbę użytkowników znacznie przekraczającą oczekiwania. Dzień premiery nowego iPhone’a i nagły wzrost ruchu użytkowników na stronie Apple to doskonały przykład testu przeciążeniowego w rzeczywistym świecie.

Testowanie długotrwałe

Symuluje duży ruch przez dłuższy czas. Sprawdza zdolność oprogramowania do tolerowania długotrwałego dużego ruchu.

4 typowe problemy z wydajnością

Testerzy wydajności zazwyczaj napotykają co najmniej jeden z tych czterech problemów podczas testowania.

  1. Długi czas ładowania – Nikt nie lubi patrzeć na ekran przez 30–60 sekund i czekać na załadowanie aplikacji. To nudne, szczególnie jeśli jest to aplikacja otwierana kilka razy dziennie. Z wyjątkiem bardzo wymagającego oprogramowania większość aplikacji, stron internetowych i programów powinna otwierać się w ciągu kilku sekund. Testy obciążenia zazwyczaj wykrywają oprogramowanie, które ma problemy z otwarciem w akceptowalnym czasie.
  2. Wolny czas odpowiedzi – Problem podobny do długiego czasu ładowania. Równie frustrujące jest to, gdy po pomyślnym otwarciu aplikacji przechodzenie między menu lub wprowadzanie danych również zajmuje 30–60 sekund. Pomyśl o aplikacjach, z których korzystasz codziennie – ile z nich każe Ci czekać na załadowanie strony? Prawdopodobnie niewiele. Długie czasy ładowania sprawiają, że ludzie tracą zainteresowanie.
  3. Słaba skalowalność – Potocznie nazywa się to „efektem Slashdota” lub „internetowym uściskiem śmierci”. Czy zdarzyło Ci się usłyszeć o interesującej stronie internetowej, którą ktoś udostępnił Ci na Facebooku, a po kliknięciu linku strona się nie załadowała? Stało się tak, ponieważ Ty i milion innych osób chcieliście odwiedzić tę ciekawą, niewielką stronę, a jej infrastruktura nie była przygotowana na nagły napływ użytkowników. Wykres ruchu na tej stronie wyglądałby mniej więcej tak:
Zrzut ekranu przedstawiający słabą skalowalność
(źródło: olino.org)

4. Wąskie gardła – Wąskie gardła powstają, gdy system nieprawidłowo przydziela moc obliczeniową. Jeśli oprogramowanie wymaga wykorzystania procesora użytkownika w 100%, nie pozostaje mu pamięć na wykonywanie dodatkowych zadań. Jest to niekorzystne i często prowadzi do przegrzewania oraz znacznego spadku wydajności. Wąskie gardła mogą występować w kilku obszarach. Do najczęstszych należą:

  • Procesor
  • Pamięć
  • Procesor graficzny
  • Wykorzystanie dysku

More Articles

Najlepsze narzędzia do testowania wydajności

Wybór odpowiedniego narzędzia do testowania wydajności zależy od projektu i jego celów. Niektóre narzędzia, takie jak Jmeter, bardzo dobrze sprawdzają się podczas przeprowadzania testów obciążenia i przeciążeniowych. Wybór zależy również od budżetu. Mniejsze firmy mogą zdecydować się na jedno z wielu wysokiej jakości, bezpłatnych narzędzi do testowania wydajności o otwartym kodzie źródłowym, aby ograniczyć koszty.

Narzędzia do testowania wydajności o otwartym kodzie źródłowym

Jednym z najwyżej ocenianych narzędzi do testowania o otwartym kodzie źródłowym jest Jmeter. To popularny wybór małych firm, które chcą przeprowadzać skuteczne testy. Testy wydajności Jmeter dokładnie analizują wydajność serwera pod obciążeniem. Narzędzie umożliwia przeprowadzanie testów obciążenia i przeciążeniowych w celu sprawdzenia, czy oprogramowanie może obsłużyć normalną i maksymalną oczekiwaną liczbę użytkowników.

Po zakończeniu testów wydajności Jmeter umożliwia wyświetlenie wyników testów na kilka łatwych do zrozumienia sposobów. Jedną z opcji jest przedstawienie wyników w formie wykresu. Tak wyglądają wykresy Jmeter:

(źródło: StackExchange)

Podczas odczytywania wykresu najważniejszym parametrem jest przepustowość (zielona linia), która pokazuje liczbę żądań wysłanych podczas testu. Im wyższa liczba, tym lepiej. Pokazuje ona, ile żądań oprogramowanie może obsłużyć w ciągu minuty. W tym przykładzie jest to 8003 żądania na minutę.

Inne czołowe narzędzia: 

  1. The Grinder
  2. Gatling
  3. Multi-Mechanize
  4. Siege
  5. Taurus

Testowanie wydajności w ramach otwartego oprogramowania ma pewne wady. Jedną z nich jest to, że wszyscy symulowani użytkownicy działają na serwerach firmowych. Oznacza to, że testy są przeprowadzane w warunkach idealnej wydajności, a nie w warunkach rzeczywistych. W małych firmach, które nie spodziewają się znacznego obciążenia, takie rozwiązanie może w pełni odpowiadać ich potrzebom. Jednak wraz z rozwojem firmy może ona zacząć rozważać zakup płatnego narzędzia do testowania wydajności.

Oto krótka lista niektórych płatnych narzędzi do testowania wydajności:

  1. CloudView
  2. HP LoadRunner
  3. Neotys
  4. LoadNinja
  5. WebLoad

Testowanie wydajności jest zasadniczo podobne w różnych systemach operacyjnych. Wiele narzędzi do testowania wydajności komputerów Mac działa również w systemie Windows. 

Końcowe przemyślenia

Testowanie wydajności jest niezbędnym elementem zapewniania niezawodności i efektywności oprogramowania, szczególnie w przypadku firm SaaS doświadczających szybkiego rozwoju. Dzięki wykorzystaniu najlepszych narzędzi liderzy ds. zapewniania jakości uzyskują bezcenny wgląd w skalowalność i wytrzymałość swoich systemów oraz ich zdolność do obsługi dużego ruchu. Zapisz się do naszego newslettera, aby uzyskać więcej informacji od specjalistów ds. zapewniania jakości!

Jason Boog
Over his 15-year career, Jason Boog has worked as a QA tester, QA analyst, and Senior QA Analyst on video games, commercial sites, and interactive web applications. He spent more than a decade building out the QA team and process as Director of Quality & Client Support at a full-service digital agency.
Follow the author:

You may also like