Automatyzacja bez nadmiernego bólu. Piotr Januszek



Podobne dokumenty
REFERAT PRACY DYPLOMOWEJ

Zwinna współpraca programistów i testerów z wykorzystaniem BDD i. by Example (JBehave/Spock/SpecFlow)

Wprowadzenie do Behaviordriven

Słowa kluczowe jak góry lodowe

Automatyzacja testowania oprogramowania. Automatyzacja testowania oprogramowania 1/36

Automatyzacja testów aplikacji webowych w Selenium podstawy. Natalia Krawczyk

Całościowe podejście do testowania automatycznego dla programistów. (TDD, BDD, Spec. by Example, wzorce, narzędzia)

Program szkolenia: Receptury testowania automatycznego - problemy, strategie, taktyki, techniki, narzędzia

Acceptance Test Driven Development wspierane przez narzędzie ROBOT Framework. Edyta Tomalik Grzegorz Ziemiecki

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Testowanie aplikacji mobilnych na platformie Android - architektura, wzorce, praktyki i narzędzia

REFERAT PRACY DYPLOMOWEJ Temat pracy: Projekt i realizacja serwisu ogłoszeń z inteligentną wyszukiwarką

Tester oprogramowania 2014/15 Tematy prac dyplomowych

Co to jest jest oprogramowanie? 8. Co to jest inżynieria oprogramowania? 9. Jaka jest różnica pomiędzy inżynierią oprogramowania a informatyką?

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki Promotor dr inż. Paweł Figat

Dokument Detaliczny Projektu

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32

Wprowadzenie do metodologii modelowania systemów informacyjnych. Strategia (1) Strategia (2) Etapy Ŝycia systemu informacyjnego

Dokument Detaliczny Projektu

REFERAT PRACY DYPLOMOWEJ

To sposób w jaki użytkownik wchodzi w interakcje z systemem. Środowisko graficzne używa kombinacji graficznych elementów(przyciski, okna, menu) i

Tematy seminariów wg Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, Zofia Kruczkiewicz

Całościowe podejście do testowania automatycznego dla programistów. /C#/PHP (TDD, BDD, Spec. by Example, wzorce, narzędzia)

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

Testowanie według modelu (MBT) Stowarzyszenie Inżynierii Wymagań wymagania.org.pl

Dokument Detaliczny Projektu Temat: Księgarnia On-line Bukstor

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

Programowanie zespołowe

SZKOLENIE TWORZENIE SYSTEMÓW

Programowanie Zespołowe

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

Cykle życia systemu informatycznego

Automatyzacja Testowania w WEB 2.0

Dlaczego testowanie jest ważne?

Rozdział 5: Zarządzanie testowaniem. Pytanie 1

Testowanie. Ryszard Beczek & Piotr Miłkowski 1 04/11/07

Programowanie Komponentowe WebAPI

Spring Framework - wprowadzenie i zagadnienia zaawansowane

Spis treści. Przedmowa Karolina Zmitrowicz, Adam Roman. Część I. Organizacja i procesy 1

WPROWADZENIE DO UML-a

Testowanie oprogramowania

Analityka danych w środowisku Hadoop. Piotr Czarnas, 27 czerwca 2017

SYSTEMY INFORMATYCZNE ćwiczenia praktyczne

Narzędzia CASE dla.net. Łukasz Popiel

Instalacja SQL Server Express. Logowanie na stronie Microsoftu

System zarządzający grami programistycznymi Meridius

Techniki efektywnego testowania kodu dla programistów Java (Spock

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

Błędy procesu tworzenia oprogramowania (Badania firmy Rational Software Corporation)

Priorytetyzacja przypadków testowych za pomocą macierzy

Continuous Testing a nowa era w jakości oprogramowania. Grzegorz Leopold, Michał Błaszak

Testujemy dedykowanymi zasobami (ang. agile testers)

INŻYNIERIA OPROGRAMOWANIA TESTOWANIE INTEGRACYJNE

PDM wbudowany w Solid Edge

Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej. Wstęp. Programowanie w Javie 2. mgr inż.

Organizacja zajęć BAZY DANYCH II WYKŁAD 1. Plan wykładu. SZBD Oracle

Jak patrzymy na testy czyli Jak punkt widzenia zależy od punktu siedzenia. Click Piotr Kałuski to edit Master subtitle style

HP Service Anywhere Uproszczenie zarządzania usługami IT

Automatyzacja narzędziami open source nie musi być trudna

E-commerce. Genialnie proste tworzenie serwisów w PHP i MySQL.

Usługi analityczne budowa kostki analitycznej Część pierwsza.

METODY PROGRAMOWANIA

Wykaz osób w postępowaniu o udzielenie zamówienia publicznego nr 32-CPI-WZP-2244/13. Podstawa do dysponowania osobą

HumanTechnology. Projektowanie interakcji. czyli łatanie dziury w procesie produkcji

Tematy seminariów wg Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, Zofia Kruczkiewicz

Piotr Ślęzak. Gdzie się podziała jakość

Oracle Designer. Oracle Designer jest jednym z głównych komponentów pakietu Oracle Developer Suite. Oracle Designer wspiera :

Zarządzanie i realizacja projektów systemu Microsoft SharePoint 2010

Warsztaty FRAME. Sygnatura warsztatu: W1 (W3) Czas trwania: 3 dni

Technologie dla aplikacji klasy enterprise. Wprowadzenie. Marek Wojciechowski

Testowanie elementów programowalnych w systemie informatycznym

SCRUM niełatwe wdrażanie metodyki w praktyce. Adam Krosny

Przewodnik instalacji i rozpoczynania pracy. Dla DataPage+ 2013

[Junior Developer - pierwsza praca jako programista - JavaDevMatt] 1. Sponsorzy Partnerzy projektu O czym i dla kogo jest ta książka?

Strategia testów mająca doprowadzić do osiągnięcia pożądanych celów

Szkolenie wycofane z oferty. Program szkolenia: Enterprise Java Beans 3.0/3.1

Dokumentacja aplikacji Szachy online

AUREA BPM HP Software. TECNA Sp. z o.o. Strona 1 z 7

SOA Web Services in Java

Etapy życia oprogramowania

Program szkolenia: Continuous Integration i Git

Zaawansowane programowanie w języku C++

Behavior Driven Development (BDD)

Podejście tradycyjne. plan wykonanie sekwencyjna natura wykonywanych zadań

Wykład 1 Inżynieria Oprogramowania

MonoGame. Wieloplatformowe gry w C# Mateusz Cicheński

NASZA MISJA. wszystkie nasze dzialania sfokusowane sa na efektywną, partnerską współprace.

Programowanie obiektowe 2 - opis przedmiotu

Referat pracy dyplomowej

TESTER OPROGRAMOWANIA STUDIA PODYPLOMOWE

Procesowa specyfikacja systemów IT

CUSTOMER SUCCESS STORY

Korporacyjna Magistrala Usług na przykładzie Mule ESB

Etapy życia oprogramowania. Modele cyklu życia projektu. Etapy życia oprogramowania. Etapy życia oprogramowania

Podstawy programowania III WYKŁAD 4

Plan Testów Systemu SOS

Testowanie i walidacja oprogramowania

Transkrypt:

Automatyzacja bez nadmiernego bólu Piotr Januszek

Bolesne początki Generacje frameworków ytest framework Problemy i rozwiązania

Czym jest hybris? Firma w Gliwicach Tworzy kompleksową platformę ecommerce ową: PCM - Zarządzanie produktami Customer service CMS Frontend store itd Pisane w Javie Klienci tacy jak: Nikon, Conrad, Douglas czy Nespresso

Narzędzie czy Framework Narzędzie: (ang. Tool) Program pomocniczy, który zajmuje się jednym określonym zadaniem. Pewne funkcje aplikacji także określa się mianem narzędzi. Framework: W programowaniu komputerowym framework albo platforma programistyczna jest szkieletem do budowy aplikacji. Definiuje on strukturę aplikacji oraz ogólny mechanizm jej działania, a także dostarcza zestaw komponentów i bibliotek ogólnego przeznaczenia do wykonywania określonych zadań.

Narzędzie czy Framework Narzędzie: Framework:

Pierwsze podejście Samo Selenium Początkowy entuzjazm zautomatyzujmy ile się da! Ogromna ilość niezarządzalnych testów Porażka na całej linii Wycofanie się z automatyzacji na rok

Wynik:

Pierwsza generacja frameworków do testowania automatycznego - narzędzia Zalety: Bardzo szybki rozwój Prostota użytkowania Prosta identyfikacja błędów w ramach przypadku testowego Wady: Redundancja Automatyzacja tylko dla osób technicznych Utrzymywanie przypadków testowych jest piekłem przy dużej ich liczbie

Pierwsza generacja frameworków do testowania automatycznego przykład Wpisz Jan do pola Użytkownik Wpisz Hasło do pola Hasło Naciśnij Zaloguj Jeżeli ekran jest Witaj to zalicz test W innym wypadku oblej test

Druga generacja frameworków do testowania automatycznego testowanie modularne Zalety: Zwiększona reużywalność Możliwość tworzenia bibliotek Zwiększona standardyzacja Wady: Skomplikowane utrzymywanie Wymagana dobra znajomość systemu w momencie tworzenia testów Duża baza dokumentacji, która również musi być utrzymywana Wysokie znajomości techniczne

Druga generacja frameworków do testowania automatycznego przykład Funkcja Wpisz do pola wpisuje w pole ${pierwszy parametr} dane, które otrzymuje w ${drugi parametr} Wywołaj funkcję Wpisz do pola z parametrami Użytkownik, Jan Wywołaj funkcję Wpisz do pola z parametrami Hasło, Hasło Naciśnij Zaloguj Jeżeli ekran jest Witaj to zalicz test W innym wypadku oblej test

Trzecia generacja frameworków do testowania automatycznego Data Driven Frameworks Zalety: Proste ponowne wykorzystywanie istniejących testów Doskonałe do sprawdzania przypadków skrajnych Wsparcie tworzenia nowych testów Wady: Kosztowne utrzymywanie testów w wypadku zmian funkcjonalności Redundancja Brak wsparcia dla osób nietechnicznych

Trzecia generacja frameworków do testowania automatycznego przykład Parametr Imię Jan Marek Ania Parametr hasło hasło innehasło jeszczeinnehasło Wpisz ${imię}do pola Użytkownik Wpisz ${hasło} do pola Hasło Naciśnij Zaloguj Jeżeli ekran jest Witaj to zalicz test W innym wypadku oblej test

Czwarta generacja frameworków do testowania automatycznego Keyword Driven Frameworks Zalety: Łatwe ponowne wykorzystywanie słów kluczowych Wcześniejszy development testów Wsparcie osób nietechnicznych Prostsze utrzymanie przypadków testowych Wady: Wymagana biznesowa znajomość aplikacji Duży nakład pracy zanim testy zaczną przynosić efekty Wysoka krzywa uczenia się (learning curve)

Czwarta generacja frameworków do testowania automatycznego przykład Słowa kluczowe: Zaloguj użytkownika z parametrami ${parametr1} i ${parametr2}: Wywołaj Wpisz do pola z parametrami Użytkownik, ${parametr1} Wywołaj Wpisz do pola z parametrem Hasło, ${parametr2} Naciśnij przycisk Zaloguj Sprawdź, czy ekran to ${parametr} Jeżeli ekran jest ${parametr} to zalicz test W innym wypadku oblej test Przypadek testowy: Zaloguj użytkownika z parametrami Jan i hasło Sprawdź, czy ekran to Zalicz test

Wysiłek kontra utrzymanie Ilość wysiłku Stworzenie Record/ Replay Modular Data driven Keyword driven Utrzymanie

ytest Testowanie w oparciu o warstwowo złożone słowa kluczowe Słowa kluczowe zorganizowane w warstwy Słowo wysokiego poziomu Słowo wysokiego poziomu Sterownik Logika biznesowa Sterownik Komponenty interfejsu Sterownik Sterownik Sterownik Słowo niskiego poziomu Słowo niskiego poziomu Słowo niskiego poziomu Słowo niskiego poziomu Słowo niskiego poziomu Słowo niskiego poziomu

ytest Testowanie w oparciu o warstwowo złożone słowa kluczowe - przykład Test case Słowo kluczowe wysokiego poziomu Sterownik Słowo kluczowe niskiego poziomu

Tester Jeden za wszystkich, wszyscy za jednego! Projektowanie przypadków testowych Przygotowanie środowiska Analityk biznesowy Infrastruktura Stworzenie przypadków testowych Weryfikacja przypadków testowych Tester Stworzenie słów kluczowych wysokiego poziomu Stworzenie Driverów Stworzenie słów kluczowych niskiego poziomu Programista Analiza raportów

DSL - Język domenowy (Domain Specific Language) Wspólny język Brak problemów komunikacyjnych Wspólna praca programistów, QA oraz analityków Zbliża do SCRUMA

BDT Behaviour driven testing Styl pisania przypadków testowych: Jeżeli, Kiedy, Wtedy (Given, When, Then) Dużo łatwiejszy do czytania i zrozumienia Ułatwia pracę osobom nietechnicznym Przykład: JEŻELI do systemu nikt nie jest zalogowany, KIEDY użytkownik wpisze Login i Hasło, ORAZ KIEDY użytkownik naciśnie zaloguj, WTEDY system go zaloguje, ORAZ wyświetli ekran powitalny, ORAZ będzie widział przycisk wyloguj.

Jak tworzyć przypadki testowe? SMARTnie! Specific Measurable Achievable Relevant Timebound

Jakość vs Ilość Ile warto zautomatyzować? Ważniejsze jest, żeby testy zawsze przechodziły, niż żeby wszystko było zautomatyzowane Analiza ryzyka nie ma sensu automatyzować czegoś, co prawie nigdy nie jest używane Analiza trudności napisania testu Możliwe problemy w automatyzacji Fałszywie zaliczone (False-fail) Fałszywie niezaliczone (false-pass)

Niezależność danych testowych i niezależność testów 2 podejścia: Pisanie testów na bazie istniejących danych testowych Wymaga mniej pracy przy tworzeniu testów Dowolne zmiany danych testowych wpływają na testy Wszelkie zmiany modelu są automatycznie w danych testowych Wymagana współpraca QA-DEV lub programujący testerzy Pisanie własnych danych testowych dla testów automatycznych Dużo kosztowniejsze tworzenie testów Znacznie zmniejszone problemy z błędami danych Dodatkowa praca przy zmianie modelu Wskazane przy braku ścisłej współpracy QA - DEV

Problem Złe rozłożenie pracy QA w projekcie

Rozwiązanie Framework do testowania przy użyciu słów kluczowych Projektowanie przypadków testowych Przygotowanie środowiska Stworzenie przypadków testowych Weryfikacja przypadków testowych Stworzenie słów kluczowych wysokiego poziomu Stworzenie Driverów Stworzenie słów kluczowych niskiego poziomu Analiza raportów

Problem przedawniająca się dokumentacja Ze wzrostem projektu nie zawsze pilnowana jest dokumentacja Były ważniejsze rzeczy do zrobienia

Rozwiązanie żywa dokumentacja Dobrze stworzone przypadki testowe przy użyciu języka domenowego są dokumentacją Przypadki testowe nie są w stanie się przedawnić Przykład 1 prosty sklep Zaloguj się jako użytkownik Jan Kowalski z hasłem mypass Sprawdź, czy użytkownik jest zalogowany Wejdź na stronę produktów Dodaj produkt laptop5 do koszyka Wejdź do koszyka Sprawdź, czy w koszyku znajduje się produkt laptop5 w ilości 1 Wykonaj checkout Sprawdź, czy masz potwierdzenie zakupu Przykład 2 system bazodanowy w szpitalu Zaloguj się jako użytkownik Lekarz z hasłem mypass Szukaj w bazie danych pacjenta Jan Kowalski Sprawdź, czy ubezpieczenie pacjenta jest aktywne Sprawdź, czy ostatnia wizyta użytkownika była 30.05.2013 Szukaj w bazie danych pacjenta Anna Nowak Sprawdź, czy ubezpieczenie użytkownika jest aktywne

Problem Granulacja słów kluczowych Problem często występujący w: Długo trwających projektach Projektach o wysokim stopniu skomplikowania Co zrobić, kiedy liczba słów kluczowych przekracza możliwości utrzymania?

Rozwiązanie reużywalność vs czytelność 2 wyjścia: Podział projektu na poszczególne biblioteki: Ograniczone rozwiązanie Liczba słów wciąż jest wielka jedynie ustrukturyzowanie się poprawiło Problem jest mniejszy, ale nie rozwiązany Bardziej ogólne słowa kluczowe: Znaczne zmniejszenie liczby słów kluczowych Zmniejszona czytelność Trzeba znaleźć złoty środek Niestety w znacznym stopniu jest to metoda prób i błędów

Problem synchronizacja czasowa w testach Aplikacja czasem informuje, że już jest gotowa do odpowiedzi mimo, że jeszcze doczytywane są pewne dane Pojawia się głównie w aplikacjach internetowych Mimo, że strona jest wczytana nie wszystkie elementy są gotowe, więc dowolna interakcja nie działa Wiąże się ze sporą ilością fałszywie zaliczonych testów (False Fail)

Rozwiązanie Czekanie na elementy Czekanie określonego czasu jest złe nie skaluje się Dobrze jest znaleźć element typu wczytywanie(loading) jeżeli taki istnieje i jest widoczny znaczy, że strona nie jest gotowa Test naprawdę jest sprawdzany dopiero na CI.

Wynik:

Referencje: http://www.neoinfo.pl/informatyka/narzedzie.html http://pl.wikipedia.org/wiki/framework http://edge.sapient.com/assets/imagedownloader/149/sapient_automatedregr ession.pdf http://www.automatedtestinginstitute.com/home/index.php?option=com_cont ent&view=article&id=69&itemid=75 http://safsdev.sourceforge.net/framesdatadriventestautomationframework s.htm http://eliga.fi/thesis-pekka-laukkanen.pdf http://pl.coremag.eu/fileadmin/user_upload/redaktion/coremag_pl/downloads/ Core_magazineTestWarez_2012.pdf

piotr.januszek@hybris.com