Home » Cloud-System » Test-Driven Development! Qualität & Sicherheit im E-Commerce
Teaser testdriven Development / Quelle: freepik

Test-Driven Development! Qualität & Sicherheit im E-Commerce

Im Handwerk sichern das Zusammenspiel zahlreicher Faktoren ein qualitativ hervorragendes Ergebnis: hochwertige Komponenten, eine saubere Verarbeitung, Wissen und Erfahrung sowie insbesondere das beständige Überprüfen der eigenen Arbeit sind die wichtigsten. Bei der professionellen Softwareentwicklung, und dazu gehört eben auch die Realisierung einer E-Commerce Plattform, ist das nicht anders. David Lambauer, Entwickler bei netz98, erklärt, warum Qualität in Software-Produkten so wichtig ist, und beschreibt einen Einstieg in das test-driven Development.

Relevanz

1976, ein Jahr vor der Veröffentlichung des Apple II und 13 Jahre vor der „Entdeckung“ des Internets, als Software noch lange kein Massenphänomen war, machte sich bereits jemand Gedanken über ihre Qualität. Thomas J. McCabe entwickelte die McCabe-Metrik, mit deren Hilfe auch noch heute die Komplexität von Software gemessen wird. Die sogenannte zyklomatische Komplexität beschreibt die Einfachheit des analysierten Quellcodes. Dabei werden die Anzahl Verzweigungen der Prozeduren, aufgerufenen Funktionen oder auch konditionalen Abfragen gemessen (das sind if-then-Anweisungen im Code, die beispielsweise die Ausführung einer Funktion auf eine bestimmte Gruppe beschränkten, etwa die Ansprache „Lieber“ nur zu verwenden, wenn das Kundenattribut „männlich“ vorliegt. An solchen Stellen verzweigt sich der Fluss durch den Quellcode).

 

Je höher der Messwert, umso größer die Komplexität. Je höher die Komplexität, umso wahrscheinlicher sind Fehler und umso schwerer ist der Code zu verstehen. Bei einer Überschreitung der zyklomatischen Komplexität von 50 Bewertungspunkten (CC-Wert 50; CC steht für cyclomatic complexity) etwa spricht man allgemein von einem Quellcode, der besonders fehleranfällig, nicht wartbar und nicht testbar ist. Dieser Code, bzw. die Software ist in ihrer Funktionalität also eingeschränkt. Etwas, das seine Funktion nicht richtig erfüllt, ist qualitativ mangelhaft.

 

Aktualität

Die Softwareentwicklung von damals hat nur noch wenig mit heutigen Standards zu tun, dennoch findet das Prinzip auch heute noch Anklang in der Entwicklung und neben der von McCabe entwickelten Metrik werden noch viele weitere verwendet. Die daraus berechneten Werte geben Auskunft über die Einhaltung entscheidender Qualitätskriterien – und  damit auch Hinweise für die Bewertung eines potentiellen Geschäftsrisikos. Und spätestens, wenn es um geschäftskritische Software geht, sollte eine qualitätsgetriebene Softwareentwicklung im Fokus eines jeden Auftraggebers stehen.

 

Testgetriebene Entwicklung

Ein qualitativ hochwertiger Code muss nicht das Ergebnis einer qualitätsgetriebenen Softwareentwicklung sein. Auch im Nachhinein kann natürlich der Code überprüft und entsprechend angepasst werden. Die Kosten für ein solches Refactoring können aber je nach Umfang beachtlich sein … und sind in Relation immer wesentlich höher, als die Kosten für eine Entwicklung nach entsprechenden qualitätssichernden Prinzipien.

In unserem Fall – im Umgang mit Magento und PHP – die der objektorientierten Programmierung, der SOLID-Prinzipien, sowie eines Test-Driven Developments.

 

SOLID steht für das Folgende:

  • Single-Responsibility: Jede Klasse hat nur eine einzige Aufgabe
  • Open-Closed: Klassen, Module und Funktionen sollen erweiterbar sein
  • Liskovsches Substitutionsprinzip: Auch Ersetzbarkeitsprinzip genannt
  • Interface-Segration: Große Schnittstellen sind in mehrere kleine aufzuteilen
  • Dependency Inversion: Abhängigkeiten dürfen nur in einer eindeutig hierarchischen Struktur vorliegen

 

Test-Driven Development lässt sich in einem Satz zusammenfassen:

Schreibe niemals Code, bevor ein Test nicht fehlschlug.

 

Alles weitere erklärt sich aus den daraus folgenden Überlegungen:

  • Ohne fehlgeschlagenen Test darf ich also nicht anfangen zu coden.
  • Zuerst einen Test zu schreiben, bedeutet, dass ich exakt wissen muss, was ich in meine Funktionen hineingebe und was dabei heraus kommen soll.
  • Um das zu wissen, muss ich mich wiederum mit der Systemarchitektur beschäftigen und diese ggf. selbst definieren.
  • Dabei mache ich mir im Idealfall Gedanken über bereits bestehende Lösungen, also über Design Patterns.
  • Weil ich eigentlich nicht viel Zeit mit dem Testen verschwenden will, fange ich auch an die Tests sehr schmal zu halten. Eine Funktion, eine Aufgabe, ein definierter Input und ein definierter Output. Das wirkt sich ebenfalls auf den eigentlichen Quellcode aus.

 

“Writing clean code is what you must do in order to call youself a professional. There is no reasonable excuse for doing anything less than your best. (Robert C. Martin)

 

Die Herausforderung beim test-driven Development besteht nicht darin, dass Tests zu schreiben sind oder wie am besten ein Test-Workflow zu gestalten ist. Testing und Coding werden einfach auf möglichst kleine Softwareelemente heruntergebrochen (Units). Die Tests sind also am Ende des Tages nur Code, der den eigentlichen Code ausführt und die zurückgegebenen Werte überprüft.

 

Vielmehr geht es um das Konzipieren von Software nach gewissen Grundprinzipien, z. B. SOLID. Für die Praxis werden diese Meta-Prinzipien in Codestyles und Code-Konventionen zusammengefasst, Sammlungen von Regeln und Vorschriften für die Entwicklung leserlichen, verständlichen und übersichtlichen Quellcodes in einer bestimmten Programmiersprache. Zu diesen Regelsets gehören Clean Code Rules, Code Size Rules oder auch Naming Rules.

Ergebnisse

Ohne es also wirklich zu merken, verwende ich Entwurfsmuster für allgemeine Problemstellungen, nutze zuvor definierte Prinzipien wie das Single-Responsibility-Prinzip und obendrein ist der Code auch noch getestet!

 

Test-driven Development
So sollte ein E-Commerce Projekt aussehen: hohe Testabdeckung und permanent steigende Zahl an Testergebnissen

 

Wie profitiert der Auftraggeber?

Nun, er erhält eine E-Commerce Plattform, deren Kern, die eigentliche Magento-Installation, in einem sehr hohen Maße durchs Tests abgedeckt ist, deren Funktionalität also sichergestellt ist. Die stabil und einfach zu warten ist, also immer zur Verfügung steht und sich bei Bedarf einfacher anzupassen ist. Die keine Performance-Probleme durch eine strukturelle Schwäche des Codes aufweist. Und die schließlich in der Endphase ihrer Entwicklung nicht unzählige PT aufgrund von Bugfixing verschlingt sowie die Projektkosten in die Höhe treibt. Diese Software ist kein Geschäftsrisiko.

 

 

Ihr Kontakt

Hartwig Göttlicher
Hartwig Göttlicher
Head of Business Development
Online-Marktplätze: Vorteile im DACH-Raum nutzen

Online-Marktplätze gewinnen mehr und mehr an Bedeutung. Die Konkurrenz wächst und ebenso die Komplexität. Dies erfordert ein professionelles Vorgehen und Read more

Nachhaltiges Handeln: Mit Strategie zum Wettbewerbsvorteil im E-Commerce
Eine Gruppe junger, hipper Menschen sitzt links im Bild an einem Tisch vor einem Laptop. Sie scheinen in geschäftliche Gespräche verwickelt. Das Umfeld spiegelt ein Büro im Industrial Style. Rechts vorne im Bild ist ein Fahrrad abgestellt.

Nachhaltiges Handeln wird immer wichtiger: Zeit für Optimierung im E-Commerce. Entdecken Sie Strategien und Praxisbeispiele von mey!

Datenintegration mit Adobe: Vereinheitlichte Daten als Fundament einer nahtlosen, personalisierten Customer Journey

Optimieren Sie die Customer Journey durch Datenintegration. Erfahren Sie hier welche Lösung Adobe bietet und welche Rolle Datenschutz spielt!

Security-Audit mit Magento: Unabdingbare Prävention für Onlinesicherheit
Auf einem roten Klemmbrett ist ein Zettel abgeheftet. Zu sehen sind lauter rote Häkchen vor symbolhaften Schriftlinien. In der Mitte ist ein wappenartiges Zeichen abgebildet, in dessen Mitte ein großer, roter Haken ist. Darüber eine Lupe, die den Eindruck von einem erfolgreichen Check noch verstärkt.

Schützen Sie Ihren Onlineshop mit einem Magento Security-Audit. Jetzt informieren und erfolgreiche Präventionsmaßnahmen ergreifen!

Shop-Design: Welche E-Commerce Trends den Erfolg boosten
Ein Tablet liegt auf einem Tisch. Auf der Bildschirmoberfläche ist ein steigender Kurvenverlauf zu sehen und die Hand eines Mannes folgt der Kurve.

Entdecken Sie, wie innovatives Shop-Design die Conversion Rate steigert. Tipps & Trends für effiziente Optimierung!

KI im E-Commerce: 8 effiziente Einsatzmöglichkeiten
KI im E-Commerce

Entdecken Sie 8 effiziente Einsatzmöglichkeiten von Künstlicher Intelligenz (KI) im E-Commerce und optimieren Sie Ihren Onlineshop!

Treueprämien: Wichtiger Bestandteil erfolgreicher Loyalty Programme
Im Vordergrund ist die Hand eines Mannes rangezoomt. Es ist erkenntlich, dass er ein Hemd trägt und es wird suggeriert, dass es sich um einen Geschäftsmann handelt. Zwischen Daumen und Zeigefinger hält er einen kleinen, lächelnden Smiley mit Herzaugen.

Die Auswahl passender Treueprämien sowie die Struktur rundherum bestimmt den Erfolg eines Loyalty Programms im E-Commerce. Details hier!

Loyalty Programme: Customer Loyalty als Grundvoraussetzung für langfristigen Erfolg
Im Vordergrund ist die Hand eines Mannes rangezoomt. Es ist erkenntlich, dass er ein Hemd trägt und es wird suggeriert, dass es sich um einen Geschäftsmann handelt. Zwischen Daumen und Zeigefinger hält er einen kleinen, lächelnden Smiley mit Herzaugen.

Entdecken Sie das Potenzial der Loyalty Programme für eine optimale Customer Experience. Jetzt mehr erfahren!

Über den Autor