In der ersten Teststufe, dem Komponententest, werden die in der nach dem
V-Modell unmittelbar vorangehenden Programmierpha...
Unit Test
A unit test verifies the behavior of a small part of the overall system. It
may be as small as a single object o...
Unit Test
A unit test is an automated Piece of code that invokes the method or class
being tested and then checks some ass...
Module?!?
Komponenten?!?
Units?!? Klassen?!?
Softwarebausteine?!?
System?!?
Speichern Gespeichert
Benutzersicht
Benutzersicht Architektursicht
Speichern Anbindung UI
Anbindung
Persistenz
Geschäftslogik DB
Extern
System-Tests
Benutzersicht Architektursicht
Speichern Anbindung UI
Anbindung
Persistenz
Geschäftslogik DB
Extern
System-Tests
Systemtest
Integrationstest
Unit Test
Benutzersicht Architektursicht
Speichern Anbindung UI
Anbindung
Persistenz
Geschäftslogik DB
Extern
System-Tests
Unit-Tests
Benutzersicht Architektursicht
Speichern Anbindung UI
Anbindung
Persistenz
Geschäftslogik DB
Extern
System-Tests
Unit-Test...
Benutzersicht Entwicklersicht
Speichern
Datenvali-
dierung
Fehlerbe-
handlung
Validierungs-
regeln
Speichervor-
gang
Zurüc...
Test
Implementierung
Refaktorisierung
DEMO
Systemtest
Integrationstest
Unit Test
Ausführungsgeschwindigkeit
Granularität
Systemtest
Integrationstest
Unit Test
Ausführungsgeschwindigkeit
Granularität
Änderungstoleranz
Abstraktion
DEMO
UI
Business Layer
Data/Service Layer
O/R Mapper
UI
Business Layer
Data/Service Layer
UI
F
r
a
m
e
w
o
r
k
s
UI
Business Layer
Data/Service Layer
O/R Mapper
Unit tests run fast. If they don't run fast, they aren't unit tests. Other kinds
of tests offen masquerade as unit tests. ...
DEMO
Benutzersicht Entwicklersicht
Speichern
Datenvali-
dierung
Fehlerbe-
handlung
Validierungs-
regeln
Speichervor-
gang
Zurüc...
Benutzersicht Entwicklersicht
Speichern
Datenvali-
dierung
Fehlerbe-
handlung
Validierungs-
regeln
Speichervor-
gang
Zurüc...
hohe Ergebnisgenauigkeit
Geringe Geschwindigkeit
je Test
Hohe Testanzahl
Geringer (Anfangs)aufwand
Hohe Ausführungsgeschwi...
Quelle: http://fabiopereira.me/blog/2012/03/18/introducing-depth-of-test-dot/
A B Xb
UI ViewModel
User-
Manager
Repository
Settings-
Manager
XIViewModel
UI ViewModel
User-
Manager
Repository
Settings-
Manager
Hashing
Logik
Value
Converter
IViewModel
Klassentest
Klassentest
K...
ViewModel Repository
Data
Mapping
Data
Validation
Database
Context
Mapper
Value
Converter
IRepository
ViewModel Repository
Data
Mapping
Data
Validation
Database
Context
Mapper
Value
Converter
IRepository
Klassentest
Klassent...
System
Integrations-
test
Komponententest
Klassentests
Unit-Tests
Systemtest
Integrationstest
Komponententests
Klassentests
Systemtest
Integrationstest
Komponententests
Klassentests
Systemtest
Integrationstest
Komponententests
Klassentests
NUnit
xUnit.Net
MBUnit
MS Test
Smart Unit Tests
Systemtest
Integrationstest
Komponententests
Klassentests
NUnit
xUnit.Net
MBUnit
MS Test
MSpec
NSpec
SpecsFor
DynamicSpecs
public class When_no_data_is_entered_for_person
{
static Person sut;
Establish context = () => sut = new Person();
Because...
Systemtest
Integrationstest
Komponententests
Klassentests
MSpec
NSpec
SpecsFor
DynamicSpecs
Specflow
Specflow
Gherkin
MS Test
XUnit.Net
NUnit
Mspec
… XUnit
UI Testing
Framework
Silenium
WatiN
Coded UI Tests
White
…
Given
Wh...
DEMO
Systemtest
Integrationstest
Komponententests
Klassentests
MSpec
NSpec
SpecsFor
DynamicSpecs
Specflow
Systemtest Test
Implementierung
Refaktorisierung
Problem
verstehen
Grobdesign
(„Architektur
Vision“)
Automatisierung
• Build
• Deployment
• End-To-End Tests
Produkt-
inkre...
Vertrauen
Aufwand
Feedback
UIUI
BLBL
DADA
UI
BL Testdouble
Testdouble
BL BL
DADA
UI
BL BL
DA DA
Was ist eigentlich eine Unit? - Hendrik Lösch @ DWX2016
Was ist eigentlich eine Unit? - Hendrik Lösch @ DWX2016
Was ist eigentlich eine Unit? - Hendrik Lösch @ DWX2016
Was ist eigentlich eine Unit? - Hendrik Lösch @ DWX2016
Was ist eigentlich eine Unit? - Hendrik Lösch @ DWX2016
Was ist eigentlich eine Unit? - Hendrik Lösch @ DWX2016
Was ist eigentlich eine Unit? - Hendrik Lösch @ DWX2016
Was ist eigentlich eine Unit? - Hendrik Lösch @ DWX2016
Was ist eigentlich eine Unit? - Hendrik Lösch @ DWX2016
Was ist eigentlich eine Unit? - Hendrik Lösch @ DWX2016
Was ist eigentlich eine Unit? - Hendrik Lösch @ DWX2016
Was ist eigentlich eine Unit? - Hendrik Lösch @ DWX2016
Was ist eigentlich eine Unit? - Hendrik Lösch @ DWX2016
Was ist eigentlich eine Unit? - Hendrik Lösch @ DWX2016
Was ist eigentlich eine Unit? - Hendrik Lösch @ DWX2016
Was ist eigentlich eine Unit? - Hendrik Lösch @ DWX2016
Was ist eigentlich eine Unit? - Hendrik Lösch @ DWX2016
Was ist eigentlich eine Unit? - Hendrik Lösch @ DWX2016
Was ist eigentlich eine Unit? - Hendrik Lösch @ DWX2016
Nächste SlideShare
Wird geladen in …5
×

Was ist eigentlich eine Unit? - Hendrik Lösch @ DWX2016

56 Aufrufe

Veröffentlicht am

Unit Tests gelten als das Mittel der Wahl wenn es darum geht die Erstellung qualitativ hochwertiger Software zu unterstützten. Je wichtiger diese Tests jedoch sind, desto wichtiger ist auch die Betrachtung was sich eigentlich dahinter verbirgt. Was genau ist eine Unit, wie beeinflusst unsere Definition des Begriffs das erzielte Ergebnis und wo ordnen sich diese Tests ein wenn es um bestimmte Vorgehen wie TDD oder BDD geht? Anhand eines Komplexbeispiels werden diese Fragen beantwortet und zeitgleich geklärt welche Werkzeuge im Microsoft Universum zu welchen Ergebnissen führen. So stellen wir nicht nur die gängigen Unit-Testing Frameworks gegenüber, sondern widmen uns auch den Smart Unit Tests des Visual Studio 2015 und betrachten in welche Form sich Testisolation Frameworks auf die Tests auswirken können.

Veröffentlicht in: Software
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
56
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
1
Aktionen
Geteilt
0
Downloads
2
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Was ist eigentlich eine Unit? - Hendrik Lösch @ DWX2016

  1. 1. In der ersten Teststufe, dem Komponententest, werden die in der nach dem V-Modell unmittelbar vorangehenden Programmierphase erstellten Softwarebausteine erstmalig einem systematischen Test unterzogen. Abhängig davon, welche Programmiersprache die Entwickler einsetzen, werden diese kleinsten Softwareeinheiten unterschiedlich bezeichnet, zum Beispiel als Module, Units oder Klassen (im Fall objektorientierter Programmierung). Die entsprechenden Tests werden Modultest, Unit Test bzw. Klassentest genannt. Von der verwendeten Programmiersprache abstrahiert, wird von Komponente oder Softwarebaustein gesprochen. Der Test eines solchen einzelnen Softwarebausteins wird als Komponententest bezeichnet.
  2. 2. Unit Test A unit test verifies the behavior of a small part of the overall system. It may be as small as a single object or method that is a consequence of one or more design decisions. Component test A component test verifies a component's behavior. Component tests help with component design by testing interactions between objects. A component is a larger part of the overall system that may be separately deployable. For example, on the Windows platform, dynamic linked libraries (DLLs) are used as components, Java Archives (JAR files) are components on the Java platform, and a service-oliented architecture (SOA) uses Web Services as components.
  3. 3. Unit Test A unit test is an automated Piece of code that invokes the method or class being tested and then checks some assumptions about the logical behavior of that method or class. A unit test is almost always writen using a unit- testing framework. It can be written easily and runs quickly. It‘s fully automated, trustworthy, readable and maintainable. Integration Test Integration testing means testing two or more dependent sofware modules as a group.
  4. 4. Module?!? Komponenten?!? Units?!? Klassen?!? Softwarebausteine?!? System?!?
  5. 5. Speichern Gespeichert Benutzersicht
  6. 6. Benutzersicht Architektursicht Speichern Anbindung UI Anbindung Persistenz Geschäftslogik DB Extern System-Tests
  7. 7. Benutzersicht Architektursicht Speichern Anbindung UI Anbindung Persistenz Geschäftslogik DB Extern System-Tests
  8. 8. Systemtest Integrationstest Unit Test
  9. 9. Benutzersicht Architektursicht Speichern Anbindung UI Anbindung Persistenz Geschäftslogik DB Extern System-Tests Unit-Tests
  10. 10. Benutzersicht Architektursicht Speichern Anbindung UI Anbindung Persistenz Geschäftslogik DB Extern System-Tests Unit-Tests???
  11. 11. Benutzersicht Entwicklersicht Speichern Datenvali- dierung Fehlerbe- handlung Validierungs- regeln Speichervor- gang Zurücksetzen bei Fehler Fehler- ausschrift Validator Unit-Tests System-Tests Eventhandler DB Datenbank- anbindung DS Extern
  12. 12. Test Implementierung Refaktorisierung
  13. 13. DEMO
  14. 14. Systemtest Integrationstest Unit Test Ausführungsgeschwindigkeit Granularität
  15. 15. Systemtest Integrationstest Unit Test Ausführungsgeschwindigkeit Granularität Änderungstoleranz Abstraktion
  16. 16. DEMO
  17. 17. UI Business Layer Data/Service Layer O/R Mapper UI Business Layer Data/Service Layer
  18. 18. UI F r a m e w o r k s UI Business Layer Data/Service Layer O/R Mapper
  19. 19. Unit tests run fast. If they don't run fast, they aren't unit tests. Other kinds of tests offen masquerade as unit tests. A test is not a unit test if: 1. It talks to a database. 2. It communicates across a network. 3. It touches the file system. 4. You have to do special things to your environment (such as editing configuration files) to run it. Tests that do these things aren't bad. Often they are worth writing, and you generally will write them in unit test harnesses. However, it is important to be able to separate them from true unit tests so that you can keep a set of tests that you can runfast whenever you make changes.
  20. 20. DEMO
  21. 21. Benutzersicht Entwicklersicht Speichern Datenvali- dierung Fehlerbe- handlung Validierungs- regeln Speichervor- gang Zurücksetzen bei Fehler Fehler- ausschrift Validator Unit-Tests System-Tests Eventhandler DB Datenbank- anbindung DS Extern
  22. 22. Benutzersicht Entwicklersicht Speichern Datenvali- dierung Fehlerbe- handlung Validierungs- regeln Speichervor- gang Zurücksetzen bei Fehler Fehler- ausschrift Validator Unit-Tests System-Tests Eventhandler DB Datenbank- anbindung DS Extern
  23. 23. hohe Ergebnisgenauigkeit Geringe Geschwindigkeit je Test Hohe Testanzahl Geringer (Anfangs)aufwand Hohe Ausführungsgeschwindigkeit je Test Geringe Testanzahl Hoher (Anfangs)aufwand Geringe Ergebnisgenauigkeit
  24. 24. Quelle: http://fabiopereira.me/blog/2012/03/18/introducing-depth-of-test-dot/
  25. 25. A B Xb
  26. 26. UI ViewModel User- Manager Repository Settings- Manager XIViewModel
  27. 27. UI ViewModel User- Manager Repository Settings- Manager Hashing Logik Value Converter IViewModel Klassentest Klassentest Komponententest
  28. 28. ViewModel Repository Data Mapping Data Validation Database Context Mapper Value Converter IRepository
  29. 29. ViewModel Repository Data Mapping Data Validation Database Context Mapper Value Converter IRepository Klassentest Klassentest Komponententest
  30. 30. System Integrations- test Komponententest Klassentests Unit-Tests
  31. 31. Systemtest Integrationstest Komponententests Klassentests
  32. 32. Systemtest Integrationstest Komponententests Klassentests
  33. 33. Systemtest Integrationstest Komponententests Klassentests NUnit xUnit.Net MBUnit MS Test Smart Unit Tests
  34. 34. Systemtest Integrationstest Komponententests Klassentests NUnit xUnit.Net MBUnit MS Test MSpec NSpec SpecsFor DynamicSpecs
  35. 35. public class When_no_data_is_entered_for_person { static Person sut; Establish context = () => sut = new Person(); Because of = () => { /* nothing todo because we simply don't set any data */ }; It should_provide_an_error_text_for_BirthDate = () => sut["BirthDate"].ShouldNotBeEmpty(); It should_provide_an_error_text_for_FirstName = () => sut["FirstName"].ShouldNotBeEmpty(); It should_provide_an_error_text_for_LastName = () => sut["LastName"].ShouldNotBeEmpty(); }
  36. 36. Systemtest Integrationstest Komponententests Klassentests MSpec NSpec SpecsFor DynamicSpecs Specflow
  37. 37. Specflow Gherkin MS Test XUnit.Net NUnit Mspec … XUnit UI Testing Framework Silenium WatiN Coded UI Tests White … Given When Then C#
  38. 38. DEMO
  39. 39. Systemtest Integrationstest Komponententests Klassentests MSpec NSpec SpecsFor DynamicSpecs Specflow
  40. 40. Systemtest Test Implementierung Refaktorisierung
  41. 41. Problem verstehen Grobdesign („Architektur Vision“) Automatisierung • Build • Deployment • End-To-End Tests Produkt- inkrement Produkt Release
  42. 42. Vertrauen Aufwand Feedback
  43. 43. UIUI BLBL DADA
  44. 44. UI BL Testdouble
  45. 45. Testdouble BL BL DADA
  46. 46. UI BL BL DA DA

×