Tuesday, 6 July 2010

Suorituskykytestaus integraatioprojektissa

Projektipäällikkö pyysi minua tekemään suorituskykytestaussuunnitelman integraatioprojektiin. Ongelma on vain se, että meiltä puuttuu kokonaan NFR:t. En ole koskaan aiemmin tehnyt suorituskykytestaussuunnitelmaa, joten nyt pitäisi sellaisen tekemiseen paneutua.

Ensiksi täytyy löytää vastaus kysymykseen "Miksi testaamme suorituskykyä?". Tässä tapauksessa varmaankin pyritään ensikädessä luomaan ne raamit, missä järjestelmä tällä hetkellä on. Tämän takia täytyisi siis siis rajata se alue, jossa suorituskykytestit tehdään ja selvittää arvio sielttä liikkuvista massoista. Jos suorituskyvyssä ilmenee ongelmia, niin ne on helpompi paikata ennen kun niistä muodostuu tuontannollisia ongelmia. Lisäksi tulevaisuuden kannalta tulee selvittää millaisia pullonkauloja saattaa olla tiedossa ja missä vaiheessa tuotteen elinkaarta.

Pullonkaula saattaa vääristää end-to-end prosessin kaikkien komponenttien suorituskykyä. Jos yhdessä kohdassa on pullonkaula, se tulee eristää ja poistaa. Tämä voi lisäksi vapauttaa yhden pullonkaulan aiheuttamia lisäpullonkauloja edempänä prosessissa.

Toinen kysymys mihin tarvitaan vastaus on "Miten testaamme suorituskykyä?". Integraatioprojektissa testaus kannattaa suorittaa työkalulla, joka pytyy muodostamaan halutun määrän sanomia halutussa ajassa ja lähettämään niitä haluttuun end-pointiin.

Lisäksi täytyy tietää, millaisilla testeillä testaamme suorituskykyä.

Käyttäjämäärätestaus (Performance): Integraatiotestauksessa on harvoin kysymys käyttäjän/käyttäjien suorittamasta toiminnasta vaan kahden järjestlemän keskenäisestä kommunikoinnista. Integraatiotestauksessa ei tarvitse siis ottaa huomioon käyttäjämäärätestausta sellaisenaan, vaan käyttäjien sijaan lisätäänkin kommunikoivia järjestelmiä (lähteitä/threadeja). Pyritään siis etsimään se kohta, jolloin lähteiden määrä alkaa aiheuttaa hitautta tai sovelluksen toiminta muuttuu.

Massatestaus (Volume): Intergaatio testauksessa on tärkeä tietää, kuinka paljon sanomia järjestelmä pytyy käsittelemään kerrallaan. Lisäksi on tärekää, että pyritänkö luomaan suorituskykytesti niin, että syötetään yhdestä lähteestä sanomia samanaikaisesti vai useasta yhtäaikaa. Tässä pyritään siis selvittämään,e ttä suoriutuuko järjetelmä vaadituista arvoista. Tässä tapauksessa emme tiedä, mitä vaatimuksia on, joten tämä jää tällä kertaa pimentoon.

Kuormitustestaus (Stress): Integraatiotestauksessa on tärkeää löytää ne tilanteet, jolloin sanomien/tapahtumien määrä on siis suuri, että se vaikuttaa järjestelmän käyttäytyimiseen. Tässä testauksessa voidaankin ottaa arvioitu sanomamäärä ja lisätä sitä 20% joka kierroksella (mahdolliseseti lisätä säikeiden määrää aina välillä). Pyritään lisäämään niin kauan, että järjestelmä ei enää toimi.

Yhtäaikaisuus (Concurrency): Integraatiotestauksessa yhtäaikaiset käyttäjät ei ole oleellisia, mutta yhtäaikaiset (toisensa kumoavat) tapahtuman ovat. Pyritään siis luomaan testi, jolla luodaan yhtaisiaisia, toisensa kumoavia toimintoja. Tällä voidaan selvittää esim. jonoihin kasaantuvia ristiriitaisia tapahtumia.

Suorituskykyä testatessa voidaan yhdistää sekä sanomien määrällä että lähteiden määrällä testausta, jolloin voidaan saada erilaisia testituloksia. Integraatiotestauksessa täytyy myös pyrkiä siihen, että testidata on tuotantoa vastaavaa.

No comments:

Post a Comment