Test Doubles Adam Gabryś 2012.03.20, v1.1, www.adam.gabrys.biz.

Slides:



Advertisements
Podobne prezentacje
C++ wykład 2 ( ) Klasy i obiekty.
Advertisements

C++ wykład 4 ( ) Przeciążanie operatorów.
Klasy abstrakcyjne i interfejsy
Deklaracje i definicje klas w C++ Składowe, pola, metody Konstruktory
Programowanie obiektowe
Programowanie obiektowe PO PO - LAB 4 Wojciech Pieprzyca.
Programowanie obiektowe
Zaawansowane metody programowania – Wykład V
Generics w .NET 2.0 Łukasz Rzeszot.
Obiektowe metody projektowania systemów Design Patterns STRATEGY.
Bezpieczeństwo wyjątków w C++: OpenGL
Systemy rozproszone W. Bartkiewicz
Wydział Zastosowań Informatyki i Matematyki SGGW
Programowanie Obiektowe w Javie (c.d.)
Nguyen Hung Son Uniwersytet Warszawski
Programowanie obiektowe w Javie
OOPC++ - wstêp, klasy1 Klasy Do struktury można dołączyć operacje działające na jej polach. struct date { int day, month, year; void set (int d, int m,
OOP - programowanie zorientowane obiektowo w VB.NET
DZIEDZICZENIE · klasy bazowe i klasy pochodne WyświetlAutora( ) Autor
Maciej Gabor, SCR 2002 Testowanie eXtremalne i narzędzia xUnit M. Gabor, J. Nawrocki, B. Walter Instytut Informatyki Politechnika Poznańska.
Obiektowe metody projektowania systemów
Obiektowe metody projektowania systemów
C++ wykład 6 ( ) Polimorfizm.
C++ wykład 2 ( ) Klasy i obiekty.
.NET Remoting Łukasz Zawadzki.

Projektowanie warstwy serwera Programowanie aspektowe.
Adam Gabryś , v1.1,
Klasy w C++. Deklaracja klasy class NazwaTwojejKlasy { //w tym miejscu piszemy definicje typów, //zmienne i funkcje jakie mają należeć do klasy. }; //tutaj.
Integracja aplikacji Wykład 2
Podstawy programowania II
T: Różnice pomiędzy programowaniem strukturalnym a obiektowym
JAVA c.d.. Instrukcji wyboru SWITCH używamy, jeśli chcemy w zależności od wartości pewnego wyrażenia wykonać jeden z kilku fragmentów kodu. Jest to w.
Java – coś na temat Klas Piotr Rosik
Inicjalizacja i sprzątanie
Seminarium problemowe
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
Programowanie obiektowe Wykład 7 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20 Dariusz Wardowski.
Programowanie obiektowe Wykład 6 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Dariusz Wardowski.
Programowanie obiektowe 2013/2014
Kurs języka C++ – wykład 3 ( )
Programowanie w języku C++
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Diagram klas Kluczowymi elementami są: klasy (class)
Oprogramowanie komponentowe w środowisku Microsoft Katarzyna Kuźniar 4 FDA, C1.
Technologie internetowe Wykład 5 Wprowadzenie do skrytpów serwerowych.
Programowanie obiektowe Wykład 9 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/15 Dariusz Wardowski.
PROGRAMOWANIE W JAVA Informatyka Stosowana – ROK II / III Laboratoria mgr inż. Krzysztof Bzowski.
Obiektowe metody projektowania systemów Adapter. Wstęp: „Dostosowanie interfejsu klasy do interfejsu, którego oczekuje użytkownik. Adapter umożliwia współprace.
Obiektowe metody projektowania systemów Abstract Factory design pattern (aka. Kit)
Paweł Starzyk Obiektowe metody projektowania systemów
Partnerstwo dla Przyszłości 1 Lekcja 27 Klasy i obiekty.
Typy i metody sparametryzowane (generics) (c) Krzysztof Barteczko 2014.
K URS JĘZYKA C++ – WYKŁAD 3 ( ) Przenoszenie Składowe statyczne Funkcje wbudowane Argumenty domyślne.
 sprawdzają funkcjonalność i poprawność kodu, który napisał programista  sprawdzanie odbywa się poprzez użycie składowych klas dla różnych danych 
Testy jednostkowe. „Test jednostkowy (unit test) to fragment kodu, który sprawdza inny fragment kodu”
InMoST, Java – przykładowa aplikacja Bartosz.Michalik
Tworzenie dokumentacji w systemie Doxygen Paweł Strużyński 25 maja 2011.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
Programowanie Obiektowe – Wykład 6
Kurs języka C++ – wykład 3 ( )
Klasy, pola, obiekty, metody. Modyfikatory dostępu, hermetyzacja
(według:
Delegaty Delegat to obiekt „wiedzący”, jak wywołać metodę.
Programowanie Obiektowe – Wykład 2
PGO Dziedziczenie Michail Mokkas.
Refaktoryzacja czyli odświeżanie kodu
Zapis prezentacji:

Test Doubles Adam Gabryś 2012.03.20, v1.1, www.adam.gabrys.biz

Plan prezentacji Wstęp: Co to jest „Test Double”? Rodzaje „Test Double” Przykład Podsumowanie

Wstęp Obiekty symulujące określone zachowanie Ułatwiają testowanie: Wyeliminowanie implementacji nadmiarowego kodu Uniezależniają testy od środowiska zewnętrznego Umożliwiają przeprowadzenie dokładniejszych testów, np. weryfikacja wywołań

Rodzaje „Test double” Dummy Stub Spy Fake Mock Bez implementacji Potrzebne przy wywoływaniu operacji z parametrami Stub Implementacja metod zwracających wartości Spy Weryfikacja wywołań Fake Zaimplementowane interakcje pomiędzy składowymi Mock Dynamicznie implementowany

Przykład Przykład z wykorzystanie biblioteki moq Definicja interfejsu reprezentującego bazę danych: public interface UserDB { string GetUserName(int id); }

Przykład Definicja klasy korzystającej z bazy danych: public class Simple { private int m_id; private UserDB m_db; public Simple(int id, UserDB db) m_id = id; m_db = db; } public string GetName() return m_db.GetUserName(m_id);

Przykład Definicja metody testowej: [TestMethod] public void GetNameTest() { // utworzenie mock’a Mock<UserDB> mock = new Mock<UserDB>(); // ustawienie wartości zwracanej dla wywołania GetUserName(0) na „Kowalski” mock.Setup(obj => obj.GetUserName(0)).Returns("Kowalski"); // pobranie mock’a UserDB db = mock.Object; Simple target = new Simple(0, db); string expected = "Kowalski"; string actual = target.GetName(); Assert.AreEqual(expected, actual); // weryfikacja, czy metoda GetUserName z parametrem id = 0 // została wywołana tylko raz mock.Verify(obj => obj.GetUserName(0), Times.Once()); }

Wysoka jakość tworzonego oprogramowania!!! Podsumowanie Przyspieszenie implementacji testów Uniezależnienie testów od środowiska zewnętrznego Dokładniejsza kontrola nad przepływem sterowania (metody weryfikacyjne) Wysoka jakość tworzonego oprogramowania!!!

Bibliografia Unit Testing – „Exploring The Continuum Of Test Doubles”, http://msdn.microsoft.com/pl-pl/magazine/cc163358%28en-us%29.aspx moq: http://code.google.com/p/moq/

Koniec Dziękuję za uwagę. Pytania?