Vodič za testiranje izvedbe
Š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 softverskog programa
- 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
Zašto testirati performanse?
Značajke i funkcionalnost koje podržava softverski sustav nisu jedina briga. Izvedba softverske aplikacije, kao što je vrijeme odziva, pouzdanost, upotreba resursa i skalabilnost, itekako je važna. Cilj testiranja performansi nije pronalaženje grešaka, već uklanjanje uskih grla performansi.
Testiranje izvedbe provodi se kako bi se dionicima pružile informacije o njihovoj primjeni u pogledu brzine, stabilnosti i skalabilnosti. Š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: radi sporo dok ga nekoliko korisnika koristi istovremeno, nedosljednosti u različitim operativnim sustavima i loša upotrebljivost.
Testiranjem performansi utvrdit će zadovoljava li njihov softver zahtjeve brzine, skalabilnosti i stabilnosti pod očekivanim radnim opterećenjima. Aplikacije poslane na tržište s lošom metrikom performansi zbog nepostojećeg ili lošeg testiranja performansi vjerojatno će steći lošu reputaciju i neće uspjeti ispuniti 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 Google.com (19. kolovoza 13.) procjenjuje se da će pretraživačkog diva koštati koliko $ 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 – radi se kako bi se osiguralo da softver može podnijeti očekivano opterećenje tijekom dugog vremenskog razdoblja.
- Ispitivanje šiljcima – testira reakciju softvera na iznenadne velike skokove opterećenja koje stvaraju korisnici.
- Ispitivanje volumena – Pod Volume Testing veliki br. od. Podaci se popunjavaju u bazi podataka, a cjelokupno ponašanje softverskog sustava se prati. Cilj je provjeriti performanse softverske aplikacije pod različitim volumenima baze podataka.
- Testiranje skalabilnosti – Cilj testiranja skalabilnosti je utvrditi učinkovitost softverske aplikacije u "skaliranju" kako bi se podržalo 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 izvedbom vrti se oko brzine, vremena odziva, vremena učitavanja i slabe skalabilnosti. Brzina je često jedan od najvažnijih atributa aplikacije. Aplikacija koja radi sporo izgubit će potencijalne korisnike. Testiranje performansi osigurava da aplikacija radi dovoljno brzo da zadrži pažnju i interes korisnika. Pogledajte sljedeći popis uobičajenih problema s izvedbom i primijetite kako je brzina čest čimbenik u mnogima od njih:
- Dugo vrijeme učitavanja – Vrijeme učitavanja obično je početno vrijeme koje je potrebno aplikaciji da se pokrene. To bi općenito trebalo svesti na minimum. Iako je neke aplikacije nemoguće učitati za manje od jedne minute, vrijeme učitavanja trebalo bi biti manje od nekoliko sekundi ako je moguće.
- Loše vrijeme odgovora – Vrijeme odgovora je vrijeme koje je potrebno od trenutka kada korisnik unese podatke u aplikaciju do trenutka kada aplikacija pošalje odgovor na taj unos. Općenito, ovo bi trebalo biti vrlo brzo. Opet, 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 degradiraju ukupne performanse sustava. Usko grlo je kada pogreške kodiranja ili problemi s hardverom uzrokuju smanjenje propusnosti pod određenim opterećenjima. Usko grlo je često uzrokovano jednim neispravnim dijelom koda. Ključ za rješavanje problema s uskim grlom je pronalaženje dijela koda koji uzrokuje usporavanje i pokušaj da se ondje riješi. Uska grla općenito se popravljaju popravljanjem loše pokrenutih procesa ili dodavanjem dodatnog hardvera. Neki uobičajena uska grla u izvedbi ima
- 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 izvršiti testiranje performansi
Korak 1) Odredite svoje okruženje za testiranje
Upoznajte se sa svojim fizičkim testnim okruženjem, proizvodnim okruženjem i dostupnim alatima za testiranje. Razumite pojedinosti hardvera, softvera i mrežnih konfiguracija korištenih tijekom testiranja prije nego što započnete proces testiranja. Pomoći će testerima u izradi učinkovitijih testova. Također će pomoći u identificiranju 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 raspodjelu resursa. Također je potrebno identificirati kriterije uspjeha projekta izvan ovih ciljeva i ograničenja. Ispitivači bi trebali imati ovlasti za postavljanje kriterija i ciljeva izvedbe jer specifikacije projekta često neće uključivati dovoljno velik izbor mjerila izvedbe. Ponekad ih možda uopće nema. Kada je moguće, pronalazak slične aplikacije za usporedbu dobar je način za postavljanje ciljeva izvedbe.
Korak 3) Plan & Design Testovi izvedbe
Odredite kako će korištenje vjerojatno varirati među krajnjim korisnicima i identificirajte ključne scenarije za testiranje za sve moguće slučajeve korištenja. Potrebno je simulirati različite krajnje korisnike, planirati podatke o testiranju performansi i naznačiti koja će se mjerila prikupljati.
Korak 4) Konfiguriranje testnog okruženja
Pripremite okolinu testiranja prije izvođenja. Također, organizirajte alate i druge resurse.
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, podesite i ponovno testirajte
Konsolidirajte, analizirajte i dijelite rezultate testova. Zatim fino podesite i ponovno testirajte da vidite ima li poboljšanja ili smanjenja performansi. Budući da poboljšanja općenito postaju manja sa svakim ponovnim testiranjem, zaustavite se kada je usko grlo uzrokovano CPU-om. Tada možete razmisliti o mogućnosti povećanja CPU snage.
Mjerni podaci testiranja performansi: Praćeni parametri
Osnovni parametri koji se prate tijekom testiranja performansi uključuju:
- Upotreba procesora – količina vremena koju procesor troši na izvršavanje neaktivnih niti.
- Upotreba memorije – količina fizičke memorije dostupna procesima na računalu.
- Vrijeme diska – koliko je vremena 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 i koji se ne mogu dijeliti među drugim procesima. Oni se koriste za mjerenje curenja memorije i upotrebe.
- Predana memorija – količina korištene virtualne memorije.
- Memorijske stranice/sekundi – broj stranica napisanih ili pročitanih s diska kako bi se riješile greške na tvrdoj stranici. Pogreške na tvrdoj stranici su kada se kôd koji nije iz trenutnog radnog skupa pozove s drugog mjesta i dohvati s diska.
- Greške stranice/sekundi – ukupna brzina kojom procesor obrađuje stranice s greškom. Ovo se ponovno događa kada proces zahtijeva kod izvan svog radnog skupa.
- CPU prekidi u sekundi – je prosj. broj hardverskih prekida koje procesor prima i obrađuje svake sekunde.
- Duljina reda čekanja na disku – je prosj. Ne. zahtjeva za čitanje i pisanje u redu čekanja za odabrani disk tijekom intervala uzorka.
- Duljina mrežnog izlaznog reda – duljina izlaznog reda čekanja paketa u paketima. Sve više od dva znači kašnjenje i treba zaustaviti usko grlo.
- Ukupno mrežnih bajtova u sekundi – ocijeniti koji se bajtovi šalju i primaju na sučelju, uključujući znakove za uokvirivanje.
- Vrijeme odziva - vrijeme od kada korisnik unese zahtjev do primitka prvog znaka odgovora.
- Protok – ocijenite broj računala ili mreže koji primaju 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 ima veze s brojem 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 – br. pogodaka na 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 – nadziru se kako bi se utvrdilo koja se vremena čekanja mogu skratiti kada se radi o brzini dohvaćanja podataka iz memorije
- Niti se broje – Zdravlje aplikacije može se mjeriti br. niti koje se izvode i trenutno su aktivne.
- Kolekcija smeća - Radi se o vraćanju neiskorištene memorije natrag u sustav. Potrebno je nadzirati učinkovitost odvoza smeća.
Primjer testnih slučajeva testiranja performansi
- Testni slučaj 01: Provjerite da vrijeme odgovora nije dulje od 4 sekunde kada 1000 korisnika istovremeno pristupi web stranici.
- Testni slučaj 02: Provjerite je li vrijeme odgovora aplikacije pod opterećenjem unutar prihvatljivog raspona kada je mrežna povezanost 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 u uvjetima najvećeg 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.
Alati za testiranje performansi
Na tržištu postoji š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, podrška platformi itd. Dolje je popis popularno korištenih alata za testiranje.
- HP LoadRunner - je najpopularniji alat za testiranje performansi na današnjem tržištu. Ovaj je alat sposoban simulirati stotine tisuća korisnika, stavljajući aplikacije pod stvarna opterećenja kako bi se odredilo njihovo ponašanje pod očekivanim opterećenjima. Loadrunner sadrži generator virtualnih korisnika koji simulira radnje živih ljudskih korisnika.
- Jmetar – jedan od vodećih alata koji se koristi za testiranje opterećenja web i aplikacijskih poslužitelja.
ČESTO POSTAVLJANA PITANJA
Zaključak
In Programsko inženjerstvo, Prije stavljanja na tržište bilo kojeg softverskog proizvoda potrebno je testiranje performansi. Osigurava zadovoljstvo kupaca i štiti investiciju investitora od kvara proizvoda. Troškovi testiranja performansi obično su više nego nadoknađeni poboljšanim zadovoljstvom korisnika, lojalnošću i zadržavanjem.