Web-sovellusten testaus
Testityypit web-sovellukselle Toiminnallisuus Yhteensopivuustestaus Käytettävyys Suorituskykytestaus Tietoturvatestaus Rajapintojen testaaminen
GET -pyyntö REQUEST: GET http://www.cybercom.com:80/ HTTP/1.1 Host: www.cybercom.com User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip, deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Proxy-Connection: keep-alive RESPONSE: HTTP/1.1 200 OK Date: Fri, 25 Nov 2011 06:37:24 GMT Server: Microsoft-IIS/6.0 X-Powered-By: ASP.NET X-AspNet-Version: 2.0.50727 Cache-Control: private Expires: Sun, 27 Nov 2011 06:37:24 GMT Content-Type: text/html; charset=utf-8 Content-length: 19392
POST - pyyntö REQUEST POST http://www.cybercom.com:80/search/?quicksearchquery=document HTTP/1.1 Host: www.cybercom.com User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip, deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Proxy-Connection: keep-alive Referer: http://www.cybercom.com/search/?quicksearchquery=document Cookie: sifrfetch=true; utma=80957384.226035340.1322462249.1322462249.1322462249.1; utmb=80957384.6.10.1322462249; utmc=80957384; utmz=80957384.1322462249.1.1.utmcsr=(direct) utmccn=(direct) utmcmd=(none); ptca=80957384.g1mjx4diopnw.1322455050.1322455050.1322455050.1; ptv_3rt7en=g1mjx4diopnw; pti_3rt7en=g1mjx4diopnw; ptcc=1; ptcs=80957384.6.10.1322455050; ptcz=80957384.1322455050.1.0.ptmcsr=(direct) ptmcmd=(none) ptmccn=(direct) Content-Type: application/x-www-form-urlencoded Content-length: 24372 FormHolder%24ctl00%24SearchText=document&ctl00%24FormHolder%24PageHolder%24WideContentHolder%24C entercontentholder%24mainbodyholder%24searchtext=document&ctl00%24formholder%24pageholder%24wide ContentHolder%24CenterContentHolder%24MainBodyHolder%24SearchButton=Search
Muita HTTP - pyyntöjä OPTIONS Palauttaa HEAD PUT Palauttaa vain vastauksen headerin Lataa palvelimelle resursseja DELETE Tekee palvelimelle resurssin poiston TRACE Palauttaa alkuperäisen pyynnön CONNECT pyydetään yhteyttä, joka jää päälle (esim. ssl -tunnelointi)
Web sivuilta yleisesti testattavia asioita Navigointi Back napin käyttö Sivun päivitys Javascript Usean selaininstanssin avaaminen HTML koodin validointi CSS tyylisivujen validointi Syötteet Evästeet ja niiden hallinta
Web sivuilta yleisesti testattavia asioita Linkkien tarkistus Tähän löytyy ilmaisia ja maksullisia työkaluja Osa regressiotestausta Sivuston visuaalisen ilmeen tarkistus Zoomaus Eri näytön resoluutiot Eri selaimet Sivuston sivujen tulostaminen Selainten liitännäisten käyttö Flash/Flex, Silverlight, Java appletit ym. Videoiden näyttäminen Lokalisointi Company presentation
Yhteensopivuus eri selaimilla 2011 Internet Explorer Firefox Chrome Safari Opera October 21.7 % 38.7 % 32.3 % 4.2 % 2.4 % September 22.9 % 39.7 % 30.5 % 4.0 % 2.2 % August 22.4 % 40.6 % 30.3 % 3.8 % 2.3 % July 22.0 % 42.0 % 29.4 % 3.6 % 2.4 % June 23.2 % 42.2 % 27.9 % 3.7 % 2.4 % May 24.9 % 42.4 % 25.9 % 4.0 % 2.4 % April 24.3 % 42.9 % 25.6 % 4.1 % 2.6 % March 25.8 % 42.2 % 25.0 % 4.0 % 2.5 % February 26.5 % 42.4 % 24.1 % 4.1 % 2.5 % January 26.6 % 42.8 % 23.8 % 4.0 % 2.5 % Lähde: http://www.w3schools.com/browsers/browsers_stats.asp
Syötteiden tarkistus / testaus Ei voida olettaa, että sovelluksen käyttäjä käyttää sovellusta oikein Web-sovelluksen käyttäjä voi syöttää sovellukselle mitä tahansa syötteitä tahattomasti tai tahallaan Kehittäjät tekevät usein oletuksia, miten sovellusta tulisi käyttää ja mitä syötteitä sille tulee syöttää Tärkeä osa sovelluksen tietoturvaa Kaikki sovellukseen tulevat syötteet tarkistettava!
Väärät syötteet negatiivinen testaus Merkkijonot Pitkät syötteet Erikoismerkit Html/javascript syöttö SQL Välilyönnit Päivämäärät Eri formaateissa Väärät päivät (31.2) Kesäaika Numerot Negatiiviset luvut Suuret luvut 0 Liukuluvut
Käytettävyys Mikä on sovelluksen kohderyhmä? Käytön ja navigaation logiikka 3 klikkauksen sääntö Visuaalinen ilme ja yhdenmukaisuus Ohjeistus Sivujen latausnopeus Sivujen raskaus (sivukoko, javascriptin käyttö)
Web-testauksen työkaluja Selenium Web testauksen automatisointiin Nauhoitusominaisuus Testit ajetaan suoraan selaimella Useita selainympäristöjä Linkkien tarkistajat (http://validator.w3.org/checklink, Xenu ) Web crawlers Validaattorit (HTML/CSS)
Tietoturvan testaaminen Tietomurrot ovat nykyisin arkipäivää Uutisia murroista tulee lähes päivittäin, myös Suomessa Käyttäjät eivät ole luotettavia Kaikki syötteet on tarkistettava Joitakin sovelluksen haavoittuvuuksia SQL-injektiot Cross site scripting (XSS) Cross Site Request Forgery (CSRF) OWASP: https://www.owasp.org/index.php/main_page Testing guide: https://www.owasp.org/index.php/category:owasp_testing_project
Tietoturvan testaaminen Autentikointi Salasanan vahvuus ja tilin lukitseminen Ei hyväksytä kaikkia salasanoja Tilin lukitseminen esim. 10 virheellisen kirjautumisyrityksen jälkeen (tässä 2 puolta) Kirjautumisen vanheneminen Unohtuiko salasana? ominaisuus Käyttäjäprofiilit Auktorisointi pääsy ainoastaan sovelluksen sallittuihin osiin ja tietoihin Cookieiden käyttö Ei tallenneta vaarallista tietoa keksiin Cookien elinaika
Tietoturvatestauksen työkaluja Proxy työkalut WebScarab, Paros Burb Suite Skannerit nmap Nikto/Wikto Burb Suite W3af Acunetix, HP WebInspect (kaupallisia)
Suorituskyvyn testaaminen Tavoitteet Suorituskykyvaatimusten verifiointi. Suorituskyvyn selvittäminen. Kuormituksen siedon selvittäminen. Varmistaa, että käyttöönotto onnistuu suunnitellusti että palvelu ylipäätään toimii. Pullonkaulojen tunnistaminen. Selvittää laitteistotarve riittävyys nyt ja lähitulevaisuudessa.
Suorituskykytestauksen tyyppejä Suorituskykytestaus voidaan jakaa erilaisiin testityyppeihin, joista voidaan asiakkaan tarpeiden mukaan valita sopivimmat Testityyppejä Kuormitustestaus (Load testing) Testataan sovelluksen toimintaa määritettyjen raja-arvojen puitteissa, sekä testataan laitteiston kokoonpanon riittävyys Stressitestaus (Stress testing) Testataan, miten sovellus käyttäytyy äärimmäisissä kuormitustilanteissa Kestävyystestaus (Endurance testing) Testataan sovelluksen käyttäytymistä pitkäkestoisen kuormituksen aikana Skaalautuvuuden testaus (Scalability testing) Testataan sovelluksen skaalautuvuusominaisuuksia Volyymitestaus (Volume testing) Testataan toimivuutta erityisesti suurilla datamäärillä
Suorituskykytestauksen suunnittelu Suorituskykyvaatimukset Paljonko tapahtumia ruuhkaisimpana aikana? Keskimääräinen vierailuaika ja sivupyyntöjen määrä Mahdolliset kuormituspiikit? Testauksessa käytettävien käyttötapausten mietintä Sovelluksesta riippuen 3 6 keskeisintä käyttötapausta Mahdollisimman realistisen käytön simulointi Käyttötapausten painotus Palvelinresurssien monitorointi CPU kuorma Muistinkäyttö Levynkäyttö Verkkoliikenne Company presentation
Suorituskykytestauksen suunnittelu Suorituskykytestauksen testiskriptien luonti Nauhoitetaan virtuaalisille käyttäjille valitut käyttötapaukset Skriptien mietintäajat asetetaan realistisiksi Testidatan luonti ja käyttö Datan tulee olla riittävän laajaa ja dynaamista, jotta saadaan todellinen kuva suorituskyvystä Testidatan tulisi olla tuotantoa vastaava Vastausten tarkistukset Ei toiminnallista testausta Tavallisten virheviestien tarkistus Kuorman konfigurointi Käyttäjämäärät Käyttäjien lisääminen testattavaan sovellukseen Company presentation
Testin suoritus Company presentation Alustetaan palvelin uudelleenkäynnistys Aikaisemmat testit eivät vaikuta Asetetaan monitoroinnit Monitoroinnit tärkeitä, koska niiden avulla päästään paremmin pullonkaulojen jäljille Esitestien ajaminen Testiskriptien testaus useammalla virtuaalisella käyttäjällä Palvelimen lämmittely Palvelimen cachet alustuvat Testin ajaminen Oikea kuorma Esim. Testin ramp-up 30 minuuttia, 150 käyttäjää yhden tunnin ajan
Suorituskykytestauksen työkaluja Open-source Apache JMeter Grinder Httperf loadui OpenSTA Kaupallisia HP Loadrunner SilkPerformer WAPT Pro
www.cybercomgroup.com