Ollaan tehty aika iso verkkosovellus, ehkä työmäärältään jotain 1 miestyövuotta.
Ollaan käytetty scrumia ja heikkotasoista yksikkötestausta(ei PHPunit) koko projektin ajan.
Nyt haluaisin kuitenkin testata sovelluksen eheyden ja sietokyvyn, enkä tiedä onko hautomassani ajatuksessa järkeä(?)
Ajattelin koodata cronilla pikkuscriptin, joka varaa järjestelmässä lippuja erilaisilla random parametreillä. Scripti siirtyy sivulta toiselle ja painelee erinäppäimiä ja tekee kaikesta toiminnastaa lokia, sekä saamistaan vastauksista kirjoittelisi lokia. Lisäksi se parseroi sivultaan joitakin tietoja ja tekee niiden perusteella analyysiä ja saattaa siirtyä seuraavallekkin sivulle. Kun scripti valmis, laitaisin pyörimään tällaisia botteja useita yhtäaikaa. Samalla itse henkilökohtaisesti kokeilen varata lippuja samasta järjestelmästä ja tsekkailen mitä tapahtuu - tyyliin, että miten varaukset päivittyy ja tuleeko mitään yhtäaikaisia varauskia samalle paikalle jne.
Myöhemmin kattelen lokia sitten, tietokantaa ja muutenkin lopputulosta.
Onko tämä ihan päätön idea? Ajatus olis, että käyttäisin tähän testaukseen jonku 2-3 päivää. Kannattaako tätä tehdä ja onko croni oikea työkalu vai voisiko jotain muuta parempaa työkalua käyttää?
Olen katellu noita testaus työkaluja kuten: PHPunit, simpleTest.
Kuitenkin SimpleTest on luekemani perusteella vähän vanhentunut framework. Se tosin vaikuttaa just sellaiselta, mitä tartten, että pystyy testaamaan applikaatiota "cronin" välityksellä, eli luomalla virtuaali clientteja (oonko ymmärtänyt oikein?).
Tarkoitus ei oo siis tehdä yksikkötestausta, vaan integraatiotestausta ja laittaa rasitetta oikein reippaasti koko aplikaatiolle ja testata eheyttä. Lopputulos ei oo ihan ehdoton, että mitään bugitonta järjestelmää ei kuitenkaan vielä tartteta.
En kyllä keksi miksi niitä cronilla kannattaisi luoda.. Cronihan taitaa kerran minuutissa liipaista prosesseja käyntiin. Ennemmin varmaan laittaisin jonkun oman prosessin joka käynnistelisi niitä testausbotteja satunnaisesti annettujen parametrien puitteissa (esim. keskimäärin 5 sekunnissa tms, max 1000 yhtä aikaa tms.)
Selenium on suosittu systeemi funktionaaliseen testaamiseen. Sitä on myös mahdollista käyttää out of the box PHPUnitin kanssa, joten tuolla kombolla lähtisin liikkeelle. Kannattaa mielestäni muutenkin suorittaa yksikkötestaus PHPUnitilla, ihan jo sen takia että se on de fakto standardi alalla.
Mutta mutta, tuo että koitat simuloida kovaa trafiikkia niin ei enää oikein kuulu suoranaisesti funktionaalisen testauksen piiriin.
Tuollaiseen simulaatioon voisit kokeilla esim. JMeteriä (itse en siitä osaa sen enempää sanoa).
Random parametrit testauksessa ei välttämätää ole kovin hyvä idea vaikka aluksi voi tuntuakin siltä, jos se tehdään niin että parametrit arvotaan aina uudelleen ajon aikana. Jos tuollaisen testauksen seurauksena löydät bugin ohjelmasta niin et oikein mitenkään pysty toistamaan tilannetta, koska et tiedä millä parametreilla se on syntynyt ja toistaminenhan on kaiken A ja O bugien korjauksessa.
Tee mielummin niin että arvot ne parametrit erikseen ja tallennat jonnekin kiinteäksi testidataksi, jota käytetään varsinaiseen testaukseen. Jos tarvitset vaihteulua parametreihin niin generoi ne uudestaan. Toki voit arpoa parametrit ajonaikaisestikin jos samalla tallennat ne jonnekin niin että saman ajon voi toistaa tarvittaessa, mutta tuo tuntuu äkkiseltään monimutkaisemmalta.
Kiitoksia vastauksista! Muuten, tuli erittäin oleellinen virhe omissa termeissä, tarkoitin siis Curlia, että lähettäisi curlilla pyyntöjä serverille php sovelluksen kautta? Onks siinä mitään ideaa, kun en keksi miten PHPunitilla tekisi ihan sivupyyntöjä ja analysoisi palautettuja requestejä.
Tukki, hyvä pointti, kiitos! Mietinkin, että noi arvotut parametrit kannattaa varmaan tallentaa tiedostoon niin voi jäljittää paremmin.
Tsekkaan myös tuon seleniumin, mietin vaan just sitä, että PHPunit sopii yksikkötestaukseen, mutta tarttettasta tällaista aplikaatiotason testaus välinettä, joka esim. lähettelee sivupyyntöjä ja analysoi niitä vastauksia.
Toi seleniumi näyttää täydelliseltä!!! Kiitokset!
Jos joku jälkeenpäin haluaa vielä pikaesityksen seleniumista, niin tässä on hyvä sellainen(2min): http://www.youtube.com/watch?v=fkUVAV9u7vU
Aihe on jo aika vanha, joten et voi enää vastata siihen.