Softwaretests

Softwaretests

24 - 02 - 2021
10 Min

Testen deckt mögliche funktionale und technische Mängel Ihres Produkts auf. Softwaretests liefern Informationen über die Funktionalität der Software-Lösung und auch darüber, ob deren Qualität alle erwarteten Anforderungen und Spezifikationen erfüllt. Am Ende des Testprozesses steht als Ergebnis ein Bericht über alle identifizierten Probleme und ihren Schweregrad.

Wir haben Erfahrung im Testen unternehmenskritischer, hochleistungsfähiger Systeme, sowie im Testen verschiedener Weblösungen unterschiedlicher Branchen / Sektoren. Das Testen von Handelsplattformen umfasst sowohl manuelle als auch automatische Tests über den gesamten Produktlebenszyklus hinweg. Die wichtigste Rolle spielen hierbei die Stresstest-Simulation von Benutzern, Kursen und Trades, sowie Regressionstests und Integrationstests. Im Bereich der Weblösungen haben wir Erfahrung mit E2E (End-to-End)-Automatisierungstests, einschließlich browser- und plattformübergreifende Tests, Sicherheits-Penetrationstests und automatischen Regressionstests mit maßgeschneiderten Regressionstools.

Das Ausliefern qualitativ hochwertiger Produkte durch xitee wird mithilfe kontinuierlicher Testintegration (Unit-Test, E2E-Test, Integrationstest, Regressionstest) sowie der automatisierten Überprüfung der Codequalität durch SonarQube sichergestellt. Unser Team besteht aus tschechisch-, englisch- und deutschsprachigen Testern und Beratern mit weitreichender projektübergreifender Test-Erfahrung.

Darüber hinaus bietet xitee Test- und QA-Beratung sowie Testmanagement-Dienstleistungen an. Test-Beratung unterstützt beim Identifizieren von Transformations-Initiativen zur Verbesserung organisatorischer Testprozesse, unter Nutzung von Best Practices im Test. Das Testmanagement kombiniert Projekt- und Risikomanagement, ergänzt um eine Best-Practice-Testmethodik.

Funktionstest

Funktionales Testen besteht aus Tests, die bewerten, ob die Funktionen der Software-Lösung die Anforderungen erfüllen. Diese Anforderungen können z. B. im Rahmen von Lastenheften, User Stories, Use Cases oder Funktionsspezifikationen beschrieben werden. Die Funktionen der Lösung stellen dar, "was" sie tun soll.

Funktionales Testen ist ein weiter gefasster Begriff, der bestimmte Arten des Testens umfasst, wie manuelles Testen, Cross-Browser-Testen und Testen auf realen Geräten.

Manuelles Testen wird von erfahrenen Testern unter Verwendung von standardisierten Testtechniken wie Grenzwert-Analyse oder Zustandsübergang durchgeführt. Dieser Ansatz kann die korrekte Softwarefunktionalität in jeder Situation sicherstellen, auch in Randfällen, welche so möglicherweise in den Anforderungen des Kunden überhaupt nicht erwähnt werden. Der Tester gibt hierbei wertvolles Feedback bezüglich Benutzererfahrung, Benutzeroberfläche und Benutzerfreundlichkeit.

Cross-Browser-Tests überprüfen, ob die Lösung in verschiedenen Browsern wie erwartet /gewünscht funktioniert. Es ist dabei grundsätzlich von Vorteil zu wissen, welchen Browser Ihre Anwender bevorzugen. Und es ist darüber hinaus empfehlenswert, den Testprozess bereits mit Beginn der Entwicklung zu starten. Wir automatisieren diesen Prozess standardmäßig mithilfe aktuellster marktüblicher Technologien und Tools.

Testen auf realen Geräten - in manchen Fällen reicht das Testen auf Emulatoren und Simulatoren nicht aus. Performance- und Funktionstests verhalten sich auf realen Geräten anders, da es sich bei Emulatoren lediglich um ein virtuelles Gerät handelt. Die Funktionalität und Stabilität der Software auf unterschiedlichen Geräten kann nur durch einen Test auf realen Geräten mit unterschiedlicher Hard- und Software vollständig gewährleistet werden. Hier haben wir Erfahrung mit BrowserStack, ein Tastwerkzeug welches 200 reale iOS- und Android-Geräte und Hunderte von iOS- und Android-Emulatoren in verschiedenen OS-Versionen umfasst.

Testautomatisierung

Eine Testautomatisierung führt viele Testfälle konsistent und wiederholt auf verschiedenen Versionen des getesteten Systems und /oder Umgebungen aus. Sie ist ein wichtiger Bestandteil der agilen Entwicklung und hilft dabei, neue oder wiederkehrende Fehler in bereits getesteten Bereichen der Software-Lösung schnell zu identifizieren.

Eine oder mehrere der folgenden Aktivitäten können automatisiert werden: das Einrichten einer Testumgebung inkl. Vorbedingungen, das Ausführen von Testfällen, der Vergleich von tatsächlichen Ergebnisse mit vorausgesagten Ergebnissen, sowie das Reporting über den Teststatus. Jede dieser Aktivitäten bedeutet einen erheblichen Zeitaufwand, sofern sie manuell durchgeführt wird, und ist anfällig für “menschliche Fehler”, insbesondere wenn dieselben oder ähnliche Aktionen vielfach wiederholt werden.

Ein automatischer E2E (End to End) Test ist ein Prozess, bei dem ein Testszenario gegen einen echten Browser ausgeführt wird. Getestet wird hierbei das gesamte Produkt, um sicherzustellen, dass alle Teile richtig zusammenarbeiten.Ein Unit-Test wird verwendet, um sicherzustellen, dass eine Auswahl (eine “Unit” / Einheit) der Anwendung dem vorgesehenen Design und Verhalten entspricht. Ein Unit-Test erhöht das Vertrauen in das Ändern / Warten des Codes. Ein angemessener Prozentsatz des Codes (nach Vereinbarung mit dem Kunden) sollte grundsätzlich durch Unit-Tests abgedeckt werden.

Sicherheits-/Penetrationstests

Normalerweise ist zumindest ein Teil des Systems der Öffentlichkeit zugänglich, z. B. ein Webserver. Es muss sichergestellt werden, dass ausschließlich autorisierte Anwender das System bedienen dürfen und dass es die Sicherheitsvorkehrungen unbefugten Personen nicht gestatten, auf Teile der Softwarelösung zuzugreifen. Die Systemsicherheit wird bewertet, indem ein simulierter Angriff auf das Computersystem durchgeführt wird. Mit diesem Test können Schwachstellen und Auswirkungen eines möglichen Sicherheitsverstoßes identifiziert werden. Typische Bedrohungen sind die Systemfehlfunktion oder -überlastung, ausgelöst durch eine übermäßige Nutzung von im öffentlichen Netzwerk verfügbaren Komponenten (API, Webformulare, ...), den Verlust sensibler und personenbezogener Daten, oder durch unbefugten Zugriff auf die eingeschränkte Anwendungsfunktionalität. xitee verwendet die Kali Linux-Distribution mit OWASP ZAP- und OpenVAS-Sicherheitsscannern, um sicherzustellen, dass das System kein leichtes Ziel für Angreifer (Hacker) ist.

Leistungstests

Jedes System hat eine erwartete Last, die durch verschiedene Metriken angegeben wird, wie z. B. die Anzahl der gleichzeitig verbundenen Benutzer, die Anzahl der Transaktionen pro Sekunde oder die Reaktionszeiten. Die Fähigkeit, mit erwarteter, erhöhter oder Spitzenlast umzugehen, kann nur durch Leistungstests geprüft werden. Die Tests können sich auf die Ausführung von geschäftskritischen Operationen konzentrieren, bei denen jede Millisekunde zählt und deren Leistung für den Projekterfolg entscheidend ist.

Der Leistungstest zeigt das Systemverhalten und dessen Stabilität unter der erwarteten sowie auch erhöhten Last und überwacht dabei die Nutzung der Hardwareressourcen. Oft wird diese Art von Test unter Zuhilfenahme eines automatisierten Testtools durchgeführt, um eine große Anzahl von Benutzern zu simulieren. Die Durchführung eines solchen Tests in einer produktionsähnlichen Umgebung ist im Wesentlichen die Grundlage für eine weitere Leistungsoptimierung der Softwarelösung, die Evaluierung der Hardware-Einrichtung und für den Entwurf und die Implementierung eines möglichen Failover-Szenarios.

Ziele von Leistungstests:

  • Messen der Reaktionszeit und des Ressourcenverbrauchs
  • Definieren möglicher Breakpoints und der maximalen Last
  • Sammeln von Daten, um Optimierungsempfehlungen zu geben
  • Überprüfen, ob die Service-Level-Anforderungen erfüllt werden
  • Überprüfen der Systemzuverlässigkeit
  • Identifizieren von möglichen Engpässen im System

QS-Beratung & Testmanagement

Es gibt verschiedene Methoden und Werkzeuge zur Qualitätssicherung. Nicht immer sind die in einem bestimmten Softwareentwicklungsprojekt verwendeten Werkzeuge optimal eingesetzt. Die Bewertung der genutzten Prozesse und Werkzeuge kann hierbei Schwachstellen in der Softwareentwicklung aufdecken, Maßnahmen zur Risikominderung vorschlagen und die Effizienz der Qualitätssicherung steigern. Daneben erleichtert die Einrichtung geeigneter Prozesse in einem neuen Projekt die Aufrechterhaltung hoher Produktqualität und kann den Aufwand in späteren Projektphasen - i.d.R. bei Abnahmetests und der Produktivsetzung (Go Live) - verringern.

Ziele der Testberatung:

  • Bewertung der Testreife des Kunden im Vergleich zu Best Practices
  • Identifizieren empfohlener Initiativen, die zum Erreichen des gewünschten Zustands erforderlich sind
  • Eine detaillierte Roadmap zur Unterstützung der Implementierung von Transformations-Initiativen

Ein vorgeschaltetes Test-Assessment liefert einen ersten Einblick, der wiederum als Grundlage für eine zielgerichtete Beratung sowie für Transformations-Initiativen dienen kann.

Das Testmanagement kombiniert Projekt- und Risikomanagement, ergänzt um Best-Practice Testmethodik. Dies ist ein wesentlicher Erfolgsfaktor, um

  • den Testprozess zu strukturieren und abzusichern
  • die Produktivität und Effizienz von Testeinsätzen zu optimieren
  • die Produktivität und Effizienz von Testeinsätzen zu optimieren

Unser zertifiziertes Testmanagement-Team steuert den gesamten Test-Lebenszyklus. Dieser reicht von der Testplanung und Steuerung der operativen Testaktivitäten bis hin zum organisierten Testabschluss. 

Anderer Blog aus der gleichen Branche