Sehen Sie, wie die Continuous Quality-Lösung von Parasoft dabei hilft, Testumgebungen zu kontrollieren und zu verwalten, um zuverlässig qualitativ hochwertige Software zu liefern. Für Demo registrieren >>

BLOG

Leitfaden zu Softwaretestmethoden: Ein Überblick auf hoher Ebene

Leitfaden zu Softwaretestmethoden: Ein Überblick auf hoher Ebene Lesezeit: 9 Minuten

Hochwertige, sichere und zuverlässige Softwaresysteme werden geliefert, weil Entwickler, Ingenieure und Programmierer strenge Softwaretests als Teil einer Markteinführungsstrategie durchführen.

Automatisieren Sie die Testgenerierung, um die Qualität und Sicherheit Ihrer Software zu verbessern.

Mehr erfahren

Die Vorteile des Testens sind einfach. Beseitigen Sie Fehler, vermeiden Sie Fehler, reduzieren Sie die Entwicklungskosten, verbessern Sie die Leistung und verhindern Sie Rechtsstreitigkeiten. Als Entwickler von Softwaretests sind wir grundsätzlich der Meinung, dass diese in alle Phasen des Softwareentwicklungsprozesses integriert werden sollten.

In der Vergangenheit haben nur wenige Softwareingenieure, Entwickler oder Ingenieure für Qualitätssicherung den Software-Testprozess ganzheitlich betrachtet. Traditionell wurden Softwaretests vom Rest der Entwicklung getrennt und gegen Ende des Entwicklungszyklus von Qualitätssicherungsingenieuren durchgeführt.

Wenn Fehler gefunden würden, wären die Korrekturen höchstwahrscheinlich kostspielig und die Veröffentlichungstermine würden hinausgeschoben – was die Glaubwürdigkeit des Unternehmens und das Vertrauen der Interessengruppen zunichte machen würde. Die Folge waren erhöhte Kosten und schrumpfende Gewinne.

In dieser allgemeinen Übersicht über das Testen setzen wir alle Teile des Puzzles zum Softwaretesten zusammen. Wir behandeln:

Was ist Testen?

Testen kann als Prozess der Analyse eines Softwareelements definiert werden, um die Unterschiede zwischen vorhandenen und erforderlichen Bedingungen zu erkennen und die Merkmale des Softwareelements zu bewerten. In diesem Prozess haben wir validieren und verifizieren dass ein Softwareprodukt oder eine Anwendung das tut, was es tun soll. Das System oder seine Komponenten werden getestet, um sicherzustellen, dass die Software alle festgelegten Anforderungen erfüllt.

Durch die Ausführung der Systeme können wir etwaige Lücken, Fehler oder fehlende Anforderungen im Vergleich zu den tatsächlichen Anforderungen identifizieren. Niemand möchte Probleme mit Fehlerbehebungen, verspäteten Lieferungen, Defekten oder schwerwiegenden Fehlfunktionen haben, die zu Schäden oder zum Tod führen.

5 Imperative für die zuverlässige Bereitstellung von Software

Sehen Sie sich das On-Demand-Webinar an

Wer führt Tests durch?

Die Personen, die Tests durchführen und Testprozesse entwickeln, sind von Organisation zu Organisation sehr unterschiedlich. Unternehmen haben unterschiedliche Bezeichnungen für Personen, die die Software aufgrund ihrer Erfahrung und ihres Wissens testen, es kommt also auf den Prozess und die damit verbundenen Stakeholder eines Projekts an. Titel wie Software Quality Assurance Engineer und Software Developer sind üblich. Dies sind einige allgemeine Titel und ihre Funktionen zum Testen.

QA-Ingenieur/Softwaretester sind für das Ausspülen von Mängeln zuständig. Viele sind Experten für Software- und Systemanalyse, Risikominderung und softwarebezogene Problemprävention. Sie haben möglicherweise nur begrenzte Kenntnisse über das System, studieren jedoch die Anforderungsdokumentation und führen manuelle und automatisierte Tests durch. Sie Testfälle erstellen und ausführen und Fehler melden. Nachdem die Entwicklung die Fehler behoben hat, testen sie erneut.

Verbessern Sie die Qualität und Sicherheit der eingebetteten Software mit automatisierter Testgenerierung.

Mehr erfahren

Softwareentwickler kann das gesamte System kennen – von Anfang bis Ende. Sie sind am Design, der Entwicklung und dem Testen von Systemen beteiligt, sodass sie alle Richtlinien und Anforderungen kennen. Darüber hinaus sind sie hochqualifiziert in der Softwareentwicklung, einschließlich Testautomatisierung.

Projektleitung/Manager sind für das gesamte Projekt verantwortlich – Produktqualität, Lieferzeit und erfolgreicher Abschluss des Entwicklungszyklus. Wenn Produktprobleme auftreten, ist es der Produktmanager, der die Zeitrahmen für die Lösung der Probleme priorisiert.

Endverbraucher sind die Stakeholder oder Kunden. Betatests sind eine Vorabversion der Software, die dazu beiträgt, eine hohe Qualität und Kundenzufriedenheit sicherzustellen. Wer kann am besten feststellen, ob das gelieferte Produkt auf dem richtigen Weg ist, um seine Annahme zu erfüllen?

Systemingenieure Design und Architektur des Systems aus gesammelten Anforderungen und Konzepten. Aufgrund des Wissensschatzes, den sie auf dem System besitzen, definieren sie Testfälle auf Systemebene, die später vom QA-Team und/oder Softwareentwicklern umgesetzt werden. Die Überprüfung der Anforderungen an Testfälle wird ebenfalls durchgeführt. In hochkomplexen Systemen, in denen Modellierung verwendet wird, werden häufig Tests durch Modellausführung des logischen und/oder physikalischen Systemdesigns von Systemingenieuren durchgeführt.

Wann mit dem Testen beginnen?

Ein früher Beginn des Testens ist am besten, da er die Kosten sowie die Zeit reduziert, die für die Nachbearbeitung und die Erstellung eines sauberen architektonischen Designs und einer fehlerfreien Software erforderlich ist. Jede Phase des Softwareentwicklungslebenszyklus (SDLC) bietet sich als Gelegenheit zum Testen an, was in unterschiedlichen Formen durchgeführt wird.

Beispielsweise kann im SDLC eine Form des Testens während der Phase der Anforderungserfassung beginnen. Anforderungen müssen klar verstanden werden. Zurück zu den Stakeholdern zu gehen, um die Anforderungen zu klären und auszuhandeln, ist eine Form des Testens der Interpretation der Stakeholder-Anforderungen, um sicherzustellen, dass das richtige System aufgebaut wird. Dies ist ein wesentlicher Bestandteil des Produkt- und Projektmanagements. Testfälle für Abnahmetests müssen ebenfalls definiert werden.

Es ist wichtig zu verstehen, dass Testfälle, die während der Systementwicklungsphase definiert werden, textbasierte Testfälle sind, die erklären, was und wie das System getestet werden sollte. Diese Testfälle werden später von der Entwicklung und/oder dem QA-Team realisiert, aufgebaut aus dem textbasierten Testfall der Systemingenieure sowie der verknüpften Anforderung. Die Validierung bzw. Ausführung der realisierten Testfälle führt zu den Pass/Fail-Ergebnissen, die den Nachweis der ordnungsgemäßen Funktionalität erbringen und auch für andere verwendet werden können Compliance-Anforderungen.

Die Phase der Anforderungszerlegung und des architektonischen Entwurfs detailliert das System auf einer anderen Abstraktionsebene weiter. Schnittstellen werden definiert, und wenn die Modellierung mit SysML, UML oder einer anderen Sprache durchgeführt wird, ist das Testen der Architektur durch Simulation, um Designfehler zu beseitigen, eine weitere wichtige Aufgabe.

Während dieses Prozesses werden zusätzliche Anforderungen definiert, einschließlich der Testfälle, die jede von ihnen verifizieren und validieren. Eine zusätzliche Zerlegung findet statt, um das detaillierte Design zu erzeugen.

Letztendlich werden Anforderungen auf Systemebene zu Testfällen auf Systemebene, Architekturanforderungen zu Testfällen für Integrationstests und die Detaildesignanforderungen oder Low-Level-Anforderungen zu Unit-Testfällen verfolgt. Die Überprüfung der Anforderungen kann beginnen, um sicherzustellen, dass jede Anforderung auf einen Testfall zurückgeführt werden kann. EIN Anforderungsrückverfolgbarkeitsmatrix generieren ? ist perfekt, um Rückverfolgbarkeitslücken zu finden.

Wenn die Übergabe vom System- an den Softwareentwickler stattfindet, beginnen die Entwickler mit der Implementierung basierend auf den Anforderungen. Hier wenden Softwareentwickler Codierungsstandards an oder sollten sie anwenden, um die Codequalität sicherzustellen. Statische Code-Analyse, das eine Form des Testens ist und in den frühesten Stadien der Implementierungsphase, wenn es auch am billigsten zu beheben ist, Codierungsfehler sowie Sicherheitsprobleme findet. Unit-Tests werden folgen, und jeder realisierte Unit-Testfall muss mit den Low-Level-Anforderungen oder dem Testfall, den er realisiert, zurückverknüpft werden.

Während sich die Implementierung des Systems weiterentwickelt, müssen die Testfälle, die früher während des Systems-Engineering-Prozesses definiert wurden, realisiert und gegen das in der Entwicklung befindliche System ausgeführt werden. Beginnend mit Unit-Tests, gefolgt von Integrationstests, Systemtests und Akzeptanztests. Darüber hinaus müssen je nach Art der Dienstqualitätsanforderungen möglicherweise andere Testmethoden durchgeführt werden, wie z API-Tests, Leistungstests, Belastungstests, Portabilitätstests, Usability-Tests und so weiter.

Was sind Softwaretestmethoden?

Softwaretestmethoden sind die Strategien, Prozesse oder Umgebungen, die zum Testen verwendet werden. Die beiden am weitesten verbreiteten SDLC-Methoden sind Agile und Wasserfall, und das Testen ist für diese beiden Umgebungen sehr unterschiedlich.

Maximieren Sie Qualität, Compliance und Sicherheit mit der intelligenten Software-Testautomatisierung von Parasoft.

Eine Demo anfordern

Wasserfall-Modell

Beim Wasserfallmodell beispielsweise werden formale Tests in der Testphase durchgeführt, die nach Abschluss der Entwicklungsphase beginnt. Das Wasserfallmodell zum Testen eignet sich gut für kleine, weniger komplexe Projekte. Wenn Anforderungen jedoch zu Beginn nicht klar definiert sind, ist es äußerst schwierig, in abgeschlossenen Phasen zurückzugehen und Änderungen vorzunehmen.

Das Wasserfallmodell ist bei kleinen Projekten beliebt, da es weniger Prozesse und Akteure zu betreuen hat, was zu einem schnelleren Projektabschluss führen kann. Fehler werden jedoch später in der Entwicklung gefunden, was ihre Behebung teurer macht.

Agiles Modell

Das Agile-Modell unterscheidet sich vom Wasserfallmodell und eignet sich am besten für größere Entwicklungsprojekte. Agiles Testen ist ein inkrementelles Modell, bei dem das Testen am Ende jedes Inkrements oder jeder Iteration durchgeführt wird. Zusätzlich wird die gesamte Anwendung nach Abschluss des Projekts getestet. Mit dem Agile-Modell besteht ein geringeres Risiko im Entwicklungsprozess, da jedes Teammitglied versteht, was abgeschlossen oder nicht abgeschlossen wurde. Die Ergebnisse von Entwicklungsprojekten sind mit Agile normalerweise besser, wenn es einen starken, erfahrenen Projektmanager gibt, der schnelle Entscheidungen treffen kann.

Iteratives Modell

Andere SDLC-Modelle umfassen das iterative Modell und das DevOps-Modell. Beim iterativen Modell erstellen Entwickler Basisversionen der Software, überprüfen und verbessern die Anwendung in Iterationen – kleinen Schritten. Dies ist ein guter Ansatz für extrem große Anwendungen, die schnell abgeschlossen werden müssen. Defekte können früher erkannt werden, was bedeutet, dass sie weniger kostspielig zu beheben sind.

DevOps-Ansatz und kontinuierliches Testen

Bei Einnahme eines DevOps-Ansatz zum Testen, oder kontinuierliches Testen, gibt es eine Zusammenarbeit mit Betriebsteams während des gesamten Produktlebenszyklus. Durch diese Zusammenarbeit warten Entwicklungs- und Betriebsteams nicht, bis die Software erstellt oder kurz vor der Fertigstellung steht, um Tests durchzuführen. Das bedeutet, dass der Softwarebereitstellungsprozess schneller ist, Fehler früher erkannt werden und kostengünstiger zu beheben sind.

Kontinuierliches Testen verwendet automatisierte Test- und Automatisierungstools als Komponenten der Softwareentwicklungspipeline, um sofortiges Feedback zu möglicherweise bestehenden Geschäftsrisiken zu liefern.

V Modellvalidierung

Welche Arten von Softwaretests gibt es?

Zu den häufigsten Arten von Softwaretests gehören:

  • Statische Analyse
  • Unit-Test
  • Integrationstests
  • Systemtests
  • Abnahmetests

Statische Analyse

Die statische Analyse beinhaltet keine dynamische Ausführung der zu testenden Software und kann mögliche Fehler in einem frühen Stadium erkennen, bevor das Programm ausgeführt wird. Die statische Analyse wird während oder nach der Codierung und vor der Ausführung von Komponententests durchgeführt. Es kann von einer Codeanalyse-Engine ausgeführt werden, um den Quellcode automatisch zu „durchgehen“ und nicht konforme Regeln oder lexikalische, syntaktische und sogar einige semantische Fehler zu erkennen.

Statische Codeanalysetools bewerten, kompilieren und prüfen auf Schwachstellen und Sicherheitslücken, um den zu testenden Code zu analysieren. Die statischen Analysetools von Parasoft helfen Benutzern bei der Verwaltung der Testergebnisse, einschließlich der Priorisierung von Ergebnissen, der Unterdrückung unerwünschter Ergebnisse und der Zuweisung von Ergebnissen an Entwickler. Diese Tools unterstützen eine umfassende Reihe von Entwicklungsökosystemen zur Integration in eine umfangreiche Liste von IDE-Produkten, für die statische Analysen durchgeführt werden können C, C ++, Java, C# und VB.NET.

Erfahren Sie, wie Sie ein modernes statisches Analysetool auswählen.

Holen Sie sich das Whitepaper

Unit Tests

Das Ziel von Unit-Tests ist es, jeden Teil des Programms zu isolieren und zu zeigen, dass einzelne Teile in Bezug auf Anforderungen und Funktionalität korrekt sind.

Diese Art von Tests wird von Entwicklern durchgeführt, bevor das Setup an das Testteam übergeben wird, um die Testfälle formal auszuführen. Unit-Tests werden von den jeweiligen Entwicklern auf den einzelnen Units des Quellcodes zugeordneten Bereichen durchgeführt. Die Entwickler verwenden Testdaten, die sich von den Testdaten des Qualitätssicherungsteams unterscheiden.

Die Verwendung von Parasoft zur Durchführung von Branch-, Statement- und MC/DC-Coverage ist eine Form von Unit-Tests. Die Software wird auf jede Funktion isoliert und diese Einzelteile werden untersucht. Die Einschränkung des Komponententests besteht darin, dass er nicht jeden Fehler in der Anwendung abfangen kann, da er keinen Thread oder Ausführungspfad in der Anwendung auswertet.

Automatisieren Sie für schnelleres und einfacheres Testen.

Mehr erfahren

Integrationstests

Integrationstests sind definiert als das Testen von kombinierten Teilen einer Anwendung, um festzustellen, ob sie korrekt funktionieren. Integrationstests können auf zwei Arten durchgeführt werden:

  1. Bottom-up-Integrationstests. Das Testen beginnt mit Unit-Tests, gefolgt von Tests von immer höheren Kombinationen von Units, die als Module oder Builds bezeichnet werden.
  2. Top-Down-Integrationstests. Bei diesem Testen werden zuerst die Module der höchsten Ebene getestet, und danach werden nach und nach die Module der niedrigeren Ebene getestet.

Systemtest

Systemtests testen das System als Ganzes, wenn es als Blackbox betrachtet wird und es nicht erforderlich ist, das Innenleben des zu testenden Systems zu verstehen. Sobald alle Komponenten integriert sind, werden Systemtests durchgeführt, die Anwendung als Ganzes wird rigoros getestet, um sicherzustellen, dass sie die Anforderungen erfüllt. Diese Art von Tests wird vom Testteam der Qualitätssicherung durchgeführt.

  • Beim Systemtest wurde das System oder die Anwendung vollständig implementiert und als Ganzes getestet.
  • Die Anwendung wird gründlich getestet, um sicherzustellen, dass sie die funktionalen Anforderungen, die Dienstqualitätsanforderungen und die Geschäftsanforderungen erfüllt.
  • Die Anwendung wird in der endgültigen Produktionsumgebung oder einer Umgebung getestet, die der Produktionsumgebung, in der die Anwendung bereitgestellt wird, sehr nahe kommt.
  • Durch Systemtests können Unternehmen ein Gefühl für die Markteinführungszeit gewinnen, wenn bestandene Ergebnisse erzielt werden.

Abnahmetests

Dies ist wohl die wichtigste Art von Tests, da sie vom Qualitätssicherungsteam durchgeführt wird, um festzustellen, ob die Anwendung die beabsichtigten Spezifikationen erfüllt und die Anforderungen des Kunden erfüllt. Das QA-Team verfügt über eine Reihe vorgefertigter Szenarien und Testfälle, die zum Testen der Anwendung verwendet werden.

Es werden weitere Ideen über die Anwendung ausgetauscht und weitere Tests können durchgeführt werden, um ihre Genauigkeit und die Gründe für die Initiierung des Projekts zu beurteilen. Abnahmetests sollen nicht nur auf einfache Rechtschreibfehler, Schönheitsfehler oder Schnittstellenlücken hinweisen, sondern auch auf Fehler in der Anwendung hinweisen, die zu Systemabstürzen oder schwerwiegenden Fehlern in der Anwendung führen.

Durch die Durchführung von Abnahmetests an einer Anwendung wird das Testteam ableiten, wie sich die Anwendung in der Produktion verhalten wird. Es gibt auch gesetzliche und vertragliche Anforderungen für die Abnahme des Systems.

Maximieren Sie Qualität, Compliance und Sicherheit mit der intelligenten Software-Testautomatisierung von Parasoft.

Eine Demo anfordern

Wann ist das Testen abgeschlossen und beendet?

Es ist schwierig zu bestimmen, wann man mit dem Testen aufhören sollte, da das Testen ein nie endender Prozess ist und niemand behaupten kann, dass Software zu 100 % getestet ist. Es sind jedoch Kriterien zu beachten, die als Anhaltspunkt für einen Teststopp dienen können.

  1. Managemententscheidung. Der vielleicht einfachste und häufigste Weg, um zu wissen, ob das Testen angehalten wurde, ist, wenn das Management beschließt, den Testprozess zu stoppen. Die Entscheidung des Managements kann auf Zeit- oder Budgetbeschränkungen beruhen, die die Qualität beeinträchtigen können. Die Entscheidung kann einfach darin bestehen, dass das Projekt den Umfang der erforderlichen Tests erreicht hat – was bedeutet, dass die Testfristen erreicht wurden.
  2. Abschluss der Testfallausführung. Nach Abschluss der Testfälle sollte die Erfolgsquote der Testfälle bei 95 % liegen und alle kritischen Testfälle wurden bestanden. Die 5 %, die fehlschlagen, sollten Testfälle mit niedriger Priorität sein.
  3. Vervollständigung der Anforderungen und Robustheitstests. Entwickler und Tester können Daten aus den Testergebnissen analysieren, um sicherzustellen, dass die Anwendung wie erwartet funktioniert und für jede definierte Anforderung ein bestandenes Ergebnis erhält. Darüber hinaus werden alle wichtigen funktionalen Abläufe erfolgreich mit verschiedenen Eingaben ausgeführt und funktionieren gut.
  4. Codeabdeckung bis zu einem vordefinierten Prozentsatz. Das Instrumentieren Ihres Codes und das Ausführen aller Ihrer Testfälle liefert nicht nur einen Prozentsatz des getesteten Codes, sondern deckt auch nicht ausgeführten Code auf, der möglicherweise versteckte Fehler enthält. Einige Organisationen können problemlos eine Codeabdeckung von 80 % und mehr erreichen, während andere Organisationen eine 100 %ige Abdeckung von Anweisungs-, Verzweigungs- und geänderten Zustandsentscheidungen benötigen.
  5. Die Fehlerrate fällt unter ein bestimmtes Niveau. Wenn Fehlerraten unter ein vorgegebenes Niveau fallen und keine Fehler mit hoher Priorität identifiziert werden, kann das Testen angehalten werden.

Wie hilft Parasoft beim Testen?

Parasoft hilft Ihnen mit automatisierten Testlösungen, die jede Phase des Entwicklungszyklus abdecken, qualitativ hochwertige Software bereitzustellen, die sicher und zuverlässig ist. Die Software-Testautomatisierungslösungen von Parasoft bieten einen einheitlichen Satz von Tools zur Beschleunigung des Testens, indem sie Teams dabei unterstützen, das Testen in die frühen Phasen der Entwicklung zu verlagern, während die Rückverfolgbarkeit, die Aufzeichnung von Testergebnissen, Details zur Codeabdeckung, die Berichterstellung und die Compliance-Dokumentation aufrechterhalten werden.

Stellen Sie Software bereit, die Modern antreibt Automobile, Flugzeug, Medizinprodukte, Eisenbahnund Industrieautomation Lösungen mit Zuversicht mithilfe von Testautomatisierungstools.

Sehen Sie Parasoft in Aktion!

Eine Demo anfordern

Geschrieben von

Richard Camacho

Ricardo ist Senior Technical Product Marketing Manager für die eingebetteten Testlösungen von Parasoft und verfügt über Erfahrung in der SDLC- und Testautomatisierung eingebetteter Echtzeit-, sicherheits- und sicherheitskritischer Anwendungen sowie in der Softwarekonformität mit Industriestandards.

Erhalten Sie die neuesten Nachrichten und Ressourcen zum Testen von Software sofort.