Wstęp do systemów informatycznych Testowanie oprogramowania.

Slides:



Advertisements
Podobne prezentacje
Rodzaje testów oprogramowania
Advertisements

Jarosław Kuchta Jakość Oprogramowania
Projekt Do kariery na skrzydłach – studiuj Aviation Management Projekt współfinansowany ze ś rodków Europejskiego Funduszu Społecznego. Biuro projektu:
Logiki (nie)klasyczne
Testowanie oprogramowania
Inżynieria Oprogramowania 9. Testowanie oprogramowania
Wydział Zastosowań Informatyki i Matematyki SGGW
Wyszukiwanie błędów Testowanie programów w celu wyszukania błędów.
Arkadiusz Twardoń ZTiPSK
Organizacja Przedsięwzięć Programistycznych Testowanie
Czyli jak testować w Eclipsie?
Refaktoryzacja czyli odświeżanie kodu
WYZWALACZE (TRIGGERY) Wyzwalacz jest specjalnym rodzajem procedury składowanej, która może być wykonana w odpowiedzi na jedną z trzech sytuacji: UPDATE.
Języki programowania obiektowego
-Witam nazywam się Weronika Zgorzelska oraz Oliwia Kołakowska. -Witam serdecznie 1.Od kiedy pan gra w FC Barcelonie… -W FC Barcelonie gram od 13 roku.
Przykład włamania do aplikacji internetowej poprzez modyfikację zapytań SQL Skrypty ASP Serwer bazy danych MS SQL Server Piotr Kuźniacki BDi.
Narzędzia do testowania
Zestawienie wyników badań Researches summary. 1. Czy Twoi rodzice uprawiają jakieś sporty lub w inny aktywny sposób spędzają wolny czas poświęcając im.
Test Doubles Adam Gabryś , v1.1,
Licencjonowanie narzędzi dla programistów
Google Testing Radosław Smilgin, , TestWarez.
Programowanie obiektowe – zastosowanie języka Java SE
Tworzenie Aplikacji Internetowych
One tale one game one dance one recipe
TESTOWANIE OPROGRAMOWANIA
ZASADY EFEKTYWNEGO PISANIA TESTÓW
How to make an application on Step by Step Instructions
SHOPPING- ROBIENIE ZAKUPÓW.
Wydział Elektroniki Kierunek: AiR Zaawansowane metody programowania Wykład 5.
 Primary School no 17  John Paul II, Chorzow, Poland  Made by Monika Winkler`s Project Group.
Rights of the child. Kliknij, aby edytować format tekstu konspektu Drugi poziom konspektu  Trzeci poziom konspektu Czwarty poziom konspektu  Piąty poziom.
Wstęp do Fizyki Środowiska - Podstawy mechaniki płynów Problems 1 Lecture 1 1)In a vertical capillary filled with water air bubbles are rising Sketch the.
CROSSWORD: SLANG. Konkurs polega na rozwiązaniu krzyżówki. CROSSWORD: SLANG Wypełnione karty odpowiedzi prosimy składać w bibliotece CJK, lub przesyłać.
Copyright © Jerzy R. Nawrocki Team Software Process Inżynieria oprogramowania II Wykład.
Les meilleures photos de L'année 2005 D'après NBC A life for two, full of tenderness, obtains happiness as they get closer to heaven. Życie we dwoje,
DEFINITION OF COMPOSITE PROGRAMMABLE GRAPH (CP-GRAPH)
Assessment of the impact of regular pilates exercises on static balance in healthy adult women. Preliminary report. 1 Rehabilitation Department, Division.
You are about to see a few sentences in Polish. Try to translate them into English, but keep in mind they are: The First Conditonal The Second Conditional.
Kompetentny ekonomista i logistyk- sukces na rynku edukacyjno – zawodowym! Człowiek – najlepsza inwestycja! Projekt współfinansowany ze środków Unii Europejskiej.
Możliwość spełnienia marzeń sprawia, że życie jest tak fascynujące Możliwość spełnienia marzeń sprawia, że życie jest tak fascynujące The ability to.
Przetłumacz podane w nawiasach fragmenty zdań na j. angielski.
Refaktoryzacja „Any fool can write a code that computer understands. Good programers write code that human can understand” – Martin Fowler.
Testy jednostkowe. „Test jednostkowy (unit test) to fragment kodu, który sprawdza inny fragment kodu”
Marcin Gliński Instytut Języków Romańskich i Translatoryki UŚ Regionalny Ośrodek Doskonalenia Nauczycieli WOM w Katowicach NOCNE POWTÓRKI MATURALNE 2016.
InMoST Wielkopolska sieć współpracy w zakresie innowacyjnych metod wytwarzania oprogramowania Termin realizacji: – Innowacyjne metody.
2. SCHOOL School subjects, school activities. Types of schools – vocabulary rodzaje szkół - słownictwo kindergartenprimary school lower secondary school.
Metody Analizy Danych Doświadczalnych Wykład 9 ”Estymacja parametryczna”
C PRZEWODNIK PO NAJCIEKAWSZYCH MIEJSCACH WROCŁAWIA - GUIDE TO THE MOST INTERESTING PLACES OF WROCLAW Cześć jestem Krzysztof. Dziś będę pokazywał Ci Najciekawsze.
Important holidays and festivals in Poland. The first of January New Year’s Day New Year’s Day the day of Mary the Holy Mother of God – for Catholics.
Www,mojesilnedrzewo.pl. W dniach 15 marca – 30 kwietnia 2010.r.wytwórnia wody mineralnej Żywiec Zdrój SA wspólnie z Fundacją Nasza Ziemia i Regionalną.
Opracowanie: Katarzyna Gagan, Anna Krawczuk
Inżynieria oprogramowania
Najlepszy czas na działanie jest TERAZ!
(według:
Przetestuj Usability Mateusz Kaczmarek
11. Work Praca.
Trudny czy łatwy labirynt?
SafeSurfing Moduł 1 Jak bezpiecznie korzystać z internetu i jak chronić swoje dane osobowe?
European Insolvency Regulation
Tworzenie zdań i zastosowanie
A prototype of distributed modelling environment
Running Dictation Activity to Engage Students in Reading, Writing, Listening, and Speaking.
EMPOWEREMENT IN ICT SKILLS. I CREATED MY WEBSITE TO USE IT FOR TEACHING.
AOP – Aspect Oriented Programming
Programowanie obiektowe – zastosowanie języka Java SE
zl
1) What is Linux 2) Founder and mascot of linux 3) Why Torvalds created linux ? 4) System advantages and disadvantages 5) Linux distributions 6) Basic.
Refaktoryzacja czyli odświeżanie kodu
Zapis prezentacji:

Wstęp do systemów informatycznych Testowanie oprogramowania

Agenda  Założenia testowania  Testy statyczne i dynamiczne  Black Box, Grey Box, White Box  Wymagania niefunkcjonalne  Narzędzia do testowania - przykłady

Założenia It’s hard enough to find an error in your code when you’re looking for it; its even harder when you’ve ASSUMED your code is ERROR-FREE. Steve McConnell

Założenia  Testowanie nie pozwoli nam udowodnić poprawności systemu  nie możemy udowodnić, że produkt działa poprawnie w każdych warunkach  możemy pokazać, że program działa poprawnie w konkretnych warunkach  Główny cel - wykrywanie błędnych wykonań (failures) w oprogramowaniu

Defekt vs Błędne wykonanie  Defekt – błąd w kodzie, który może, ale nie musi prowadzić do błędnego wykonania  Błędne wykonanie – sytuacja, w której system podaje błędne wyniki  pad systemu też jest błędnym wynikiem ;)

Źródła defektów  nierozpoznane wymagania  błędy w kodzie  problemy z kompatybilnością  …

Testowanie statyczne i dynamiczne Software and cathedrals are much the same – first we build them, then we pray.

Testowanie statyczne  badanie  kodu  dokumentów projektowych  innych artefaktów  bez uruchamiania systemu

Testowanie statyczne  Przeglądy kodu  Przejścia  Inspekcje

Przeglądy kodu  systematyczne zbadanie kodu źródłowego  zazwyczaj przez innego członka zespołu  ma pomóc znaleźć i poprawić błędy

Przeglądy kodu  Over-the-shoulder  pass-around  Pair Programming  wspomagane oprogramowaniem

Przejścia i inspekcje  Sformalizowana wersja przeglądów kodu  Wykorzystywana w krytycznych projektach  albo w istotnych fragmentach normalnych

Testy dynamiczne  badanie odpowiedzi systemu na dane wejściowe  uruchamiamy system  podajemy dane wejściowe  sprawdzamy, czy wyjście jest zgodne z oczekiwaniami

Testy dynamiczne  Testy jednostkowe  Testy integracyjne  Testy systemu  Testy akceptacyjne

Testy jednostkowe  testujemy najmniejsze komponenty oprogramowania  sprawdzamy, czy implementacja jest godna z założeniami  w wypadku programów w językach obiektowych - testujemy metody klas

Testy integracyjne  Szukamy błędów na styku już przetestowanych mniejszych modułów  Testujemy coraz większe grupy komponentów

System Tests  Testujemy cały system  Sprawdzamy zgodność funkcjonalności ze specyfikacją  Sprawdzamy wymagania niefunkcjonalne  Sprawdzamy jego współpracę z systemami zewnętrznymi

Testy akceptacyjne  Testy (black box) przed przyjęciem przez klienta  Przeprowadzane przez klienta lub we współpracy z nim

Testy regresyjne  Zautomatyzowane  Uruchamiane po modyfikacji oprogramowania  Testują cały system  Sprawdzają, czy poprawka nie wprowadziła nowych błędów

Black Box, Grey Box, White Box Programming can be fun, so can cryptography; however they should not be combined. Kreitzberg and Shneiderman

Trzy podejscia  Black Box  White Box  Grey Box

Black Box  Traktujemy system jako „czarne pudełko” - bez wiedzy o implementacji systemu  equivalence partitioning  boundary value analysis  fuzz testing  exploratory testing

Equivalence partitioning  Algorytm zachowuje się podobnie dla danych z jakiegoś zakresu  dzielimy dane na odpowiednie zakresy  wybieramy przykłady danych testowych z każdego  przykłady - rozwiązywanie równania kwadratowego, liczenie podatku dla różnych wartości dochodu...

Boundary value analysis  Sprawdzamy działanie dla wartości granicznych  wykrywanie błędów typu „one off”

Fuzz testing  Testowanie systemu z losowymi danymi  sprawdzamy reakcję na „nieprzewidziane” dane wejściowe

Exploratory testing  Style of software testing that emphasizes the personal freedom and responsibility of the individual tester to continually optimize the quality of his/her work by treating test-related learning, test design, test execution, and test result interpretation as mutually supportive activities that run in parallel throughout the project

Exploratory testing  Siadamy i testujemy  Efektywność zależy od kreatywności i doświadczenia testera

White Box  Tester ma dostęp do kodu źródłowego i może go modyfikować w razie potrzeby  code coverage  fault injection methods  static testing

Code coverage  Sprawdzamy stopień, w jakim kod jest pokryty przez testy  Zwykle z użyciem narzędzi

Code Coverage  Function coverage - czy każda funkcja została wykonana?  Statement coverage - czy każda linia kodu została wykonana?  Decision coverage - czy każda konstrukcja decyzyjna została zewaluowana do true i false?  Condition coverage - czy każdy warunek logiczny został zewaluowany do true i false?  Path coverage - czy przeszliśmy kod każdą możliwą ścieżką?  Entry/exit coverage - czy każde możliwe wywołanie funkcji i return z funkcji były wykonane?

Fault injection  wstawiamy błędy w losowych miejscach kodu  sprawdzamy, czy wstawienie tych błędów ma jakieś efekty (powinno mieć)

Grey Box  Znamy kod źródłowy, ale prowadzimy testy na poziomie black-box

Testowanie wymagań niefunkcjonalnych Always code as if the person who ends up maintaining your code will be a violent psychopath who knows where you live.

Testowanie wymagań niefunkcjonalnych  testowanie wydajności - czy system może obsłużyć duże ilości danych lub użytkowników?  testowanie użyteczności - czy interfejs jest prosty w użyciu?  testowanie bezpieczeństwa - czy oprogramowanie jest dobrze zabezpieczone?  ….

Narzędzia do testowania Q: How many software engineers does it take to change a lightbulb? A: Just one. But the house falls down. Andrew Siwko

Narzędzia do testowania  Testowanie pokrycia kodu  Narzędzia do testów jednostkowych  Debuggery  Loggery  Profilery  …

JUnit

 Testy jednostkowe dla Javy  Używa anotacji i asercji do opisu testów  Wspierane m.in. przez Eclipse  Bardzo popularna

JUnit  test JUnit - metoda zawarta w klasie używanej tylko do testów  metoda  używa metod JUnit do sprawdzenia, czy otrzymaliśmy poprawny wynik

public void multiplicationOfZeroIntegersShouldReturnZero() { // MyClass is tested MyClass tester = new MyClass(); // Tests assertEquals("10 x 0 must be 0", 0, tester.multiply(10, 0)); assertEquals("0 x 10 must be 0", 0, tester.multiply(0, 10)); assertEquals("0 x 0 must be 0", 0, tester.multiply(0, 0)); }

Annotations public void method() annotation identifies a method as a test (expected = Exception.class)Fails if the method does not throw the named if the method takes longer than 100 public void method() This method is executed before each test. It is used to prepare the test environment (e.g., read input data, initialize the public void method() This method is executed after each test. It is used to cleanup the test environment (e.g., delete temporary data, restore defaults). It can also save memory by cleaning up expensive memory public static void method() This method is executed once, before the start of all tests. It is used to perform time intensive activities, for example, to connect to a database. Methods marked with this annotation need to be defined as static to work with public static void method() This method is executed once, after all tests have been finished. It is used to perform clean-up activities, for example, to disconnect from a database. Methods annotated with this annotation need to be defined asstatic to work with the test method. This is useful when the underlying code has been changed and the test case has not yet been adapted. Or if the execution time of this test is too long to be included.

Asserts StatementDescription fail(String)Let the method fail. Might be used to check that a certain part of the code is not reached or to have a failing test before the test code is implemented. The String parameter is optional. assertTrue([message], boolean condition)Checks that the boolean condition is true. assertFalse([message], boolean condition)Checks that the boolean condition is false. assertEquals([String message], expected, actual) Tests that two values are the same. Note: for arrays the reference is checked not the content of the arrays. assertEquals([String message], expected, actual, tolerance) Test that float or double values match. The tolerance is the number of decimals which must be the same. assertNull([message], object)Checks that the object is null. assertNotNull([message], object)Checks that the object is not null. assertSame([String], expected, actual)Checks that both variables refer to the same object. assertNotSame([String], expected, actual)Checks that both variables refer to different objects.

Dziękuję za uwagę Pytania?