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

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

Automatyzacja Testowania w WEB 2.0

Program szkolenia: Continuous Integration i Git

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

Tester oprogramowania 2014/15 Tematy prac dyplomowych

Ciągłe dostarczanie oprogramowania : kompletny przewodnik / Eberhard Wolff. Gliwice, cop Spis treści

Narzędzia podnoszące jakość procesu wytwarzania i wdrażania

Szkolenie: Podstawy automatyzacji z Selenium IDE

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

REFERAT PRACY DYPLOMOWEJ

Wstęp do testowania : Szymon Ramczykowski

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

Testowanie aplikacji mobilnych z ukierunkowaniem na system Android

Słowa kluczowe jak góry lodowe

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

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

Program szkolenia: Tworzenie aplikacji w Ruby on Rails z wykorzystaniem zwinnych metodyk

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

Projektowanie, tworzenie aplikacji mobilnych na platformie Android

Oferta szkoleń firmy Code Sprinters

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.

Open Source w służbie developerom

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

Budowa aplikacji webowej w oparciu o Maven2 oraz przykłady testów jednostkowych. Wykonał Marcin Gadamer

Tworzenie oprogramowania

Michał Olejnik. 22 grudnia 2009

Bazy i Systemy Bankowe Sp. z o.o. ul. Kasprzaka 3, Bydgoszcz

KOŁO NAUKOWE INFORMATYKÓW SYSTEMY KONTROLI WERSJI CZ.1 16 XII 2009 OPRACOWAŁ: PRZEMYSŁAW PARDEL

Aplikacje WWW - lab 11

Testowanie oprogramowania

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

Czym jest jpalio? jpalio jpalio jpalio jpalio jpalio jpalio jpalio jpalio

Software Engineer/Software Configuration Management

Programista do działu testów PDT/1401/T/TBG

Java a średni (?) projekt informatyczny

Microsoft Test Manager

Automatyzacja bez nadmiernego bólu. Piotr Januszek

Techniki efektywnego testowania kodu dla programistów Java (Spock

ANGULARJS TWORZENIE APLIKACJI INTERNETOWYCH

Automatyczne testowanie aplikacji Android

Re_Forms 21 Często zadawane pytania (FAQ)

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

METODY PROGRAMOWANIA

Deduplikacja danych. Zarządzanie jakością danych podstawowych

CASE STUDIES TEST FACTORY

Tytuł szkolenia: Angular 4 - budowanie nowoczesnych i wydajnych aplikacji przeglądarkowych

Programowanie Komponentowe WebAPI

Continuous Integration i jakość kodu. Michał Prajs

Instrukcja laboratoryjna cz.3

Program szkolenia: Test Driven Development (TDD) using Spock or JUnit 5

Program szkolenia: JavaScript Craftsmanship

Bezpieczeństwo systemów komputerowych

Szczegółowy opis przedmiotu umowy. 1. Środowisko SharePoint UWMD (wewnętrzne) składa się z następujących grup serwerów:

JUnit TESTY JEDNOSTKOWE. Waldemar Korłub. Platformy Technologiczne KASK ETI Politechnika Gdańska

Platformy programistyczne:.net i Java L ABORATORIUM 7,8: HACKATHON - JTTT

INŻYNIERIA OPROGRAMOWANIA TESTOWANIE INTEGRACYJNE

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

Dokumentacja projektu QUAIKE Architektura oprogramowania

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

Git rozproszony system kontroli wersji

Testy automatyczne. Korzystające z junit

Przegląd i ewaluacja narzędzi do szybkiego tworzenia interfejsu użytkownika (RAD).

Zaawansowane programowanie w języku C++

Obiektowy model dokumentu. Katedra Mikroelektroniki i Technik Informatycznych

Praktyczne warsztaty programistyczne. Idea. Warsztaty

Robotic Process Automation

Wybrane działy Informatyki Stosowanej

Wprowadzenie. Narzędzia i środowiska programistyczne. Laboratorium 1. Prowadzący: Kierunek: Semestr: Rok: Tomasz Gądek Informatyka Zimowy 2

System zarządzający grami programistycznymi Meridius

Laboratorium Informatyka (I) AiR Ćwiczenia z debugowania

Usługa: Testowanie wydajności oprogramowania

Zapytanie ofertowe nr 1/IAP/2013 ( dotyczy modułu nr 1/IAP )

Generated by Foxit PDF Creator Foxit Software For evaluation only. System Szablonów

Maciej Oleksy Zenon Matuszyk

IBM SPSS Statistics - Essentials for Python: Instrukcje instalacji dla Windows

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Usługa: Audyt kodu źródłowego

CI/CD - CO TO? PO CO? JAK?

INŻYNIERIA OPROGRAMOWANIA

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

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

Ciągła Integracja. Krystian Kaczor

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

Programowanie w Ruby

szkolenia pod drzewem Wybrane Techniki XP bnd 2008 Tomasz Włodarek. Materiał udostępniany na podstawie licencji Creative Commons (by-nc-nd) 1.00.

zautomatyzować przepływ pracy w branży opakowań

Proces ciągłej integracji Git + Gerrit + Jenkins. autor : Maciej Pieszała

Wymagania: umiejętność modelowania systemów informatycznych z wykorzystaniem UML. umiejętność definiowania i kreatywnego rozwiązywania problemów

TESTER OPROGRAMOWANIA STUDIA PODYPLOMOWE

KOMPUTEROWE WSPOMAGANIE ZARZĄDZANIA

Program szkolenia: Jenkins - Continuous Integration

I. Opis przedmiotu zamówienia

TESTOWANIE OPROGRAMOWANIA

Zapytanie ofertowe nr 2/IAP/2013 ( dotyczy modułu nr 2/IAP )

Automatyzacja testowania oprogramowania. Automatyzacja testowania oprogramowania 1/36

Projektowanie oprogramowania. Termin zajęć: poniedziałek, a podstawie materiału ze strony.

PROGRAM PRAKTYKI ZAWODOWEJ. Technikum Zawód: technik informatyk

Transkrypt:

Warsztat: "Automatyzacja testów (JAVA) - od podstaw" Marcin Dziedzic, Wiktor Żołnowski Http://blog.testowka.pl

Agenda 1. Omówienie celu szkolenia 1.Od testera do QA Inżyniera 2. Wstęp do Automatyzacji 1.Po co Automatyzować? 2.Co Automatyzować? 3.Jak Automatyzować? 3. Warsztat Inżyniera testów 1.Narzędzia, których będziemy używać 1.Repozytorium 2.Narzędzia programistyczne (IDE) 3.Java 4.Bazy danych 5.Narzędzia/Frameworki do testowania 6.Contionous Integration 7.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 skomplikowane o Coś, co kiedyś mogła robić jedna osoba teraz wymaga sztabu specjalistów i odpowiedniego zarządzania nimi o Niestety często jest to niemożliwe o Odpowiedź: Automatyzacja Coraz popularniejsze "Zwinne metodyki wytwarzania oprogramowania" o Od testerów wymaga się znacznie więcej Potrzeba bliskiej współpracy testerów z developerami o Testerzy i developerzy muszą używać wspólnego języka Nowe możliwości o 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 jednostkowe o Testy funkcjonalne o Testy interfejsu użytkownika o 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ądze o Automatyzacjia 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 regresji o 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ów o jednostkowych o funkcjonalnych/integracyjnych o 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 Actions o Symulacje działań użyszkodnika Acessors o Sprawdzanie i przechowywanie stanów aplikacji Assertions o Weryfikacja rezultatu otrzymanego z oczekiwanym

Asercje assert o gdy assert = false test jest przerywany verify o 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.