Zum Inhalt springen

„Testbarkeit“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[ungesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
Ammit (Diskussion | Beiträge)
KKeine Bearbeitungszusammenfassung
K bearb.
 
(17 dazwischenliegende Versionen von 13 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
'''Testbarkeit''' ist der Grad, zu dem ein Software-Artefakt (ein Software-System, ein Software-Modul, ein Anforderungs- oder Entwicklungsdokument) den [[Test]] in einem gegebenen Testkontext unterstützt.
'''Testbarkeit''' ist der Grad, zu dem ein Software-[[Artefakt (Softwareentwicklung)|Artefakt]] (ein Software-System, ein Software-Modul, ein Anforderungs- oder Entwicklungsdokument) den [[Test]] in einem gegebenen Testkontext unterstützt.


Testbarkeit ist keine [[intrinsisch]]e Eigenschaft von Software-Artefakten und kann nicht direkt (wie z.B. der Software-Umfang) gemessen werden. Stattdessen ist Testbarkeit eine [[extrinsisch]]e Eigenschaft, die sich aus der Wechselwirkung der Software und den Testzielen, Test-Ressourcen und eingesetzten Testverfahren (d.h. dem Testkontext) ergibt.
Testbarkeit ist keine [[intrinsisch]]e Eigenschaft von Software-Artefakten und kann nicht direkt (wie z. B. der Software-Umfang) gemessen werden. Stattdessen ist Testbarkeit eine [[extrinsisch]]e Eigenschaft, die sich aus der Wechselwirkung der Software mit den Testzielen, Test-Ressourcen und eingesetzten Testverfahren (d. h. dem Testkontext) ergibt.


Je geringer die Testbarkeit ist, desto höher ist der Testaufwand. Im Extremfall ist bei schlechter Testbarkeit der Test von Teilen der Software-[[Anforderungen]] gar nicht möglich.
Je geringer die Testbarkeit ist, desto höher ist der [[Testaufwand]]. Im Extremfall ist bei schlechter Testbarkeit der Test von Teilen der Software-[[Anforderung (Heuristik)|Anforderungen]] gar nicht möglich.


== Hintergrund ==
== Hintergrund ==
Der Aufwand und die Effektivität eines Software-Tests hängen unter anderem von den folgenden Faktoren ab:

* Software-Anforderungen
Der Aufwand und die Effektivität eines Software-Tests hängt u.a. von den folgenden Faktoren ab:
* Eigenschaften der Software-[[Anforderungen]]
* Eigenschaften der Software wie Umfang, Komplexität und Testbarkeit
* Eingesetzte Testmethoden
* Eigenschaften der Software (z.B. Umfang, Komplexität und '''Testbarkeit''')
* Entwicklungs- und Testprozess
* Eigenschaften der eingesetzten Testmethoden
* Eigenschaften des Entwicklungs- und Testprozesses
* Qualifikation und Motivation der am Test beteiligten Personen
* Qualifikation und Motivation der am Test beteiligten Personen


== Testbarkeit von Software ==
== Testbarkeit von Software ==
Die Testbarkeit von Software wird u. a. durch folgende Faktoren bestimmt:

* ''Kontrollierbarkeit'': Das Testobjekt kann in den für den Test erforderlichen Zustand gebracht werden.
Die Testbarkeit von Software wird u.a. durch folgende Faktoren bestimmt:
* '''Kontrollierbarkeit''': Das Testobjekt kann in den für den Test erforderlichen Zustand gebracht werden.
* ''Beobachtbarkeit'': Das Testergebnis kann beobachtet werden.
* '''Beobachtbarkeit''': Das Testergebnis kann beobachtet werden.
* ''Isolierbarkeit'': Das Testobjekt kann isoliert getestet werden.
* '''Isolierbarkeit''': Das Testobjekt kann isoliert getestet werden.
* ''Trennung der Verantwortlichkeit'': Das Testobjekt hat ''eine'' wohldefinierte Verantwortlichkeit.
* '''Trennung der Verantwortlichkeit''': Das Testobjekt hat '''eine''' wohldefinierte Verantwortlichkeit.
* ''Verständlichkeit'': Das Testobjekt ist selbsterklärend bzw. gut dokumentiert.
* ''Automatisierbarkeit'': Die Tests lassen sich automatisieren.
* '''Verständlichkeit''': Das Testobjekt ist selbsterklärend bzw. gut dokumentiert.
* ''Heterogenität'': Unterschiedliche Technologien erfordern den gleichzeitigen Einsatz von unterschiedlichen Testverfahren und -Werkzeugen.
* '''Automatisierbarkeit''': Die Tests lassen sich automatisieren.
* '''Heterogenität''': Unterschiedliche Technologien erfordern den gleichzeitigen Einsatz von unterschiedlichen Testverfahren und -Werkzeugen.


Die Testbarkeit der Software wird verbessert durch:
Die Testbarkeit der Software wird verbessert durch:
* [[Testgetriebene Entwicklung]]
* [[Testgetriebene Entwicklung]]
* Entwurf für Testbarkeit
* Entwurf für Testbarkeit

Bei der Testbarkeit von [[Klasse (Programmierung)|Klassen]] wird zwischen nonmodalen, quasimodalen, unimodalen und modalen Klassen unterschieden. Nonmodale Klassen zeigen dasselbe Verhalten in egal welchem Zustand sie sich befinden und in egal welcher Reihenfolge ihre Methoden aufgerufen werden. Quasimodale Klassen zeigen unterschiedliches Verhalten zu unterschiedlichen Zuständen. Unimodale Klassen zeigen unterschiedliches Verhalten bei unterschiedlicher Reihenfolge der Aufrufe ihrer Methoden. Modale Klassen zeigen sowohl unterschiedliches Verhalten zu unterschiedlichen Zuständen und Aufrufreihenfolgen.
Die Testbarkeit von nonmodalen Klassen ist am höchsten, da man nur alle Methoden unabhängig von Zustand und Reihenfolge testen muss. Bei den anderen Arten müssen alle Reihenfolgen und Zustände kombiniert getestet werden, was einen weitaus höheren Testaufwand nach sich zieht.


== Testbarkeit von Anforderungen ==
== Testbarkeit von Anforderungen ==


Anforderungen sind testbar, wenn sie folgende Kriterien erfüllen:
Anforderungen sind testbar, wenn sie folgende Kriterien erfüllen:
* '''konsistent'''
* ''konsistent''
* '''vollständig'''
* ''vollständig''
* '''eindeutig''': Die Anforderung kann nicht unterschiedlich interpretiert werden.
* ''eindeutig'': Die Anforderung kann nicht unterschiedlich interpretiert werden.
* '''quantitativ formuliert''': Eine Anforderung wie "schnelle Antwortzeit" kann nicht [[Verifizierung|verifiziert]] werden.
* ''quantitativ formuliert'': Eine Anforderung wie „schnelle Antwortzeit“ kann nicht [[Verifizierung|verifiziert]] werden.
* '''praktisch [[Verifizierung|verifizierbar]]''': Der Test ist nicht nur theoretisch möglich, sondern auch mit begrenztem Aufwand in der betrieblichen Praxis durchführbar.
* ''praktisch [[Verifizierung|verifizierbar]]'': Der Test ist nicht nur theoretisch möglich, sondern auch mit begrenztem Aufwand in der betrieblichen Praxis durchführbar.

== Literatur ==
* Stefan Jungmayr: [http://www.dissertation.de/index.php3?active_document=/FDP/sj929.pdf ''Improving testability of object-oriented systems.''], Dissertation, Berlin 2004, ISBN 3-89825-781-9


== Weblinks ==
== Weblinks ==
* [http://www.testbarkeit.de www.testbarkeit.de] Website mit Hinweisen und Literatur zum Thema Software-Testbarkeit
* [http://www.testbarkeit.de www.testbarkeit.de] Website mit Hinweisen und Literatur zum Thema Software-Testbarkeit

== Literatur ==
* Stefan Jungmayr: [http://www.dissertation.de/index.php3?active_document=/FDP/sj929.pdf Improving testability of object-oriented systems], ISBN 3-89825-781-9
* Johannes Link: [http://stmj.developertests.de/ Softwaretests mit JUnit - Techniken der testgetriebenen Entwicklung], ISBN 3-89864-325-5
* Frank Westphal: ''Testgetriebene Entwicklung mit JUnit und FIT'', ISBN 3-89864-220-8



[[Kategorie:Testen (Software)]]
[[Kategorie:Testen (Software)]]

Aktuelle Version vom 25. Februar 2023, 17:51 Uhr

Testbarkeit ist der Grad, zu dem ein Software-Artefakt (ein Software-System, ein Software-Modul, ein Anforderungs- oder Entwicklungsdokument) den Test in einem gegebenen Testkontext unterstützt.

Testbarkeit ist keine intrinsische Eigenschaft von Software-Artefakten und kann nicht direkt (wie z. B. der Software-Umfang) gemessen werden. Stattdessen ist Testbarkeit eine extrinsische Eigenschaft, die sich aus der Wechselwirkung der Software mit den Testzielen, Test-Ressourcen und eingesetzten Testverfahren (d. h. dem Testkontext) ergibt.

Je geringer die Testbarkeit ist, desto höher ist der Testaufwand. Im Extremfall ist bei schlechter Testbarkeit der Test von Teilen der Software-Anforderungen gar nicht möglich.

Der Aufwand und die Effektivität eines Software-Tests hängen unter anderem von den folgenden Faktoren ab:

  • Software-Anforderungen
  • Eigenschaften der Software wie Umfang, Komplexität und Testbarkeit
  • Eingesetzte Testmethoden
  • Entwicklungs- und Testprozess
  • Qualifikation und Motivation der am Test beteiligten Personen

Testbarkeit von Software

[Bearbeiten | Quelltext bearbeiten]

Die Testbarkeit von Software wird u. a. durch folgende Faktoren bestimmt:

  • Kontrollierbarkeit: Das Testobjekt kann in den für den Test erforderlichen Zustand gebracht werden.
  • Beobachtbarkeit: Das Testergebnis kann beobachtet werden.
  • Isolierbarkeit: Das Testobjekt kann isoliert getestet werden.
  • Trennung der Verantwortlichkeit: Das Testobjekt hat eine wohldefinierte Verantwortlichkeit.
  • Verständlichkeit: Das Testobjekt ist selbsterklärend bzw. gut dokumentiert.
  • Automatisierbarkeit: Die Tests lassen sich automatisieren.
  • Heterogenität: Unterschiedliche Technologien erfordern den gleichzeitigen Einsatz von unterschiedlichen Testverfahren und -Werkzeugen.

Die Testbarkeit der Software wird verbessert durch:

Bei der Testbarkeit von Klassen wird zwischen nonmodalen, quasimodalen, unimodalen und modalen Klassen unterschieden. Nonmodale Klassen zeigen dasselbe Verhalten in egal welchem Zustand sie sich befinden und in egal welcher Reihenfolge ihre Methoden aufgerufen werden. Quasimodale Klassen zeigen unterschiedliches Verhalten zu unterschiedlichen Zuständen. Unimodale Klassen zeigen unterschiedliches Verhalten bei unterschiedlicher Reihenfolge der Aufrufe ihrer Methoden. Modale Klassen zeigen sowohl unterschiedliches Verhalten zu unterschiedlichen Zuständen und Aufrufreihenfolgen. Die Testbarkeit von nonmodalen Klassen ist am höchsten, da man nur alle Methoden unabhängig von Zustand und Reihenfolge testen muss. Bei den anderen Arten müssen alle Reihenfolgen und Zustände kombiniert getestet werden, was einen weitaus höheren Testaufwand nach sich zieht.

Testbarkeit von Anforderungen

[Bearbeiten | Quelltext bearbeiten]

Anforderungen sind testbar, wenn sie folgende Kriterien erfüllen:

  • konsistent
  • vollständig
  • eindeutig: Die Anforderung kann nicht unterschiedlich interpretiert werden.
  • quantitativ formuliert: Eine Anforderung wie „schnelle Antwortzeit“ kann nicht verifiziert werden.
  • praktisch verifizierbar: Der Test ist nicht nur theoretisch möglich, sondern auch mit begrenztem Aufwand in der betrieblichen Praxis durchführbar.