PrzedsprzedażAkademia AI w testach i jakości oprogramowania: 1 350 zł zamiast 1 750 zł netto do 30 listopada

Startuje przedsprzedaż Akademii AI w testach i jakości oprogramowania: 5 tygodni z Tomaszem Stelmachem, start 11 stycznia 2027. Wyjątkowa cena 1 350 zł netto zamiast 1 750 zł tylko do 30 listopada.

zostało 18 dniZobaczcie program i zapiszcie się
Dlaczego testy wydajnościowe są tak ważne
Czas czytania: 12 minut

Dlaczego testy wydajnościowe są tak ważne? Bo funkcja, która działa dla jednego użytkownika, nie musi działać dla tysiąca naraz, a wolna aplikacja traci pieniądze tak samo jak zepsuta. Ten tekst nie powtarza definicji i rodzajów testów. Odpowiada na dwa pytania, które zadaje budżet: dlaczego to się opłaca i kiedy test jest naprawdę potrzebny.

Jeśli szukacie przeglądu od podstaw, czyli czym są testy obciążeniowe, stresowe i wytrzymałościowe, jakie metryki zbierać i jakie narzędzia wybrać, opisujemy to w przewodniku testy wydajnościowe: co to jest, rodzaje, metryki i narzędzia. Tutaj zostajemy przy decyzji: pieniądze, ryzyko, terminy i jeden skrypt z progami, który mówi „wydajemy” albo „nie wydajemy”.

Dlaczego testy wydajnościowe są tak ważne, skoro funkcje działają?

Bo testy funkcjonalne sprawdzają, czy system robi to, co powinien, a nie czy zrobi to wystarczająco szybko, gdy przyjdzie tłum. Na demie aplikacja obsługuje jednego klienta z czystą bazą i pustą kolejką zadań. W pierwszej godzinie kampanii ma kilkaset sesji naraz, rosnące tabele, wyczerpaną pulę połączeń do bazy i zewnętrzną bramkę płatności, która też ma swoje limity. Żaden test funkcjonalny tego nie sprawdzi, bo nie po to powstał.

Drugi powód jest mniej oczywisty: użytkownik nie odróżnia „wolnego” od „zepsutego”. Ekran, który ładuje się 8 sekund, dla klienta jest awarią, nawet jeśli w logach wszystko wygląda poprawnie. Dlatego wydajność należy do testów niefunkcjonalnych, ale jej skutki są jak najbardziej funkcjonalne: porzucony koszyk, telefon na infolinię, zła opinia w sklepie z aplikacjami. Klient nie napisze w recenzji, że p95 przekroczył próg. Napisze, że „nic nie działa”, i będzie miał rację.

Ile kosztuje wolna albo niedostępna aplikacja?

Więcej, niż podpowiada intuicja, i da się to policzyć. Badanie Deloitte Digital przygotowane dla Google w 2020 roku objęło 37 marek z Europy i USA i pokazało, że skrócenie czasu ładowania strony mobilnej o 0,1 sekundy zwiększyło konwersję w handlu detalicznym o 8,4 procent, a w turystyce o 10,1 procent. To nie są efekty przebudowy całego serwisu, tylko jednej dziesiątej sekundy.

Ile kosztuje wydajność w liczbach

8,4%

więcej konwersji w handlu po 0,1 s szybszym ładowaniu (Deloitte dla Google, 2020)

90%

średnich i dużych firm płaci ponad 300 000 USD za godzinę przestoju (ITIC, 2024)

41%

dużych firm szacuje godzinę przestoju na 1 do ponad 5 mln USD (ITIC, 2024)

4x

poprzedni szczyt ruchu, który zobaczył Ticketmaster 15.11.2022

Źródło: Deloitte Digital dla Google, Milliseconds Make Millions, 2020; ITIC, 2024 Hourly Cost of Downtime Report, część 1, 2024; Ticketmaster, The Eras Tour Onsale Explained, 2022.

Według raportu ITIC z 2024 roku, opartego na ankiecie wśród ponad 1 000 firm, godzina przestoju kosztuje ponad 300 000 dolarów w ponad 90 procentach średnich i dużych przedsiębiorstw, a 41 procent dużych firm szacuje ją na 1 do ponad 5 mln dolarów. Wasze liczby będą inne, ale mechanizm jest ten sam: każda godzina, w której system nie przyjmuje zamówień albo wniosków w szczycie, ma cenę, którą zna Wasz dział finansów.

Trzeci koszt jest najmniej widoczny: gaszenie pożaru na produkcji. Optymalizacja zapytań do bazy pod presją działającego systemu, w nocy i bez możliwości spokojnego pomiaru, kosztuje wielokrotnie więcej niż ta sama praca przed wydaniem. W naszych projektach widzimy to najwyraźniej w e-commerce: u Argos po automatyzacji testów i uporządkowaniu procesów QA liczba awarii w okresach szczytowych spadła o 72 procent, a konwersja wzrosła o 12 procent dzięki stabilności checkoutu i płatności. Jak testować sklep od strony funkcji i płatności, opisujemy w tekście testowanie e-commerce.

Co się dzieje, gdy szczyt przychodzi bez testu?

Przychodzi i tak, tylko bez ostrzeżenia. Dobrze udokumentowany przykład dał Ticketmaster przy sprzedaży biletów na trasę The Eras Tour Taylor Swift 15 listopada 2022 roku. Firma przyznała w oficjalnym wyjaśnieniu, że ataki botów i fani bez kodów dostępu wygenerowali 3,5 mld żądań do systemu, czyli 4 razy więcej niż poprzedni rekord. Część sprzedaży trzeba było spowolnić albo przesunąć, a według szacunku Ticketmastera problemy dotknęły około 15 procent interakcji w serwisie, w tym błędy walidacji kodów, przez które fani tracili bilety już włożone do koszyka.

Wbrew pozorom

Tego samego dnia Ticketmaster sprzedał ponad 2 mln biletów, najwięcej w historii dla jednego artysty w ciągu jednego dnia. Z punktu widzenia przychodu dzień był rekordowy, a mimo to zapamiętano go jako awarię, która trafiła na pierwsze strony gazet. To dobra lekcja dla każdego, kto mierzy sukces wydania tylko sprzedażą: przy wydajności liczy się też to, ilu klientów odeszło z frustracją, a tego raport sprzedaży nie pokazuje.

Wasz szczyt nie musi mieć 3,5 mld żądań, żeby skończyć się podobnie. Wystarczy kampania mailowa wysłana do całej bazy o 10:00, termin składania wniosków ostatniego dnia miesiąca albo wzmianka w mediach. U Autono, firmy z branży wynajmu samochodów, przygotowanie na sezon pozwoliło utrzymać stabilny system przy obciążeniu większym o 120 procent w wakacje i zmniejszyć liczbę błędów krytycznych w procesach rezerwacji o 55 procent. Różnica między tymi dwoma scenariuszami to test zrobiony przed szczytem, a nie po nim.

Kiedy test wydajności jest obowiązkowy, a kiedy wystarczy pomiar?

Test jest obowiązkowy, gdy nadchodzi zdarzenie, które zmienia obciążenie albo architekturę, i gdy niedostępność ma cenę wyższą niż sam test. Stały pomiar wystarczy, gdy ruch jest przewidywalny, a zmiany drobne. Poniższa tabela to zestaw sytuacji, które w naszej praktyce najczęściej uzasadniają osobny test.

Sytuacja Test obowiązkowy? Co sprawdzić Kiedy zacząć
Kampania, premiera, wyprzedaż sezonowa tak szczyt z analityki x zapas 50 procent, ścieżka zakupu i płatności 4 do 6 tygodni przed datą
Migracja do chmury albo nowej bazy danych tak porównanie z wynikami sprzed migracji na tym samym scenariuszu przed przełączeniem ruchu
Nowa integracja (płatności, KSeF, zewnętrzne API) tak limity dostawcy, czasy odpowiedzi, zachowanie przy błędach po stronie partnera po pierwszej działającej wersji integracji
Termin ustawowy albo koniec miesiąca w systemie wniosków tak ostatnie 24 godziny przed terminem jako scenariusz szczytowy kwartał wcześniej
System finansowy objęty rozporządzeniem DORA tak, w programie testów testy wydajności jako część programu testowania odporności zgodnie z planem rocznym
Drobna zmiana interfejsu przy stabilnym ruchu nie pomiar Core Web Vitals i krótki test dymny obciążenia w CI przy każdym wydaniu

Źródło: opracowanie Quality Island; rozporządzenie (UE) 2022/2554 (DORA), art. 25 ust. 1.

Wiersz o DORA nie jest przesadą. Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2022/2554 w art. 25 ust. 1 wymienia testy wydajności wprost wśród testów, które przewiduje program testowania operacyjnej odporności cyfrowej, obok testów scenariuszowych, kompleksowych i penetracyjnych, a art. 24 ust. 6 wymaga od podmiotów finansowych innych niż mikroprzedsiębiorstwa testów systemów wspierających krytyczne lub istotne funkcje co najmniej raz w roku. Opisujemy tu wymogi, nie udzielamy porady prawnej; szczegóły i zakres podmiotowy omawiamy w tekście rozporządzenie DORA a testy.

Dlaczego testy wydajnościowe są tak ważne: sytuacje, w których test jest niezbędny, od nowych systemów po wymagania regulacyjne
Kiedy test wydajności przestaje być opcją: nowe systemy, wydarzenia generujące ruch, zmiany w kodzie lub infrastrukturze, systemy krytyczne i wymogi regulacyjne.

Najtańszy moment na test to etap wymagań: zapisanie, że „lista produktów odpowiada w 95 procentach przypadków poniżej 800 ms przy 180 zamówieniach na minutę”, kosztuje jedno zdanie, a pozwala później mierzyć zamiast dyskutować. Takie progi wpisujcie od razu do planu testów.

Jak wygląda test, który odpowiada na pytanie „czy wydajemy”?

Taki, w którym kryterium sukcesu jest zapisane w kodzie, a nie w głowie testera. Poniższy skrypt w k6 modeluje szczyt kampanii otwartym modelem obciążenia, czyli liczbą zamówień rozpoczynanych na minutę, a nie liczbą wirtualnych użytkowników. To ważne, bo prawdziwi klienci nie czekają, aż system skończy obsługiwać poprzednich: przychodzą w swoim tempie. Liczby w skrypcie są przykładowe, Wy podstawiacie dane z własnej analityki.

import http from 'k6/http';
import { check, sleep } from 'k6';

// Pytanie biznesowe: czy wytrzymamy szczyt kampanii z zapasem 50%?
// Z analityki: 120 zamówień na minutę w szczycie, x 1,5 = 180.
export const options = {
  scenarios: {
    szczyt_kampanii: {
      executor: 'ramping-arrival-rate',
      startRate: 20,
      timeUnit: '1m',
      preAllocatedVUs: 100,
      maxVUs: 400,
      stages: [
        { target: 120, duration: '5m' },  // zwykły szczyt
        { target: 180, duration: '5m' },  // szczyt kampanii z zapasem
        { target: 180, duration: '20m' }, // utrzymanie
        { target: 0, duration: '2m' },
      ],
    },
  },
  thresholds: {
    http_req_failed: ['rate<0.01'],
    'http_req_duration{name:lista_produktow}': ['p(95)<800'],
    'http_req_duration{name:zamowienie}': ['p(95)<1500', 'p(99)<3000'],
    checks: ['rate>0.99'],
  },
};

const BASE = 'https://staging.example.com';

export default function () {
  const lista = http.get(`${BASE}/api/produkty?kategoria=buty`, {
    tags: { name: 'lista_produktow' },
  });
  check(lista, { 'lista 200': (r) => r.status === 200 });
  sleep(3);

  const zamowienie = http.post(
    `${BASE}/api/zamowienia`,
    JSON.stringify({ produktId: 1042, ilosc: 1 }),
    { headers: { 'Content-Type': 'application/json' }, tags: { name: 'zamowienie' } },
  );
  check(zamowienie, { 'zamówienie 201': (r) => r.status === 201 });
}

Każdy próg to osobna decyzja biznesowa. Mniej niż 1 procent nieudanych żądań, lista produktów szybciej niż 800 ms dla 95 procent żądań, zamówienie szybciej niż 1,5 s dla 95 procent i 3 s dla 99 procent. Według dokumentacji k6 wystarczy, że jeden próg nie zostanie spełniony, a cały test kończy się kodem błędu, więc pipeline CI może zatrzymać wydanie bez ludzkiej interpretacji. Testy obciążeniowe uruchamiajcie wyłącznie na środowisku, którym zarządzacie, i uprzedźcie dostawców zewnętrznych API, bo ich limity też są częścią testu.

Jeśli wolicie inne narzędzie, ten sam model zbudujecie w JMeterze, Gatlingu albo Locust. Każde z nich ćwiczymy na osobnym szkoleniu: testowanie wydajnościowe w JMeter, Gatling i Locust.

Jak czytać wynik, żeby nie oszukać samych siebie?

Patrzcie na percentyle i na trend, nie na średnią. Książka Google „Site Reliability Engineering” z 2016 roku pokazuje system, w którym typowe żądanie trwa około 50 ms, a 5 procent żądań jest 20 razy wolniejszych; monitorowanie samej średniej nie pokazywało żadnej zmiany, choć ogon rozkładu zmieniał się mocno w ciągu dnia. Ci najwolniejsi to często klienci z największym koszykiem, bo ich zamówienie dotyka najwięcej danych.

Co widzicie w wyniku Co to zwykle znaczy Co robicie
Średnia w normie, p99 kilka razy wyższy część żądań czeka na zasób: blokady w bazie, pula połączeń, garbage collector profilowanie najwolniejszych żądań, przegląd zapytań
Przepustowość przestaje rosnąć mimo rosnącego obciążenia osiągnięty sufit jednego elementu, np. bazy albo zewnętrznego API pomiar zasobów każdej warstwy, test samego podejrzanego elementu
Odsetek błędów rośnie skokowo po kilku minutach wyczerpane limity: połączenia, wątki, limit zapytań partnera konfiguracja limitów i kolejek, obsługa błędów po stronie aplikacji
Czas odpowiedzi rośnie powoli przez cały test wyciek pamięci albo rosnąca kolejka dłuższy test wytrzymałościowy z wykresem pamięci
Wszystkie progi zielone przy 100 procent szczytu, czerwone przy 150 brak zapasu na kampanię decyzja biznesowa: skalowanie, optymalizacja albo ograniczenie kampanii

Źródło: opracowanie Quality Island na podstawie praktyki projektowej; Google, Site Reliability Engineering, rozdział 4, 2016.

Wynik testu zawsze odnosicie do pomiaru z prawdziwego ruchu. Po stronie przeglądarki web.dev, serwis zespołu Chrome, podaje progi Core Web Vitals: dobra interakcja to INP do 200 ms, a dobre ładowanie to LCP do 2,5 s, mierzone dla 75. percentyla wizyt. Jeśli test serwera jest zielony, a dane z przeglądarek czerwone, problem siedzi w interfejsie, a nie w backendzie. Kiedy potrzebujecie kogoś, kto przeprowadzi pełną diagnozę z rekomendacjami, to zakres testów wydajności Quality Island.

Jak przekonać zarząd do testów wydajnościowych w 15 minut?

Pokazując rachunek, a nie wykres czasu odpowiedzi. Na pytanie, dlaczego testy wydajnościowe są tak ważne, najlepiej odpowiada kwota w złotych. Zarząd nie kupuje percentyli, kupuje mniejsze ryzyko utraty przychodu. Poniżej przykład liczbowy, który u naszych klientów zajmuje kwadrans, bo wszystkie dane są już w analityce i w finansach. Podstawcie swoje liczby.

krok 1

Przychód w godzinie szczytu

Przykład: kampania przynosi 40 000 zł w najlepszej godzinie. Liczbę bierzecie z analityki z poprzedniej akcji.

krok 2

Scenariusz awarii

Przykład: 3 godziny spowolnienia, w których 30 procent klientów porzuca koszyk. To 3 x 40 000 x 0,3 = 36 000 zł utraconego przychodu.

krok 3

Koszty uboczne

Nadgodziny zespołu, rekompensaty, obsługa reklamacji, wydatek na reklamę, która przyprowadziła ruch donikąd.

krok 4

Koszt testu

Przygotowanie scenariusza, środowiska i analizy. Porównujecie go z sumą kroków 2 i 3, a nie z zerem.

Dobrze działa też porównanie z kosztem opóźnienia wydania, bo test wydajności wykonany za późno kończy się albo ryzykiem, albo przesunięciem terminu. Ten sam sposób myślenia o koszcie dnia opóźnienia opisuje Strefa QA w analizie kosztu regresji przed releasem. Jeśli chcecie zacząć od oceny, gdzie w Waszym procesie brakuje testów niefunkcjonalnych, sprawdzamy to w audycie QA. A jeśli testerzy w Waszym zespole mają przejąć część tej pracy, praktyczne zadania na sprint, łącznie z wyliczeniem obciążenia z analityki, znajdziecie w tekście rola testera w projekcie.

Co zabrać z tego artykułu

01Testy wydajnościowe są tak ważne, bo wolna aplikacja traci pieniądze jak zepsuta: 0,1 s szybciej to 8,4 procent więcej konwersji w handlu według Deloitte dla Google.

02Godzina przestoju kosztuje ponad 300 000 USD w ponad 90 procentach średnich i dużych firm według ITIC 2024. Policzcie własną liczbę przed rozmową o budżecie.

03Test jest obowiązkowy przed kampanią, migracją, nową integracją i terminem ustawowym, a w finansach także z mocy art. 25 ust. 1 DORA.

04Kryteria sukcesu zapiszcie w skrypcie jako progi p95, p99 i błędów. Wtedy pipeline sam odpowiada na pytanie „czy wydajemy”.

05Czytajcie percentyle i trend, nie średnią. Ogon rozkładu to często klienci z największym koszykiem.

Źródło: Deloitte Digital dla Google, 2020; ITIC, 2024; Ticketmaster, 2022; rozporządzenie (UE) 2022/2554; Google SRE, 2016; case studies Argos i Autono, Quality Island.

Macie przed sobą kampanię, migrację albo termin, przy którym system nie może zwolnić? Testy wydajności Quality Island kończą się raportem z progami, wąskimi gardłami i decyzją, czy wydawać.

Zobaczcie testy wydajności


Powiązane na blogu Quality Island

Pełna lista źródeł

Co o tym sądzisz?

Dodaj komentarz

Bądź na bieżąco
Strefa QA, portal z eksperckimi artykułami o jakości oprogramowania
Bądź na bieżąco
Szkolenie Specjalista ds. AI w organizacji: program przekwalifikowujący
Specjalista ds. AI w organizacji
Specjalista ds. AI w organizacji: program przekwalifikowujący

4 400,00 zł

03.02.27, 14.04.27, 02.06.27
5 dni
Szkolenie Inżynier AI: program przekwalifikowujący dla specjalistów IT
Inżynier AI
Inżynier AI: program przekwalifikowujący dla specjalistów IT

6 900,00 zł

12.01.27, 16.03.27
8 tygodni
KURS ONLINE: PAQT Foundation, AI w pracy testera, przygotowanie do egzaminu

790,00 zł

Popularne artykuły
Język Gherkin: co to jest i jak go używać w testowaniu oprogramowania, grafika Quality Island
Język Gherkin: co to jest i jak go używać w testowaniu oprogramowania
Smoke test: co to jest i czym różni się od sanity testu, grafika Quality Island
Smoke test: co to jest, kiedy go uruchamiać i czym różni się od sanity testu
Jak zostać testerem oprogramowania: ścieżka krok po kroku, grafika Quality Island
Jak zostać testerem oprogramowania: ścieżka krok po kroku bez dyplomu informatyka
Najnowsze artykuły
Kompetencje testera w erze AI, macierz umiejętności dla testera manualnego, automatyzującego i lidera QA, grafika Quality Island
Kompetencje testera w erze AI: macierz umiejętności na 2027 dla testera manualnego, automatyzującego i lidera QA
Testy penetracyjne a testy bezpieczeństwa: różnice, ceny w zł i szablon zakresu, grafika Quality Island
Testy penetracyjne a testy bezpieczeństwa: różnice, ceny w zł i szablon zakresu
Audyt WCAG 2.2: przebieg, ceny w zł i szablon zapytania ofertowego, okładka artykułu Quality Island
Audyt WCAG 2.2: przebieg, ceny w zł i szablon zapytania ofertowego
Popularne kategorie

Grupa marek jakości oprogramowania

Jakość oprogramowania w Polsce ma swój adres

Quality Island