SlideShare ist ein Scribd-Unternehmen logo
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.
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.
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.
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-Tests???
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
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. 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.
DEMO
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
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
hohe Ergebnisgenauigkeit
Geringe Geschwindigkeit
je Test
Hohe Testanzahl
Geringer (Anfangs)aufwand
Hohe Ausführungsgeschwindigkeit
je Test
Geringe Testanzahl
Hoher (Anfangs)aufwand
Geringe Ergebnisgenauigkeit
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
Komponententest
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
Klassentest
Komponententest
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 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();
}
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
When
Then
C#
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-
inkrement
Produkt
Release
Vertrauen
Aufwand
Feedback
UIUI
BLBL
DADA
UI
BL Testdouble
Testdouble
BL BL
DADA
UI
BL BL
DA DA

Weitere ähnliche Inhalte

Ähnlich wie Was ist eigentlich eine Unit?

BASTA 2016 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch...
BASTA 2016 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch...BASTA 2016 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch...
BASTA 2016 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch...Marc Müller
 
Testmanagement mit Visual Studio 2013
Testmanagement mit Visual Studio 2013Testmanagement mit Visual Studio 2013
Testmanagement mit Visual Studio 2013Nico Orschel
 
Testing XAML-based Windows Store Apps mit VS 2013
Testing XAML-based Windows Store Apps mit VS 2013Testing XAML-based Windows Store Apps mit VS 2013
Testing XAML-based Windows Store Apps mit VS 2013Nico Orschel
 
DevDay 2016 Keynote - Die Evolution agiler Software Entwicklung
DevDay 2016 Keynote - Die Evolution agiler Software EntwicklungDevDay 2016 Keynote - Die Evolution agiler Software Entwicklung
DevDay 2016 Keynote - Die Evolution agiler Software EntwicklungMarc Müller
 
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...Marc Müller
 
Development Toolbox
Development ToolboxDevelopment Toolbox
Development Toolboxcmahnke
 
Vortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development EnvironmentsVortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development EnvironmentsThorsten Kamann
 
Softwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherung mit Continuous Integration ToolsSoftwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherung mit Continuous Integration ToolsGFU Cyrus AG
 
JavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerJavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerDennis Wilson
 
Real Application Testing - DOAG SIG Database 2010 - Simon Dickmeiß
Real Application Testing - DOAG SIG Database 2010 - Simon DickmeißReal Application Testing - DOAG SIG Database 2010 - Simon Dickmeiß
Real Application Testing - DOAG SIG Database 2010 - Simon DickmeißOPITZ CONSULTING Deutschland
 
Webinar- Lösungsorientierte Integration vorhandener Werkzeuge in ein Applicat...
Webinar- Lösungsorientierte Integration vorhandener Werkzeuge in ein Applicat...Webinar- Lösungsorientierte Integration vorhandener Werkzeuge in ein Applicat...
Webinar- Lösungsorientierte Integration vorhandener Werkzeuge in ein Applicat...Minerva SoftCare GmbH
 
Sicherheitsprüfung für HP NonStop Systeme
Sicherheitsprüfung für HP NonStop SystemeSicherheitsprüfung für HP NonStop Systeme
Sicherheitsprüfung für HP NonStop SystemePeter Haase
 
Automated testing of JavaFX UI components
Automated testing of JavaFX UI componentsAutomated testing of JavaFX UI components
Automated testing of JavaFX UI componentsWolfgang Weigend
 
Test-getriebene Entwicklung in ABAP – Das Entwicklungsmodell der Zukunft
Test-getriebene Entwicklung in ABAP – Das Entwicklungsmodell der ZukunftTest-getriebene Entwicklung in ABAP – Das Entwicklungsmodell der Zukunft
Test-getriebene Entwicklung in ABAP – Das Entwicklungsmodell der ZukunftChristian Drumm
 
Apps for the Enterprise - Ein einheitliches Modulsystem für verteilte Unterne...
Apps for the Enterprise - Ein einheitliches Modulsystem für verteilte Unterne...Apps for the Enterprise - Ein einheitliches Modulsystem für verteilte Unterne...
Apps for the Enterprise - Ein einheitliches Modulsystem für verteilte Unterne...Andreas Weidinger
 
Legacy Code refaktorisieren
Legacy Code refaktorisierenLegacy Code refaktorisieren
Legacy Code refaktorisierenHendrik Lösch
 
Einführung Vorgehensmodelle und Agile Software Entwicklung
Einführung Vorgehensmodelle und Agile Software EntwicklungEinführung Vorgehensmodelle und Agile Software Entwicklung
Einführung Vorgehensmodelle und Agile Software EntwicklungChristian Baranowski
 

Ähnlich wie Was ist eigentlich eine Unit? (20)

BASTA 2016 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch...
BASTA 2016 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch...BASTA 2016 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch...
BASTA 2016 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch...
 
Test-Automation mit Selenium WebDriver - ein Artikel der iks im dotnetpro
Test-Automation mit Selenium WebDriver - ein Artikel der iks im dotnetproTest-Automation mit Selenium WebDriver - ein Artikel der iks im dotnetpro
Test-Automation mit Selenium WebDriver - ein Artikel der iks im dotnetpro
 
Testmanagement mit Visual Studio 2013
Testmanagement mit Visual Studio 2013Testmanagement mit Visual Studio 2013
Testmanagement mit Visual Studio 2013
 
Testing XAML-based Windows Store Apps mit VS 2013
Testing XAML-based Windows Store Apps mit VS 2013Testing XAML-based Windows Store Apps mit VS 2013
Testing XAML-based Windows Store Apps mit VS 2013
 
DevDay 2016 Keynote - Die Evolution agiler Software Entwicklung
DevDay 2016 Keynote - Die Evolution agiler Software EntwicklungDevDay 2016 Keynote - Die Evolution agiler Software Entwicklung
DevDay 2016 Keynote - Die Evolution agiler Software Entwicklung
 
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
 
Development Toolbox
Development ToolboxDevelopment Toolbox
Development Toolbox
 
Vortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development EnvironmentsVortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development Environments
 
Softwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherung mit Continuous Integration ToolsSoftwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherung mit Continuous Integration Tools
 
JavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerJavaScript und trotzdem Softwerker
JavaScript und trotzdem Softwerker
 
Real Application Testing - DOAG SIG Database 2010 - Simon Dickmeiß
Real Application Testing - DOAG SIG Database 2010 - Simon DickmeißReal Application Testing - DOAG SIG Database 2010 - Simon Dickmeiß
Real Application Testing - DOAG SIG Database 2010 - Simon Dickmeiß
 
TDD für Testmuffel
TDD für TestmuffelTDD für Testmuffel
TDD für Testmuffel
 
Modularisierung - was soll das?
Modularisierung - was soll das?Modularisierung - was soll das?
Modularisierung - was soll das?
 
Webinar- Lösungsorientierte Integration vorhandener Werkzeuge in ein Applicat...
Webinar- Lösungsorientierte Integration vorhandener Werkzeuge in ein Applicat...Webinar- Lösungsorientierte Integration vorhandener Werkzeuge in ein Applicat...
Webinar- Lösungsorientierte Integration vorhandener Werkzeuge in ein Applicat...
 
Sicherheitsprüfung für HP NonStop Systeme
Sicherheitsprüfung für HP NonStop SystemeSicherheitsprüfung für HP NonStop Systeme
Sicherheitsprüfung für HP NonStop Systeme
 
Automated testing of JavaFX UI components
Automated testing of JavaFX UI componentsAutomated testing of JavaFX UI components
Automated testing of JavaFX UI components
 
Test-getriebene Entwicklung in ABAP – Das Entwicklungsmodell der Zukunft
Test-getriebene Entwicklung in ABAP – Das Entwicklungsmodell der ZukunftTest-getriebene Entwicklung in ABAP – Das Entwicklungsmodell der Zukunft
Test-getriebene Entwicklung in ABAP – Das Entwicklungsmodell der Zukunft
 
Apps for the Enterprise - Ein einheitliches Modulsystem für verteilte Unterne...
Apps for the Enterprise - Ein einheitliches Modulsystem für verteilte Unterne...Apps for the Enterprise - Ein einheitliches Modulsystem für verteilte Unterne...
Apps for the Enterprise - Ein einheitliches Modulsystem für verteilte Unterne...
 
Legacy Code refaktorisieren
Legacy Code refaktorisierenLegacy Code refaktorisieren
Legacy Code refaktorisieren
 
Einführung Vorgehensmodelle und Agile Software Entwicklung
Einführung Vorgehensmodelle und Agile Software EntwicklungEinführung Vorgehensmodelle und Agile Software Entwicklung
Einführung Vorgehensmodelle und Agile Software Entwicklung
 

Mehr von Hendrik Lösch

Why (most) softwareprojects fail silently
Why (most) softwareprojects fail silentlyWhy (most) softwareprojects fail silently
Why (most) softwareprojects fail silentlyHendrik Lösch
 
We (don't) need a software architect!?!
We (don't) need a software architect!?!We (don't) need a software architect!?!
We (don't) need a software architect!?!Hendrik Lösch
 
Restrukturierung einer industriellen Großapplikation
Restrukturierung einer industriellen GroßapplikationRestrukturierung einer industriellen Großapplikation
Restrukturierung einer industriellen GroßapplikationHendrik Lösch
 
Vom Monolith zum Modulith
Vom Monolith zum ModulithVom Monolith zum Modulith
Vom Monolith zum ModulithHendrik Lösch
 
Der Software auf den Zahn gefühlt - Einstieg in die Architekturbewertung
Der Software auf den Zahn gefühlt - Einstieg in die ArchitekturbewertungDer Software auf den Zahn gefühlt - Einstieg in die Architekturbewertung
Der Software auf den Zahn gefühlt - Einstieg in die ArchitekturbewertungHendrik Lösch
 
„Wie reden Sie denn mit mir?!?“ – Stakeholder überzeugen als Softwarearchitekt
„Wie reden Sie denn mit mir?!?“ – Stakeholder überzeugen als Softwarearchitekt„Wie reden Sie denn mit mir?!?“ – Stakeholder überzeugen als Softwarearchitekt
„Wie reden Sie denn mit mir?!?“ – Stakeholder überzeugen als SoftwarearchitektHendrik Lösch
 
Software ist was du draus machst!
Software ist was du draus machst!Software ist was du draus machst!
Software ist was du draus machst!Hendrik Lösch
 
Einstieg in das Vueniverse
Einstieg in das VueniverseEinstieg in das Vueniverse
Einstieg in das VueniverseHendrik Lösch
 
Survivalkit für Codehausmeister
Survivalkit für CodehausmeisterSurvivalkit für Codehausmeister
Survivalkit für CodehausmeisterHendrik Lösch
 
Confessions of a Codehausmeister
Confessions of a CodehausmeisterConfessions of a Codehausmeister
Confessions of a CodehausmeisterHendrik Lösch
 
WPF Dos n Don'ts - der WPF Rundumschlag
WPF Dos n Don'ts - der WPF RundumschlagWPF Dos n Don'ts - der WPF Rundumschlag
WPF Dos n Don'ts - der WPF RundumschlagHendrik Lösch
 
Clean mit visual studio
Clean mit visual studioClean mit visual studio
Clean mit visual studioHendrik Lösch
 
Advanced Refactoring Patterns
Advanced Refactoring PatternsAdvanced Refactoring Patterns
Advanced Refactoring PatternsHendrik Lösch
 
Advanced Refactoring Patterns - Dev Day 2018
Advanced Refactoring Patterns - Dev Day 2018Advanced Refactoring Patterns - Dev Day 2018
Advanced Refactoring Patterns - Dev Day 2018Hendrik Lösch
 

Mehr von Hendrik Lösch (20)

Why (most) softwareprojects fail silently
Why (most) softwareprojects fail silentlyWhy (most) softwareprojects fail silently
Why (most) softwareprojects fail silently
 
We (don't) need a software architect!?!
We (don't) need a software architect!?!We (don't) need a software architect!?!
We (don't) need a software architect!?!
 
Restrukturierung einer industriellen Großapplikation
Restrukturierung einer industriellen GroßapplikationRestrukturierung einer industriellen Großapplikation
Restrukturierung einer industriellen Großapplikation
 
Vom Monolith zum Modulith
Vom Monolith zum ModulithVom Monolith zum Modulith
Vom Monolith zum Modulith
 
Der Software auf den Zahn gefühlt - Einstieg in die Architekturbewertung
Der Software auf den Zahn gefühlt - Einstieg in die ArchitekturbewertungDer Software auf den Zahn gefühlt - Einstieg in die Architekturbewertung
Der Software auf den Zahn gefühlt - Einstieg in die Architekturbewertung
 
„Wie reden Sie denn mit mir?!?“ – Stakeholder überzeugen als Softwarearchitekt
„Wie reden Sie denn mit mir?!?“ – Stakeholder überzeugen als Softwarearchitekt„Wie reden Sie denn mit mir?!?“ – Stakeholder überzeugen als Softwarearchitekt
„Wie reden Sie denn mit mir?!?“ – Stakeholder überzeugen als Softwarearchitekt
 
Software ist was du draus machst!
Software ist was du draus machst!Software ist was du draus machst!
Software ist was du draus machst!
 
Modular mit .NET
Modular mit .NETModular mit .NET
Modular mit .NET
 
.NET zu .NET Core
.NET zu .NET Core.NET zu .NET Core
.NET zu .NET Core
 
Workshop Vue js
Workshop Vue jsWorkshop Vue js
Workshop Vue js
 
Migrationsstrategien
MigrationsstrategienMigrationsstrategien
Migrationsstrategien
 
Einstieg in das Vueniverse
Einstieg in das VueniverseEinstieg in das Vueniverse
Einstieg in das Vueniverse
 
Survivalkit für Codehausmeister
Survivalkit für CodehausmeisterSurvivalkit für Codehausmeister
Survivalkit für Codehausmeister
 
Confessions of a Codehausmeister
Confessions of a CodehausmeisterConfessions of a Codehausmeister
Confessions of a Codehausmeister
 
Hey, wie geht es dir?
Hey, wie geht es dir?Hey, wie geht es dir?
Hey, wie geht es dir?
 
WPF Dos n Don'ts - der WPF Rundumschlag
WPF Dos n Don'ts - der WPF RundumschlagWPF Dos n Don'ts - der WPF Rundumschlag
WPF Dos n Don'ts - der WPF Rundumschlag
 
Clean mit visual studio
Clean mit visual studioClean mit visual studio
Clean mit visual studio
 
Advanced Refactoring Patterns
Advanced Refactoring PatternsAdvanced Refactoring Patterns
Advanced Refactoring Patterns
 
Codesmells
CodesmellsCodesmells
Codesmells
 
Advanced Refactoring Patterns - Dev Day 2018
Advanced Refactoring Patterns - Dev Day 2018Advanced Refactoring Patterns - Dev Day 2018
Advanced Refactoring Patterns - Dev Day 2018
 

Was ist eigentlich eine Unit?