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

36
Warsztat: "Automatyzacja testów (JAVA) - od podstaw" Marcin Dziedzic, Wiktor Żołnowski

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"

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

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

Marcin Dziedzic, Wiktor Żołnowski

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

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

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

Cel szkolenia

"Od testera do QA Inżyniera"

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

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

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.

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

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. 

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

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.

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

Po co tu przyszliście

?

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

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.

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

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

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

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... 

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

Wstęp do automatyzacji

 

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

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

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

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.

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

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

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

Warsztat inżyniera testów

Podręczna skrzynka z narzędziami

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

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ę.

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

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/

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

Java

Kilka słów o Javie...

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

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. 

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

Narzędzia do testowania

• Selenium• JUnit• JBehave

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

Selenium

Wstęp do używania narzędzia

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

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.

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

Selenium Core

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

(JavaScript/html) 

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

Selenium RC

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

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

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. 

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

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.

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

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)

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

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

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

Komendy => 3 x A

• Actionso Symulacje działań użyszkodnika 

• Acessorso Sprawdzanie i przechowywanie stanów aplikacji 

• Assertionso Weryfikacja rezultatu otrzymanego z oczekiwanym 

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

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

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

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

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

Firebug

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

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

Dosyć teorii

Instalacja- FF- Selenium IDE- Firebug

TESTUJEMY!

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

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.

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

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

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

CI - narzędzia

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