Softwarequalität 5
48 Questions
0 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

Welche Aussage beschreibt am besten die aktuelle Rolle von Softwaretests im Vergleich zu traditionellen Modellen wie dem Wasserfallmodell?

  • Tests werden hauptsächlich am Ende des Entwicklungsprozesses durchgeführt, um die Funktionalität zu überprüfen.
  • Tests werden nur in der Implementierungsphase durchgeführt, um Fehler frühzeitig zu erkennen.
  • Tests sind integraler Bestandteil aller Phasen des Entwicklungszyklus, von der Anforderungsanalyse bis zur Wartung. (correct)
  • Tests sind optional und werden nur bei Bedarf zur Qualitätssicherung eingesetzt.

Welchen Vorteil bietet die kontinuierliche Integration von Tests in den gesamten Softwareentwicklungszyklus?

  • Sie verkürzt die Entwicklungszeit und verbessert die Softwarequalität durch frühzeitige Fehlererkennung. (correct)
  • Sie vereinfacht die Implementierungsphase, da Fehler erst später behoben werden müssen.
  • Sie reduziert die Notwendigkeit einer detaillierten Anforderungsanalyse.
  • Sie macht das Design des Systems irrelevant, solange die Tests am Ende erfolgreich sind.

Was sind analytische Qualitätsmaßnahmen im Kontext der Softwareentwicklung?

  • Systematische Bewertungen und Verbesserungen der Produktqualität. (correct)
  • Einmalige Überprüfungen der Software nach der Implementierung.
  • Subjektive Bewertungen des Entwicklerteams über die Benutzerfreundlichkeit.
  • Marketingstrategien zur Verbesserung des Images der Software.

Welche der folgenden Optionen beschreibt am besten das Ziel von Softwaretests?

<p>Die Qualität der Software systematisch zu bewerten und zu verbessern. (C)</p> Signup and view all the answers

In welcher Beziehung stehen Softwaretests zu analytischen Qualitätsmaßnahmen?

<p>Softwaretests sind eine von vielen analytischen Qualitätsmaßnahmen. (D)</p> Signup and view all the answers

Warum ist es vorteilhaft, Tests frühzeitig in den Entwicklungsprozess zu integrieren?

<p>Um Fehler frühzeitig zu erkennen und zu beheben, was die Qualität verbessert und die Entwicklungszeit verkürzt. (B)</p> Signup and view all the answers

Welche der folgenden Aussagen beschreibt den Unterschied zwischen traditioneller und moderner Softwareentwicklung in Bezug auf Tests am besten?

<p>In der traditionellen Entwicklung wurden Tests am Ende des Prozesses durchgeführt, während sie in der modernen Entwicklung in alle Phasen integriert sind. (A)</p> Signup and view all the answers

Welche der folgenden Optionen stellt den größten Vorteil der Testintegration über den gesamten Entwicklungszyklus dar?

<p>Frühzeitige Erkennung und Behebung von Fehlern, was zu höherer Qualität und kürzerer Entwicklungszeit führt. (B)</p> Signup and view all the answers

Welche der folgenden Aussagen beschreibt am besten den Zweck des 'Assert'-Schritts in einem Unit-Test?

<p>Zu überprüfen, ob die Aktion das erwartete Ergebnis liefert. (D)</p> Signup and view all the answers

Warum ist die Automatisierung von Unit-Tests wichtig im Kontext der Continuous Integration (CI)?

<p>Um sicherzustellen, dass neue Änderungen keine unerwarteten Fehler verursachen. (B)</p> Signup and view all the answers

Welchen Vorteil bieten Unit-Tests hinsichtlich der Dokumentation eines Systems?

<p>Sie zeigen, wie eine Einheit unter verschiedenen Bedingungen verwendet wird. (A)</p> Signup and view all the answers

Warum ist es wichtig, den 'Act'-Schritt in einem Unit-Test auf eine einzige Aktion zu beschränken?

<p>Um die Fehlersuche im Falle eines Fehlschlags zu vereinfachen. (B)</p> Signup and view all the answers

In welchem Zusammenhang stehen Unit-Tests und die frühzeitige Fehlererkennung?

<p>Durch die regelmäßige Ausführung von Unit-Tests können Probleme schnell erkannt und behoben werden, bevor die Software für Integrationstests bereit ist. (B)</p> Signup and view all the answers

Was bedeutet 'Isolation' im Kontext von Unit-Tests?

<p>Unit-Tests werden so gestaltet, dass sie unabhängig von anderen Teilen des Systems durchgeführt werden können. (B)</p> Signup and view all the answers

Warum ist die schnelle Ausführung von Unit-Tests ein wichtiges Merkmal?

<p>Um zu vermeiden, dass der Entwicklungsprozess durch lange Testläufe verlangsamt wird. (B)</p> Signup and view all the answers

Ein Stresstest wird durchgeführt, um die Systemleistung über festgelegte Grenzwerte hinaus zu prüfen. Welches spezifische Ziel wird mit diesem Test primär verfolgt?

<p>Die Reaktion des Systems bei Überlastung zu beurteilen. (C)</p> Signup and view all the answers

Welche Rolle spielen Mock-Objekte oder Stubs bei Unit-Tests?

<p>Sie simulieren Abhängigkeiten von anderen Klassen oder Modulen. (C)</p> Signup and view all the answers

Bei einem Zuverlässigkeitstest wird die Systemreaktion im Dauerbetrieb untersucht. Welche Metrik ist hierbei besonders relevant?

<p>Die Anzahl der Ausfälle über einen bestimmten Zeitraum. (B)</p> Signup and view all the answers

Ein Softwareentwickler führt einen Robustheitstest durch. Welches Szenario wird hierbei hauptsächlich berücksichtigt?

<p>Die Reaktion der Software auf Fehleingaben durch Benutzer. (A)</p> Signup and view all the answers

Ein Unternehmen plant, eine neue Software in seine bestehende IT-Infrastruktur zu integrieren und führt einen Kompatibilitätstest durch. Welcher Aspekt steht hierbei im Vordergrund?

<p>Die Fähigkeit, Daten mit anderen Programmen auszutauschen. (A)</p> Signup and view all the answers

Welche Aussage beschreibt am besten den Zweck von Testebenen im Softwaretestprozess?

<p>Die Strukturierung des Testaufwands, um sicherzustellen, dass die Software in jeder Entwicklungsphase die Qualitätserwartungen erfüllt. (A)</p> Signup and view all the answers

Bei einem Konfigurationstest wird die Flexibilität eines Systems in unterschiedlichen Umgebungen geprüft. Welche Umgebungsvariablen sind typischerweise von Bedeutung?

<p>Die Vielfalt an unterstützten Hardware-Komponenten. (B)</p> Signup and view all the answers

Ein Usability-Test wird durchgeführt, um die Benutzerfreundlichkeit eines Systems zu bewerten. Welches Kriterium ist entscheidend, um festzustellen, ob ein System benutzerfreundlich ist?

<p>Die Fähigkeit der Anwender, die Benutzung schnell zu erlernen und Fehler zu vermeiden. (D)</p> Signup and view all the answers

Was ist das Hauptziel von Unit-Tests (Komponententests/Modul-Tests)?

<p>Die kleinsten testbaren Teile einer Anwendung isoliert zu prüfen, um sicherzustellen, dass jede Komponente korrekt funktioniert. (B)</p> Signup and view all the answers

Dokumentationstests sind ein wichtiger Bestandteil der Qualitätssicherung. Welche Arten von Dokumentationen werden hierbei typischerweise geprüft?

<p>Nutzerdokumentation und Softwareentwicklungsdokumentation. (D)</p> Signup and view all the answers

Welche der folgenden Aussagen beschreibt NICHT korrekt die Vorteile von Unit-Tests?

<p>Garantierte Fehlerfreiheit der gesamten Software nach erfolgreichem Abschluss aller Unit-Tests. (A)</p> Signup and view all the answers

Ein Volumentest wird durchgeführt, um das Verhalten eines Systems bei der Verarbeitung großer Datenmengen zu untersuchen. Welche potenzielle Auswirkung großer Datenmengen auf das System wird hierbei besonders berücksichtigt?

<p>Die Systemleistung in Bezug auf Antwortzeiten und Stabilität. (D)</p> Signup and view all the answers

In welcher Beziehung stehen Unit-Tests zu anderen Testebenen im Softwaretestprozess?

<p>Sie bilden die unterste Testebene und konzentrieren sich auf die Überprüfung einzelner Komponenten. (B)</p> Signup and view all the answers

Was ist das Arrange-Act-Assert (AAA) Muster im Kontext von Unit-Tests?

<p>Ein Muster zur Strukturierung von Unit-Tests, das den Testprozess in drei Schritte unterteilt: Vorbereitung, Ausführung und Überprüfung. (B)</p> Signup and view all the answers

Welche Aufgabe hat die "Arrange"-Phase im Arrange-Act-Assert (AAA) Muster?

<p>Alle notwendigen Vorbereitungen zu treffen, wie z.B. das Initialisieren von Objekten und das Setzen von Eingabewerten. (C)</p> Signup and view all the answers

Was ist der Zweck der "Assert"-Phase im Arrange-Act-Assert (AAA) Muster?

<p>Überprüft, ob die Ergebnisse der Testausführung den Erwartungen entsprechen. (A)</p> Signup and view all the answers

Warum ist das Arrange-Act-Assert (AAA) Muster für Unit-Tests wichtig?

<p>Es verbessert die Lesbarkeit und Struktur von Tests, was zu einer besseren Wartbarkeit führt. (A)</p> Signup and view all the answers

Welchen Hauptvorteil bieten Reviews, Inspektionen und Walkthroughs im Softwareentwicklungsprozess?

<p>Sie ermöglichen eine frühzeitige Fehlererkennung und fördern die Einhaltung von Projektstandards. (B)</p> Signup and view all the answers

Was unterscheidet eine Inspektion von einem Walkthrough im Kontext der Softwarequalitätssicherung?

<p>Eine Inspektion ist ein formelleres Verfahren mit strengen Richtlinien und beinhaltet typischerweise ein Team aus verschiedenen Stakeholdern. (B)</p> Signup and view all the answers

In welcher Phase des Softwareentwicklungszyklus sind statische Analysen wie Reviews, Inspektionen und Walkthroughs am effektivsten?

<p>Früh im Entwicklungszyklus, bevor umfangreiche dynamische Tests durchgeführt werden. (B)</p> Signup and view all the answers

Welche Aussage beschreibt am besten das Ziel eines Walkthroughs?

<p>Das Sammeln von Feedback und Vorschlägen zur Verbesserung sowie die Förderung des Verständnisses aller Beteiligten. (B)</p> Signup and view all the answers

Warum sind sowohl statische (Reviews, Inspektionen, Walkthroughs) als auch dynamische Softwaretests wichtig?

<p>Statische Tests identifizieren Probleme, bevor der Code ausgeführt wird, während dynamische Tests das Verhalten der Software in der Laufzeitumgebung prüfen. (D)</p> Signup and view all the answers

Welche der folgenden Tätigkeiten ist typischerweise KEIN Bestandteil einer formalen Software-Inspektion?

<p>Die Durchführung von Ad-hoc-Änderungen am Code während des Inspektionstreffens. (C)</p> Signup and view all the answers

Was ist das Hauptziel der dynamischen Softwaretests?

<p>Die Identifizierung von Fehlern, Schwachstellen oder Abweichungen von den vorgegebenen Anforderungen in einer Laufzeitumgebung. (A)</p> Signup and view all the answers

Welche der folgenden Aussagen beschreibt am besten, wie statische und dynamische Testmethoden sich ergänzen?

<p>Dynamische Tests identifizieren Fehler, die durch statische Tests übersehen wurden, und validieren die Korrekturen. (B)</p> Signup and view all the answers

Welche Aussage beschreibt am besten die Funktion von Fixtures in pytest im Kontext von Integrationstests?

<p>Fixtures werden verwendet, um komplexe Testumgebungen vorzubereiten, indem Testdaten und -zustände definiert und in Tests wiederverwendet werden. (B)</p> Signup and view all the answers

Wie tragen Marker in pytest zur Flexibilität bei Integrationstests bei?

<p>Marker erlauben es, Testfälle mit zusätzlichen Informationen zu kennzeichnen, wodurch selektiv bestimmte Untergruppen von Tests ausgeführt werden können. (C)</p> Signup and view all the answers

Warum ist die Möglichkeit, Tests in einer bestimmten Reihenfolge auszuführen, besonders wichtig für Integrationstests?

<p>Weil bestimmte Integrationstests auf den Ergebnissen oder Zuständen aufbauen können, die von vorherigen Tests hinterlassen wurden. (B)</p> Signup and view all the answers

Welchen Vorteil bietet die Verwendung von unittest oder pytest sowohl für Unit- als auch für Integrationstests?

<p>Entwickler und Tester können die gleichen Werkzeuge und Praktiken nutzen, die sie bereits von Unit-Tests kennen, was den Übergang zur Integrationstests vereinfacht. (C)</p> Signup and view all the answers

In welcher Phase des Softwaretestprozesses werden Systemtests typischerweise durchgeführt?

<p>Nach den Unit- und Integrationstests, als letzter Schritt vor den Abnahme- oder Nutzertests. (D)</p> Signup and view all the answers

Was ist das Hauptziel von Systemtests?

<p>Zu überprüfen, ob die Software als Ganzes funktioniert und ob sie bereit für die Veröffentlichung ist. (A)</p> Signup and view all the answers

Welche Aspekte werden bei Systemtests typischerweise bewertet?

<p>Funktionen, Leistung, Sicherheit und Benutzerfreundlichkeit des Gesamtsystems. (D)</p> Signup and view all the answers

Warum ist es wichtig, dass die Umgebung, in der Systemtests durchgeführt werden, so nah wie möglich an der realen Einsatzumgebung der Endbenutzer ist?

<p>Um sicherzustellen, dass die Software unter realen Bedingungen korrekt funktioniert und potenzielle Probleme frühzeitig erkannt werden. (D)</p> Signup and view all the answers

Flashcards

Analytische Qualitätsmaßnahmen

Systematische Bewertung und Verbesserung der Produktqualität.

Black-Box-Test

Ein Softwaretest, bei dem die interne Struktur und der Code der Software nicht berücksichtigt werden.

White-Box-Test

Ein Softwaretest, bei dem die interne Struktur und der Code der Software bekannt sind und zur Testgestaltung verwendet werden.

Kontinuierliches Testen

Tests werden in alle Phasen des Entwicklungsprozesses integriert.

Signup and view all the flashcards

Unit-Tests

Tests, die einzelne Komponenten oder Module der Software isoliert prüfen.

Signup and view all the flashcards

Ziel des kontinuierlichen Testens

Frühes Erkennen und Beheben von Fehlern im Entwicklungsprozess.

Signup and view all the flashcards

Testen im Wasserfallmodell

Traditionelle Testphase am Ende des Entwicklungsprozesses.

Signup and view all the flashcards

Nutzen des kontinuierlichen Testens

Verbesserte Softwarequalität und verkürzte Entwicklungszeit.

Signup and view all the flashcards

Volumentest

Prüft, wie das System mit sehr großen Datenmengen umgeht.

Signup and view all the flashcards

Stresstest

Prüft das System bei Überlastung, indem die Last über die Grenzwerte gesteigert wird.

Signup and view all the flashcards

Security-Test

Prüft die Sicherheit des Systems vor unberechtigten Datenzugriffen.

Signup and view all the flashcards

Zuverlässigkeitstest

Prüft, wie das System unter Dauerbetrieb reagiert und notiert z.B. Ausfälle.

Signup and view all the flashcards

Robustheitstest

Prüft, wie resistent das Programm gegenüber externen Fehlern (z.B. Fehleingaben) ist.

Signup and view all the flashcards

Kompatibilitätstest

Prüft, wie leicht Daten mit anderen Programmen ausgetauscht werden können.

Signup and view all the flashcards

Konfigurationstest

Prüft, wie gut sich das System in unterschiedlichen Systemumgebungen verwenden lässt.

Signup and view all the flashcards

Usability-Test

Prüft, ob das System benutzerfreundlich ist und Anwender es schnell erlernen können.

Signup and view all the flashcards

Was ist ein Review?

Eine systematische Überprüfung von Dokumenten (z.B. Quellcode) durch mehrere Personen zur Fehlerfindung und Qualitätssicherung.

Signup and view all the flashcards

Was ist eine Inspektion?

Ein formellerer Überprüfungsprozess mit strengen Richtlinien, oft Teil der Qualitätssicherung.

Signup and view all the flashcards

Was ist ein Walkthrough?

Eine informelle Präsentation und Durchgang eines Dokuments oder Codes durch den Autor zur Sammlung von Feedback und zur Förderung des Verständnisses.

Signup and view all the flashcards

Ziel von Reviews, Inspektionen und Walkthroughs?

Frühe Fehlererkennung und Sicherstellung der Einhaltung von Projektstandards.

Signup and view all the flashcards

Wie ergänzen statische Methoden dynamische Testmethoden?

Sie identifizieren potentielle Probleme frühzeitig.

Signup and view all the flashcards

Was sind dynamische Softwaretests?

Das Ausführen von Code in einer Laufzeitumgebung zur Identifizierung von Fehlern, Schwachstellen und Abweichungen.

Signup and view all the flashcards

Was ist der Wert von dynamischen Softwaretests?

Das tatsächliche Verhalten der Software unter verschiedenen Bedingungen beobachten und analysieren.

Signup and view all the flashcards

Wie tragen statische Methoden zur Softwarequalität bei?

Softwarequalität verbessern, indem sie eine frühzeitige Fehlererkennung ermöglichen.

Signup and view all the flashcards

Testebenen

Klar definierte Phasen im Softwaretestprozess zur Überprüfung verschiedener Aspekte.

Signup and view all the flashcards

Ziel von Testebenen

Sicherstellen, dass Software in jeder Entwicklungsphase die Qualitätsanforderungen erfüllt.

Signup and view all the flashcards

Ziel von Unit-Tests

Sicherstellen, dass jede isolierte Komponente korrekt funktioniert.

Signup and view all the flashcards

AAA-Muster

Ein Muster zur Strukturierung von Unit-Tests in drei Schritten.

Signup and view all the flashcards

Arrange (AAA)

Vorbereiten aller notwendigen Voraussetzungen für den Test.

Signup and view all the flashcards

Act (AAA)

Die eigentliche Testaktion wird ausgeführt (z.B. Funktionsaufruf).

Signup and view all the flashcards

Assert (AAA)

Überprüfen, ob das Ergebnis der Testaktion den Erwartungen entspricht.

Signup and view all the flashcards

Act-Schritt im Unit-Test

Ein Testschritt, der sich nur auf eine einzige Aktion konzentriert.

Signup and view all the flashcards

Assert-Schritt im Unit-Test

Überprüft, ob das Ergebnis des Act-Schritts den Erwartungen entspricht.

Signup and view all the flashcards

Isolation im Unit-Test

Tests von Softwarekomponenten isoliert von anderen Systemteilen.

Signup and view all the flashcards

Mock-Objekte/Stubs

Verwendung von simulierten Objekten (Mocks/Stubs) zur Isolation von Abhängigkeiten.

Signup and view all the flashcards

Automatisierung im Unit-Test

Automatische Ausführung von Unit-Tests bei jeder Codeänderung.

Signup and view all the flashcards

Continuous Integration (CI)

Ein Verfahren, bei dem Codeänderungen regelmäßig in ein gemeinsames Repository eingespielt und automatisch getestet werden.

Signup and view all the flashcards

Schnelle Ausführung von Unit-Tests

Unit-Tests sind klein, was eine schnelle und wiederholte Ausführung ermöglicht.

Signup and view all the flashcards

Unit-Tests als Dokumentation

Unit-Tests zeigen, wie eine Einheit unter verschiedenen Bedingungen funktioniert, und dienen als Code-Dokumentation.

Signup and view all the flashcards

Pytest

Framework für flexible Integrationstests mit Fixtures und Markern.

Signup and view all the flashcards

Fixtures (pytest)

Funktionen zur Vorbereitung komplexer Testumgebungen mit Testdaten und Zuständen.

Signup and view all the flashcards

Marker (pytest)

Kennzeichnungen für Testfälle, um Testuntergruppen selektiv auszuführen.

Signup and view all the flashcards

Integrationstests

Tests, die das Zusammenspiel von Softwarekomponenten prüfen.

Signup and view all the flashcards

Testreihenfolge

Sicherstellen, dass Tests in einer vorgegebenen Reihenfolge ablaufen.

Signup and view all the flashcards

Wiederverwendung im Testen

Nutzung bekannter Werkzeuge und Praktiken aus Unit-Tests für Integrationstests.

Signup and view all the flashcards

Systemtests

Überprüfung der gesamten Software auf Funktion, Leistung und Sicherheit.

Signup and view all the flashcards

Systemtest-Umgebung

Tests, die die komplette, integrierte Anwendung in einer realitätsnahen Umgebung prüfen.

Signup and view all the flashcards

Study Notes

Systematisches Testen

  • Tests sind heutzutage in jede Phase des Entwicklungsprozesses integriert, von der Anforderungsanalyse bis zur Wartung.
  • Kontinuierliche Tests helfen, Fehler frühzeitig zu erkennen und zu beheben, was die Qualität verbessert und die Entwicklungszeit verkürzt.
  • Es existiert eine Vielzahl unterschiedlicher Testverfahren.
  • Ziel qualitativ hochwertiger Software ist die systematische Bewertung und Verbesserung der Produktqualität durch analytische Qualitätsmaßnahmen.
  • In traditionellen Entwicklungsmodellen fand die Testphase typischerweise am Ende des Prozesses statt.
  • Die sequenzielle Herangehensweise umfasste strikt getrennte Phasen für Konzeption, Gestaltung, Implementierung und Verifizierung.
  • Erst nach Abschluss aller Entwicklungsschritte erfolgte die Bewertung der Qualität und Funktionalität des fertigen Produkts.
  • Heutzutage sind Tests ein integraler Bestandteil aller Phasen des Entwicklungszyklus.
  • Die kontinuierliche Integration von Testverfahren ermöglicht es, Fehler und Probleme frühzeitig zu erkennen und zu beheben.
  • Die frühe Fehlererkennung verbessert die Softwarequalität erheblich und verkürzt die Entwicklungszeit.
  • Moderne, agile und iterative Entwicklungsansätze integrieren kontinuierliche Rückmeldung und Anpassung.
  • Die Einbettung des Testens in jede Phase steigert die Qualität der Endprodukte und fördert die Zusammenarbeit zwischen Entwicklern und Testern, was zu einer effizienteren Entwicklung führt.

Wichtige Testarten

  • Der Artikel gibt eine Einteilung von was alles getestet werden kann bei einem Softwaretest.

Funktionale Tests

  • Funktionale Tests sind das Rückgrat der Teststrategien in der Softwareentwicklung und stellen sicher, dass Softwarefunktionen die spezifizierten Anforderungen erfüllen.
  • Bestandteil sind die Überprüfung von Benutzeroberflächen, APIs, Datenbanken, Sicherheitsfunktionen und Funktionalität unter verschiedenen Betriebsbedingungen.
  • Funktionale Tests werden typischerweise ohne Kenntnis des internen Codes oder der Struktur durchgeführt, was Black-Box-Tests genutzt
  • Der Tester konzentriert sich ausschließlich darauf, ob erwartete Ergebnisse geliefert werden, ohne die interne Struktur zu kennen.

Nicht-funktionale Tests

  • Nicht-funktionale Tests konzentrieren sich auf Aspekte wie Effizienz und Benutzerfreundlichkeit.
  • Leistungstests bewerten die Systemleistungs unter Lastbedingungen.
  • Volumentests überprüfen die Handhabung großer Datenmengen.
  • Stresstests testen die Systemstabilität unter Extrembedingungen.
  • Security-Tests prüfen die Widerstandsfähigkeit gegen unerlaubte Zugriffe.
  • Usability-Tests beschäftigen sich mit der Benutzererfahrung.
  • Wesentlich ist zu gewährleisten, dass die Software nicht nur korrekte Ergebnisse liefert, sondern auch zuverlässig, sicher und benutzerfreundlich ist.

Strukturbezogene Tests oder White-Box-Tests

  • White-Box-Tests bieten einen tiefen Einblick in den Aufbau der Software.
  • Im Gegensatz zu Black-Box-Tests setzen White-Box-Tests Wissen über die interne Logik voraus.
  • Entwickler verwenden diese Tests, um spezifische Teile des Codes zu überprüfen, wobei der Schwerpunkt auf der Codeabdeckung liegt.
  • Diese Tests sind besonders nützlich, um sicherzustellen, dass alle möglichen Wege durch den Code korrekt funktionieren.

Änderungsbezogene Tests

  • Auch bekannt als Regressionstests, sind von Bedeutung wenn Software aktualisiert oder geändert wird.
  • Hauptziel sicherzustellen, dass neue Codeänderungen keine unbeabsichtigten Nebeneffekte in bereits geprüften Teilen des Systems verursachen.
  • Sollen die beständige Funktionalität der Software über die Zeit hinweg sicherstellen.
  • Aufgrund der wiederholten Natur bietet sich Automatisierung an, was eine kontinuierliche Qualitätssicherung während der Entwicklung und Wartung gewährleistet.
  • Testautomatisierung hilft kosten zu senken und beschleunigt die Release-Zyklen.

Testmethoden

  • Es gibt zwei grundsätzliche Zugänge: statische Tests und dynamische Tests.

Statische Tests

  • Formen der Analyse, die ohne Ausführung des Codes stattfinden.
  • Konzentrieren sich darauf, den Quellcode, seine Struktur und die begleitende Dokumentation zu untersuchen, um potenzielle Fehlerquellen zu identifizieren.
  • Können manuell oder automatisiert erfolgen und stellen oft einen ersten Schritt in der Qualitätssicherung dar.

Dynamische Tests

  • Betreffen das aktive Ausführen des Programms in einer Laufzeitumgebung.
  • Ziel ist es, das tatsächliche Verhalten der Software unter verschiedenen Bedingungen zu beobachten und zu analysieren.
  • Unverzichtbar, um zu überprüfen, ob die Software in der realen Anwendung funktioniert.
  • Statische und dynamische Softwaretests bilden zusammen ein Rahmenwerk für analytische Qualitätsmaßnahmen.
  • Sie erlauben Entwicklerteams, Schwachstellen frühzeitig zu erkennen und korrigierende Maßnahmen zu ergreifen.

Statische Softwaretests

  • Eine Form statischer Softwaretests war vorher schon bekannt durch die diskutierten Softwaremetriken.
  • Zu den statischen Softwaretests können Reviews und Inspektionen gezählt werden.

Reviews und Inspektionen

  • Reviews (Stellungnahmen) sind systematische Untersuchungen von Software-Dokumenten.
  • Ziel ist, Fehler zu finden, Verständlichkeit zu gewährleisten und die Einhaltung der festgelegten Standards zu überprüfen.
  • Bei einem Review wird das Dokument in der Regel von Kollegen gelesen, die dann Feedback, Kommentare und Bedenken äußern.
  • Inspektionen sind formalere Überprüfungsverfahren, die strengen Richtlinien folgen und oft Teil eines Qualitätskontrollprozesses sind.
  • Während einer Inspektion überprüft ein Team die Software-Dokumente.
  • Alle drei Methoden tragen dazu bei, die Softwarequalität zu verbessern, indem sie eine frühzeitige Fehlererkennung ermöglichen und die Einhaltung von Projektstandards sicherstellen.
  • Sie ergänzen dynamische Testmethoden, indem sie mögliche Probleme identifizieren, bevor Zeit und Ressourcen für weitergehende Tests aufgewendet werden.

Dynamische Softwaretests

  • Dynamische Softwaretests beinhalten das Ausführen des Programms oder Codes in einer Laufzeitumgebung.
  • Man will dabei Fehler, Schwachstellen oder Abweichungen von den Anforderungen zu identifizieren.
  • Sie ermöglichen es, das tatsächliche Verhalten der Software unter verschiedenen Bedingungen zu beobachten und zu analysieren.
  • Bieten Einblicke in Leistung, Stabilität und Zuverlässigkeit, helfen nicht nur Code-Fehler, sondern auch Probleme mit der Softwareintegration, Benutzerinteraktion und im Systembetrieb zu entdecken und zu beheben.

Testfälle

  • Ein Testfall ist ein dokumentiertes Set von Bedingungen und Schritten.
  • Sie werden ausgeführt, um zu testen, ob eine Softwarefunktion richtig arbeitet oder ein bestimmtes Nutzerverhalten adäquat unterstützt wird, um systematisch Fehler und Probleme in der Software zu finden, bevor diese den Endbenutzer erreicht.
  • Die Anzahl der benötigten Testfälle variiert und hängt vom Umfang und der Komplexität der Anwendung, Risiken, Arten der Tests und dem Detailgrad der Testabdeckung ab.
  • Grundsätzlich sollten ausreichend Testfälle existieren, um alle Anforderungen abzudecken und alle Teile des Systems ausreichend zu prüfen.
  • Es ist in der Praxis jedoch fast unmöglich, eine Software komplett austesten, das heißt, alle möglichen Zustände und Interaktionen innerhalb einer Anwendung zu überprüfen.
  • Die Komplexität moderner Software, die kombinatorische Explosion, zeitliche Ressourcen und dynamische Umgebungen sprechen dagegen.
  • In der Softwareentwicklung strebt man eine risikobasierte Annäherung an, indem man sich auf die wichtigsten Anwendungsfälle konzentriert und die Bereiche mit dem höchsten Risiko priorisiert.
  • Der Anteil der Testabdeckung, der als ausreichend angesehen wird, hängt von der Anwendung ab.
  • Kombination aus manuellen und automatisierten Tests sichern eine breite und effiziente Testabdeckung zu gewährleisten
  • Testfälle werden meist von Testerinnen entwickelt, die sich die Anwendungsfälle und Anforderungsdokumente genau ansehen.
  • Die Dokumentation von Testfällen erfolgt oft in Testmanagement-Tools oder einfach mittels Tabellenkalkulationsprogrammen, die eine strukturierte Darstellung ermöglichen.
  • Testfall-ID, eine Beschreibung, Testumgebung, Testdaten, Schritte, erwartetes Ergebnis, tatsächliches Ergebnis, Schlussfolgerung/Status sowie Bemerkungen sollten dokumentiert werden.

White-Box-Tests

  • Schwerpunkt auf der Analyse und Überprüfung aller möglichen Pfade durch die interne Struktur des Testobjekts.
  • Die Untersuchung konzentriert sich auf die interne Logik und Aufbau der Softwarekomponente und basiert auf Kenntnis der Programmlogik und des Quelltexts.
  • Ziel der Testmethode die Zuverlässigkeit von Schleifen, Verzweigungen und anderen Strukturelementen des Programms zu überprüfen, indem man den Grad der Codeabdeckung misst.
  • Point of Control (PoC) und Point of Observation (PoO) befinden direkt im Testobjekt.
  • White Box ist der Zugang zum Quellcode um sicherzustellen, das jede Zeile des Codes im Rahmen der Tests mindestens einmal ausgeführt wird.

Black-Box-Tests

  • Konzentriert man sich auf das Ergebnis der Testdurchführung.
  • Die internen Mechanismen des untersuchten Systems werden nicht berücksichtigt.
  • Ein Test gilt als erfolgreich, wenn das Ergebnis den Erwartungen entspricht, unabhängig von der internen Logik der getesteten Einheit.
  • Black-Box-Tests werden bei extern bezogenen Komponenten oder Klassen angewandt, da der Quellcode oft nicht zugänglich ist.
  • Um die Anzahl von Testfällen zu bestimmen gibt es zwei Prinzipien, die Minimalforderung und das Effizienzprinzip.
  • Mittels der Grenzwertanalyse kann man Testfälle ableiten und verdächtige oder fehleranfällige Testfälle finden.
  • DieGrenzwertanalyse ist Teil eines breiteren Spektrums an heuristischen Methoden mit mehreren Ansätzen wie der Äquivalenzklassenbildung oder des Zustandsbasierten Testens.

Testebenen

  • Testebenen sind Stadien im Software-Testprozess, bei denen unterschiedliche Aspekte eines Produkts überprüft werden und helfen, den Testaufwand zu strukturieren und sicherzustellen.

Unit Tests

  • Auch als Komponententests oder Modul-Tests bezeichnet, sind eine Methode des Softwaretestens, bei der die kleinsten testbaren Teile isoliert geprüft werden und stellen die unterste Testebene dar.
  • Ziel ist, sicherzustellen, dass jede isolierte Komponente korrekt funktioniert.
  • Kernpunkte zum Unit Tests sind das AAA - Muster: Arrange, Act, Assert
  • Sowie die Isolation, Automatisierung, schnelle Ausführung, Dokumentation, frühe Fehlerkennung, Selbstvalidierung und ob der Test Rechtzeitig stattfindet
  • Zur Unterstützung gibt es verschiedene Frameworks wie beispielweise das UnitTest-Framework in Python.

Integrationstests

  • Integrationstests spielen eine wesentliche Rolle im Softwareentwicklungsprozess und führen so verschiedene Module oder Komponenten zusammen und setzen dort an, wo Unit Tests enden.
  • Der Fokus steht wo die Schnittstellen zwischen den Modulen zusammenarbeiten.
  • Konsistenzen und Kommunikationsfehler zwischen integrierten Einheiten sollen identifiziert werden, die während der Unit-Testphase möglicherweise nicht aufgefallen sind.
  • Es wird eine Testumgebung eingerichtet, wobei die notwendige Abhängigkeiten konfiguriert werden und danach spezifische Testfälle ausgeführt werden.
  • Für Integrationstest können verschiedene Tools wie unittest und pytest verwendet werden.

Systemtests

  • Systemtests werden typischerweise nach den Unit- und Integrationstests durchgeführt und ist der letzte Schritt vor den Abnahme- oder Nutzertests und überprüft, ob die Software als Ganzes funktioniert und ob sie bereit für die Veröffentlichung ist.
  • Es wird überprüft ob alle Funktionalitäten gegeben sind, die Systemleistung stimmt und die Kompatibilität stimmt.

Abnahme- und Nutzertests

  • Abnahme- und Nutzertests sind Testphasen, bei denen die fertiggestellte Software von der Zielgruppe evaluiert wird und sind dadurch entscheidend, da sie Feedback direkt von denjenigen einholen, die die Software im Alltag nutzen werden.
  • Es gibt drei geläufige Arten von Abnahmetests vor: Beta-Tests, Usability-Tests und A/B-Tests.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

More Like This

Softwarequalität
45 questions

Softwarequalität

AchievablePlateau avatar
AchievablePlateau
Softwarequalität 2
48 questions

Softwarequalität 2

AchievablePlateau avatar
AchievablePlateau
Softwarequalität 3
50 questions

Softwarequalität 3

AchievablePlateau avatar
AchievablePlateau
Softwarequalität 4
52 questions

Softwarequalität 4

AchievablePlateau avatar
AchievablePlateau
Use Quizgecko on...
Browser
Browser