ScholarGate
Assistent

Softwaretest

Softwaretest ist die dynamische Ausführung eines Programms mit ausgewählten Eingaben, um Fehler zu erkennen und Vertrauen zu gewinnen, dass die Software wie beabsichtigt funktioniert.

Thema finden mit PaperMindDemnächstFind papers & topics
Tools & resources
Folien herunterladen
Learn & explore
VideoDemnächst

Definition

Softwaretest ist die Aktivität des Entwerfens und Ausführens von Testfällen – Eingaben gepaart mit erwarteten Ergebnissen –, um Diskrepanzen zwischen tatsächlichem und gefordertem Verhalten aufzudecken und die Softwarezuverlässigkeit abzuschätzen.

Scope

Dieses Thema behandelt Teststufen (Unit-, Integrations-, System-, Akzeptanztests); Black-Box-Techniken wie Äquivalenzklassenbildung, Grenzwertanalyse und kombinatorisches Testen; White-Box-Techniken, die durch Code-Coverage-Kriterien gesteuert werden; Regressionstests, Performance-Tests und exploratives Testen; Testautomatisierung; sowie die Theorie der Testadäquanz und -abdeckung.

Core questions

  • Wie werden effektive Testfälle aus einem unüberschaubar großen Eingaberaum ausgewählt?
  • Welche Abdeckungskriterien messen die Angemessenheit einer Testsuite?
  • Wie ergänzen sich die Teststufen von der Unit- bis zur Akzeptanzprüfung gegenseitig?
  • Wie kann das Testen automatisiert und in die Bereitstellungspipeline integriert werden?

Key theories

Black-Box- und White-Box-Testdesign
Black-Box-Techniken leiten Tests aus der Spezifikation durch Partitionierung und Grenzwertanalyse ab, während White-Box-Techniken Tests aus der Codestruktur ableiten, geleitet von Abdeckungskriterien; die beiden ergänzen sich.
Abdeckungs- und Testadäquanzkriterien
Adäquanzkriterien wie Anweisungs-, Zweig- und Bedingungsabdeckung sowie modellbasierte Kriterien über Kontroll- und Datenflussgraphen geben messbare Ziele dafür, wie gründlich eine Testsuite ein Programm ausführt.

Clinical relevance

Testen ist das am weitesten verbreitete Mittel, um sicherzustellen, dass Software vor der Veröffentlichung korrekt funktioniert; gut konzipierte automatisierte Tests erkennen Regressionen frühzeitig, unterstützen Refactoring und Continuous Delivery und sind zentral für zuverlässige Software.

Evidence & guidelines

ISO/IEC/IEEE 29119 bietet internationale Standards für Softwaretestprozesse, -dokumentation und -techniken, und der SWEBOK Software Testing Wissensbereich gibt einen Konsensüberblick.

History

Das Testen entwickelte sich von ad-hoc-Debugging zu einer Disziplin mit Myers' systematischer Behandlung im Jahr 1979; Coverage-Theorie, modellbasiertes Testen und Testautomatisierung entwickelten sich in den folgenden Jahrzehnten, und Test-Driven Development sowie Continuous Integration machten automatisiertes Testen zu einer zentralen agilen Praxis.

Debates

Wie viel automatisiertes Testen sich lohnt
Das richtige Gleichgewicht zwischen Unit-, Integrations- und End-to-End-automatisierten Tests wird diskutiert; die Testpyramide bevorzugt viele schnelle Unit-Tests gegenüber langsamen End-to-End-Tests, aber Kritiker merken an, dass dieses Gleichgewicht vom Systemtyp und Risiko abhängt.

Key figures

  • Glenford Myers
  • Paul Ammann
  • Jeff Offutt
  • Boris Beizer

Related topics

Seminal works

  • myers2011
  • ammann2016
  • swebok2014

Frequently asked questions

Warum können wir nicht jede mögliche Eingabe testen?
Der Raum der möglichen Eingaben und Ausführungspfade ist für die meisten Programme astronomisch groß oder unendlich, daher ist ein erschöpfendes Testen undurchführbar; stattdessen wählt das Testen repräsentative und Grenzfälle unter Verwendung systematischer Techniken aus, um die Fehlererkennung pro Test zu maximieren.
Was ist der Unterschied zwischen Teststufen?
Unit-Tests prüfen einzelne Komponenten isoliert, Integrationstests überprüfen deren Interaktionen, Systemtests bewerten das gesamte System anhand seiner Anforderungen, und Akzeptanztests bestätigen, dass es die Benutzerbedürfnisse erfüllt; jede Stufe zielt auf unterschiedliche Arten von Fehlern ab.

Methods for this concept

Related concepts