Systematisches Testing bei CONTENS

20170112_systematisches_testing_1

Freitag, 13. Januar 2017

Die Entwicklung moderner und leistungsfähiger Software ist ein aufwändiger und komplexer Prozess. Systematisches Testing ist dabei ein wesentlicher Erfolgsbaustein. Es hilft Entwicklern, Bugs frühzeitig zu entdecken und umgehend zu beheben. Das systematische Software-Testing bei CONTENS hat sich im Laufe der Jahre immer weiter verbessert und ist inzwischen unverzichtbar geworden.

Aktuell arbeitet das Entwicklerteam von CONTENS an der neuen Version CONTENS 5, die in der ersten Jahreshälfte 2017 veröffentlicht wird. Zeitgleich wird die Version CONTENS 4 kontinuierlich weiterentwickelt. Also müssen momentan zwei Versionen regelmäßig getestet werden. Das Ziel besteht darin, mögliche Fehlfunktionen frühzeitig zu entdecken, um sie beheben zu können, bevor die Software beim Kunden zum Einsatz kommt.

Bereits während der Entwicklung versucht das Team möglichst optimalen Code zu erstellen. Dazu setzen die Entwickler zahlreiche Tools für Syntax- und Formatierungschecks ein, wie zum Beispiel tslint zur Typescript-Prüfung, CFlint zur ColdFusion-Prüfung, ESLint zur Javascript-Prüfung, JSBeautifier für Javascript-Formatierung und Webpack zur Kompilierung sowie zur Verkleinerung von Javascript-Dateien. Das Team möchte möglichst sauberen, kompakten und fehlerfreien Code entwickeln, der performant funktioniert und sich einfach warten lässt.


Die Komplexität beim Testing eines Content Management Systems wie CONTENS ergibt sich in erster Linie aus der Vielzahl der beteiligten Technologien und den unterschiedlichen Versionen, die berücksichtigt werden müssen.

Für CONTENS 4 werden die Tests beispielsweise für

  • vier Datenbanken (MSSQL, MariaDB, Postgre, Oracle), 
  • vier Browser (Firefox, Chrome, IE10, IE11), 
  • drei Applikationsserver (ColdFusion 10, ColdFusion 11, Lucee 4.5), 
  • eine Imaging Engine (cf8bridge) und 
  • eine Suchmaschine (Lucene) durchgeführt. 


Für CONTENS 5 werden sogar noch mehr Technologien getestet:

  • fünf Datenbanken (MSSQL, MariaDB, Postgre, Oracle, MySQL), 
  • vier Browser (Firefox, Chrome, IE11, Microsoft Edge), 
  • vier Applikationsserver (ColdFusion 10, ColdFusion 11, Lucee 4.5, Lucee 5), 
  • zwei Imaging Engines (ColdFusion, imagemagick) und 
  • zwei Suchmaschinen (Lucene, ElasticSearch). 


Durch regelmäßige Rotation wird sichergestellt, dass jeder Applikationsserver im Laufe einer Woche mindestens einmal mit jeder Datenbank, mit jeder Imaging Engine und mit jeder Suchmaschine getestet wird. Für CONTENS 5 gibt es für jeden Applikationsserver einen dedizierten Server, so dass pro Nacht vier Testläufe erfolgen können. Die Tests für iOS und Android Geräte sind bereits in Planung.

Aufgrund der hohen Anzahl der Technologien und der daraus resultierenden Komplexität werden diese Tests automatisiert durchgeführt. Dies geschieht in der Nacht und am Wochenende, so dass entdeckte Fehler sofort am nächsten Werktag geprüft und ggf. behoben werden können.


Für die automatische Durchführung der Testprozesse verwenden wir im Bereich Unit Testing MxUnit und im Bereich Frontend Testing Selenium 1 und Selenium 2. Als Framework wird Nightwatch.js eingesetzt. Für CONTENS 5 kommen noch Karma/Jasmine sowie JMeter hinzu. Durch die Verwendung des Selenium Grids kann das Frontend-Testing verteilt und parallel stattfinden, wodurch verschiedene Browser in unterschiedlichen Versionen auf unterschiedlicher Hardware getestet werden können.

Jede Nacht werden im Rahmen des Testings für alle Administrationsbackends die CRUD-Aktionen (create, read, update, delete) sowie Duplizieren durchgeführt. Außerdem werden alle Seitenaktionen (z.B. anlegen, kopieren, verschieben, löschen, bearbeiten) und alle Zeilentypen (z.B. Textline, Textarea, Upload,…) in allen Ausprägungen (Einfach-/Mehrfachverwendung, Ein-/Mehrsprachigkeit) automatisch getestet. Neben den Tests für Standardaktionen gibt es eine Reihe von speziellen Tests, die aufgrund von Supportanfragen entstanden sind. Auf diese Weise werden die meisten Bugs bei Standardaktionen abgefangen, sodass wir ein sehr stabiles Content Management System gewährleisten können.


Zusätzlich zum automatisierten Testing findet noch ein manuelles Testing durch sehr erfahrene Mitarbeiter statt. Behobene Bugs und neue Features werden auf Funktionalität und Fehlerfreiheit geprüft. Durch bewusst falsche Bedienung von Funktionen wird zusätzlich versucht, Fehler zu provozieren.

Gerade zum Beginn des Testingprozesses sind die Aufwände für das Aufsetzen der Tests vergleichsweise hoch. Für jede Funktion, die automatisiert getestet werden soll, muss zunächst ein Test entwickelt werden. Auch für neue Funktionen, die in das CMS implementiert werden, muss jeweils ein eigener Test entwickelt werden. Auch das kontinuierliche Testing erfordert viel Zeit. Es hat sich jedoch gezeigt, dass die Aufwände in das Testing sehr gut investiert sind, da sich Fehler schneller finden und damit beheben lassen und gleichzeitig deutlich weniger Bugs in Kundenprojekten auftauchen.

Gerne beraten wir Sie, wie Sie für Ihre interne Entwicklung ein systematisches Testing konzipieren und aufbauen. Bitte schreiben Sie uns bei Interesse.

zurück