SlideShare a Scribd company logo
1 of 22
Download to read offline
TECHNIKI (AUTOMATYZACJI)
PROJEKTOWANIA TESTÓW
Adam Roman
SKładQA, 29 III 2016
Prelegent
• Quality Assurance R&D Lead, Rivet Group
• Adiunkt w Instytucie Informatyki i Matematyki Komputerowej UJ
• Członek Stowarzyszenia Jakości Systemów Informatycznych
• Członek Polskiego Komitetu Normalizacyjnego (prace nad normą
ISO/IEC 29119 Software Testing Standard)
• Certified Software Quality Engineer (ASQ)
• ISTQB Certified Tester Full Advanced Level
• Autor „Testowanie i jakośd oprogramowania. Modele, techniki,
narzędzia” (PWN, 2015)
Plan spotkania
• Automatyzacja, ale czego?
• Modele i ich rola w automatyzacji
• Technika Category-Partition
• Przykład – pełna automatyzacja i jej zalety
Automatyzacja, ale czego?
• najczęściej automatyzację testów rozumie
się jako automatyzację wykonania testów
– skrypty
– programy
– nagrane scenariusze
– itp.
Automatyzacja, ale czego?
• …ale (o czym raczej się nie mówi) automatyzowad można
również:
• projektowanie przypadków testowych (generowanie)
• specyfikowanie przypadków testowych (definiowanie)
• implementację testów
• generowanie danych testowych
• porównywanie wyników rzeczywistych z oczekiwanymi
• przeprowadzanie analizy statycznej lub dynamicznej
Modele i ich rola w automatyzacji
przykład: model CFG
• klasyka gatunku: pokrycie
• instrukcyjne
• decyzyjne
• warunkowe
• warunkowo/decyzyjne
• MC/DC
• ścieżek
• pętli
• …
input a, b
c = a+b
if (c>0) {
while (a>0) {
a=a-1;
if (a>b) {
b=b+1;
}
}
} else {
if (a<b) {
return a
} else {
return c
}
}
• ile testów potrzeba, aby pokryd wszystkie
decyzje?
• jaki test spowoduje 17-krotne wykonanie
pętli while, z których dokładnie 9 przejdzie
przez if (a>b)?
• zaprojektowanie przypadków testowych =
zaprojektowanie ścieżek. Ale co nam to
daje?
• co nam daje to, że np. pokryliśmy testami
100% decyzji?
input a, b
c = a+b
if (c>0) {
while (a>0) {
a=a-1;
if (a>b) {
b=b+1;
}
}
} else {
if (a<b) {
return a
} else {
return c
}
}
Modele i ich rola w automatyzacji
przykład: model CFG
Wykorzystanie modelu
1. Użycie (np. CFG) do oceny testów czarnoskrzynkowych
SYSTEM
UNDER TEST
PRZYPADKI
TESTOWE
(black box!)
WYNIKI
TESTÓW
kod
źródłowy
POKRYCIE
KODU
OCENA
TESTÓW,
DODANIE
NOWYCH
LOKALIZACJA
BŁEDÓW
• model może opisywad działanie systemu (np. pod
określonym kątem)
– graf przepływu sterowania (klasyka)
– graf przepływu danych (wciąż blisko kodu, chod nie zawsze)
– model struktury menu
– modele UML na podstawie których wygenerowano kod
– model maszyny stanowej
– tablica decyzyjna
• testowanie polega na pokryciu odpowiednich
elementów modelu testami
Wykorzystanie modelu
2. Reprezentacja systemu i jego działania
• aplikacja
obsługująca
redakcję
czasopisma
• proces
biznesowy z
punktu widzenia
cyklu życia
artykułu
• pokrycie =
zestaw istotnie
różnych
scenariuszy
Wykorzystanie modelu
2. Reprezentacja systemu i jego działania: przykład
• im bardziej wymagające
pokrycie, tym
dokładniejsze testy (i
większy koszt!)
 
100% instrukcji
  
100% decyzji
    100%
ścieżek liniowo
niezależnych!
Wykorzystanie modelu
2. Reprezentacja systemu i jego działania: przykład
• publikacja artykułu przed
zrecenzowaniem?
• decyzja o odrzuceniu
artykułu bez konsultacji z
recenzentem?
• recenzent akceptuje a
redaktor odrzuca?
• „standardowa” procedura
odrzucenia artykułu
• każda ścieżka w tym
procesie jest „kombinacją
liniową” powyższych 4
ścieżek
Wykorzystanie modelu
2. Reprezentacja systemu i jego działania: przykład
• testowanie mutacyjne
testuje testy
• mutant = zmutowany
program (np. ze
zmienioną instrukcją
x=x+1 zamiast oryginalnej
x=x-1)
• mutacje = symulacje
pomyłek programistów
• pokrycie = liczba zabitych
mutantów / liczba
wszystkich mutantów
Wykorzystanie modelu
3. Użycie modelu defektów do predykcji defektów (sic!)
• D = liczba wykrytych
rzeczywistych defektów
• M = liczba wszystkich
mutantów
• Z = liczba zabitych
mutantów
• X = nieznana liczba
defektów pozostałych w
kodzie
• idea: pokrycie mutacyjne
= pokrycie realnych
defektów
• D/(X+D) = Z/M
• X = (D*M)/Z - D
Wykorzystanie modelu
3. Użycie modelu defektów do predykcji defektów (sic!)
Przykład automatyzacji dla metody
Category-Partition
• idea metody C-P:
1. zidentyfikuj parametry i warunki środowiskowe,
które wpływają na zachowanie się programu
2. wyodrębnij ich kategorie
3. podziel każdą kategorię na rozłączne strefy wyboru
4. określ związki i ograniczenia między wyborami
5. napisz specyfikację testów (np. używając TSL)
6. wyprowadź elementy pokrycia
7. dla każdego elementu pokrycia stwórz przypadek
testowy
Użyty model: Feature Tree
Przykład automatyzacji dla metody
Category-Partition
• testowanie polecenia
grep
• program grep wyszukuje
wzorzec w pliku i zwraca
linie pliku, w których
wzorzec się znajduje
• składnia:
grep [wzorzec] [plik]
1. zidentyfikuj parametry i
warunki środowiskowe,
które wpływają na
zachowanie się
programu
• plik
• wzorzec
• nazwa pliku
Przykład automatyzacji dla metody
Category-Partition
• testowanie polecenia
grep
• program grep wyszukuje
wzorzec w pliku i zwraca
linie pliku, w których
wzorzec się znajduje
• składnia:
grep [wzorzec] [plik]
2. wyodrębnij kategorie
parametrów i warunków
• Plik
– rozmiar
– # wystąpieo wzorca w pliku
– # wystąpieo wzorca w linii
– pozycja wzorca w pliku
• Wzorzec
– długośd wzorca
– otoczony apostrofami?
– obecnośd białych znaków
– Zawiera apostrofy?
• nazwa pliku
– istnienie pliku o danej
nazwie
Przykład automatyzacji dla metody
Category-Partition
• testowanie polecenia
grep
• program grep
wyszukuje wzorzec w
pliku i zwraca linie pliku,
w których wzorzec się
znajduje
• składnia:
grep [wzorzec] [plik]
3. podziel każdą kategorię
na rozłączne strefy
wyboru
• plik
– rozmiar (pusty, niepusty)
– # wystąpieo wzorca w
pliku (0, 1, wiele)
– # wystąpieo wzorca w linii
(1, wiele)
– pozycja wzorca w pliku (1
linia, ostatnia linia,
dowolna inna)
• itd.
Przykład automatyzacji dla metody
Category-Partition
• testowanie polecenia
grep
• program grep
wyszukuje wzorzec w
pliku i zwraca linie pliku,
w których wzorzec się
znajduje
• składnia:
grep [wzorzec] [plik]
4. określ związki i
ograniczenia między
wyborami
• np. jeśli
# wystąpieo wzorca w
pliku = 0
to
# wystąpieo wzorca w
linii nie może byd >1
• itd.
Nasz model
GREP
PLIK WZORZEC NAZWA PLIKU
rozmiar
# wyst.
w linii
# wyst.
w pliku
pozycja
wzorca
długośd
otoczony
apostrof.?
białe
znaki?
zawiera
apostrof.?
pusty niepusty
pusty implies 0 wystąpieo w pliku
0 1 wiele
Demonstracja
• automatyczne projektowanie,
specyfikowanie i implementacja testów
• radzenie sobie ze złożonością (tzw. eksplozja
kombinatoryczna)
• wykonanie testów
• uwagi i wnioski, zalety i wady metody

More Related Content

What's hot

Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16Krzysztof Synak
 
Testy wydajnościowe - najlepsze praktyki - Kuba Gajda
Testy wydajnościowe - najlepsze praktyki - Kuba GajdaTesty wydajnościowe - najlepsze praktyki - Kuba Gajda
Testy wydajnościowe - najlepsze praktyki - Kuba GajdaBartłomiej Cymanowski
 
Testowanie EDW czyli projekt piekło - Bartłomiej Nikiel
Testowanie EDW czyli projekt piekło - Bartłomiej NikielTestowanie EDW czyli projekt piekło - Bartłomiej Nikiel
Testowanie EDW czyli projekt piekło - Bartłomiej Nikielkraqa
 
JDD 2016 - Wojciech Oczkowski - Testowanie Wydajnosci Za Pomoca Narzedzia JMH
JDD 2016 - Wojciech Oczkowski - Testowanie Wydajnosci Za Pomoca Narzedzia JMHJDD 2016 - Wojciech Oczkowski - Testowanie Wydajnosci Za Pomoca Narzedzia JMH
JDD 2016 - Wojciech Oczkowski - Testowanie Wydajnosci Za Pomoca Narzedzia JMHPROIDEA
 
Poznańska grupa .Net spotkanie VI - Test Driven Development
Poznańska grupa .Net spotkanie VI - Test Driven DevelopmentPoznańska grupa .Net spotkanie VI - Test Driven Development
Poznańska grupa .Net spotkanie VI - Test Driven Developmentbartlomiej.szafko
 
Automation of functional tests using JMeter (in Polish)
Automation of functional tests using JMeter (in Polish)Automation of functional tests using JMeter (in Polish)
Automation of functional tests using JMeter (in Polish)Tieto Corporation
 
Jak skrócić czas wykonywania testów integracyjnych?
Jak skrócić czas wykonywania testów integracyjnych?Jak skrócić czas wykonywania testów integracyjnych?
Jak skrócić czas wykonywania testów integracyjnych?Łukasz Zakrzewski
 
xUnit - narzędzie do testowania
xUnit - narzędzie do testowaniaxUnit - narzędzie do testowania
xUnit - narzędzie do testowaniaMichał Bartyzel
 
MS - Wprowadzenie do testów jednostkowych
MS - Wprowadzenie do testów jednostkowychMS - Wprowadzenie do testów jednostkowych
MS - Wprowadzenie do testów jednostkowychMarcin Samsonowski
 

What's hot (15)

Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
 
Testy wydajnościowe - najlepsze praktyki - Kuba Gajda
Testy wydajnościowe - najlepsze praktyki - Kuba GajdaTesty wydajnościowe - najlepsze praktyki - Kuba Gajda
Testy wydajnościowe - najlepsze praktyki - Kuba Gajda
 
Testowanie EDW czyli projekt piekło - Bartłomiej Nikiel
Testowanie EDW czyli projekt piekło - Bartłomiej NikielTestowanie EDW czyli projekt piekło - Bartłomiej Nikiel
Testowanie EDW czyli projekt piekło - Bartłomiej Nikiel
 
JDD 2016 - Wojciech Oczkowski - Testowanie Wydajnosci Za Pomoca Narzedzia JMH
JDD 2016 - Wojciech Oczkowski - Testowanie Wydajnosci Za Pomoca Narzedzia JMHJDD 2016 - Wojciech Oczkowski - Testowanie Wydajnosci Za Pomoca Narzedzia JMH
JDD 2016 - Wojciech Oczkowski - Testowanie Wydajnosci Za Pomoca Narzedzia JMH
 
[TestWarez 2017] Zen testów wydajnościowych
[TestWarez 2017] Zen testów wydajnościowych[TestWarez 2017] Zen testów wydajnościowych
[TestWarez 2017] Zen testów wydajnościowych
 
Dodatkowe narzędzia do testów wydajnościowych
Dodatkowe narzędzia do testów wydajnościowychDodatkowe narzędzia do testów wydajnościowych
Dodatkowe narzędzia do testów wydajnościowych
 
Poznańska grupa .Net spotkanie VI - Test Driven Development
Poznańska grupa .Net spotkanie VI - Test Driven DevelopmentPoznańska grupa .Net spotkanie VI - Test Driven Development
Poznańska grupa .Net spotkanie VI - Test Driven Development
 
Automation of functional tests using JMeter (in Polish)
Automation of functional tests using JMeter (in Polish)Automation of functional tests using JMeter (in Polish)
Automation of functional tests using JMeter (in Polish)
 
TDD w iOS
TDD w iOS TDD w iOS
TDD w iOS
 
JMeter – narzędzie testera
JMeter – narzędzie testeraJMeter – narzędzie testera
JMeter – narzędzie testera
 
JMeter - narzędzie testera - notatki
JMeter - narzędzie testera - notatkiJMeter - narzędzie testera - notatki
JMeter - narzędzie testera - notatki
 
Benchmarking
Benchmarking Benchmarking
Benchmarking
 
Jak skrócić czas wykonywania testów integracyjnych?
Jak skrócić czas wykonywania testów integracyjnych?Jak skrócić czas wykonywania testów integracyjnych?
Jak skrócić czas wykonywania testów integracyjnych?
 
xUnit - narzędzie do testowania
xUnit - narzędzie do testowaniaxUnit - narzędzie do testowania
xUnit - narzędzie do testowania
 
MS - Wprowadzenie do testów jednostkowych
MS - Wprowadzenie do testów jednostkowychMS - Wprowadzenie do testów jednostkowych
MS - Wprowadzenie do testów jednostkowych
 

Similar to Adam Roman - Automatyczne projektowanie testów

Jakość Oprogramowania Oraz Modele Procesu Produkcji Oprogramowania Prezentacja
Jakość Oprogramowania Oraz Modele Procesu Produkcji Oprogramowania   PrezentacjaJakość Oprogramowania Oraz Modele Procesu Produkcji Oprogramowania   Prezentacja
Jakość Oprogramowania Oraz Modele Procesu Produkcji Oprogramowania Prezentacjaguestb2a82c
 
SCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa IT
SCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa ITSCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa IT
SCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa ITRedge Technologies
 
Podstawy testowania oprogramowania INCO 2023.pptx
Podstawy testowania oprogramowania INCO 2023.pptxPodstawy testowania oprogramowania INCO 2023.pptx
Podstawy testowania oprogramowania INCO 2023.pptxKatarzyna Javaheri-Szpak
 
Perl. Testowanie. Zapiski programisty
Perl. Testowanie. Zapiski programistyPerl. Testowanie. Zapiski programisty
Perl. Testowanie. Zapiski programistyWydawnictwo Helion
 
Tech cafe Microservices
Tech cafe MicroservicesTech cafe Microservices
Tech cafe MicroservicesKonrad Król
 
Automatyzacja w praktyce. Praktyka automatyzacji
Automatyzacja w praktyce. Praktyka automatyzacjiAutomatyzacja w praktyce. Praktyka automatyzacji
Automatyzacja w praktyce. Praktyka automatyzacjiRadoslaw Smilgin
 
Pomysł na analizę w Agile: Agile Modeling
Pomysł na analizę w Agile: Agile ModelingPomysł na analizę w Agile: Agile Modeling
Pomysł na analizę w Agile: Agile ModelingPaweł Jarosiński
 
MCTS 70-536 Study Group - Diagnostics
MCTS 70-536 Study Group - DiagnosticsMCTS 70-536 Study Group - Diagnostics
MCTS 70-536 Study Group - DiagnosticsMarcin Daczkowski
 
Bps Live 2012 Warszawa - analityka-i-symulacje procesów
Bps Live 2012 Warszawa - analityka-i-symulacje procesówBps Live 2012 Warszawa - analityka-i-symulacje procesów
Bps Live 2012 Warszawa - analityka-i-symulacje procesówPCHALAWA
 
8. Programowanie w środowisku języka strukturalnego
8. Programowanie w środowisku języka strukturalnego8. Programowanie w środowisku języka strukturalnego
8. Programowanie w środowisku języka strukturalnegokalaxq
 
Podstawy SEO w Drupalu 7 - Jarosław Sobiecki
Podstawy SEO w Drupalu 7 - Jarosław SobieckiPodstawy SEO w Drupalu 7 - Jarosław Sobiecki
Podstawy SEO w Drupalu 7 - Jarosław SobieckiGrzegorz Bartman
 
Struktury danych i techniki obiektowe na przykładzie Javy 5.0
Struktury danych i techniki obiektowe na przykładzie Javy 5.0Struktury danych i techniki obiektowe na przykładzie Javy 5.0
Struktury danych i techniki obiektowe na przykładzie Javy 5.0Wydawnictwo Helion
 
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbaćBartosz Ratajczyk
 
Angular 4 pragmatycznie
Angular 4 pragmatycznieAngular 4 pragmatycznie
Angular 4 pragmatycznieSages
 

Similar to Adam Roman - Automatyczne projektowanie testów (20)

Jakość Oprogramowania Oraz Modele Procesu Produkcji Oprogramowania Prezentacja
Jakość Oprogramowania Oraz Modele Procesu Produkcji Oprogramowania   PrezentacjaJakość Oprogramowania Oraz Modele Procesu Produkcji Oprogramowania   Prezentacja
Jakość Oprogramowania Oraz Modele Procesu Produkcji Oprogramowania Prezentacja
 
SCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa IT
SCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa ITSCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa IT
SCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa IT
 
Podstawy testowania oprogramowania INCO 2023.pptx
Podstawy testowania oprogramowania INCO 2023.pptxPodstawy testowania oprogramowania INCO 2023.pptx
Podstawy testowania oprogramowania INCO 2023.pptx
 
Dlaczego flopsar
Dlaczego flopsarDlaczego flopsar
Dlaczego flopsar
 
Testowanie automatyczne 2024 INCO Academy
Testowanie automatyczne 2024 INCO AcademyTestowanie automatyczne 2024 INCO Academy
Testowanie automatyczne 2024 INCO Academy
 
Olga Żądło - Robot Framework
Olga Żądło - Robot FrameworkOlga Żądło - Robot Framework
Olga Żądło - Robot Framework
 
Perl. Testowanie. Zapiski programisty
Perl. Testowanie. Zapiski programistyPerl. Testowanie. Zapiski programisty
Perl. Testowanie. Zapiski programisty
 
Tech cafe Microservices
Tech cafe MicroservicesTech cafe Microservices
Tech cafe Microservices
 
Automatyzacja w praktyce. Praktyka automatyzacji
Automatyzacja w praktyce. Praktyka automatyzacjiAutomatyzacja w praktyce. Praktyka automatyzacji
Automatyzacja w praktyce. Praktyka automatyzacji
 
Pomysł na analizę w Agile: Agile Modeling
Pomysł na analizę w Agile: Agile ModelingPomysł na analizę w Agile: Agile Modeling
Pomysł na analizę w Agile: Agile Modeling
 
MCTS 70-536 Study Group - Diagnostics
MCTS 70-536 Study Group - DiagnosticsMCTS 70-536 Study Group - Diagnostics
MCTS 70-536 Study Group - Diagnostics
 
Bps Live 2012 Warszawa - analityka-i-symulacje procesów
Bps Live 2012 Warszawa - analityka-i-symulacje procesówBps Live 2012 Warszawa - analityka-i-symulacje procesów
Bps Live 2012 Warszawa - analityka-i-symulacje procesów
 
8. Programowanie w środowisku języka strukturalnego
8. Programowanie w środowisku języka strukturalnego8. Programowanie w środowisku języka strukturalnego
8. Programowanie w środowisku języka strukturalnego
 
Podstawy SEO w Drupalu 7 - Jarosław Sobiecki
Podstawy SEO w Drupalu 7 - Jarosław SobieckiPodstawy SEO w Drupalu 7 - Jarosław Sobiecki
Podstawy SEO w Drupalu 7 - Jarosław Sobiecki
 
Struktury danych i techniki obiektowe na przykładzie Javy 5.0
Struktury danych i techniki obiektowe na przykładzie Javy 5.0Struktury danych i techniki obiektowe na przykładzie Javy 5.0
Struktury danych i techniki obiektowe na przykładzie Javy 5.0
 
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
 
Algorytmy. Od podstaw
Algorytmy. Od podstawAlgorytmy. Od podstaw
Algorytmy. Od podstaw
 
Angular 4 pragmatycznie
Angular 4 pragmatycznieAngular 4 pragmatycznie
Angular 4 pragmatycznie
 
Kwestionowanie ISTQB
Kwestionowanie ISTQBKwestionowanie ISTQB
Kwestionowanie ISTQB
 
[TestWarez 2017] Architektura testów automatycznych dla wielomodułowej aplika...
[TestWarez 2017] Architektura testów automatycznych dla wielomodułowej aplika...[TestWarez 2017] Architektura testów automatycznych dla wielomodułowej aplika...
[TestWarez 2017] Architektura testów automatycznych dla wielomodułowej aplika...
 

More from kraqa

RestAssured w sluzbie testow API
RestAssured w sluzbie testow APIRestAssured w sluzbie testow API
RestAssured w sluzbie testow APIkraqa
 
Postman - podstawy testowania REST API
Postman - podstawy testowania REST APIPostman - podstawy testowania REST API
Postman - podstawy testowania REST APIkraqa
 
Stanislaw potoczny kra_qa_21.01.20
Stanislaw potoczny kra_qa_21.01.20Stanislaw potoczny kra_qa_21.01.20
Stanislaw potoczny kra_qa_21.01.20kraqa
 
Machine learning powered regression - KraQA 42 - Pawel Dyrek
Machine learning powered regression - KraQA 42 - Pawel Dyrek Machine learning powered regression - KraQA 42 - Pawel Dyrek
Machine learning powered regression - KraQA 42 - Pawel Dyrek kraqa
 
Kontrakt testy - KraQA 42 - Slawomir Radzyminski
Kontrakt testy - KraQA 42 - Slawomir RadzyminskiKontrakt testy - KraQA 42 - Slawomir Radzyminski
Kontrakt testy - KraQA 42 - Slawomir Radzyminskikraqa
 
KraQA#41 - PageFactory
KraQA#41 - PageFactoryKraQA#41 - PageFactory
KraQA#41 - PageFactorykraqa
 
KraQA#39 - Jak testowac tool do testow
KraQA#39 - Jak testowac tool do testowKraQA#39 - Jak testowac tool do testow
KraQA#39 - Jak testowac tool do testowkraqa
 
Hyperion - wystarczy jeden shake
Hyperion - wystarczy jeden shakeHyperion - wystarczy jeden shake
Hyperion - wystarczy jeden shakekraqa
 
Wybor urzadzen mobilnych do testow
Wybor urzadzen mobilnych do testowWybor urzadzen mobilnych do testow
Wybor urzadzen mobilnych do testowkraqa
 
Continuous security
Continuous securityContinuous security
Continuous securitykraqa
 
Let s meet inside
Let s meet insideLet s meet inside
Let s meet insidekraqa
 
O wezu przy kawie
O wezu przy kawieO wezu przy kawie
O wezu przy kawiekraqa
 
Strategia do automatów
Strategia do automatówStrategia do automatów
Strategia do automatówkraqa
 
Z czym do api
Z czym do apiZ czym do api
Z czym do apikraqa
 
Jenkins pipelines
Jenkins pipelinesJenkins pipelines
Jenkins pipelineskraqa
 
Testy UI
Testy UITesty UI
Testy UIkraqa
 
Tester w pułapce myślenia
Tester w pułapce myśleniaTester w pułapce myślenia
Tester w pułapce myśleniakraqa
 
Kiedy tester zostaje managerem
Kiedy tester zostaje manageremKiedy tester zostaje managerem
Kiedy tester zostaje manageremkraqa
 
KraQA#32 - RODO
KraQA#32 - RODOKraQA#32 - RODO
KraQA#32 - RODOkraqa
 
SkładQA 2018 - Daniel Dec
SkładQA 2018 - Daniel DecSkładQA 2018 - Daniel Dec
SkładQA 2018 - Daniel Deckraqa
 

More from kraqa (20)

RestAssured w sluzbie testow API
RestAssured w sluzbie testow APIRestAssured w sluzbie testow API
RestAssured w sluzbie testow API
 
Postman - podstawy testowania REST API
Postman - podstawy testowania REST APIPostman - podstawy testowania REST API
Postman - podstawy testowania REST API
 
Stanislaw potoczny kra_qa_21.01.20
Stanislaw potoczny kra_qa_21.01.20Stanislaw potoczny kra_qa_21.01.20
Stanislaw potoczny kra_qa_21.01.20
 
Machine learning powered regression - KraQA 42 - Pawel Dyrek
Machine learning powered regression - KraQA 42 - Pawel Dyrek Machine learning powered regression - KraQA 42 - Pawel Dyrek
Machine learning powered regression - KraQA 42 - Pawel Dyrek
 
Kontrakt testy - KraQA 42 - Slawomir Radzyminski
Kontrakt testy - KraQA 42 - Slawomir RadzyminskiKontrakt testy - KraQA 42 - Slawomir Radzyminski
Kontrakt testy - KraQA 42 - Slawomir Radzyminski
 
KraQA#41 - PageFactory
KraQA#41 - PageFactoryKraQA#41 - PageFactory
KraQA#41 - PageFactory
 
KraQA#39 - Jak testowac tool do testow
KraQA#39 - Jak testowac tool do testowKraQA#39 - Jak testowac tool do testow
KraQA#39 - Jak testowac tool do testow
 
Hyperion - wystarczy jeden shake
Hyperion - wystarczy jeden shakeHyperion - wystarczy jeden shake
Hyperion - wystarczy jeden shake
 
Wybor urzadzen mobilnych do testow
Wybor urzadzen mobilnych do testowWybor urzadzen mobilnych do testow
Wybor urzadzen mobilnych do testow
 
Continuous security
Continuous securityContinuous security
Continuous security
 
Let s meet inside
Let s meet insideLet s meet inside
Let s meet inside
 
O wezu przy kawie
O wezu przy kawieO wezu przy kawie
O wezu przy kawie
 
Strategia do automatów
Strategia do automatówStrategia do automatów
Strategia do automatów
 
Z czym do api
Z czym do apiZ czym do api
Z czym do api
 
Jenkins pipelines
Jenkins pipelinesJenkins pipelines
Jenkins pipelines
 
Testy UI
Testy UITesty UI
Testy UI
 
Tester w pułapce myślenia
Tester w pułapce myśleniaTester w pułapce myślenia
Tester w pułapce myślenia
 
Kiedy tester zostaje managerem
Kiedy tester zostaje manageremKiedy tester zostaje managerem
Kiedy tester zostaje managerem
 
KraQA#32 - RODO
KraQA#32 - RODOKraQA#32 - RODO
KraQA#32 - RODO
 
SkładQA 2018 - Daniel Dec
SkładQA 2018 - Daniel DecSkładQA 2018 - Daniel Dec
SkładQA 2018 - Daniel Dec
 

Adam Roman - Automatyczne projektowanie testów

  • 2. Prelegent • Quality Assurance R&D Lead, Rivet Group • Adiunkt w Instytucie Informatyki i Matematyki Komputerowej UJ • Członek Stowarzyszenia Jakości Systemów Informatycznych • Członek Polskiego Komitetu Normalizacyjnego (prace nad normą ISO/IEC 29119 Software Testing Standard) • Certified Software Quality Engineer (ASQ) • ISTQB Certified Tester Full Advanced Level • Autor „Testowanie i jakośd oprogramowania. Modele, techniki, narzędzia” (PWN, 2015)
  • 3. Plan spotkania • Automatyzacja, ale czego? • Modele i ich rola w automatyzacji • Technika Category-Partition • Przykład – pełna automatyzacja i jej zalety
  • 4. Automatyzacja, ale czego? • najczęściej automatyzację testów rozumie się jako automatyzację wykonania testów – skrypty – programy – nagrane scenariusze – itp.
  • 5. Automatyzacja, ale czego? • …ale (o czym raczej się nie mówi) automatyzowad można również: • projektowanie przypadków testowych (generowanie) • specyfikowanie przypadków testowych (definiowanie) • implementację testów • generowanie danych testowych • porównywanie wyników rzeczywistych z oczekiwanymi • przeprowadzanie analizy statycznej lub dynamicznej
  • 6. Modele i ich rola w automatyzacji przykład: model CFG • klasyka gatunku: pokrycie • instrukcyjne • decyzyjne • warunkowe • warunkowo/decyzyjne • MC/DC • ścieżek • pętli • … input a, b c = a+b if (c>0) { while (a>0) { a=a-1; if (a>b) { b=b+1; } } } else { if (a<b) { return a } else { return c } }
  • 7. • ile testów potrzeba, aby pokryd wszystkie decyzje? • jaki test spowoduje 17-krotne wykonanie pętli while, z których dokładnie 9 przejdzie przez if (a>b)? • zaprojektowanie przypadków testowych = zaprojektowanie ścieżek. Ale co nam to daje? • co nam daje to, że np. pokryliśmy testami 100% decyzji? input a, b c = a+b if (c>0) { while (a>0) { a=a-1; if (a>b) { b=b+1; } } } else { if (a<b) { return a } else { return c } } Modele i ich rola w automatyzacji przykład: model CFG
  • 8. Wykorzystanie modelu 1. Użycie (np. CFG) do oceny testów czarnoskrzynkowych SYSTEM UNDER TEST PRZYPADKI TESTOWE (black box!) WYNIKI TESTÓW kod źródłowy POKRYCIE KODU OCENA TESTÓW, DODANIE NOWYCH LOKALIZACJA BŁEDÓW
  • 9. • model może opisywad działanie systemu (np. pod określonym kątem) – graf przepływu sterowania (klasyka) – graf przepływu danych (wciąż blisko kodu, chod nie zawsze) – model struktury menu – modele UML na podstawie których wygenerowano kod – model maszyny stanowej – tablica decyzyjna • testowanie polega na pokryciu odpowiednich elementów modelu testami Wykorzystanie modelu 2. Reprezentacja systemu i jego działania
  • 10. • aplikacja obsługująca redakcję czasopisma • proces biznesowy z punktu widzenia cyklu życia artykułu • pokrycie = zestaw istotnie różnych scenariuszy Wykorzystanie modelu 2. Reprezentacja systemu i jego działania: przykład
  • 11. • im bardziej wymagające pokrycie, tym dokładniejsze testy (i większy koszt!)   100% instrukcji    100% decyzji     100% ścieżek liniowo niezależnych! Wykorzystanie modelu 2. Reprezentacja systemu i jego działania: przykład
  • 12. • publikacja artykułu przed zrecenzowaniem? • decyzja o odrzuceniu artykułu bez konsultacji z recenzentem? • recenzent akceptuje a redaktor odrzuca? • „standardowa” procedura odrzucenia artykułu • każda ścieżka w tym procesie jest „kombinacją liniową” powyższych 4 ścieżek Wykorzystanie modelu 2. Reprezentacja systemu i jego działania: przykład
  • 13. • testowanie mutacyjne testuje testy • mutant = zmutowany program (np. ze zmienioną instrukcją x=x+1 zamiast oryginalnej x=x-1) • mutacje = symulacje pomyłek programistów • pokrycie = liczba zabitych mutantów / liczba wszystkich mutantów Wykorzystanie modelu 3. Użycie modelu defektów do predykcji defektów (sic!)
  • 14. • D = liczba wykrytych rzeczywistych defektów • M = liczba wszystkich mutantów • Z = liczba zabitych mutantów • X = nieznana liczba defektów pozostałych w kodzie • idea: pokrycie mutacyjne = pokrycie realnych defektów • D/(X+D) = Z/M • X = (D*M)/Z - D Wykorzystanie modelu 3. Użycie modelu defektów do predykcji defektów (sic!)
  • 15. Przykład automatyzacji dla metody Category-Partition • idea metody C-P: 1. zidentyfikuj parametry i warunki środowiskowe, które wpływają na zachowanie się programu 2. wyodrębnij ich kategorie 3. podziel każdą kategorię na rozłączne strefy wyboru 4. określ związki i ograniczenia między wyborami 5. napisz specyfikację testów (np. używając TSL) 6. wyprowadź elementy pokrycia 7. dla każdego elementu pokrycia stwórz przypadek testowy
  • 17. Przykład automatyzacji dla metody Category-Partition • testowanie polecenia grep • program grep wyszukuje wzorzec w pliku i zwraca linie pliku, w których wzorzec się znajduje • składnia: grep [wzorzec] [plik] 1. zidentyfikuj parametry i warunki środowiskowe, które wpływają na zachowanie się programu • plik • wzorzec • nazwa pliku
  • 18. Przykład automatyzacji dla metody Category-Partition • testowanie polecenia grep • program grep wyszukuje wzorzec w pliku i zwraca linie pliku, w których wzorzec się znajduje • składnia: grep [wzorzec] [plik] 2. wyodrębnij kategorie parametrów i warunków • Plik – rozmiar – # wystąpieo wzorca w pliku – # wystąpieo wzorca w linii – pozycja wzorca w pliku • Wzorzec – długośd wzorca – otoczony apostrofami? – obecnośd białych znaków – Zawiera apostrofy? • nazwa pliku – istnienie pliku o danej nazwie
  • 19. Przykład automatyzacji dla metody Category-Partition • testowanie polecenia grep • program grep wyszukuje wzorzec w pliku i zwraca linie pliku, w których wzorzec się znajduje • składnia: grep [wzorzec] [plik] 3. podziel każdą kategorię na rozłączne strefy wyboru • plik – rozmiar (pusty, niepusty) – # wystąpieo wzorca w pliku (0, 1, wiele) – # wystąpieo wzorca w linii (1, wiele) – pozycja wzorca w pliku (1 linia, ostatnia linia, dowolna inna) • itd.
  • 20. Przykład automatyzacji dla metody Category-Partition • testowanie polecenia grep • program grep wyszukuje wzorzec w pliku i zwraca linie pliku, w których wzorzec się znajduje • składnia: grep [wzorzec] [plik] 4. określ związki i ograniczenia między wyborami • np. jeśli # wystąpieo wzorca w pliku = 0 to # wystąpieo wzorca w linii nie może byd >1 • itd.
  • 21. Nasz model GREP PLIK WZORZEC NAZWA PLIKU rozmiar # wyst. w linii # wyst. w pliku pozycja wzorca długośd otoczony apostrof.? białe znaki? zawiera apostrof.? pusty niepusty pusty implies 0 wystąpieo w pliku 0 1 wiele
  • 22. Demonstracja • automatyczne projektowanie, specyfikowanie i implementacja testów • radzenie sobie ze złożonością (tzw. eksplozja kombinatoryczna) • wykonanie testów • uwagi i wnioski, zalety i wady metody