Blog

Miroslav Renda

Miroslav Renda

Senior Test Manager

Zátěžové testování v moderním vývoji softwaru

Vzdělávání Přístupy k testování Testování výkonnosti

Jak se chová vaše aplikace pod tlakem? V dnešním článku se zaměříme na zátěžové testování – jednu z klíčových metod testování výkonnosti. Zjistíte, jak se definuje typická zátěž a co vše můžete díky zátěžovým testům odhalit ještě před spuštěním. Navíc se podíváme na praktický příklad pomocí nástroje k6.

V tomto článku navážeme na základní informace o různých typech testování výkonnosti, které byly shrnuty v předchozím článku a zaměříme se zátěžové testování.  

Zátěžové testování je klíčovou součástí testování výkonnosti, které hodnotí chování a odezvu aplikace při očekávané zátěži. Simuluje typické zátěžové situace, jako je počet souběžných uživatelů nebo transakcí, a sleduje důležité metriky výkonnosti, jako jsou doba odezvy, propustnost a stabilita serveru. 

Co znamená „typická zátěž“? 

Definice „typické zátěže“ se liší podle kontextu. Například Google musí zvládat miliony souběžných vyhledávání s odezvou kratší než jednu sekundu, zatímco malá banka může považovat za „typickou“ zátěž 1000 souběžných uživatelů s maximální dobou odezvy 3 sekundy. 

Zátěžové testování umožňuje expertům na vývoj a testování systémů optimalizovat architekturu, procesy a díky sledování chování systému za různých podmínek odhalit potenciální problémy ještě před uvedením nových funkcí do provozu. V dnešní rychlé době, kdy první dojem hraje klíčovou roli, je tento typ testování nepostradatelný. 

Jak vypadá průběh zátěže při zátěžovém testování? 

Průběh zátěžového testu je možné vizualizovat v podobě grafu simulovaných souběžných uživatelů (nazývaných virtuální uživatelé, VUs) v čase. Na začátku testu probíhá takzvaná ramp-up fáze, kdy se počet VUs postupně zvyšuje. Jejím cílem je nezahltit testovaný server skokovým nárůstem počtu připojených uživatelů a tím věrněji simulovat reálnou zátěž. Poté následuje fáze stabilní zátěže a na závěr fáze ramp-down, kdy se počet VUs snižuje.  

Load Test (průběh zátěže)

Uvedený obrázek představuje jednoduchý test, kdy zátěž tvoří pouze jeden scénář (např. typická cesta uživatele při nákupu v e-shopu). V praxi může být při zátěžovém testu simulován souběh zátěže různých scénářů (např. souběh aktivity uživatele e-shopu se spuštěním dávkového jobu).  

Praktický příklad: zátěžové testování s nástrojem k6 

Podívejme se, jak efektivně provádět zátěžové testování pomocí open-source nástroje k6. Tento nástroj je skvělý pro rychlé nastavení a spouštění zátěžových testů vytvořených v JavaScriptu. 

1. Instalace k6: Postupujte podle pokynů na oficiálních stránkách k6, kde najdete návod k instalaci. 

2. Vytvoření skriptu: Vytvořte nový soubor, například load.js, a přidejte následující kód: 

import http from "k6/http";
import { sleep } from "k6";

// Define the stages of the test
export let options = {
  stages: [
    {
      duration: "30s",
      target: 240,
    },
    {
      duration: "290s",
      target: 240,
    },
    {
      duration: "10s",
      target: 0,
    },
  ],
};

// Virtual users script
export default function () {
  http.get("https://test.k6.io");
  sleep(1);
  http.get("https://test.k6.io/contacts.php");
  sleep(2);
  http.get("https://test.k6.io/flip_coin.php");
  sleep(2);
}


3. Spuštění testu: V terminálu přejděte do složky se skriptem a spusťte test pomocí příkazu:  k6 run load.js 

V uvedeném testovacím skriptu jsou v poli options.stages definovány 3 fáze testu:  

  • ramp-up fáze trvající 30 sekund, po kterou naroste počet současných uživatelů z 0 na 240; 
  • fáze stabilní zátěže po dobu 290 sekund, kdy server „bombardují“ požadavky 240 současných uživatelů; 
  • ramp-down fáze trvající 10 sekund, po kterých dojde k postupnému snížení počtu současných uživatelů na 0. 

Testovací scénář pak spočívá v postupném volání  URL https://test.k6.iohttps://test.k6.io/contacts.php a https://test.k6.io/flip_coin.php s prodlevami mezi požadavky definovanými funkcí sleep() (tzv. think-time). 

Po dokončení testu poskytne k6 souhrnné statistiky, jako jsou časy odezvy, počet požadavků za sekundu a procento chyb.  

Souhrnné statistiky

Analýza těchto metrik vám pomůže pochopit, jak si vaše aplikace stojí pod zátěží a identifikovat možné problémy nebo slabá místa. 

Závěr 

Zátěžové testování je klíčovým typem nefunkcionálního testování, které prověřuje, jak aplikace zvládá očekávanou zátěž. Simuluje typické aktivity uživatelů při definovaném počtu současných uživatelů nebo transakcí a měří klíčové metriky výkonnosti, jako jsou doby odezvy a stabilita systému. 

Zahrnutí zátěžového testování s využitím efektivních nástrojů pro měření výkonnosti, jako jsou k6, Gatling, JMeter či LoadRunner, do celkového mixu testů, napomůže vyšší robustnosti, škálovatelnosti systému a v konečném důsledku zvýší spokojenost uživatelů. 

Nenechejte si ujít nejnovější informace.

Vyplňte nám vaši e-mailovou adresu a dostávejte pravidelnou nálož informací ohledně nadcházejících školení, akcí a testingového know-how.

Odesláním tohoto formuláře souhlasíte se zpracováním osobních údajů dle GDPR a se zasíláním marketingových e-mailů.