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
Dziękuję za uwagę.. Pytania?
Ź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