/ PHP

Testumgebungen für Shopware mit kostenpflichtigen Plugins einrichten

Testumgebungen mit Shopware sind wichtig für jedes größere Web-Projekt welches diese Software einsetzt und unverzichtbar für moderne Onlineshops. Es handelt sich dabei im Idealfall immer um eine genaue Kopie der Live-Seite. Auf diesen Umgebungen können problemlos neue Features vor dem Livegang erprobt und getestet werden. Hierbei ist es allerdings wichtig das auf der Live-Seite vorhandene Plugins auch in der Testumgebung funktionieren um Inkompatibilitäten mit neuen Features auszuschließen.

Im Fall von Shopware gestaltet es sich erfahrungsgemäß etwas komplizierter Testumgebungen aufzusetzen, da hier oft bezahlte und mit Ioncube verschlüsselte Plugins zum Einsatz kommen. Welche Möglichkeiten gibt es also eine vollständige Testumgebung mit Shopware einzurichten, wenn bezahlte Plugins verwendet werden?

3 Wege zur Shopware Testumgebung

Das Problem an der Sache ist, das die Plugins für eine bestimmten Domain lizenziert sind. Um trotzdem eine lauffähige Testumgebung hinzubekommen gibt es grundsätzlich 3 Wege, die alle ihre Vor- und Nachteile haben:

  1. Man kann einfach die kostenpflichtigen Plugins weg lassen, was aber nicht unbedingt ratsam ist. Es sei denn du bist dir absolut sicher, dass die Plugins nicht mit getestet werden müssen.
  2. Du kannst einfach Lizenzen für die fehlenden Plugins kaufen. Dadurch ist es möglich die Testumgebung auf einer separaten Domain bzw. Subdomain laufen zu lassen.
  3. Mit Hilfe der hosts-Datei kann der Testumgebung vorgegaukelt werden, dass die eigentliche Live-Domain auf das Testsystem konnektiert ist. Diese dritte Methode möchte ich im Folgenden näher erklären.

Modifikation der hosts-Datei

Der Vorteil dieser Methode ist, dass alle Plugins funktionieren und dabei keine extra Kosten für weitere Lizenzen anfallen. Aber wie genau funktioniert das?

Wenn wir normalerweise über einen Webbrowser unsere Shopware-Seite aufrufen schlägt der Webbrowser oder das Betriebssystem die IP-Adresse des Servers im DNS-Netzwerk nach. Danach baut der Browser eine Verbindung zum Shopware-Webserver auf und übermittelt gleichzeitig die vorher nachgeschlagene Domain. Auf Grund dieser Daten kann der Webserver anhand seiner virtuellen Host-Einträge nachschauen welche Website ausgeliefert werden soll. Da nun auch Shopware die angeforderte Domain kennt wird diese Information unter anderem auch zur Verifikation der Lizenzen genutzt.

Gäbe es einen Weg die Live-Domain auch an den Testserver zu übermitteln ohne das diese vorher im DNS nachgeschlagen wird, würde der Testserver also "denken" er wäre der Live-Server. Zum Glück gibt es einen Weg :-)

Zunächst solltest du im Backend der Testumgebung für den jeweiligen Shop die Live-Domain anstelle der Test-Domain hinterlegen. Das kannst du auch gerne direkt über die Datenbank machen.

Jeder Rechner verfügt außerdem über eine sogenannte hosts-Datei. In ihr befinden sich Einträge, die beschreiben welche Domain auf welche IP zeigt. Bevor ein Rechner das DNS fragt welche IP sich hinter einer Domain verbirgt schaut er zunächst in seiner lokalen hosts-Datei nach.

Das können wir uns nun für die Testumgebung zu nutze machen. Voraussetzung ist, dass die Testumgebung über eine eigene IP-Adresse verfügt. Angenommen unsere Testumgebung hat die fiktive IP 111.111.111.111 und ist weltweit erreichbar dann soll diese mit unserer fiktiven Live-Domain "meintollerwebshop.de" verbunden werden.

  • Unter Windows findest du die hosts-Datei unter C:\Windows\System32\drivers\etc\hosts
  • Mac-User finden die Datei unter /private/etc/hosts

Öffne nun die Datei mit einem Texteditor und füge folgende Zeilen ein:

#Testumgebung meintollerwebshop.de
111.111.111.111 meintollerwebshop.de

Die erste Zeile beginnt mit einem # und ist nur ein Kommentar. Wenn sich die Einträge in der Datei häufen ist es gut mit Kommentaren den Überblick zu behalten.

Die zweite Zeile ist der eigentliche Host-Eintrag, der unserem Rechner sagt, dass er die Domain meintollerwebshop.de in Zukunft nicht mehr im DNS nachschlagen muss sondern gleich auf die gewünschte IP auflösen soll.

Speichert man nun die eigene hosts-Datei und navigiert mit dem Webbrowser auf die Domain landet man anstelle auf der Live-Seite auf der Testumgebung. Öffnet man die Datei erneut und deaktiviert den Eintrag indem man ihn löscht oder auskommentiert landet man wieder auf der Live-Umgebung. Das gilt natürlich nur für die PCs auf denen das auch so eingestellt wurde. Zudem solltest du nach dem Ändern dieser Datei die DNS-Caches löschen.

Hierbei ist es wichtig zu wissen, dass verschiedene Browser die Auflösung der Domainnamen in einem eigenen Cache speichern. Nach der Änderung der hosts-Datei sollte daher der Browser neugestartet werden. Unter Windows mit Chrome habe ich allerdings die wenigsten Probleme. Nach dem Speichern der Hosts-Datei sollten die Änderungen sofort sichtbar werden.

Stolpersteine beseitigen

Da Live- und Testumgebung absolut identisch sind und auch die Domain die gleiche ist kann es schnell zu fatalen Verwechslungen kommen. Daher ist es wichtig, dass du die Testumgebung vorher markierst. Ändere zum Beispiel den Titel des Shops in "Testumgebung" oder schreibe es groß und rot auf die Startseite. Das schlimmste was dir passieren kann ist, dass du dich im Testsystem wähnst und in Wirklichkeit das Backend der Live-Seite vor dir hast.

Um den Kunden den Ärger mit dem Ändern von Test- und Liveumgebung zu ersparen ist es oft sinnvoll die Änderung auf einem bestimmten Computer des Kunden vorzunehmen. So weiß der Kunde immer, dass es sich um die Testumgebung handelt wenn er die Website von einem bestimmten PC aus aufruft. Denkbar wäre auch die Erstellung eines kleinen .bat oder .sh Skripts welches die Hosts Datei modifiziert oder austauscht.

Nachteile dieser Methode

Die Nachteile dieser Methode liegen natürlich auf der Hand. Die Testumgebung benötigt eine eigene IP-Adresse oder muss auf dem Localhost laufen und ein Wechsel zwischen Test- und Liveumgebung gestalten sich für Entwickler wesentlich umständlicher. Bisher habe ich noch kein brauchbares Programm gefunden welches die Einträge der hosts-Datei automatisch manipuliert und sich um die Leerung der Caches kümmert.

Ein weiterer Nachteil ist zudem dass du die Hosts-Datei auf Smartphones und Tablets nicht immer ohne Root-Rechte ändern kannst. Dadurch werden responsive-Tests erschwert.

Du suchst einen Shopware-Entwickler?
So findest du mich!