Što je testiranje opterećenja? (Primjeri)

⚡ Pametni sažetak

Testiranje opterećenja mjeri kako se softverska aplikacija ponaša kada joj istovremeno pristupa više korisnika, do očekivanog vrhunca. Identificira maksimalni operativni kapacitet, uska grla koja ga ograničavaju i je li trenutna infrastruktura dovoljna.

  • 👥 Osnovna definicija: Nefunkcionalni test koji primjenjuje očekivano vršno korisničko opterećenje i mjeri odziv.
  • 🇧🇷 Glavni pokazatelj: Vrijeme odziva, koje mora biti kvantitativno, relevantno, realno, ostvarivo i mjerljivo.
  • 🏗️ Što pronalazi: Maksimalni kapacitet, nedostaci infrastrukture, ograničenja baze podataka i problemi s konfiguracijom.
  • 📉 Opterećenje u odnosu na stres: Opterećenje se zaustavlja na očekivanom vrhuncu; naprezanje namjerno prolazi pored njega kako bi se pronašla točka pucanja.
  • 🛠️ Opcije alata: JMeter, Gatling i k6 su otvorenog koda; LoadRunner je utvrđeni komercijalni izbor.
  • 📋 Preduvjet: Pokrenite ga samo kada je aplikacija funkcionalno stabilna, inače nedostaci maskiraju rezultate performansi.

Što je testiranje opterećenja

Što je testiranje opterećenja?

Testiranje opterećenja je nefunkcionalni proces testiranja softvera u kojem se izvedba softverske aplikacije testira pod određenim očekivanim opterećenjem. Određuje kako se softverska aplikacija ponaša dok joj istovremeno pristupa više korisnika. Cilj testiranja opterećenja je poboljšati uska grla performansi i osigurati stabilnost i glatko funkcioniranje softverske aplikacije prije implementacije.

Ovo testiranje obično identificira –

  • Maksimalni radni kapacitet aplikacije
  • Odredite je li trenutna infrastruktura dovoljna za pokretanje aplikacije
  • Održivost primjene s obzirom na vršno korisničko opterećenje
  • Broj istodobnih korisnika koje aplikacija može podržati i skalabilnost kako bi se omogućilo većem broju korisnika da joj pristupe.

To je vrsta nefunkcionalnog testiranja. U softverskom inženjerstvu, testiranje opterećenja obično se koristi za klijent/poslužitelj, web-bazirane aplikacije – i intranet i internet.

Testiranje opterećenja

Zašto je potrebno testiranje opterećenja?

Neka iznimno popularna mjesta pretrpjela su ozbiljne zastoje kada su ostvarila ogroman promet. Web-mjesta za e-trgovinu puno ulažu u reklamne kampanje, ali ne i u testiranje opterećenja kako bi se osigurala optimalna izvedba sustava, kada taj marketing donosi promet.

Primjeri testiranja opterećenja

  • Toysrus.com nije mogao podnijeti promet koji je generirala vlastita reklamna kampanja, gubeći i marketinške troškove i prodaju koju je trebao ostvariti.
  • Web-mjesto zrakoplovne tvrtke nije moglo podnijeti više od 10000 XNUMX korisnika tijekom festivalske ponude.
  • Encyclopedia Britannica proglasila je besplatni pristup svojoj online bazi podataka promotivnom ponudom. Tjednima nisu mogli držati korak s navalom prometa.

Mnoge web stranice pate od odgođenog učitavanja kada naiđu na veliki promet. Nekoliko činjenica –

  • Napuštanje stranice naglo raste nakon otprilike 3 sekunde učitavanja, a učinak se pogoršava na mobilne veze.
  • Spore stranice koštaju e-trgovine mjerljivih prihoda pri svakom posjetu, zbog čega se performanse tretiraju kao poslovna metrika, a ne kao tehnička.

Zašto testiranje opterećenja?

  • Testiranje opterećenja daje povjerenje u sustav i njegovu pouzdanost i performanse.
  • Testiranje opterećenja pomaže u prepoznavanju uskih grla u sustavu pod teškim scenarijima stresa korisnika prije nego što se dogode u proizvodnom okruženju.
  • Testiranje opterećenja daje izvrsnu zaštitu od loših performansi i prilagođava se komplementarnim strategijama za upravljanje performansama i praćenje proizvodnog okruženja.

Ciljevi testiranja opterećenja

Testiranje učitavanja identificira sljedeće probleme prije premještanja aplikacije na tržište ili proizvodnju:

  • Vrijeme odgovora za svaku transakciju
  • Performanse komponenti sustava pod različitim opterećenjima
  • Izvedba komponenti baze podataka pod različitim opterećenjima
  • Kašnjenje mreže između klijenta i poslužitelja
  • Problemi s dizajnom softvera
  • Problemi s konfiguracijom poslužitelja kao što su web poslužitelj, aplikacijski poslužitelj, poslužitelj baze podataka itd.
  • Problemi s hardverskim ograničenjima kao što su maksimizacija CPU-a, ograničenja memorije, usko grlo mreže itd.

Testiranje opterećenja će odrediti treba li sustav fino podesiti ili je potrebna modifikacija hardvera i softvera za poboljšanje performansi. Kako biste učinkovito proveli testiranje opterećenja, možete koristiti različite alati za testiranje performansi koji su dostupni kako bi vam pomogli identificirati područja za poboljšanje.

Preduvjeti za testiranje opterećenja

Glavna metrika za testiranje opterećenja je vrijeme odziva. Prije nego započnete testiranje opterećenja, morate odrediti –

  • Je li vrijeme odgovora već izmjereno i uspoređeno – kvantitativno
  • Je li vrijeme odgovora primjenjivo na poslovni proces – Relevantno
  • Je li vrijeme odgovora opravdano – Realno
  • Da li je vrijeme odgovora moguće postići – moguće
  • Bilo da je vrijeme odziva mjerljivo alatom ili štopericom – mjerljivo

Postavljanje okruženja prije testiranja opterećenja

Hardver Platform Konfiguracija softvera
  • Poslužiteljski strojevi
  • Procesori
  • memorija
  • Pohrana diska
  • Učitaj konfiguraciju strojeva
  • Konfiguracija mreže
  • Operating sustav
  • Softver poslužitelja

Strategije testiranja opterećenja

Postoji mnogo načina za izvođenje testiranja opterećenja. Slijedi nekoliko strategija testiranja opterećenja-

Strategije testiranja opterećenja

  • Ručno testiranje opterećenja: Ovo je jedna od strategija za izvođenje testiranja opterećenja, ali ne daje ponovljive rezultate, ne može pružiti mjerljive razine stresa na aplikaciji i nemoguće je koordinirati proces.
  • Vlasnički razvijeni alati za ispitivanje opterećenja: Organizacija koja shvaća važnost testiranja opterećenja može izraditi vlastite alate za izvođenje testova opterećenja.
  • Alati za testiranje opterećenja otvorenog koda: Postoji nekoliko alata za testiranje opterećenja dostupnih kao otvoreni izvorni kodovi koji su besplatni. Možda nisu tako sofisticirani kao njihovi plaćeni parnjaci, ali ako imate ograničen budžet, oni su najbolji izbor.
  • Alati za testiranje opterećenja poslovne klase: Obično dolaze s mogućnošću snimanja/reprodukcije. Podržavaju veliki broj protokola. Mogu simulirati iznimno velik broj korisnika.

Kako napraviti testiranje opterećenja

Proces testiranja opterećenja može se ukratko opisati na sljedeći način –

  1. Stvorite namjenski Ispitna okolina za ispitivanje opterećenja
  2. Definirajte scenarije testiranja opterećenja
  3. Odredite transakcije testiranja opterećenja za aplikaciju
    • Pripremite podatke za svaku transakciju
    • Potrebno je predvidjeti broj korisnika koji pristupaju sustavu
    • Odredite brzine veze. Neki korisnici mogu biti povezani putem iznajmljenih linija, dok drugi mogu koristiti dial-up
    • Odredite različite preglednike i operativne sustave koje koriste korisnici 
    • Konfiguracija svih poslužitelja kao što su web, aplikacijski i DB poslužitelji
  4. Izvođenje i praćenje testnog scenarija. Prikupljanje raznih metrika
  5. Analizirajte rezultate. Dajte preporuke
  6. Fino podesite sustav
  7. Ponovno testiranje

Smjernice za testiranje opterećenja

Smjernice za ispitivanje opterećenja

  1. Testiranje opterećenja treba planirati nakon što aplikacija postane funkcionalno stabilna.
  2. Velik broj jedinstvenih podataka trebao bi biti spreman u skupu podataka
  3. Broj korisnika treba odrediti za svaki scenarij ili skriptu
  4. Izbjegavajte stvaranje detaljnih zapisa kako biste sačuvali IO prostor na disku
  5. Pokušajte izbjeći preuzimanje slika na stranici
  6. U procesu izvođenja testnih slučajeva testiranja opterećenja, konzistentnost vremena odgovora tijekom proteklog razdoblja treba se bilježiti i isto se treba usporediti s različitim testnim izvođenjima.

Razlika između testiranja opterećenja i testiranja naprezanja

Testiranje opterećenja Ispitivanje stresa
Testiranje opterećenja identificira uska grla u sustavu pod različitim radnim opterećenjima i provjerava kako sustav reagira kada se opterećenje postupno povećava Ispitivanje stresa određuje točku loma sustava kako bi otkrio maksimalnu točku nakon koje se lomi.
Da biste prepoznali gornju granicu sustava, postavite SLA aplikacije i provjerite kako sustav može podnijeti veliko opterećenje. Provjeriti kako se sustav ponaša pod ekstremnim opterećenjima i kako se oporavlja od kvara.
Generiranje povećanog opterećenja web aplikacije glavni je cilj testiranja opterećenja. Testiranje otpornosti na stres ima za cilj osigurati da se pod iznenadnim velikim opterećenjem tijekom dužeg trajanja poslužitelji ne sruše.
Atributi koji se provjeravaju u testu opterećenja su vršna izvedba, količina poslužitelja i vrijeme odziva. Ova vrsta testiranja provjerava vrijeme odziva stabilnosti itd.
U ispitivanju opterećenja granica opterećenja je prag loma. Kod testiranja naprezanja granica opterećenja je iznad praga prekida.

Razlika između funkcionalnog i testiranja opterećenja

Funkcionalno ispitivanje Testiranje opterećenja
Rezultati funkcionalnih testova lako su predvidljivi jer imamo definirane odgovarajuće korake i preduvjete Rezultati testova opterećenja su nepredvidivi
Rezultati funkcionalnih testova malo variraju Rezultati ispitivanja opterećenja drastično variraju
Učestalost izvođenja Funkcionalno ispitivanje će biti visoka Učestalost izvođenja testiranja opterećenja bit će niska
Rezultati funkcionalnih ispitivanja ovise o podacima ispitivanja Testiranje opterećenja ovisi o broju korisnika.

Alati za testiranje opterećenja

LoadRunner

LoadRunner, izvorno od HP-a, a sada dio OpenText Nakon akvizicije tvrtke Micro Focus, testira aplikacije pod normalnim i vršnim opterećenjem. Generira opterećenje putem virtualnih korisnika koji emuliraju stvarni mrežni promet i grafički izvještava o rezultatima.

Pročitajte više u Vodič za LoadRunner.

Apache JMeter

Otvoreni izvor Java alat i najčešće korištena besplatna opcija. Podržava HTTP, JDBC, JMS, FTP i više, pohranjuje planove testiranja kao XML i integrira se u CI cjevovode. Pogledajte JMeter udžbenik za šetnju.

Gatling

Alat otvorenog koda čiji su testovi napisani kao kod u Scali ili JavaOmogućuje visoku konkurentnost na skromnoj opremi i izrađuje detaljna HTML izvješća, što odgovara timovima koji preferiraju skripte za testiranje s kontroliranim verzijama.

k6

Alat otvorenog koda s testovima napisanim u JavaSkripta, dizajnirana za testiranje performansi u vlasništvu programera unutar CI cjevovoda, a ne kao zasebna QA aktivnost.

Odabir alata

Odabrati JMeter Za najširu pokrivenost protokola bez ikakvih troškova, Gatling ili k6 kada tim želi da se testovi čuvaju u kontroli izvornog koda uz aplikaciju, te komercijalni alat poput LoadRunnera kada podrška za protokol poduzeća i pomoć dobavljača opravdavaju licencu.

Prednosti i nedostaci testiranja opterećenja

Sljedeće su prednosti testiranja opterećenja:

  • Identifikacija uskih grla u izvedbi prije proizvodnje
  • Poboljšava skalabilnost sustava
  • Minimizirajte rizik vezan uz zastoj sustava
  • Smanjeni troškovi kvara
  • Povećajte zadovoljstvo kupaca

Nedostaci testiranja opterećenja:

  • Većina alata zahtijeva znanje programiranja za skriptiranje realističnih scenarija.
  • Alati mogu biti skupi jer cijena ovisi o broju podržanih virtualnih korisnika.

Ključne metrike koje treba pratiti tijekom testa opterećenja

Odjeljak o preduvjetima utvrđuje vrijeme odziva kao glavnu metriku. U praksi, izvješće o testu opterećenja treba šesteroznamenkasti broj, jer samo vrijeme odziva ne može reći zašto se sustav usporio.

metrički Što vam govori Znak upozorenja
Prosječno vrijeme odziva Tipično korisničko iskustvo Raste kako se opterećenje povećava
Vrijeme odgovora 95. percentila Iskustvo najsporijih korisnika Daleko iznad prosjeka
propusnost Zahtjevi uspješno obrađeni u sekundi Spljoštavanje ili spuštanje dok se teret diže
Stopa pogreške Udio neuspjelih ili isteklih zahtjeva Svaki porast iznad dogovorenog praga
Istovremeni korisnici Stvarno postignute simultane sesije Niže od predviđenog scenarija
Korištenje resursa poslužitelja Prostor za CPU, memoriju, disk i mrežu Bilo koji resurs iznad otprilike 80 posto

Propusnost čitanja zajedno s vremenom odziva. Rastuće vrijeme odziva s porastom propusnosti jednostavno znači da je sustav zauzetiji. Rastuće vrijeme odziva s pada propusnost znači da je premašila svoj kapacitet i sada gubi rad, što je i poanta koju test i pronalazi.

Nikada ne prijavljujte samo prosjek. Prosjek od 900 ms s 95. percentilom od 1.1 sekunde opisuje konzistentan sustav. Isti prosjek s 95. percentilom od 11 sekundi znači da jedan korisnik od dvadeset ima neprihvatljivo iskustvo koje prosjek prikriva.

Kako se ovaj test uspoređuje s drugim testovima performansi

Testiranje performansi je obitelj testova koji se razlikuju po obliku primijenjenog opterećenja, zbog čega ih je tako lako zamijeniti.

Vrsta ispitivanja Što je povećano Pitanje na koje odgovara
Ispitivanje opterećenja Istodobni korisnici, do očekivanog vrhunca Ostvaruje li ciljeve u uvjetima normalnog vršnog prometa?
Ispitivanje volumena Podaci pohranjeni u bazi podataka Snalazi li se s rastom skupa podataka?
Ispitivanje napona Opterećenje preko kapaciteta, do kvara Gdje se prekida i kako?
Ispitivanje šiljaka Učitavanje, trenutno i izuzetno Hoće li preživjeti i oporaviti se od šoka?
Ispitivanje izdržljivosti Trajanje, pri normalnom opterećenju Smanjuje li se performansa s vremenom?
Ispitivanje namakanjem Trajanje, resursi za gledanje Postoje li curenja memorije ili handlera?
Ispitivanje stabilnosti Različiti uvjeti Ostaje li pouzdan kako se uvjeti mijenjaju?

Razlika koja je ovdje najvažnija: Testiranje volumena skalira podatke, testiranje opterećenja skalira korisnike. Izvješće koje se pokrene za dvije sekunde na deset tisuća redaka i dvije minute na deset milijuna redaka ima problem s volumenom, a ne s opterećenjem, i nikakva količina dodatnog kapaciteta poslužitelja to neće riješiti.

Pitanja i odgovori

Testiranje opterećenja primjenjuje očekivano vršno opterećenje i provjerava jesu li ciljevi ispunjeni. Testiranje otpornosti na stres namjerno premašuje kapacitet kako bi se pronašla točka prekida i potvrdilo da sustav zakaže i da se elegantno oporavlja.

Nakon što je aplikacija funkcionalno stabilna i dovoljno rano da se otkriveno usko grlo još uvijek može popraviti, pokretanje u posljednjem tjednu ne ostavlja vremena za djelovanje na temelju onoga što se pronađe.

JMeter, jer je besplatan, podržava najširi raspon protokola i ima najveći korpus dokumentacije. Prijeđite na Gatling ili k6 ako tim preferira testove napisane kao kod s kontroliranim verzijama.

Umjetna inteligencija izvodi realistične profile opterećenja iz zapisnika prometa u produkciji, automatski otkriva anomalije u rezultatima i predviđa koje će promjene koda vjerojatno smanjiti performanse prije nego što se zakaže izvođenje.

Da. Alati umjetne inteligencije pretvaraju snimljena korisnička putovanja ili API specifikacije u izvodljive skripte. Provjerite generirano vrijeme razmišljanja i parametrizaciju podataka, budući da nerealne vrijednosti daju obmanjujuće rezultate.

Sažmite ovu objavu uz: