Softwaretests - Ebenen
Während des Testprozesses gibt es verschiedene Ebenen. In diesem Kapitel wird eine kurze Beschreibung dieser Ebenen gegeben.
Die Teststufen umfassen verschiedene Methoden, die beim Durchführen von Softwaretests verwendet werden können. Die Hauptstufen der Softwaretests sind -
Funktionsprüfung
Nichtfunktionale Tests
Funktionsprüfung
Dies ist eine Art Black-Box-Test, der auf den Spezifikationen der zu testenden Software basiert. Die Anwendung wird durch Bereitstellung von Eingaben getestet und anschließend werden die Ergebnisse untersucht, die der Funktionalität entsprechen müssen, für die sie vorgesehen war. Die Funktionsprüfung einer Software wird auf einem vollständigen, integrierten System durchgeführt, um die Konformität des Systems mit den festgelegten Anforderungen zu bewerten.
Beim Testen einer Anwendung auf Funktionalität sind fünf Schritte erforderlich.
Schritte | Beschreibung |
---|---|
ich | Die Bestimmung der Funktionalität, die die beabsichtigte Anwendung ausführen soll. |
II | Die Erstellung von Testdaten basierend auf den Spezifikationen der Anwendung. |
III | Die Ausgabe basiert auf den Testdaten und den Spezifikationen der Anwendung. |
IV | Das Schreiben von Testszenarien und die Ausführung von Testfällen. |
V. | Der Vergleich von tatsächlichen und erwarteten Ergebnissen basierend auf den ausgeführten Testfällen. |
Bei einer effektiven Testpraxis werden die oben genannten Schritte auf die Testrichtlinien jeder Organisation angewendet, und daher wird sichergestellt, dass die Organisation die strengsten Standards in Bezug auf die Softwarequalität einhält.
Unit Testing
Diese Art von Tests wird von Entwicklern durchgeführt, bevor das Setup an das Testteam übergeben wird, um die Testfälle formell auszuführen. Unit-Tests werden von den jeweiligen Entwicklern an den einzelnen Einheiten der zugewiesenen Quellcode-Bereiche durchgeführt. Die Entwickler verwenden Testdaten, die sich von den Testdaten des Qualitätssicherungsteams unterscheiden.
Ziel des Unit-Tests ist es, jeden Teil des Programms zu isolieren und zu zeigen, dass einzelne Teile hinsichtlich Anforderungen und Funktionalität korrekt sind.
Einschränkungen beim Unit-Test
Das Testen kann nicht jeden einzelnen Fehler in einer Anwendung abfangen. Es ist unmöglich, jeden Ausführungspfad in jeder Softwareanwendung zu bewerten. Gleiches gilt für Unit-Tests.
Die Anzahl der Szenarien und Testdaten, mit denen ein Entwickler einen Quellcode überprüfen kann, ist begrenzt. Nachdem alle Optionen ausgeschöpft sind, bleibt keine andere Wahl, als den Komponententest zu beenden und das Codesegment mit anderen Einheiten zusammenzuführen.
Integrationstests
Integrationstests sind definiert als das Testen kombinierter Teile einer Anwendung, um festzustellen, ob sie ordnungsgemäß funktionieren. Integrationstests können auf zwei Arten durchgeführt werden: Bottom-up-Integrationstests und Top-down-Integrationstests.
Sr.Nr. | Integrationstestmethode |
---|---|
1 | Bottom-up integration Dieser Test beginnt mit dem Testen von Einheiten, gefolgt von Tests von zunehmend höheren Kombinationen von Einheiten, die als Module oder Builds bezeichnet werden. |
2 | Top-down integration Bei diesem Test werden zuerst die Module der höchsten Ebene und danach schrittweise die Module der unteren Ebene getestet. |
In einer umfassenden Softwareentwicklungsumgebung werden Bottom-Up-Tests normalerweise zuerst durchgeführt, gefolgt von Top-Down-Tests. Der Prozess endet mit mehreren Tests der gesamten Anwendung, vorzugsweise in Szenarien, die tatsächliche Situationen nachahmen sollen.
Systemtests
Systemtests testen das gesamte System. Sobald alle Komponenten integriert sind, wird die gesamte Anwendung streng getestet, um sicherzustellen, dass sie den angegebenen Qualitätsstandards entspricht. Diese Art der Prüfung wird von einem spezialisierten Prüfteam durchgeführt.
Systemtests sind aus folgenden Gründen wichtig:
Systemtests sind der erste Schritt im Software Development Life Cycle, in dem die Anwendung als Ganzes getestet wird.
Die Anwendung wird gründlich getestet, um sicherzustellen, dass sie den funktionalen und technischen Spezifikationen entspricht.
Die Anwendung wird in einer Umgebung getestet, die sich sehr nahe an der Produktionsumgebung befindet, in der die Anwendung bereitgestellt wird.
Durch Systemtests können wir sowohl die Geschäftsanforderungen als auch die Anwendungsarchitektur testen, verifizieren und validieren.
Regressionstests
Wenn eine Änderung an einer Softwareanwendung vorgenommen wird, ist es durchaus möglich, dass andere Bereiche innerhalb der Anwendung von dieser Änderung betroffen sind. Regressionstests werden durchgeführt, um sicherzustellen, dass ein behobener Fehler nicht zu einer anderen Funktionalität oder einem Verstoß gegen Geschäftsregeln geführt hat. Mit Regressionstests soll sichergestellt werden, dass eine Änderung, z. B. eine Fehlerbehebung, nicht dazu führt, dass ein weiterer Fehler in der Anwendung aufgedeckt wird.
Regressionstests sind aus folgenden Gründen wichtig:
Minimieren Sie die Testlücken, wenn eine Anwendung mit vorgenommenen Änderungen getestet werden muss.
Testen der neuen Änderungen, um sicherzustellen, dass die vorgenommenen Änderungen keinen anderen Bereich der Anwendung betreffen.
Reduziert Risiken, wenn Regressionstests für die Anwendung durchgeführt werden.
Die Testabdeckung wird erhöht, ohne die Zeitpläne zu beeinträchtigen.
Erhöhen Sie die Geschwindigkeit, um das Produkt zu vermarkten.
Abnahmetests
Dies ist wohl die wichtigste Art der Prüfung, da sie vom Qualitätssicherungsteam durchgeführt wird, das beurteilt, ob die Anwendung den beabsichtigten Spezifikationen entspricht und die Anforderungen des Kunden erfüllt. Das QA-Team verfügt über eine Reihe vorab geschriebener Szenarien und Testfälle, die zum Testen der Anwendung verwendet werden.
Weitere Ideen werden über die Anwendung ausgetauscht, und es können weitere Tests durchgeführt werden, um die Genauigkeit und die Gründe für die Initiierung des Projekts zu beurteilen. Abnahmetests sollen nicht nur auf einfache Rechtschreibfehler, kosmetische Fehler oder Schnittstellenlücken hinweisen, sondern auch auf Fehler in der Anwendung, die zu Systemabstürzen oder schwerwiegenden Fehlern in der Anwendung führen.
Durch die Durchführung von Abnahmetests für eine Anwendung reduziert das Testteam die Leistung der Anwendung in der Produktion. Es gibt auch gesetzliche und vertragliche Anforderungen für die Annahme des Systems.
Alpha-Test
Dieser Test ist die erste Testphase und wird zwischen den Teams (Entwickler- und QS-Teams) durchgeführt. Unit-Tests, Integrationstests und Systemtests werden in Kombination als Alpha-Tests bezeichnet. In dieser Phase werden folgende Aspekte in der Anwendung getestet:
Rechtschreibfehler
Kaputte Links
Bewölkte Richtungen
Die Anwendung wird auf Computern mit der niedrigsten Spezifikation getestet, um Ladezeiten und Latenzprobleme zu testen.
Beta-test
Dieser Test wird durchgeführt, nachdem der Alpha-Test erfolgreich durchgeführt wurde. Beim Betatest testet eine Stichprobe der Zielgruppe die Anwendung. Beta-Tests werden auch als bezeichnetpre-release testing. Beta-Testversionen von Software werden idealerweise an ein breites Publikum im Web verteilt, teils um dem Programm einen "realen" Test zu geben, teils um eine Vorschau auf die nächste Version zu geben. In dieser Phase wird das Publikum Folgendes testen:
Benutzer werden die Anwendung installieren, ausführen und ihr Feedback an das Projektteam senden.
Tippfehler, verwirrender Anwendungsfluss und sogar Abstürze.
Nachdem das Projektteam das Feedback erhalten hat, kann es die Probleme beheben, bevor die Software für die tatsächlichen Benutzer freigegeben wird.
Je mehr Probleme Sie beheben, um echte Benutzerprobleme zu lösen, desto höher ist die Qualität Ihrer Anwendung.
Eine qualitativ hochwertigere Anwendung, wenn Sie sie für die breite Öffentlichkeit freigeben, erhöht die Kundenzufriedenheit.
Nichtfunktionale Tests
Dieser Abschnitt basiert auf dem Testen einer Anwendung anhand ihrer nicht funktionalen Attribute. Bei nicht funktionsfähigen Tests wird eine Software anhand der Anforderungen getestet, die nicht funktionsfähig, aber wichtig sind, wie Leistung, Sicherheit, Benutzeroberfläche usw.
Einige der wichtigen und häufig verwendeten nicht funktionalen Testtypen werden unten diskutiert.
Leistungstest
Es wird hauptsächlich verwendet, um Engpässe oder Leistungsprobleme zu identifizieren, anstatt Fehler in einer Software zu finden. Es gibt verschiedene Ursachen, die dazu beitragen, die Leistung einer Software zu verringern -
Netzwerkverzögerung
Clientseitige Verarbeitung
Verarbeitung von Datenbanktransaktionen
Lastausgleich zwischen Servern
Datenwiedergabe
Leistungstests werden in Bezug auf die folgenden Aspekte als einer der wichtigsten und obligatorischen Testtypen angesehen:
Geschwindigkeit (dh Reaktionszeit, Datenwiedergabe und Zugriff)
Capacity
Stability
Scalability
Leistungstests können entweder qualitativ oder quantitativ sein und können in verschiedene Untertypen unterteilt werden, wie z Load testing und Stress testing.
Lasttest
Es ist ein Prozess zum Testen des Verhaltens einer Software durch Anwenden einer maximalen Last in Bezug auf Software, die auf große Eingabedaten zugreift und diese bearbeitet. Dies kann sowohl unter normalen als auch unter Spitzenlastbedingungen erfolgen. Diese Art des Testens identifiziert die maximale Kapazität von Software und ihr Verhalten zu Spitzenzeiten.
In den meisten Fällen werden Lasttests mithilfe automatisierter Tools wie Load Runner, AppLoader, IBM Rational Performance Tester, Apache JMeter, Silk Performer und Visual Studio Load Test usw. durchgeführt.
Virtuelle Benutzer (VUsers) werden im automatisierten Testtool definiert und das Skript wird ausgeführt, um die Lasttests für die Software zu überprüfen. Die Anzahl der Benutzer kann je nach den Anforderungen gleichzeitig oder schrittweise erhöht oder verringert werden.
Belastbarkeitstest
Stresstests umfassen das Testen des Verhaltens einer Software unter abnormalen Bedingungen. Dies kann beispielsweise das Entfernen einiger Ressourcen oder das Anwenden einer Last über das tatsächliche Lastlimit hinaus umfassen.
Ziel von Stresstests ist es, die Software zu testen, indem die Last auf das System aufgebracht und die von der Software zur Ermittlung der Bruchstelle verwendeten Ressourcen übernommen werden. Dieser Test kann durchgeführt werden, indem verschiedene Szenarien getestet werden, wie z.
Herunterfahren oder Neustarten von Netzwerkports nach dem Zufallsprinzip
Ein- oder Ausschalten der Datenbank
Ausführen verschiedener Prozesse, die Ressourcen wie CPU, Speicher, Server usw. verbrauchen
Usability-Tests
Usability-Tests sind eine Black-Box-Technik und werden verwendet, um Fehler und Verbesserungen in der Software zu identifizieren, indem die Benutzer durch ihre Verwendung und ihren Betrieb beobachtet werden.
Laut Nielsen kann die Benutzerfreundlichkeit anhand von fünf Faktoren definiert werden: Effizienz der Nutzung, Lernfähigkeit, Gedächtnisfähigkeit, Fehler / Sicherheit und Zufriedenheit. Ihm zufolge wird die Verwendbarkeit eines Produkts gut sein und das System ist verwendbar, wenn es die oben genannten Faktoren besitzt.
Nigel Bevan und Macleod waren der Ansicht, dass Benutzerfreundlichkeit die Qualitätsanforderung ist, die als Ergebnis von Interaktionen mit einem Computersystem gemessen werden kann. Diese Anforderung kann erfüllt werden und der Endbenutzer wird zufrieden sein, wenn die beabsichtigten Ziele mit dem Einsatz geeigneter Ressourcen effektiv erreicht werden.
Molich erklärte im Jahr 2000, dass ein benutzerfreundliches System die folgenden fünf Ziele erfüllen sollte: leicht zu erlernen, leicht zu merken, effizient zu bedienen, zufriedenstellend zu bedienen und leicht zu verstehen.
Zusätzlich zu den verschiedenen Definitionen der Benutzerfreundlichkeit gibt es einige Standards und Qualitätsmodelle und -methoden, die die Benutzerfreundlichkeit in Form von Attributen und Unterattributen wie ISO-9126, ISO-9241-11, ISO-13407 und IEEE std definieren. 610.12 usw.
UI vs Usability-Tests
Beim Testen der Benutzeroberfläche wird die grafische Benutzeroberfläche der Software getestet. UI-Tests stellen sicher, dass die GUI gemäß den Anforderungen funktioniert und hinsichtlich Farbe, Ausrichtung, Größe und anderen Eigenschaften getestet wird.
Auf der anderen Seite gewährleisten Usability-Tests eine gute und benutzerfreundliche Benutzeroberfläche, die einfach zu handhaben ist. UI-Tests können als Teil von Usability-Tests betrachtet werden.
Sicherheitstests
Sicherheitstests umfassen das Testen einer Software, um etwaige Mängel und Lücken unter Sicherheits- und Schwachstellengesichtspunkten zu identifizieren. Nachfolgend sind die Hauptaspekte aufgeführt, die Sicherheitstests gewährleisten sollten:
Confidentiality
Integrity
Authentication
Availability
Authorization
Non-repudiation
Software ist sicher gegen bekannte und unbekannte Schwachstellen
Softwaredaten sind sicher
Software entspricht allen Sicherheitsbestimmungen
Eingabeprüfung und -validierung
SQL-Einfügungsangriffe
Einspritzfehler
Probleme bei der Sitzungsverwaltung
Cross-Site-Scripting-Angriffe
Puffer läuft über Schwachstellen
Directory Traversal-Angriffe
Portabilitätstests
Portabilitätstests umfassen das Testen einer Software mit dem Ziel, ihre Wiederverwendbarkeit sicherzustellen und sicherzustellen, dass sie auch von einer anderen Software verschoben werden kann. Im Folgenden sind die Strategien aufgeführt, die für Portabilitätstests verwendet werden können:
Übertragen einer installierten Software von einem Computer auf einen anderen.
Erstellen einer ausführbaren Datei (.exe), um die Software auf verschiedenen Plattformen auszuführen.
Portabilitätstests können als einer der Unterteile des Systemtests betrachtet werden, da dieser Testtyp das Gesamttest einer Software hinsichtlich ihrer Verwendung in verschiedenen Umgebungen umfasst. Computerhardware, Betriebssysteme und Browser stehen im Mittelpunkt der Portabilitätstests. Einige der Voraussetzungen für Portabilitätstests sind folgende:
Software sollte unter Berücksichtigung der Portabilitätsanforderungen entworfen und codiert werden.
An den zugehörigen Komponenten wurden Unit-Tests durchgeführt.
Integrationstests wurden durchgeführt.
Testumgebung wurde eingerichtet.