web-sovellusten testaus - tunitie21201/s2011/luennot/web-sovellusten testaus.pdf ·...
TRANSCRIPT
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
– Palauttaa vain vastauksen headerin
PUT
– 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
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
Company presentation
Suorituskykytestauksen työkaluja
Open-source
– Apache JMeter
– Grinder
– Httperf
– loadUi
– OpenSTA
Kaupallisia
– HP Loadrunner
– SilkPerformer
– WAPT Pro
www.cybercomgroup.com