WebKing – testy obciążeniowe

Transkrypt

WebKing – testy obciążeniowe
Przegląd narzędzi do
automatycznego testowania
aplikacji internetowych
Jan Płoszczyca
SKISR 2006
Plan prezentacji
–
Problemy przy tworzeniu serwisów
–
Definicja zautomatyzowanego testowania
–
Mity i fakty związane z testowaniem
–
Przegląd narzędzi
–
Porównanie
–
Podsumowanie
Problemy
●
Migracja programistów
●
“Rotacja wymagań zleceniodawcy”
●
Wysokie koszty poprawy kodu
●
Wybór narzędzi do testów
●
Testy regresji (To co działało musi działać!)
●
Bezpieczeństwo
Jakie narzędzie wybrać ?
●
możliwości
●
niezawodność
●
łatwe do zadoptowania
●
wydajność
●
kompatybilność
●
“symulacja użytkownika”
Mity i fakty
●
Narzędzia testujące to niestety również
programy
●
Czy tworzenie testów będzie “równie
starannie” jak tworzenie samego produktu?
●
Kiedy warto stosować ?
Mity i fakty c.d.
●
●
“Automatyczne testowanie pozwala
przetestować wiele interakcji systemu
eliminując czynnik ludzki, tym samym
poprawia jakość oprogramowania i przynosi
znaczne oszczędności”
Czy maszyna jest bardziej niezawodna w
interpretacji wyników działania programu ?
Działanie narzędzi do
automatycznego testowania
●
●
●
●
Nagrywanie i odtwarzanie skryptów (GUI)
Jak tworzony jest serwis nie ma znaczenia
interesują nas jedynie odpowiedzi HTTP
Najczęściej własny język skryptowy
Cele testowania
–
–
–
–
Funkcjonalność (symulacja działań użytkownika)
Integralność witryny
bezpieczeństwo(SQL Injection, cross-site
scripting, przepełnienie bufora,poprawność
parametrów)
Wydajność
Działanie - schemat
Testowany
Serwis
Specyfikacja
testów
Narzędzie testujące
(klient WWW)
Raport
z przebiegu
wykonania
testów
WebKing
●
●
●
Zawansowany dojrzały produkt
Bardzo rozbudowany zestaw gotowych
funkcji
Graficzny interfejs, gotowe kreatory
WebKing
●
●
●
●
Testy funkcjonalne – łatwy interfejs tworzenia
testów
Testy obciążeniowe – wirtualni użytkownicy,
zaawansowane gotowe scenariusze
obciążąnia aplkacji
Analiza front-end (przenośność, składnia,
standardy)
Testy bezpieczeństwa – podstawowe klasy
błędów,polityka bezpieczeństwa
WebKing – analiza statyczna
WebKing – analiza statyczna
●
●
●
●
●
Zgodność ze standardami (HTML,XML,CSS
, javascript itp.) - ponad 300 reguł
wbudowanych
Dostępność (paragraf 506 – USA,WAI -W3C)
Poprawność odnośników
Pisownia (znaczniki,język – słowniki ispell)
Standardy kodowania wewnątrz firmy
WebKing – testy funkcjonalne
●
●
●
●
●
●
Błędy w javascript
Poprawne wyświetlanie ramek, popup
windows
Błędy po stronie serwera
Nie potrzebna znajomość języka
programnowania
Nagrywamy śćieżkę interakcji automatycznie
wykrywa róznicę
Dane z zewnętrznych źródeł do wypełniania
formularzy
WebKing – testy funkcjonalne
WebKing – testy obciążeniowe
●
●
●
●
●
wirtualni użytkownicy ( możliwość
rozproszenia lokalizacji – 'bottlenecks' )
gotowe scenariusze (wzrost liniowy,
obciążenie szczytowe, stałe obciążenie)
możliwość wygenerowania scenariusza na
podstawie plików log serwera
Obsługa danych z agentów SNMP (v1, v2c)
Charakterystyka komfortu użytkownika ( czas
odświeżania strony, obsługa cookie itd)
WebKing – testy obciążeniowe
WebKing – testy obciążeniowe
WebKing – testy obciążeniowe
Web Inject
Web Inject - cechy
●
●
●
Darmowy open-source
Duże możliwości konfiguracji
Pluginy (nagios,mrtg)
Web Inject
Web Inject
Web Inject
<case
id="1"
description1="short description"
description2="long description"
method="post"
url="http://myserver/test/login.jsp"
postbody="username=corey&password=welcome"
verifypositive="verify this string exists"
verifynegative="verify this string does not exist"
logrequest="yes"
logresponse="yes"
sleep="3"
/>
<case
id="2"
description1="short description"
description2="long description"
method="get"
url="http://myserver/test/send.jsp?value={TIMESTAMP}"
verifypositive="verify this string exists"
verifynextpositive="{TIMESTAMP}"
/>
MaxQ
MaxQ - cechy
●
Darmowy – open-source
●
Oparte na java, jython – przenośność
●
Możliwość uruchomiania testów z linii
poleceń
●
Łatwo można dostosować do własnych
potrzeb
WebCanoo
●
●
●
dlaczego java ?
odrzucenie techniki 'recordPlay'
Sprawdzone narzędzia
–
–
–
–
–
–
ant
httpunit
xslt
junit
dbunit
Htmltidy
WebCanoo
<invoke
description="goto start page"
url="${start.page}" />
<setInputField description="set user name"
name="username"
value="${user}" />
<setInputField description="set password"
name="password"
value="${login.ok.password}" />
<clickButton
label="login"
description="Click the submit button" />
<verifyTitle description="Home Page follows if login ok"
text="${login.ok.title}" />
WebCanoo
<?xml version="1.0"?>
<!DOCTYPE project [
<!ENTITY login SYSTEM "file:../modules/login.xml">
<!ENTITY step SYSTEM "file:../modules/step.xml">
]>
<project name="loginAndStep" default="case" basedir="..">
<target name="case">
<webtest name="loginAndStep">
&config;
<steps>
&login;
&step;
</steps>
</webtest>
</target>
</project>
OpenQA: Selenium
●
Wykorzystuje bezpośrednio przeglądarkę (testy
działania aplikacji na różnych platformach
IE,Firefox,Safari,Opera,Mozilla) – użycie AJAX
(XmlHttpRequest)
●
Oprate na DHTML,javascript
●
Testy mogą pisane w dowolnym jezyku(obsługa HTTP)
(dostępne wrappery dla : Java,.NET,Python,Ruby)
●
Dostępny tryb interaktywny
OpenQA: Selenium
●
Problem “same origing policy”
OpenQA: Selenium IDE
●
●
●
Plugin do firefox
Debugowanie, edytor
Record & play
Przykład testu w języku C#
using Selenium;
using NUnit.Framework;
namespace MyTests {
[TestFixture]
public class GoogleTest {
private ISelenium sel;
[SetUp]
public void SetUp() {
sel = new DefaultSelenium("localhost",
4444, "*firefox", "http://www.google.com");
sel.Start();
}
[Test]
public void testGoogle() {
sel.Open("http://www.google.com/webhp");
sel.Type("q", "hello world");
sel.Click("btnG");
sel.WaitForPageToLoad("5000");
Assert.AreEqual("hello world - Google Search", sel.GetTitle());
}
}
}
[TearDown]
public void TearDown() {
sel.stop();
}
Sahi
●
Oparte na javascript
●
Działa jako serwer proxy
●
Tworzenie testów z poziomu przeglądarki
●
Uruchamianie utworzonych testów z lini
poleceń
Sahi
Sahi
Podsumowanie
●
Szybkość a elastyczność
●
Co tak naprawdę testujemy ?
Podsumowanie - zalecenia
●
Staranny dobór narzędzi(analiza użyteczności,
wersje demo )
●
Uzupełnienie a nie zastąpienie tradycyjnego
testowania
●
rozważna strategia automatyzacji
●
utrzymywanie zbiorów testów(jakość, a nie ilość)
●
staranna analiza wyników
Pytania ?
●
Dziękuję za uwagę ..
Źródła
●
●
●
●
●
●
●
http://sahi.sourceforge.net/index.html
http://maxq.tigris.org
http://kent.dl.sourceforge.net/sourceforge/struts/webcanoo.pdf
http://www.openqa.org/selenium/
http://www.aptest.com/webresources.html#web-perf
http://www.softwareqatest.com/qatweb1.html
http://opensourcetesting.org/functional.php

Podobne dokumenty