Testiranje učinkovitosti
Testiranje učinkovitosti je postopek testiranja programske opreme, ki se uporablja za testiranje hitrosti, odzivnega časa, stabilnosti, zanesljivosti, razširljivosti in porabe virov programske aplikacije pod določeno delovno obremenitvijo. Glavni namen preizkušanja zmogljivosti je ugotoviti in odpraviti ozka grla v zmogljivosti programske aplikacije. Je podskupina izvedbenega inženiringa in znana tudi kot "Perf Testiranje".
V središču preizkušanja zmogljivosti je preverjanje programske opreme
- Hitrost - Določa, ali se aplikacija hitro odzove
- Razširljivost - določa največjo obremenitev uporabnika, ki jo lahko obvlada programska aplikacija.
- Stabilnost - določa, ali je aplikacija stabilna pri različnih obremenitvah
V tej vadnici boste izvedeli-
- Kaj je testiranje učinkovitosti?
- Zakaj testiranje učinkovitosti?
- Vrste preizkušanja učinkovitosti
- Pogoste težave z zmogljivostjo
- Postopek testiranja učinkovitosti
- Meritve preizkušanja učinkovitosti: Nadzor parametrov
- Primeri preizkusov uspešnosti
- Orodja za preverjanje učinkovitosti
- Pogosta vprašanja
Zakaj testiranje učinkovitosti?
Funkcije in funkcionalnost, ki jih podpira programski sistem, niso edina skrb. Učinkovitost programske aplikacije, kot so odzivni čas, zanesljivost, poraba virov in razširljivost, so pomembne. Cilj preizkušanja zmogljivosti ni najti napake, temveč odpraviti ozka grla v zmogljivosti.
Testiranje učinkovitosti se izvaja, da se zainteresiranim stranem zagotovijo informacije o njihovi uporabi glede hitrosti, stabilnosti in razširljivosti. Še pomembneje pa je, da preizkušanje učinkovitosti odkriva, kaj je treba izboljšati, preden izdelek gre na trg. Brez preizkušanja zmogljivosti programska oprema verjetno trpi zaradi težav, kot so: počasno delovanje, medtem ko jo več uporabnikov uporablja hkrati, nedoslednosti v različnih operacijskih sistemih in slaba uporabnost.
Preskušanje zmogljivosti bo ugotovilo, ali njihova programska oprema ustreza zahtevam glede hitrosti, razširljivosti in stabilnosti ob pričakovanih delovnih obremenitvah. Aplikacije, poslane na trg z meritvami slabe učinkovitosti zaradi neobstoječih ali slabih preizkusov učinkovitosti, bodo verjetno dobile slab ugled in ne bodo izpolnile pričakovanih prodajnih ciljev.
Poleg tega je treba kritične aplikacije, kot so programi za izstrelitev vesolja ali reševalna medicinska oprema, preizkusiti, da se zagotovi njihovo dolgotrajno delovanje brez odstopanj.
Po navedbah Dunn & Bradstreet 59% podjetij Fortune 500 vsak teden doživi približno 1,6 ure zastoja. Glede na to, da povprečno podjetje Fortune 500 z najmanj 10.000 zaposlenimi plačuje 56 dolarjev na uro, bi stroški dela zaradi izpadov takšne organizacije znašali 896.000 dolarjev na teden, kar pomeni več kot 46 milijonov dolarjev na leto.
Samo 5-minutni izpad storitve Google.com (19. avgust 13) naj bi iskalnega giganta stal kar 545.000 USD.
Ocenjuje se, da so podjetja zaradi nedavnega izpada Amazon Web Service izgubila prodajo v vrednosti 1100 USD na sekundo.
Zato je preskušanje zmogljivosti pomembno.
Vrste preizkušanja učinkovitosti
- Testiranje obremenitve - preveri zmožnost aplikacije, da deluje pod pričakovanimi obremenitvami uporabnika. Cilj je ugotoviti ozka grla pri delovanju, preden se programska aplikacija zažene.
- Testiranje izjemnih situacij - vključuje preizkušanje aplikacije pod izjemnimi delovnimi obremenitvami, da se ugotovi, kako obvladuje velik promet ali obdelavo podatkov. Cilj je opredeliti prelomno točko aplikacije.
- Testiranje vzdržljivosti - se izvaja, da se zagotovi, da programska oprema zdrži pričakovano obremenitev v daljšem časovnem obdobju.
- Testiranje konic - preizkuša reakcijo programske opreme na nenadne velike skoke obremenitve, ki jo ustvarijo uporabniki.
- Količinsko preskušanje - Pod količinskim preskušanjem veliko št. od. Podatki se vnesejo v bazo podatkov in spremlja splošno vedenje programske opreme. Cilj je preveriti delovanje programske opreme pri različnih količinah baz podatkov.
- Testiranje razširljivosti - Cilj testiranja razširljivosti je ugotoviti učinkovitost programske aplikacije pri "povečanju", ki podpira povečanje uporabniške obremenitve. Pomaga pri načrtovanju dodajanja zmogljivosti vašega programskega sistema.
Pogoste težave z zmogljivostjo
Večina težav z zmogljivostjo se vrti okoli hitrosti, odzivnega časa, časa nalaganja in slabe razširljivosti. Hitrost je pogosto eden najpomembnejših lastnosti aplikacije. Počasno izvajana aplikacija bo izgubila potencialne uporabnike. Testiranje učinkovitosti se izvaja tako, da aplikacija deluje dovolj hitro, da ohranja pozornost in zanimanje uporabnika. Oglejte si naslednji seznam pogostih težav z zmogljivostjo in opazite, kako hitra je pri mnogih izmed njih pogost dejavnik:
- Dolg čas nalaganja - čas nalaganja je običajno začetni čas, ki ga potrebuje za zagon aplikacije. To bi moralo biti na splošno čim manjše. Medtem ko nekaterih aplikacij ni mogoče naložiti v manj kot minuti, je čas nalaganja, če je mogoče, krajši od nekaj sekund.
- Slab odzivni čas - odzivni čas je čas, od katerega uporabnik vnese podatke v aplikacijo, dokler aplikacija ne odda odziva na ta vhod. Na splošno bi to moralo biti zelo hitro. Če mora uporabnik predolgo čakati, izgubi zanimanje.
- Slaba razširljivost - Programski izdelek trpi zaradi slabe razširljivosti, kadar ne zmore pričakovanega števila uporabnikov ali kadar ne sprejme dovolj širokega kroga uporabnikov. Preizkus obremenitve je treba opraviti, da se prepričate, ali lahko aplikacija obravnava predvideno število uporabnikov.
- Ozka grla - Ozka grla so ovire v sistemu, ki poslabšajo splošno delovanje sistema. Ozko grlo je, če napake kodiranja ali težave s strojno opremo povzročijo zmanjšanje prepustnosti pri določenih obremenitvah. Ozka grla pogosto povzroči en napačen odsek kode. Ključno za odpravo težave z ozkim grlom je poiskati del kode, ki povzroča upočasnitev, in ga poskusiti odpraviti tam. Ozka grla se na splošno odpravijo tako, da se popravijo slabo delujoči procesi ali doda dodatna strojna oprema. Nekatera pogosta ozka grla pri uspešnosti so
- Uporaba CPE
- Izkoriščenost pomnilnika
- Uporaba omrežja
- Omejitve operacijskega sistema
- Uporaba diska
Postopek testiranja učinkovitosti
Metodologija, sprejeta za preizkušanje zmogljivosti, se lahko zelo razlikuje, vendar cilji preizkusov učinkovitosti ostajajo enaki. Pomaga vam lahko pri dokazovanju, da vaš programski sistem izpolnjuje določena vnaprej določena merila učinkovitosti. Ali pa lahko pomaga primerjati delovanje dveh sistemov programske opreme. Pomaga lahko tudi pri prepoznavanju delov vašega programskega sistema, ki poslabšajo njegovo delovanje.
Spodaj je splošen postopek, kako izvesti preizkušanje učinkovitosti
- Ugotovite svoje testno okolje - poznajte svoje fizično testno okolje, proizvodno okolje in katera orodja za testiranje so na voljo. Preden začnete s testnim postopkom, se seznanite s podrobnostmi o konfiguracijah strojne, programske in omrežne konfiguracije, ki se uporabljajo med testiranjem. Preskuševalcem bo pomagal ustvariti učinkovitejše teste. Pomagal bo tudi prepoznati morebitne izzive, s katerimi se preizkuševalci lahko srečajo med postopki testiranja učinkovitosti.
- Ugotovite merila za sprejem učinkovitosti - to vključuje cilje in omejitve za pretočnost, odzivni čas in dodeljevanje virov. Prav tako je treba določiti merila za uspeh projekta zunaj teh ciljev in omejitev. Preizkuševalci bi morali biti pooblaščeni za določanje meril in ciljev uspešnosti, ker pogosto projektne specifikacije ne vključujejo dovolj široke palete meril uspešnosti. Včasih jih sploh ni. Če je mogoče, je iskanje podobne aplikacije za primerjavo dober način za določanje ciljev uspešnosti.
- Preskusi učinkovitosti načrtovanja in načrtovanja - Ugotovite, kako se bo uporaba verjetno razlikovala med končnimi uporabniki, in določite ključne scenarije za preizkušanje vseh možnih primerov uporabe. Simulirati je treba različne končne uporabnike, načrtovati podatke o preizkusu učinkovitosti in opisati, katere metrike bodo zbrane.
- Konfiguriranje testnega okolja - Pred izvedbo pripravite testno okolje. Uredite tudi orodja in druge vire.
- Izvedite zasnovo preizkusov - ustvarite preizkuse učinkovitosti v skladu s svojo zasnovo testa.
- Zaženite teste - izvedite in spremljajte teste.
- Analizirajte, nastavite in preizkusite - konsolidirajte, analizirajte in delite rezultate testov. Nato natančno nastavite in znova preizkusite, ali se zmogljivost izboljša ali zmanjša. Ker so izboljšave na splošno manjše z vsakim ponovnim preskusom, se ustavite, kadar ozka grla povzroči CPU. Potem boste morda razmislili o možnosti povečanja moči procesorja.
Meritve preizkušanja učinkovitosti: Nadzor parametrov
Osnovni parametri, ki se spremljajo med preskušanjem zmogljivosti, vključujejo:
- Uporaba procesorja - čas, ki ga procesor porabi za izvajanje neaktivnih niti.
- Uporaba pomnilnika - količina fizičnega pomnilnika, ki je na voljo procesom v računalniku.
- Čas diska - čas, ko je disk zaseden z izvajanjem zahteve za branje ali pisanje.
- Pasovna širina - prikazuje bitove na sekundo, ki jih uporablja omrežni vmesnik.
- Zasebni bajti - število bajtov, ki jih je dodelil proces in jih ni mogoče deliti z drugimi procesi. Uporabljajo se za merjenje puščanja in uporabe pomnilnika.
- Zavezani pomnilnik - količina uporabljenega navideznega pomnilnika.
- Strani v pomnilniku / sekunda - število strani, zapisanih na disk ali prebranih z njega, da se odpravijo napake na trdi strani. Napake trdih strani so, ko kodo, ki ni iz trenutnega delovnega nabora, pokličete od drugod in jo pridobite z diska.
- Napake strani / sekunda - skupna hitrost obdelave strani z napakami v procesorju. To se ponovno zgodi, ko postopek zahteva kodo zunaj delovnega niza.
- Prekinitve CPU na sekundo - je povprečje število prekinitev strojne opreme, ki jih procesor sprejema in obdeluje vsako sekundo.
- Dolžina čakalne vrste diska - je povprečna št. zahtev za branje in pisanje v čakalni vrsti za izbrani disk med vzorčnim intervalom.
- Dolžina omrežne izhodne čakalne vrste - dolžina čakalne vrste izhodnih paketov v paketih. Karkoli več kot dve pomeni, da je treba ustaviti zamudo in ozka grla.
- Skupno število bajtov omrežja na sekundo - število bajtov, ki so poslani in prejeti na vmesniku, vključno z uokvirjenimi znaki.
- Odzivni čas - čas od trenutka, ko uporabnik vnese zahtevo, do prejema prvega znaka odgovora.
- Pretočnost - ocenite, ali računalnik ali omrežje prejme zahteve na sekundo.
- Količina združevanja povezav - število uporabniških zahtev, ki jih izpolnijo združene povezave. Več kot bodo zahteve izpolnile povezave v bazenu, boljša bo zmogljivost.
- Največ aktivnih sej - največje število sej, ki so lahko aktivne hkrati.
- Razmerja zadetkov - To je povezano s številom stavkov SQL, ki jih obdelujejo predpomnjeni podatki namesto dragih V / I operacij. To je dober kraj za reševanje ozkih grl.
- Število zadetkov na sekundo - št. zadetkov na spletnem strežniku med vsako sekundo preskusa obremenitve.
- Povratni segment - količina podatkov, ki jih je mogoče kadar koli vrniti.
- Zaklepanje baz podatkov - zaklepanje tabel in baz podatkov je treba spremljati in skrbno nastaviti.
- Najboljša čakanja - spremljajo se, da se ugotovi, katere čakalne dobe je mogoče skrajšati pri obravnavanju hitrosti pridobivanja podatkov iz pomnilnika
- Število niti - zdravje aplikacije lahko merimo s št. niti, ki se izvajajo in so trenutno aktivne.
- Odvoz smeti - To je povezano z vrnitvijo neuporabljenega pomnilnika nazaj v sistem. Treba je spremljati učinkovitost odvoza smeti.
Primeri preizkusov uspešnosti
- Preverite, da odzivni čas ni daljši od 4 sekund, ko 1000 uporabnikov hkrati dostopa do spletnega mesta.
- Preverite, ali je odzivni čas aplikacije pod obremenitvijo v sprejemljivem obsegu, kadar je omrežna poveznost počasna
- Preverite največje število uporabnikov, ki jih lahko aplikacija obravnava, preden se zruši.
- Preverite čas izvajanja baze podatkov, ko hkrati berete / zapisujete 500 zapisov.
- Preverite porabo procesorja in pomnilnika aplikacije in strežnika baze podatkov v pogojih največje obremenitve
- Preverite odzivni čas aplikacije v pogojih majhne, običajne, zmerne in velike obremenitve.
Med dejanskim izvajanjem preizkusa učinkovitosti se nejasni izrazi, kot so sprejemljiv domet, velika obremenitev itd., Nadomestijo s konkretnimi številkami. Inženirji uspešnosti te številke nastavijo v skladu s poslovnimi zahtevami in tehničnim okoljem aplikacije.
Orodja za preverjanje učinkovitosti
Na trgu je na voljo široko paleto orodij za preizkušanje zmogljivosti. Orodje, ki ga izberete za testiranje, je odvisno od številnih dejavnikov, kot so vrste podprtega protokola, stroški licence, zahteve glede strojne opreme, podpora platformi itd. Spodaj je seznam priljubljenih orodij za testiranje.
- LoadNinja - revolucionira način nalaganja testa. To orodje za testiranje obremenitve v oblaku omogoča skupinam, da posnamejo in takoj predvajajo obsežne teste obremenitve, brez zapletene dinamične korelacije, in te teste obremenitve izvajajo v resničnih brskalnikih. Ekipe lahko povečajo pokritost s testi. & zmanjšajte čas testiranja obremenitve za več kot 60%.
- NeoLoad - je platforma za preizkušanje zmogljivosti, zasnovana za DevOps, ki se brez težav integrira v vaš obstoječi cevovod za neprekinjeno dostavo. Skupine z NeoLoadom preizkusijo 10-krat hitreje kot s tradicionalnimi orodji, da bi izpolnile novo raven zahtev skozi celoten življenjski cikel razvoja programske opreme Agile - od komponent do celotnih sistemskih testov obremenitve.
- HP LoadRunner - je danes najbolj priljubljeno orodje za preizkušanje zmogljivosti na trgu. To orodje lahko simulira na stotine tisoč uporabnikov in aplikacije postavi v realno obremenitev, da ugotovi njihovo vedenje pod pričakovanimi obremenitvami. Loadrunner ima navidezni uporabniški generator, ki simulira dejanja uporabnikov v živo.
- Jmeter - eno vodilnih orodij za testiranje obremenitve spletnih in aplikacijskih strežnikov.
Pogosta vprašanja
Katere aplikacije naj preizkusimo?
Testiranje učinkovitosti se vedno izvaja samo za sisteme, ki temeljijo na odjemalsko-strežniškem sistemu. To pomeni, da vsaka aplikacija, ki ni arhitektura odjemalca in strežnika, ne sme zahtevati preizkušanja učinkovitosti.
Microsoft Kalkulator na primer ne temelji niti na odjemalsko-strežniškem niti ne izvaja več uporabnikov; zato ni kandidat za preizkušanje učinkovitosti.
Kakšna je razlika med preizkušanjem zmogljivosti in izvedbenim inženiringom
Pomembno je razumeti razliko med preizkušanjem zmogljivosti in izvedbenim inženiringom. Spodaj je predstavljeno razumevanje:
Testiranje učinkovitosti je disciplina, ki se ukvarja s testiranjem in poročanjem o trenutni učinkovitosti programske aplikacije pod različnimi parametri.
Performance Engineering je postopek, s katerim se programska oprema preizkuša in prilagaja z namenom uresničitve zahtevane zmogljivosti. Cilj tega postopka je optimizirati najpomembnejšo lastnost delovanja aplikacije, tj. Uporabniško izkušnjo.
V preteklosti sta bila testiranje in uglaševanje izrazito ločena in pogosto konkurenčna področja. V zadnjih nekaj letih pa je več žepov preizkuševalcev in razvijalcev samostojno sodelovalo pri ustvarjanju skupin za uglaševanje. Ker so te ekipe dosegle pomemben uspeh, se je koncept preskušanja zmogljivosti povezovanja z uglaševanjem zmogljivosti prijel in zdaj temu pravimo izvedbeni inženiring.
Zaključek
Pri programskem inženirstvu je pred trženjem kakršnega koli programskega izdelka potrebno preverjanje učinkovitosti. Zagotavlja zadovoljstvo strank in vlagateljevo naložbo ščiti pred neuspehom izdelka. Stroški preizkušanja učinkovitosti so ponavadi več kot nadomeščeni z izboljšanim zadovoljstvom, zvestobo in zadržanjem strank.