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
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!

Digitale Trends 2024: Adobe Experience Cloud liefert flexible Lösungen
Der Betrachter schaut frontal auf einen Menschen, der an einem Tisch sitzt. Dieser ist so weit rangezoomt, dass man nur einen winzigen Teil des Oberkörpers mit einem blauen Hemd über der Tischkante sieht. Im Vordergrund links ist seine Hand zu sehen, die über einem Smartphone verweilt - bereit zur nächsten Aktion. Mittig im Bild befindet sich ein klassisches Suchfeld, in das "2024 Trends" eingetippt wurde.

Digitale Trends erfordern Anpassungen. Die Adobe Experience Cloud liefert flexible Lösungen für den E-Commerce. Jetzt informieren!

Verkaufseinheiten im E-Commerce: Feature für die Mengenumrechnung bei EUROBAUSTOFF
Collage aus Bildern, die Beschäftigte unterschiedlicher Branchen bei der Arbeit zeigen.

Feature zur Mengenumrechnung bei EUROBAUSTOFF: Über Verkaufseinheiten zur Bestellmenge – schnelle Ermittlung. Jetzt mehr erfahren!

Storyblok: Maximales Potenzial mit Custom Plugins
Abgebildet ist ein Ausschnitt einer Rechner-Tastatur, auf der zwei kleine Miniatur-Einkaufswagen stehen

Erfahren Sie, wie passende Plugins in Storyblok das Nutzererlebnis optimieren und Ihren E-Commerce-Erfolg steigern. Jetzt informieren!

Visuelle Ersatzteilbestellung mit Explosionszeichnung im E-Commerce
Collage aus Bildern, die Beschäftigte unterschiedlicher Branchen bei der Arbeit zeigen.

Entdecken Sie, wie Explosionszeichnungen die Bestellung im B2B E-Commerce vereinfachen und die Kundenzufriedenheit steigern!

Bessere Produktdaten durch automatisierte Auswertung von Datenblättern 
Hände tippen auf Smartphone und Laptop und Shopping-Fenster sind geöffnet

Erfahren Sie, wie Sie mit der KI-Lösung von netz98 bessere Produktdaten für Ihren Onlineshop erhalten und damit Ihren E-Commerce optimieren.

Adobe Analytics & Adobe Target: Magento-Potenzial durch nahtlose Integration nutzen
Im Mittelpunkt steht eine PC-Tastatur mit einer Auswahl an Produkten darüber. Die Hand eines Menschen – rechts im Bild – berührt für eine Auswahl das mittlere Produktbild.

Erfahren Sie, wie Adobe Analytics und Target nahtlos in Magento integriert werden, um Personalisierung und ROI zu maximieren. Lesen Sie Read more

Interview: Umsatzwachstum im E-Commerce mit System
Goldene Wachstumskurve mit E-Commerce-Icons drumherum und Personen davor, die shoppen.

Wie lassen sich zusätzliche Wachstumspotenziale im E-Commerce mit einem durchdachten Vorgehen quantifizieren und heben? Erfahren Sie mehr im Blogbeitrag!

Über den Autor