Okei, mulla alkaa olemaan noin puolen vuoden mittainen keskikokoinen tai pienehkö verkkosovellus valmis, jota teen asiakkaalleni. Sovellus on tehty PHP Framework Yii:n päälle ja se käyttää hyväksi myös MySQL:ää, JQueryä ja AJAX tekniikkaa. En ole aiemmin testaillut mitään verkkosovellusta juuri ollenkaan, lukuunottamatta selailua ja joitakin hassuja erikoisia syötteitä.
Onko täällä ketään, joka olisi testaillut verkkosovelluksia esim. työkseen ja osaisi sanoa tiivistetynä listana ne toimenpiteet, jota olisi hyvä tehdä perus verkkosovellustestauksessa, jossa tietoturvan merkitys ei ole kovin suuri, mutta bugit pitäisi löytyä. Lista voisi näyttää esim. tältä:
1. Hanki ohjelma X (tarvit palvemien Y tai jotain...)
2. Tee tämän tyyppisiä testi caisseja x y z.
3. Muista tämä y.
4. Näissä on yleensä bujega x y z.
5. Tee myös tämä z.
Olen koittanut googlettaa jotain järkevää ja lukasin joitakin artikkeleita, mutta kuulisin mielellään joitakin kokeneen huomioita ja heidän prosessinsa testauksessa. Mahdolliset työkalutkaan ei tartte olla ehkä parhaimpia, kiinnostus on lähinnä siinä, että miten kaverit testausta yleensä suorittaa - voi sitten itse kopioida prosessin. Kiinnostaa myös ei niin kokeneiden kommentit, minkälaiset prosessin he käyvät läpi ohjelmistoa testattaessa.
Kiitokset etukäteen, jos joku jaksaa vastata!
Käyttäjän syötteiden tarkistus, salasanojen suolaus sekä salaus, SQL-injektiot sekä XSS-haavoittuvuus kuntoon niin oot jo aika vahvoilla.
Okei, mites noi bugien löydöt, pitääkö vaan kokeilla kaikkea mahdollista? Tietoturva ei ole kovin primaarinen kyseisessä ohjelmassa, vaikka tosin kyllä se pitää olla jonkun asteinen kuitenkin, joten kiitos vastauksesta!
Ehkä kannattaa myös käyttää jotain automaattisia testaustyökaluja suunniteltujen testien lisäksi.
Joo, sitä ajattelinkin. Oisko mainita mitään järkevää työkalua, googlettamalla löysin esim. web inject, täytyy varmaan kokeilla mikä osoittautuu järkeväksi.
Muista julkaista softat aina ensin "beta - versiona", silloin loppukäyttäjät tietää että voi mahdollisesti löytyä bugeja. Älä vain sano että "Nyt se on valmis".
"Koodasin tällaisen, miten tästä tarkistetaan yksinkertaiset bugit?" Aika epäilyttävä lähtökohta minusta. :) Jos bugiasian pitää mielessä koko koodauksen ajan (tai jos on rutiini hommaan), valmiissa tuotteessa ei pitäisi olla lainkaan esimerkiksi SQL-aukkoja eikä tyypillisiä htmlspecialchars-funktion puutteesta johtuvia XSS-aukkoja. Pikkuvirheiden välttäminen on pieni vaiva ja jälkikäteen löytäminen paljon suurempi vaiva.
Sivustojen toimintalogiikkaa voidaan testata niin, että luodaan tietokantaan testidataa, sovelletaan siihen järjestelmän normaalia toimintaa ja verrataan lopputulosta itse laskettuun arvoon. Esimerkiksi kauppasovellukseen voitaisiin lisätä tuotteita ja muodostaa niistä myynti, ja lopuksi tarkistettaisiin, että on oikea summa ja oikea määrä oikeita tuotteita.
Tällaiset testit on yleensä helppo kirjoittaa aivan samoilla funktioilla, joita käyttöliittymästäkin kutsutaan. Jos käyttöliittymä ja logiikka on erotettu järkevästi (eli käyttöliittymä ei tosiaan sisällä mitään laskentaa), suuri osa bugeista löytyy jo näin. Jos manuaalisissa testeissä löytyy vielä uusia ongelmia, niistä kannattaa vääntää testitapaukset jo ennen bugin korjaamista.
Aihe on jo aika vanha, joten et voi enää vastata siihen.