Wir erklären, welchen Software Testing Mix wir für unsere Online-Plattformen einsetzen und wieso wir uns dafür entschieden haben.
In unserem letzten Blogpost haben wir die Wichtigkeit von Software Testing hervorgehoben und die unterschiedlichen Arten von Software Tests erklärt. Bei der Einordnung des richtigen Mixes von Software Testing haben wir erwähnt, dass dies von der Art des Projektes abhängt. Eine Website benötigt also einen anderen Mix als etwa eine Webapplikation oder Online-Plattform. Daher gehen wir im aktuellen Blogbeitrag genauer auf die Zusammenstellung der Tests ein, welche wir bei unserer selbst entwickelten Software einsetzen.
Wieso machen wir Software Tests?
Tests gehören heute zu guter Software dazu. Daher kann es etwas überflüssig erscheinen, dass wir hier extra darauf eingehen, wieso wir Software Tests verwenden. Es ist aber wichtig, dass die Vorteile und insbesondere unser Nutzen hervorgehoben werden.
Durch den Einsatz von Software Testing kann generell von folgenden Vorteilen profitiert werden:
- Qualitätssicherung
- Funktionsprüfung
- Verbesserung von UI & UX
- Automatisierung
Da unsere Software laufend weiterentwickelt und ergänzt wird, sind Software Tests essenziell für die Qualität unserer Applikationen. Sie bringen uns daher zusätzlichen Nutzen:
- Tests verhindern Regressionen, in Zukunft gibt es also weniger Fehler in neuem Code.
- Tests unterstützen dabei, die Skalierbarkeit von Applikation zu verbessern.
- Tests stellen sicher, dass die Applikation nach grösseren Updates immer noch funktioniert.
- Tests stellen die Qualität, Struktur und Resilienz des Codes sicher, ein zukünftiges Refactoring wird dadurch einfacher.
Was ist überhaupt ein guter Test?
Bei all den Vorteilen von Software Tests stellt sich die Frage, wie denn ein guter Test überhaupt definiert wird. Wir haben dies für uns wie folgt abgegrenzt:
Ein guter Test
- ist resistent gegenüber Refactoring. Er funktioniert immer noch, auch wenn der Code angepasst wurde. Lediglich bei einer Feature-Veränderung funktioniert der Test nicht mehr.
- läuft schnell und ist schnell zu entwickeln. Je länger die Zeit zur Entwicklung, desto kleiner ist die Chance, dass der Test überhaupt geschrieben wird, da zu wenig Mehrwert mit dem Test generiert wird, um den hohen Aufwand zu rechtfertigen.
- deckt möglichst viel Code ab (Code Coverage). Code Coverage ist die Anzahl an Codezeilen, die im Rahmen eines Testverfahrens erfolgreich validiert wurden.
- ist genau und testet relevanten Code. Falsch-positive und falsch-negative Ergebnisse sind unerwünscht und Tests, die irrelevante Teile des Codes testen, sollten vermieden werden.
Anhand dieser Merkmale und Leitlinien versuchen wir für jedes Software-Projekt die passenden Tests zu entwickeln, damit wir die Wartung und Weiterentwicklung der jeweiligen Applikationen stets gewährleisten können.
Tests bei cloudtec
Bei cloudtec setzen wir hauptsächlich drei verschiedene Testarten ein:
Behat Tests, Feature bzw. Modul Tests und Unit Tests. Behat Tests, auch UI Tests genannt, setzen wir überall ein, wo das User Interface getestet werden muss. Mit Behat Tests wird zudem auch das JavaScript getestet. Sie sind zwar langsamer als andere Tests, da sie einen Browser simulieren, die Code Coverage und Resistenz bei Refactoring sind jedoch hervorragend. Mit Behat Tests bilden wir die Workflows innerhalb einer Applikation — oder einer Plattform — ab und spielen verschiedene Szenarien mit Testdaten durch. Darüber hinaus setzen wir die Tests ein, um Berechtigungsstrukturen zu überwachen und sicherzustellen, dass Ressourcen und Inhalte nur für autorisierte Benutzer sichtbar sind.
Feature Tests setzen wir ein, um das Symfony Framework zu simulieren und entsprechend die Klassen zu testen. Hier ist wiederum die Resistenz bei Refactoring weniger gut als bei Behat Tests, jedoch sind sie schneller geschrieben und bieten den Vorteil, dass der Code besser strukturiert wird. Daher setzen wir diese Art von Tests hauptsächlich ein, um bestimmte Teile des Codes, wie etwa einen Command oder ein Mail-Template, zu testen. Ein Beispiel, wo ein Feature bzw. Modul Test eingesetzt wird: Wir haben einen Listener, der einen Historieneintrag erstellt, wenn ein konfiguriertes Element erstellt, aktualisiert etc. wird. Mit Behat überprüfen wir, ob dieser Listener aufgerufen wird, indem wir in der Benutzeroberfläche kontrollieren, ob ein neuer Eintrag vorhanden ist. Mit Feature-Tests (oder Modultests) gehen wir jede einzelne mögliche Kombination von erstellten und aktualisierten Einträgen durch und stellen sicher, dass der Subscriber sie alle korrekt verarbeitet. Dies stellt auch sicher, dass der Listener aufgerufen wird, wenn eine Entität z.B. über einen Befehl aktualisiert wird.
Die dritte Testart, die Unit Tests, setzen wir dann ein, wenn ein Code Teil in sich abgeschlossen ist, also nicht auf andere Schnittstellen oder Funktionen zugreift. Sie laufen schnell und sind einfacher zu erstellen als die anderen beiden Testarten. Damit testen wir beispielsweise die Funktionen, welche die Preise in unserem eShop-Bundle berechnen. So können wir sicherstellen, dass die Preise korrekt angezeigt werden.
Vor der Einführung einer neuen Anwendung setzen wir zudem Smoke Tests ein. Damit prüfen wir, ob Funktionen und Dienste wie gewünscht oder geplant umgesetzt sind. Sie helfen dabei, die Verfügbarkeit der ganzen Plattform abschliessend zu kontrollieren. Dafür setzen wir sogenannte Route Smoke Tests ein. Hier checkt der Test jede einzelne verfügbare Route und schaut, ob ein positiver Status Code (200) zurückgegeben wird. Ein anderer Einsatzort von Smoke Tests sind bei uns die Intranet Projekte. Unser Intranet ist modular aufgebaut. Dies bedeutet, dass pro Projekt definiert werden kann, welche Module eingesetzt werden. Unsere Smoke Tests stellen sicher, dass beim Erstellen der Intranet Projekte alle Module funktionieren, auch wenn diese deaktiviert sind.
Software Testing bei cloudtec: Das bieten wir Ihnen an
Sie erhalten von uns Online-Plattformen und Software, die zuverlässig funktionieren. Deshalb ist es umso wichtiger, dass die Qualität stimmt. Mit dem Software Testing gewährleisten wir genau das und erreichen ein hohes Qualitätslevel. Bei all unseren Projekten legen wir Wert darauf, unsere Kunden eng in die Testing-Phase zu integrieren. Niemand kennt die Anforderungen besser als sie.
Suchen Sie Lösungen für das Software Testing oder sind Sie daran interessiert, mit uns ein spannendes Projekt zu starten? Dann nehmen Sie gerne Kontakt zu uns auf. Gemeinsam finden wir die passende Lösung für Sie.