Warsztat: "Automatyzacja testów (JAVA) - od podstaw"

Post on 24-Jan-2016

78 views 3 download

description

Warsztat: "Automatyzacja testów (JAVA) - od podstaw". Marcin Dziedzic, Wiktor Żołnowski. Agenda. Omówienie celu szkolenia Od testera do QA Inżyniera Wstęp do Automatyzacji Po co Automatyzować? Co Automatyzować? Jak Automatyzować? Warsztat Inżyniera testów - PowerPoint PPT Presentation

Transcript of Warsztat: "Automatyzacja testów (JAVA) - od podstaw"

Warsztat: "Automatyzacja testów (JAVA) - od podstaw"

Marcin Dziedzic, Wiktor Żołnowski

Agenda1. Omówienie celu szkolenia

1.Od testera do QA Inżyniera2. Wstęp do Automatyzacji

1.Po co Automatyzować?2.Co Automatyzować?3.Jak Automatyzować?

3. Warsztat Inżyniera testów1.Narzędzia, których będziemy używać

1.Repozytorium2.Narzędzia programistyczne (IDE)3.Java4.Bazy danych5.Narzędzia/Frameworki do testowania6.Contionous Integration7.Metodyki i procesy - dobre praktyki

Cel szkolenia

"Od testera do QA Inżyniera"

• Rzeczywistość• QA - definicja• QA a testowanie• Po co to szkolenie?

Rzeczywistość

• Wytarzane systemy są coraz bardziej skomplikowaneo Coś, co kiedyś mogła robić jedna osoba teraz wymaga

sztabu specjalistów i odpowiedniego zarządzania nimio Niestety często jest to niemożliweo Odpowiedź: Automatyzacja

• Coraz popularniejsze "Zwinne metodyki wytwarzania oprogramowania" o Od testerów wymaga się znacznie więcej

• Potrzeba bliskiej współpracy testerów z developeramio Testerzy i developerzy muszą używać wspólnego języka

• Nowe możliwościo Powstają nowe narzędzia, które dają większą swobodę i

łatwość automatyzacji tego co dotychczas robił człowiek.

Quality Assurance

• Software Quality Assurance to dziedzina szeroko rozumianego wytwarzania oprogramowania zajmująca się zapewnianiem wysokiej jakości tegoż oprogramowania. Sposobów na zapewnienie jakości jest wiele. 

• Koszty błędów są niższe, gdy błędy wykrywane są we wczesnych fazach procesu wytwarzania oprogramowania.

• Kosztów poprawy błędów nie ma wcale, gdy nie dopuścimy w ogóle do ich powstania.o Można to osiągnąć poprzez zastosowanie odpowiednich

procesów i praktyk, które pozwalają na lepszą kontrolę i wstrzykiwanie jakości na każdym etapie. 

QA a testowanie

• Testowanie oprogramowania jest jednym z wielu elementów Quality Assurance. 

• Testowanie to tylko Quality Control/Veryfication, koszty poprawy błędów nadal są dosyć wysokie.

• Skoro koszty testowania są nadal dosyć wysokie naturalną jest potrzeba zautomatyzowania.

• Testowanie to dostarczanie informacji zwrotnej o tym czy oprogramowanie działa i jak działa.

• Im szybsza informacja zwrotna tym cenniejsza.

Po co tu przyszliście

?

Trzy powody dla których testerzy powinni programować    • Narzędzia - komputery i programy komputerowe powstają

po to by ułatwiać ludziom wykonywanie różnych zadań w tym także testowania oprogramowania. 

• Sens - Ucząc się programować rozumiemy jak działają testowane aplikacje, jak działa komputer etc. Dzięki temu możemy zadawać bardziej trafne pytania. 

• Komunikacja - Programując nie tylko dowiadujemy się jak aplikacja działa ale także rozumiemy to jak skomplikowana jest. Ucząc się programowania łatwiej jest nam zrozumieć programistów. Budujemy wspólny język.

Co dostaniecie?    

• Umiejętności potrzebne do samodzielnego utworzenia własnego warsztatu pracy inżyniera testów.

• Umiejętności potrzebne do wdrożenie praktyk automatyzacji testów w Waszej organizacji.

• Możliwość nawiązania rozmowy z programistami w ich języku.

• Dobry start (kopniak na początek) w długotrwałym procesie stawania się ekspertem w QA.

• Podstawowe umiejętności tworzenia testów automatycznych na kilku poziomach:o Testy jednostkoweo Testy funkcjonalneo Testy interfejsu użytkownikao Testy akceptacyjne

A czego Wam nie damy?

• Nikt łopatą wiedzy do głowy nie nawkłada...• To dopiero początek drogi do tego byście sami mogli się

dalej rozwijać...• Nie nauczymy Was programować...• Nie zrobimy z Was QA Inżynierów (wbrew tytułowi) - do tego

oprócz szkolenia będziecie potrzebować jeszcze trochę praktyki i setek popełnionych błędów, z których się wiele nauczycie... 

Wstęp do automatyzacji

 

Po co automatyzować?

• Jeśli nie wiadomo o co chodzi to chodzi o... pieniądzeo Automatyzacji upraszcza wykonywanie powtarzalnych

czynności a co za tym idzie zmniejsza koszt wykonywania tychże czynności

• Coraz większa komplikacja wytwarzanych systemów oznacza coraz trudniejsze testowanie i obsługęo Tylko dzięki automatyzacji możemy zapewnić

wystarczające pokrycie regresjio Zarządzanie systemami składającymi się z dużej ilości

modułów jest niemożliwe bez zautomatyzowania tego procesu. 

• Informacja zwrotna

Co automatyzować?

• Każda czynność często powtarzana podczas procesu wytwarzania oprogramowania powinna zostać zautomatyzowana w celu optymalizacji kosztów.

• Informacja zwrotna dostarcza największej wartości w procesie wytwarzania oprogramowania, im szybciej ta informacja zostanie dostarczona tym większy zysk osiągniemy. o Należy automatyzować wszystko to co związane z

dostarczaniem informacji zwrotnej.

Jak automatyzować?

O tym właśnie są te warsztaty...

• Automatyzacja testówo jednostkowycho funkcjonalnych/integracyjnycho akceptacyjnych

• Continous integration jako sposób na dostarczanie szybkiej informacji zwrotnej

Warsztat inżyniera testów

Podręczna skrzynka z narzędziami

Integrated Development Environment (IDE)"Zintegrowane środowisko programistyczne (ang. Integrated Development Environment, IDE) jest to aplikacja lub zespół aplikacji (środowisko) służących do tworzenia, modyfikowania, testowania i konserwacji oprogramowania.Aplikacje będące zintegrowanymi środowiskami programistycznymi charakteryzują się tym, że udostępniają złożoną, wieloraką funkcjonalność obejmującą edycję kodu źródłowego, kompilowanie kodu źródłowego, tworzenie zasobów programu (tzn. formatek / ekranów / okien dialogowych, menu, raportów, elementów graficznych takich jak ikony, obrazy itp.), tworzenie baz danych, komponentów i innych."

Źródło: Wikipedia

• Dobre poznanie narzędzia, w którym będziemy się poruszać znacząco ułatwi nam dalszą pracę.

Repozytorium kodu źródłowego

Repozytoria kodu źródłowego dzielimy na dwa rodzaje:• scentralizowane (np. Subversion)• rozproszone (np. GIT)

Będziemy używać SVN http://tortoisesvn.tigris.org/

Java

Kilka słów o Javie...

Bazy danych

Większość aplikacji webowych korzysta z różnych baz danych dlatego warto też o nich wspomnieć. Z tematem baz danych wiąże się także konieczność przygotowywania odpowiednich danych wykorzystywanych później w testach - fixtures. 

Narzędzia do testowania

• Selenium• JUnit• JBehave

Selenium

Wstęp do używania narzędzia

Selenium - opis

Selenium to narzędzie służące do testów automatycznych aplikacji webowych.

Selenium to:• Selenium IDE• Selenium WebDriver• Selenium RC + Selenium Server

My skupimy się na Selenium IDE i Selenium WebDriver.

Selenium Core

• Framework• Może być używane jako samodzielna biblioteka

(JavaScript/html) 

Selenium RC

Selenium Remote Control Server to aplikacja napisana w javie służąca do uruchamiania skryptów testowych w przeglądarkach.

Selenium RC

• Sterownik wysyła requesty do RC.• RC uruchamia Selenium Core w przeglądarce.• Core uruchamia przeglądarke z testowaną aplikacją.• Core wykonuje akcje, których wywołania są przesyłane za

pomocą http z RC. 

Selenium WebDriver

Selenium WebDriver to aplikacja pozwalająca na odtwarzanie skryptów testowych w najpopularniejszych przeglądarkach internetowych przy użyciu API tych przeglądarek. 

Zalety WebDriver:• Szybkość• Obiektowość• Radzi sobie z generycznymi elementami• Mniejsza inwazyjność

Wady:• Niestety nie wszystko co było w Selenium RC ma

bezpośrednie przełożenie na funkcjonalność WebDriver.

Selenium IDE

Selenium IDE to plugin do FireFoxa pozwalający na nagrywanie i odtwarzanie skryptów testowych za pomocą przeglądarki.

Selenium IDE zapisuje skrypty w pseudojęzyku przypominającym xml - selenese.

Przechowywanie i utrzymywanie przypadków testowych napisanych w selenese jest nieefektywne.

Selenium IDE pozwala na eksport przypadków testowych do wielu popularnych języków programowania (java, php, python, ruby, perl. .Net)

Selenium

comand | target | value

• comand - komenda, która ma zostać wykonana• target - element, na którym wykonana będzie komenda• value - wartość, parametr akcji jeśli konieczny

Komendy => 3 x A

• Actionso Symulacje działań użyszkodnika 

• Acessorso Sprawdzanie i przechowywanie stanów aplikacji 

• Assertionso Weryfikacja rezultatu otrzymanego z oczekiwanym 

Asercje    

• asserto gdy assert = false test jest przerywany

• verifyo gdy verify = false test jest kontynuowany a fail

zapisywany do logu• waitFor 

o kiedy waitFor = false (po timeout) test jest przerywany

Element Locator

Element locator to sposób w jaki odnajdziemy interesujący nas element w strukturze DOM dokumentu HTML.

• identifier• id• name• xpath• link• css

Firebug

Firebug to kolejny plugin do FireFoxa, który ułatwi nam poszukiwanie i przekglądanie elementów html.

Dosyć teorii

Instalacja- FF- Selenium IDE- Firebug

TESTUJEMY!

Continous Integration

• Ciągła integracja nowego kodu z już istniejącym produkcyjnym

• Jak najczęstsze integrowanie kodu z produkcją i wypuszczanie nowych wersji.

• Im wcześniej produkt będzie na produkcji tym wcześniej będzie zarabiał

• Wywodzi się z Agile/XP.• Z powodzeniem jej elementy można stosować w innych

metodykach.

CI - zasady

• Trzymaj kod w repozytorium.• Automatyzuj buildy• TDD• Częsta integracja• Commit odpala build• Build jest szybki• Odpowiednie środowisko• Automatyczny deployment• Dostęp do produkcyjnego wydania produktu• Wyniki buildów widoczne dla każdego

CI - narzędzia

Jenkins (Hudson) to narzędzie umożliwiające zarządzanie automatycznymi buildami odpalającymi testy i nie tylko.