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

Slides:



Advertisements
Podobne prezentacje
Agile w praktyce, czyli jak to robimy naprawdę
Advertisements

Opis metodyki i procesu produkcji oprogramowania
Wydział Zastosowań Informatyki i Matematyki SGGW
ASP.NET 2.0 AJAX Extensions 1.0
FIT Środowisko Testów Integracyjnych
(Content Management System)
Dokumentowanie wymagań w języku XML
Zarządzanie konfiguracją Doskonalenie Procesów Programowych Wykład 6 Copyright, 2001 © Jerzy.
Cykle życia oprogramowania
Systemy operacyjne Bibliografia:
Systemy zarządzania treścią CMS
1/18 LOGO Profil zespołu. 2/18 O nas Produkcja autorskich rozwiązań informatycznych dla małych i średnich firm w zakresie systemów: Baz danych Aplikacji.
Dalsze elementy metodologii projektowania. Naszym celem jest...
Wykład 2 Cykl życia systemu informacyjnego
SZPIF – Harmonogram, Opis narzędzi, Schemat bazy danych
POZNAŃ SUPERCOMPUTING AND NETWORKING CENTER WP 2.1 Zdalny dostęp do bibliotek naukowych Udział w projekcie: 6,51% Osoby kontaktowe: PCSS: Maciej Brzeźniak.
Made by Mateusz Szirch Kilka słów o JavaScript.
C.d. wstępu do tematyki RUP
© Victo Testowanie dla menedżerów Wersja TDM Slajd 1 (27) Testowanie oprogramowania dla menedżerów Co menedżerowie i kierownicy naprawdę potrzebują
Adam Gabryś , v1.1,
Twoje narzędzie do pracy grupowej
Rozwój aplikacji przy wykorzystaniu ASP.NET
Rozwój aplikacji. To zestaw narzędzi do budowania i optymalizacji złożonych aplikacji opartych na przeglądarce. To zestaw narzędzi do budowania i optymalizacji.
System operacyjny. System operacyjny Co to jest system operacyjny: jest szczególnym rodzajem programu, którego zadaniem jest koordynowanie pracy.
Realizacja aplikacji internetowych
Continuous Integration
Programy do tworzenia stron internetowych
Największe problemy w projektach informatycznych IT Opracował: Karol Pietrzak na podstawie artykułu z SDJ/2007 IX.
Przeznaczenie produktu Opis funkcjonalności
Wprowadzenie do automatyzacji testów funkcjonalnych aplikacji webowych z Visual Studio 2010 Maciej Gawin.
Licencjonowanie narzędzi dla programistów
Prezentacja i szkolenie
Witold Bołt. Agenda W czym tkwi problem..? Po co jest oprogramowanie? Kim jest użytkownik? Zbieranie danych Co to jest design Współpraca programista-projektant.
InTouch.
Maszyna wirtualna ang. virtual machine, VM.
Rational Unified Process Implementacja Aleksandra Reiman, gr. I-52.
Systemy zarządzania treścią Wykład 5
Michał Gmerek, Krzysztof Słodowicz
Podstawy programowania
C++.
Bazy i Systemy Bankowe Sp. z o.o. ul. Kasprzaka 3, 85 – 321 Bydgoszcz
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski 1 informatyka +
Tworzenie Aplikacji Internetowych dr Wojciech M. Gańcza 1.
Metodologia CASE. Przyczyny użycia narzędzi CASE Główną przesłanką użycia narzędzi CASE jest zwiększenie produktywności i jakości produkowanych systemów.
Temat 1: Ogólne cechy języka PHP
Proces tworzenia oprogramowania Proces tworzenia oprogramowania jest zbiorem czynności i związanych z nimi wyników, które prowadzą do powstania produktu.
System operacyjny Windows
1 Analiza możliwości języka C# w aspekcie oprogramowania dla myszy Łukasz Łysyganicz Nr indeksu Praca napisana pod kierunkiem: Prof. nzw. Dr hab.
Systemy kontroli wersji
Podstawy języka skryptów
Programowanie w językach skryptowych
Autor: Piotr Pasławski
Podstawy programowania
Dokumentacja programu komputerowego i etapy tworzenia programów.
Temat: Porównanie technologii php,c# oraz javascript na przykładzie webaplikacji typu społecznościowy agregator treści Autor: Wojciech Ślawski.
Języki i technologie wytwarzania stron WWW Autor: Michał Walkowski Referat.
T ESTY JEDNOSTKOWE W C# Alicja Majka, A GENDA Wprowadzenie do środowiska Czym są testy jednostkowe i po co je stosować? XUnit, NUnit Pokrycie.
Testy jednostkowe. „Test jednostkowy (unit test) to fragment kodu, który sprawdza inny fragment kodu”
Czy warto uczyć się języków obcych?. Wprowadzenie. Bardzo wielu uczniom nauka kojarzy się z przymusem oraz koniecznością. W ten sposób traktują oni również.
InMoST Wielkopolska sieć współpracy w zakresie innowacyjnych metod wytwarzania oprogramowania Termin realizacji: – Innowacyjne metody.
TWOJA CYFROWA PRZYSZŁOŚĆ. JUŻ DZISIAJ. Marcin Parczewski © 2016 Software AG. All rights reserved. For internal use only.
Przykłady zewnętrznych bibliotek do PHP Laboratorium z Baz Danych Łukasz Zubkowicz.
Od (web)aplikacji biznesowych po (web)game dev Testowanie i spełnianie oczekiwań.
W pętli Ciagłej Integracji…. Paweł Możdżen ERICPOL Adam Bąk.
Agile Programming a jakość
JavaBeans by Paweł Wąsala
Zapis prezentacji:

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 Narzędzia, których będziemy używać Repozytorium Narzędzia programistyczne (IDE) Java Bazy danych Narzędzia/Frameworki do testowania Contionous Integration 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 Coś, co kiedyś mogła robić jedna osoba teraz wymaga sztabu specjalistów i odpowiedniego zarządzania nimi Niestety często jest to niemożliwe Odpowiedź: Automatyzacja Coraz popularniejsze "Zwinne metodyki wytwarzania oprogramowania"  Od testerów wymaga się znacznie więcej Potrzeba bliskiej współpracy testerów z developerami Testerzy i developerzy muszą używać wspólnego języka Nowe możliwości 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. 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: Testy jednostkowe Testy funkcjonalne Testy interfejsu użytkownika 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 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ę Tylko dzięki automatyzacji możemy zapewnić wystarczające pokrycie regresji 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.  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 jednostkowych funkcjonalnych/integracyjnych 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

Wstęp do używania narzędzia 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 Symulacje działań użyszkodnika Acessors Sprawdzanie i przechowywanie stanów aplikacji  Assertions Weryfikacja rezultatu otrzymanego z oczekiwanym 

Asercje assert gdy assert = false test jest przerywany verify gdy verify = false test jest kontynuowany a fail zapisywany do logu waitFor  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.