Automatyzacja Testowania w WEB 2.0 Wojciech Pająk, Radosław Smilgin XXIV Jesienne Spotkania PTI Wisła, 20-24 października 2008
Agenda Wprowadzenie do automatyzacji testowania Technologie WEB 2.0 Narzędzia do automatyzacji Przykłady Podsumowanie XXIV Jesienne Spotkaia PTI, 20-24 paźdz. 2008 Wisła
Czym jest automatyzacja testów? Symulacja działań użytkownika Identyfikacja elementów i wykonywanie na nich akcji Weryfikacja zdarzeń Logowanie błędów Raportowanie wyników Automatyczny test jest tylko tak dobry, jak zawarte w nim instrukcje weryfikujące.
Stosowane weryfikatory Asserty (twierdzenia) Porównywanie zrzutów ekranowych okien lub wybranych elementów strony Porównywanie stanów elementów strony Pomiar czasu Pomiar zużycia zasobów (serwer, przeglądarka)
Automatyzacja testów aplikacji WEB 2.0 Testy funkcjonalne Odwzorowanie działań użytkownika (UI) Wywoływanie zmian stanu elementów, zdarzeń (DOM) Wykonywanie tych samych testów na różnych przeglądarkach i ich wersjach Testy niefunkcjonalne Obciążenie (ilość użytkowników) Wydajność (czas przetwarzania żądań, zasoby) Bezpieczeństwo Testy użyteczności (?)
Co automatyzować? Testy, które są wykonywane często Testy, które są trudne do wykonania ręcznie Testy, które trwają długo Testy, które są wykonywane równolegle
Kiedy unikać automatyzacji? Testy są wykonywane rzadko Wyniki testów są trudne do zweryfikowania automatycznie (np. kolory) Programy podlegające testowaniu ulegają częstym zmianom
Automatyzacja dobre praktyki Organizacja testów Testy przygotowują warunki i sprzątają po sobie Używanie sprawdzonych weryfikacji Używanie negatywnych scenariuszy w testach Używanie różnych środowisk testowych Regularne wykonywanie testów Raportowanie i dystrybucja wyników
Najważniejsze Technologie WEB 2.0 XHTML AJAX/JavaScript SOAP XUL Webservices
Wymagane umiejętności testerów Web 2.0 HTML, DOM HTTP Podstawy programowania obiektowego (.NET, Java) Podstawy testów jednostkowych (NUnit, JUnit)
Popularne, darmowe narzędzia Automatyzacja testów funkcjonalnych WebAii Automation Framework Selenium
WebAii Automation Framework Darmowa biblioteka.net,.net framework 3.5 Automatyzacja testów funkcjonalnych aplikacji internetowych Można zastosować do testów wydajnościowych (performance) Wsparcie dla ASP.NET Zawiera przykłady w C# i VB.NET
WebAii.Technologie Biblioteka dedykowana do testów aplikacji Web 2.0 Rich Internet Applications (RIA) AJAX ASP.NET Obsługa ramek Obsługa okien dialogowych i pop-upów Pełen dostęp do struktury DOM
WebAii.Przeglądarki Wspólne API dla Internet Explorer 6 i 7, Firefox 2 i 3 Konieczna odpowiednia konfiguracja przeglądarek
WebAii.Środowisko NUnit lub Visual Studio Team System.NET framework 3.5, Visual Studio C# Express 2008 Primary Interop Assemblies (PIA) Firebug, Internet Explore Developer Toolbar
WebAii.Uruchamianie w NUnit
WebAii.Metodyka automatyzacji Kontrola przeglądarki Automatyzacja DOM Metody get pozwalające odczytać stan elementów Automatyzacja UI Założenia: Element zawsze musi być widoczny Desktop -> Mouse, KeyBoard, Metoda GetRectangle() dla każdego elementu DOM Podejście to można także stosować do okienek Win32 Sprawdza się doskonale przy drag & drop trudne do wykonania w DOM
WebAii.Wyszukiwanie elementów Notacja skrótowa Wyszukiwanie po zawartości (Content, np. kiedy nie ma innych atrybutów, lub ich wartości są dynamiczne) Wyszukiwanie zawężone (np. po elementach określonego typu: tabela, div) Wyszukiwanie przy użyciu Language Integrated Query (LINQ) Wzorce dla często występujących elementów Serializacja/Deserializacja (identyfikacja elementów w plikach XML)
WebAii.Akcje Klikanie elementów Akcje myszy na elementach Zaznaczanie/odznaczanie check boxów i radio buttonów Wywoływanie zdarzeń, np. OnClick, OnFocus Wykonywanie zrzutów ekranowych Wybieranie z elementów typu drop down Wykonywanie drag & drop
WebAii.Klasa HtmlWait Oczekiwanie na: stan kontrolki HTML (visible/not visible) zmianę stylu spełnienie lub nie dowolnego warunku
WebAii.Test Regions Logiczna segmentacja Niższe koszty utrzymania testów Wyizolowanie testów
WebAii.Ajax/JavaScript Synchronizacja Wywoływanie JavaScript Obsługa drag & drop Prawdziwa interakcja z interfejsem graficznym aplikacji (mysz, klawiatura)
WebAii.Integracja Konfiguracja.NET Logowanie VSTS unit testing framework, gotowe template y NUnit, template w VS Biblioteka utworzona w.net możliwa integracja z dowolną aplikacją.net
Selenium Darmowy dodatek do przeglądarki Firefox (2 i 3) Automatyzacja testów funkcjonalnych aplikacji internetowych Możliwość nagrywania testów Zapis testów w formacie HTML, eksport do popularnych języków programowania (m.in. C# i Java) Uruchamianie testów na wielu platformach i przeglądarkach jednocześnie
Selenium.Przeglądarki Aktualnie wsparcie jedynie dla przeglądarki Firefox w wersji 2 i 3
Selenium.Uruchamianie Testy uruchamiane są w dodatku przeglądarki Firefox
Selenium.Metodyka automatyzacji Kontrola przeglądarki Metody wait pozwalające na warunkowe oczekiwanie Metody store pozwalające odczytywać parametry elementów Automatyzacja DOM (składnia) Instrukcja Element aplikacji Wartość Click loginbutton label= Login
Selenium.Wyszukiwanie elementów Wyszukiwanie po id, typach, xpath, name Filtrowanie elementów Możliwość nagrywania testów Zapis testów w formacie HTML, eksport do popularnych języków programowania (m.in. C# i Java)
Selenium.Akcje Klikanie elementów Akcje myszy na elementach Zaznaczanie/odznaczanie check boxów i radio buttonów Wywoływanie zdarzeń, np. OnClick, OnFocus Wybieranie z elementów typu drop down Wykonywanie drag & drop
Selenium.Weryfikacje Metody verify Metody assert Metody wait
Przykłady użycia narzędzi WebAii Selenium
Dziękuję za uwagę Więcej informacji na: http://www.artoftest.com/webaiifxproduct.aspx http://selenium.openqa.org Pytania? Chętnie odpowiemy na Państwa zapytania drogą elektroniczną: kontakt@