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