Fünf Wege zur Optimierung des Budgets für Funktionstests
09. Dez. 2020
In der Welt der Software-, Anwendungs- und Webentwicklung sind Funktionstests von entscheidender Bedeutung. Sie stellen sicher, dass Ihr Produkt wie entworfen und ohne unerwartete Ergebnisse, Fehler oder andere Bugs funktioniert, die Sie Umsatz, Kunden und den Ruf Ihrer Marke kosten können.
Funktionstests können viele Formen annehmen, je nach Ihren Zielen, den Bedürfnissen Ihrer Kunden und dem Design Ihres Produkts. Wenn Sie jedoch Tester einstellen müssen, die jeden Tastenklick, jede Dropdown-Liste und jede Texteingabe in Ihrem Quellprodukt durchgehen, kann das viel Zeit und Geld kosten - und das wird noch erschwert, wenn Sie auch alle lokalisierten Builds testen müssen.
Hier sind einige Tipps, um das Maximum aus Ihrem Testbudget zu erhalten und dabei gründliche Tests durchzuführen und ein hochwertiges globales Produkt herzustellen.
1. Beginnen Sie an der Quelle
Der oft gehörte Ausdruck "Qualität beginnt an der Quelle" bedeutet, dass Sie bei der Softwareentwicklung und -lokalisierung proaktiv vorgehen. Es geht darum, Code zu schreiben, der die Funktionalität klar von der Benutzeroberfläche (UI) trennt, so dass der Text leicht für die Übersetzung extrahiert werden kann. So können Sie die Best-Practices der Internationalisierung umsetzen und machen Ihr Produkt durch flexible Unterstützung kultureller und sprachlicher Unterschiede wie Zeichensätze, Währungen sowie Datums- und Zeitformate durchgehend lokalisierungsfähig. Dazu gehört auch, über mögliche Lokalisierungsprobleme nachzudenken, wie z.B. das Abschneiden oder Überschneiden von lokalisierten UI-Inhalten. Sie können dann Anforderungen und Einschränkungen zu definieren, um diese Probleme zu verhindern. Wenn ein Linguist, der die Software-Strings übersetzt, zu Beginn klare Anweisungen bezüglich der maximalen String-Längen erhält, kann er im Vorfeld effektiv korrekte Übersetzungen liefern, anstatt später beim Testen problematische Strings nachzubearbeiten. Dieser Ansatz braucht am Anfang sicherlich mehr Zeit – Das richtige Tun braucht oft mehr Zeit. Aber der Aufwand wird sich im weiteren Verlauf auszahlen, da sich der Testumfang für die Builds mit der Anzahl der Sprachen vervielfacht.2. Testen Sie jedes Element, aber nicht alles
Mit all den verschiedenen Kombinationen von Betriebssystemen, Geräten, Browsern und Sprachen, die Ihre Software unterstützt, würden Sie jeden Build wochenlang testen. Die Antwort? Paarweises Testen. Nehmen Sie eine Bestandsaufnahme aller möglichen Technologie- und Sprachkombinationen vor, die Ihr Produkt unterstützt oder auf denen es läuft, aber Sie erstellen eine Matrix von Testumgebungen, so dass jedes Element nur einmal getestet wird, und nicht in jeder einzelnen Kombination. Wir werden dieses Konzept in einem zukünftigen Blog-Beitrag näher erläutern, aber der Punkt ist, dass das paarweise Testen den Umfang der erforderlichen Tests erheblich reduzieren kann, während gleichzeitig sichergestellt wird, dass jede Produktvariante getestet wird.3. Automatisieren Sie, was immer Sie können
Viele Komponenten des Testens, oder vielleicht ganze Testfälle, können automatisiert werden, um die Arbeit zu beschleunigen, die Testzeit zu verkürzen und es den Testern zu ermöglichen, sich auf komplexere Aufgaben zu konzentrieren. Es gibt derzeit viele Automatisierungstools auf dem Markt, wie z.B. Ranorex, Silktest und Selenium, die URLs crawlen, Formulare ausfüllen und Screenshots erstellen können. Ihr eigenes Softwareentwicklungsteam kann möglicherweise Skripte und ausführbare Dateien schreiben, um automatisch durch die Anwendung zu laufen und bestimmte Aufgaben auszuführen, da es über die Vor- und Nachteile des Produkts am besten Bescheid weiß. Selbst wenn Ihre Software nur schwer oder gar nicht zu automatisieren ist, können Sie durch Automatisierung Zeit sparen. Beispielsweise können Sie Automatisierungstechniken einsetzen, um nächtliche Builds Ihrer Software zu erstellen. Sie können komplexe Testumgebungen vorbereiten - saubere Betriebssysteme einsetzen, Ihre Software installieren und den Arbeitsbereich konfigurieren - so dass die Tester weder Zeit noch Geld dafür aufwenden müssen. Sie haben dann alles bereit und können sofort beginnen, wenn ihr PC hochfährt. Natürlich bringt die anfängliche Investition in die Skripterstellung bei größeren Sprachumfängen mehr Vorteile (je mehr Tests Sie durchführen, desto größer sind die Einsparungen), aber selbst, wenn dadurch nur die Testzeit in der Ausgangssprache halbiert wird, ist das bereits ein großer Gewinn.4. Konzentrieren sich auf die Funktionen
Softwareentwicklung folgt heutzutage oft einer agilen Entwicklungsmethodik. Bei dieser Praxis geht es darum, Software-Updates und -Releases in kleinen, kurzen Zyklen zu entwickeln und sich dabei auf die wichtigsten Funktionen zu konzentrieren, um Fehlerbehebungen und neue Funktionen schneller auf den Markt zu bringen. Daher sollten Ihre Tests einem ähnlichen Prozess folgen. Vielleicht haben Sie nicht in jedem einzelnen Zyklus genug Zeit, um alles zu testen, aber planen Sie entsprechende Tests in regelmäßigen Abständen ein - vielleicht vor jedem größeren Release. Nutzen Sie dabei Testfälle, die sich auf die von Ihren Kunden geforderten Funktionen konzentrieren. Wenn Sie sich auch über potenzielle Fehler in älteren Funktionen Sorgen machen, verwenden Sie einige der ausgelassenen Automatisierungsskripte, um diese Fehler zu finden, damit Sie sie beheben können.5. Werden Sie virtuell
Im Umfeld sich ständig verbessernder Internetverfügbarkeit und -geschwindigkeit, Cloud-basierten Anwendungen, Servern und Speichern ermöglicht das virtuelle Testen, dass die ganze Welt Ihr Tester sein kann. Einige Technologien die dies unterstützen:- Emulatoren: Software, die einen Computer oder ein mobiles Gerät imitiert. Sie können zum Beispiel einen Android-Emulator auf einem Apple-Handy installieren.
- Virtuelle Maschinen: eine Art von Emulator, der einen Computer imitiert, z.B. eine Windows- oder Linux-PC-Installation, bis hin zur Einstellung von Hardware-Spezifikationen wie RAM, Grafikkarte und CD-ROM.
- Remote Zugriff oder VPNs: direkte Verbindung zu einer anderen physischen Maschine oder einem Netzwerk.