Vodič za testiranje izvedbe
⚡ Pametni sažetak
Testiranje performansi je proces testiranja softvera koji procjenjuje brzinu aplikacije, vrijeme odziva, stabilnost, skalabilnost i korištenje resursa pod određenim opterećenjima. Identificira i uklanja uska grla prije implementacije, osiguravajući pouzdanost u stvarnim uvjetima.

Što je testiranje performansi?
Ispitivanje performansi je proces testiranja softvera koji se koristi za testiranje brzine, vremena odziva, stabilnosti, pouzdanosti, skalabilnosti i upotrebe resursa softverske aplikacije pod određenim radnim opterećenjem. Glavna svrha testiranja performansi je identificirati i ukloniti uska grla performansi u softverskoj aplikaciji. To je podskup inženjeringa performansi i također je poznat kao “Testiranje performansi”.
Fokus testiranja performansi je provjera sljedećeg:
- Brzina – Određuje hoće li aplikacija brzo reagirati
- skalabilnost – Određuje maksimalno korisničko opterećenje koje softverska aplikacija može podnijeti
- Stabilnost – Određuje je li aplikacija stabilna pod različitim opterećenjima
PFLB se fokusira na precizno testiranje performansi koje pomaže sustavima da ostanu stabilni pod nepredvidivim opterećenjima. Njihove usluge obuhvaćaju testiranje opterećenja, testiranje špica i mjerenje latencije, s jakim naglaskom na identificiranje degradacije performansi prije nego što utječe na krajnje korisnike.
Zašto je testiranje performansi važno?
Značajke i funkcionalnosti koje podržava softverski sustav nisu jedina briga. Performanse softverske aplikacije, poput vremena odziva, pouzdanosti, korištenja resursa i skalabilnosti, jesu važne. Cilj testiranja performansi nije pronaći greške, već ukloniti uska grla u performansama.
Testiranje performansi provodi se kako bi se dionicima pružile informacije o njihovoj aplikaciji u vezi s brzinom, stabilnošću i skalabilnošću. Što je još važnije, testiranje performansi otkriva što treba poboljšati prije nego što proizvod izađe na tržište. Bez testiranja performansi, softver će vjerojatno patiti od problema kao što su spor rad dok ga više korisnika koristi istovremeno, nedosljednosti između različitih operativnih sustava i loša upotrebljivost.
Testiranje performansi određuje zadovoljava li softver zahtjeve brzine, skalabilnosti i stabilnosti pod očekivanim opterećenjima. Aplikacije poslane na tržište s lošim pokazateljima performansi zbog nepostojećeg ili lošeg testiranja performansi vjerojatno će steći lošu reputaciju i neće ostvariti očekivane prodajne ciljeve.
Dakle, aplikacije kritične za misiju kao što su programi za lansiranje u svemir ili medicinska oprema za spašavanje života, treba testirati učinkovitost kako bi se osiguralo da rade dulje vrijeme bez odstupanja.
Prema Dunn & Bradstreetu, 59% kompanija s liste Fortune 500 ima procijenjenih 1.6 sati zastoja svaki tjedan. Uzimajući u obzir da prosječna tvrtka s liste Fortune 500 s najmanje 10,000 zaposlenika plaća 56 dolara po satu, dio troškova rada za vrijeme prekida rada za takvu organizaciju iznosio bi 896,000 dolara tjedno, što znači više od 46 milijuna dolara godišnje.
Samo a 5 minuta zastoja of GoogleProcjenjuje se da će .com (19. kolovoza 13.) koštati pretraživačkog diva čak $ 545,000.
Procjenjuje se da su tvrtke izgubile vrijednost prodaje 1100 USD po sekundi zbog nedavnog Amazon Ispad web usluge.
Stoga je testiranje performansi važno. Kako bismo vam pomogli u ovom procesu, pogledajte ovaj popis alati za testiranje performansi.
Vrste testiranja performansi
U testiranju softvera postoji prvenstveno šest vrsta testiranja performansi, koje su objašnjene u nastavku.
- Testiranje opterećenja – provjerava sposobnost aplikacije da radi pod očekivanim korisničkim opterećenjem. Cilj je identificirati uska grla u izvedbi prije nego što se softverska aplikacija pokrene.
- Ispitivanje napona - uključuje testiranje aplikacije pod ekstremnim radnim opterećenjem da se vidi kako se nosi s velikim prometom ili obradom podataka. Cilj je identificirati prijelomnu točku aplikacije.
- Testiranje izdržljivosti – To se radi kako bi se osiguralo da softver može podnijeti očekivano opterećenje tijekom duljeg vremenskog razdoblja. Pomaže u otkrivanju problema poput curenja memorije i iscrpljivanja resursa koji se pojavljuju samo tijekom neprekidnog rada.
- Ispitivanje šiljcima – testira reakciju softvera na iznenadne velike skokove opterećenja koje generiraju korisnici. Za razliku od testiranja stresa, testiranje skokova se posebno fokusira na to kako se sustav nosi i oporavlja od naglih, kratkotrajnih skokova prometa.
- Ispitivanje volumena – uključuje popunjavanje baze podataka velikom količinom podataka i praćenje ponašanja cjelokupnog softverskog sustava. Cilj je provjeriti performanse softverske aplikacije pod različitim količinama baze podataka.
- Testiranje skalabilnosti – određuje učinkovitost softverske aplikacije u "skaliranju" kako bi podržala povećanje korisničkog opterećenja. Pomaže u planiranju dodavanja kapaciteta vašem softverskom sustavu.
Uobičajeni problemi s izvedbom
Većina problema s performansama vrti se oko brzine, vremena odziva, vremena učitavanja i slabe skalabilnosti. Brzina je često jedan od najvažnijih atributa aplikacije. Sporo pokrenuta aplikacija izgubit će potencijalne korisnike. Testiranje performansi osigurava da aplikacija radi dovoljno brzo da zadrži pažnju i interes korisnika. Slijede uobičajeni problemi s performansama gdje je brzina ponavljajući faktor:
- Dugo vrijeme učitavanja – Vrijeme učitavanja obično je početno vrijeme potrebno za pokretanje aplikacije. To vrijeme općenito treba svesti na minimum. Iako je neke aplikacije nemoguće učitati za manje od minute, vrijeme učitavanja treba, ako je moguće, svesti na nekoliko sekundi.
- Loše vrijeme odgovora – Vrijeme odziva je vrijeme koje prođe od trenutka kada korisnik unese podatke u aplikaciju do trenutka kada aplikacija izda odgovor na taj unos. Općenito, to bi trebalo biti vrlo brzo. Ako korisnik mora predugo čekati, gubi interes.
- Loša skalabilnost – Softverski proizvod pati od slabe skalabilnosti kada ne može podnijeti očekivani broj korisnika ili kada ne može prihvatiti dovoljno širok raspon korisnika. Testiranje opterećenja treba učiniti kako biste bili sigurni da aplikacija može podnijeti predviđeni broj korisnika.
- usko grlo – Uska grla su prepreke u sustavu koje smanjuju ukupne performanse sustava. Uska grla nastaju kada pogreške u kodiranju ili problemi s hardverom uzrokuju smanjenje propusnosti pod određenim opterećenjima. Uska grla često uzrokuje jedan neispravan dio koda. Ključ za rješavanje problema uskog grla je pronaći dio koda koji uzrokuje usporavanje i pokušati ga tamo ispraviti. Uska grla se općenito rješavaju ispravljanjem loše izvedenih procesa ili dodavanjem dodatnog hardvera. Neki uobičajena uska grla u izvedbi je:
- Korištenje CPU-a
- Korištenje memorije
- Iskorištenje mreže
- Operating Ograničenja sustava
- Upotreba diska
Kako napraviti testiranje performansi
Metodologija usvojena za testiranje performansi može uvelike varirati, ali cilj za testove performansi ostaje isti. Može vam pomoći pokazati da vaš softverski sustav zadovoljava određene unaprijed definirane kriterije izvedbe. Ili može pomoći u usporedbi performansi dva softverska sustava. Također može pomoći u prepoznavanju dijelova vašeg softverskog sustava koji smanjuju njegovu izvedbu.
U nastavku je generički postupak o tome kako provesti testiranje performansi.

Korak 1) Odredite svoje okruženje za testiranje
Upoznajte svoje fizičko testno okruženje, produkcijsko okruženje i dostupne alate za testiranje. Razumite detalje hardverskih, softverskih i mrežnih konfiguracija korištenih tijekom testiranja prije nego što započnete proces testiranja. To će pomoći testerima da stvore učinkovitije testove. Također će pomoći u prepoznavanju mogućih izazova s kojima se testeri mogu susresti tijekom postupaka testiranja performansi.
Korak 2) Odredite kriterije prihvatljivosti izvedbe
To uključuje ciljeve i ograničenja za propusnost, vrijeme odziva i alokaciju resursa. Također je potrebno identificirati kriterije uspjeha projekta izvan tih ciljeva i ograničenja. Testeri bi trebali imati ovlasti za postavljanje kriterija i ciljeva performansi jer specifikacije projekta često neće uključivati dovoljno širok raspon mjerila performansi. Ponekad ih uopće neće biti. Kad god je to moguće, pronalaženje slične aplikacije za usporedbu dobar je način za postavljanje ciljeva performansi.
Korak 3) Plan & Design Testovi izvedbe
Odredite kako će se upotreba vjerojatno razlikovati među krajnjim korisnicima i odredite ključne scenarije za testiranje svih mogućih slučajeva upotrebe. Potrebno je simulirati niz krajnjih korisnika, planirati podatke za testiranje performansi i navesti koje će se metrike prikupljati.
Korak 4) Konfigurirajte testno okruženje
Pripremite okruženje za testiranje prije izvršenja. Također, rasporedite alate i ostale resurse. Što je moguće vjernije kopirajte produkcijsko okruženje kako biste osigurali da su rezultati testiranja realni i primjenjivi.
Korak 5) Implementirajte dizajn testa
Izradite testove izvedbe u skladu s vašim dizajnom testa.
Korak 6) Pokrenite testove
Izvršiti i pratiti testove.
Korak 7) Analizirajte, prilagodite i ponovno testirajte
Konsolidirajte, analizirajte i podijelite rezultate testiranja. Zatim ponovno podesite i testirajte kako biste vidjeli postoji li poboljšanje ili smanjenje performansi. Budući da se poboljšanja općenito smanjuju sa svakim ponovnim testiranjem, zaustavite se kada CPU uzrokuje usko grlo. Tada ćete možda morati razmotriti mogućnost povećanja snage CPU-a.
Mjerni podaci testiranja performansi: Praćeni parametri
Osnovni parametri koji se prate tijekom testiranja performansi uključuju:
- Upotreba procesora – količina vremena koju procesor provodi izvršavajući niti koje nisu u mirovanju.
- Upotreba memorije – količina fizičke memorije dostupne procesima na računalu.
- Vrijeme diska – količina vremena koliko je disk zauzet izvršavanjem zahtjeva za čitanje ili pisanje.
- Propusnost - prikazuje bitove u sekundi koje koristi mrežno sučelje.
- Privatni bajtovi – broj bajtova koje je proces dodijelio, a koji se ne mogu dijeliti među drugim procesima. Koriste se za mjerenje curenja memorije i korištenja.
- Predana memorija – količina korištene virtualne memorije.
- Memorijske stranice/sekundi – broj stranica zapisanih na disk ili pročitanih s diska kako bi se riješile tvrde pogreške stranica. Tvrde pogreške stranica nastaju kada se kod koji nije iz trenutnog radnog skupa poziva s nekog drugog mjesta i dohvaća s diska.
- Greške stranice/sekundi – ukupna brzina kojom procesor obrađuje stranice s greškama. To se događa kada proces zahtijeva kod izvan svog radnog skupa.
- CPU prekidi u sekundi – prosječan broj hardverskih prekida koje procesor prima i obrađuje svake sekunde.
- Duljina reda čekanja na disku – prosječan broj zahtjeva za čitanje i pisanje u redu čekanja za odabrani disk tijekom intervala uzorka.
- Duljina mrežnog izlaznog reda – duljina reda izlaznih paketa u paketima. Sve više od dva znači kašnjenje i potrebno je zaustaviti usko grlo.
- Ukupno mrežnih bajtova u sekundi – brzina kojom se bajtovi šalju i primaju na sučelju, uključujući znakove za uokvirivanje.
- Vrijeme odziva - vrijeme od trenutka kada korisnik unese zahtjev do trenutka kada se primi prvi znak odgovora.
- Protok – brzina kojom računalo ili mreža prima zahtjeve u sekundi.
- Količina skupljanja veza – broj korisničkih zahtjeva koji su ispunjeni združenim vezama. Što je više zahtjeva ispunjeno vezama u bazenu, to će biti bolja izvedba.
- Maksimalni broj aktivnih sesija – najveći broj sesija koje mogu biti aktivne odjednom.
- Omjeri pogodaka – ovo se odnosi na broj SQL izjave kojima upravljaju predmemorirani podaci umjesto skupih I/O operacija. Ovo je dobro mjesto za početak rješavanja problema s uskim grlima.
- Brojeva u sekundi – broj posjeta web poslužitelju tijekom svake sekunde testa opterećenja.
- Povratni segment – količina podataka koja se može vratiti u bilo kojem trenutku.
- Zaključavanje baze podataka – zaključavanje tablica i baza podataka treba nadzirati i pažljivo podešavati.
- Najviše se čeka – prati se kako bi se utvrdilo koja se vremena čekanja mogu smanjiti pri radu s brzinom dohvaćanja podataka iz memorije.
- Niti se broje – Zdravlje aplikacije može se mjeriti brojem niti koje se izvode i trenutno su aktivne.
- Kolekcija smeća - uključuje vraćanje neiskorištene memorije natrag u sustav. Sakupljanje smeća potrebno je pratiti radi učinkovitosti.
Primjer testnih slučajeva testiranja performansi
U nastavku su navedeni primjeri testnih slučajeva za testiranje performansi:
- Testni slučaj 01: Provjerite je li vrijeme odgovora maksimalno 4 sekunde kada 1000 korisnika istovremeno pristupa web stranici.
- Testni slučaj 02: Provjerite je li vrijeme odziva aplikacije pod opterećenjem unutar prihvatljivog raspona kada je mrežna veza spora.
- Testni slučaj 03: Provjerite najveći broj korisnika koje aplikacija može obraditi prije nego što se sruši.
- Testni slučaj 04: Provjerite vrijeme izvršavanja baze podataka kada se 500 zapisa čita/piše istovremeno.
- Testni slučaj 05: Provjerite korištenje CPU-a i memorije aplikacije i poslužitelja baze podataka pod uvjetima vršnog opterećenja.
- Testni slučaj 06: Provjerite vrijeme odziva aplikacije u uvjetima niskog, normalnog, umjerenog i velikog opterećenja.
Tijekom stvarnog izvođenja testa performansi, nejasni izrazi poput prihvatljivog raspona, velikog opterećenja itd. zamijenjeni su konkretnim brojevima. Inženjeri za izvedbu postavljaju ove brojke u skladu s poslovnim zahtjevima i tehničkim okruženjem aplikacije.
Najbolje prakse testiranja performansi
Slijeđenje utvrđenih najboljih praksi osigurava pouzdane rezultate testiranja performansi. Ove smjernice pomažu timovima da izbjegnu uobičajene zamke.
- Zrcalite proizvodno okruženje – Konfigurirajte svoje testne postavke tako da što vjernije odražavaju produkciju. Razlike u verzijama hardvera ili softvera mogu dati obmanjujuće rezultate.
- Osmislite realistične testne scenarije – Izradite testne slučajeve koji simuliraju stvarno ponašanje korisnika, uključujući vrijeme razmišljanja i kombinacije istodobnih transakcija.
- Koristite metrike temeljene na percentilima – Oslanjajte se na vrijeme odziva 90. i 95. percentila, a ne samo na prosjeke. Percentili otkrivaju latenciju na kraju procesa koju prosjeci mogu sakriti.
- Testirajte rano i kontinuirano – Integrirajte testiranje performansi u CI/CD proces umjesto da ga tretirate kao aktivnost u završnoj fazi.
- Dokument i osnovni rezultati – Zabilježite rezultate svakog testiranja. Usporedba novih rezultata s osnovnim vrijednostima olakšava otkrivanje regresija među izdanjima.
Kako umjetna inteligencija transformira testiranje performansi
Umjetna inteligencija je reshaping testiranje performansi automatizacijom složenih analitičkih zadataka i omogućavanjem prediktivnih mogućnosti. Alati temeljeni na umjetnoj inteligenciji analiziraju povijesne podatke, otkrivaju obrasce i pružaju praktične preporuke bez potrebe za ljudskom intervencijom u svakom koraku.
- Prediktivno otkrivanje anomalija – AI algoritmi analiziraju metrike performansi u stvarnom vremenu tijekom testova opterećenja i označavaju odstupanja prije nego što eskaliraju u kritične kvarove.
- Automatizirana analiza uzroka – Alati pokretani umjetnom inteligencijom povezuju podatke između distribuiranih sustava kako bi točno odredili komponente koje uzrokuju smanjenje performansi.
- Inteligentna optimizacija testiranja – Modeli strojnog učenja identificiraju redundantne testne scenarije i predlažu optimalne konfiguracije, smanjujući vrijeme izvršavanja uz održavanje pokrivenosti.
- Samoobnavljajuće testne skripte – Umjetna inteligencija prilagođava testne skripte kada se promijene sučelja aplikacije, smanjujući troškove održavanja za pakete za testiranje performansi.
Alati za ispitivanje performansi
Na tržištu je dostupan širok izbor alata za testiranje performansi. Alat koji odaberete za testiranje ovisit će o mnogim čimbenicima kao što su vrste podržanih protokola, cijena licence, hardverski zahtjevi i podrška platforme. U nastavku je popis popularno korištenih alata za testiranje.
- HP LoadRunner - je jedan od najpopularnijih alata za testiranje performansi na tržištu. Ovaj alat je sposoban simulirati stotine tisuća korisnika, stavljajući aplikacije pod stvarna opterećenja kako bi se utvrdilo njihovo ponašanje pod očekivanim opterećenjima. LoadRunner sadrži generator virtualnih korisnika koji simulira radnje živih ljudskih korisnika.
- JMeter - Jedan od vodećih alata otvorenog koda koji se koristi za testiranje opterećenja web i aplikacijskih poslužitelja. Podržava više protokola i pruža opsežne mogućnosti izvještavanja.


