Einrichten von Akzeptanz Tests für Magento mit dem Menta-Framework

von Roman Hutterer, 21. August 2014
Ich möchte hier Beschreiben wie man Aktzepanz Tests für Magento mit dem Menta-Framework von null weg aufsetzt.
Die einzige Voraussetzung ist dass man Ubuntu ( bzw. ein Linux) einsetzt und auf diesem Host Vagrant und Git installiert ist.

Was ist eigentlich Menta ?

Menta ist ein Test – Framework basierend auf PHP-Webdriver welches Selenium zum ausführen von Akzeptanztests verwendet.
Entwickelt wurde das Menta-Framework von Fabricio Branca.

Was sind Aktzepanz Tests ?

Aktzeptanttests sind eigentlich Abnahmetests, besonders dabei ist dass sich damit der Code sondern das Verhalten der Software testen lässt.
Wer mehr darüber wissen will, hier ein Link zu Wikipedia.

 

Schritt für Schritt möchte ich hier erklären wie man mit Vagrant eine Virtuelle Maschine erstellt, in dieser Menta und Magento aufsetzt und dann die Tests ausführt.

Folgende Tools / Libs werden dazu benötigt / verwendet:

  • Vagrant
  • phpUnit
  • curl
  • standalone Selenium Server
  • Menta-Framework von menta-test.com
  • Ubuntu Server (oder ein anderes Linux System)
  • git

 

Schritt 1: Vagrant Box aufsetzen

Zuerst benötigt man eine Vagrantbox, ich nehme hier folgende Vagrantbox:
https://github.com/matthewsplant/magento-vagrant-puppet.git

Ich wechsle also in einen Projektordner meiner Wahl und klone das Repository mit dem Shell Befehl:

damit wird das Repository in den Ordner „menta_test“ geklont.

in dieses Verzeichnis lege ich auch gleich den Seleniumserver welchen man von
http://docs.seleniumhq.org/download/ downloaden kann.

Der nächste Schritt ist die Konfiguration der Vagrantbox.

Ich ändere die IP-Adresse der Box auf:

und den Hostnamen:

sowie den Namen der Virtualbox Maschine:

Port-forwarding kann eigentlich deaktiviert werden.

Damit der Magento-Shop auch erreichbar ist muss man das Vhost – File für den Apache Webserver anpassen.
Das File findet man in dem Ordner puppet/modules/magento/files/vhost_magento
Dieses File dient als Template für den Virtuellen Host von Apache, wenn die Virtuelle Maschine mit Puppet provisioniert wird.
Also in dem File eine Domain eintragen, ich verwende hier : „menta-test.dev.local“.

Damit die Virtuelle Maschine nun auch über den Browser der Host-Maschine erreichbar ist muss ein Host-Eintrag auf dem Host-Rechner gesetzt werden.

Also wieder mit einem Editor

In dem File dann anhand meiner Werte oben in diesem File den Hosteintrag erstellen:

Ab diesem Zeitpunkt ist die Virtuelle Maschine über den Browser am Host-Rechner erreichbar, ein kurzer Test kann also nicht schaden.
Einfach mal in den Browser am Host wechseln und in der URL-Zeile http://menta-test.dev.local eingeben.
Es sollte die Auflistung von Apache angezeigt werden wo man ein File mit dem Namen „phpinfo.php“ findet.

Bildschirmfoto4

Als nächstes wird die Vagrant-Box gestartet.
Dazu am Host in der Shell in den Projektorder wechseln in dem das Vagrantfile liegt und mit
$ vagrant up
die Vagrant-Box starten.

Nachdem die Vagrant-Box gestartet ist, verbindet man sich mittels
$ vagrant ssh

Damit man auf der Virtuellen Maschine auch Git-Repositories klonen kann benötigt man auch auf dieser die Git Libs
Also wird auf der virtuellen Maschine Git installiert:

Danach noch die PHP Erweiterung Curl

Das Setup der Vagrantbox ist an dieser Stelle abgeschlossen.

 

Schritt 2: Menta Framework für Magento installieren

Sofern soweit alles geklappt hat kann man jetzt zum eigentlichen übergehen:
Dem Aufsetzen und Konfigurieren von Menta für Magento. Dieses Repo wird von macopedia bereitgestellt

Als erstes wird Projekt von github geklont.

Dieser Schritt findet auf der Virtuellen Maschine statt.

damit wird ein Order erstellt mit dem Namen Menta_MagentoSampleProject
in diesen wechselt man gleich.

nachdem composer.phar (wenn auch in einer älteren Version) auch schon in dem Verzeichnis liegt wird dieses PHP-Archiv auch verwendet, dann muss man composer nicht mehr installieren, sonder direkt die Abhängigkeiten die im composer.json definiert sind installieren.
also:

 

Als nächstes muss die Konfiguration von Selenium angepasst werden, diese ist zu finden unter
conf/defaults.xml

hier müssen vorerst folgende Werte angepasst werden:

  • testing.maindomain
  • testing.selenium.seleniumServerUrl

folgender Wert muss hinzugefügt werden:

hier kann auch Chrome verwendet werden (oder ein anderer Browser der auf dem Host-Rechner läuft)

Bei „testing.maindomain“ wird die Domain des zukünftigen Projekts eingetragen, in meinem Fall „http://menta-test.dev.local“.
Bei testing.selenium.seleniumServerUrl muss die URL des SeleniumServers eingetragen werden, doch dazu muss man diesen mal starten.

Wir navigieren also in der Shell auf dem Host-Rechner in das Projektverzeichnis „menta_test“, dort ist der Seleniumserver wie oben erwähnt gespeichert.

Mit folgendem Befehl wird der Seleniumserver gestartet.

Die Ausgabe des Startvorgangs verrät dann die URL zum Server.
Folgende Zeile sollte zu finden sein:

Diese Zeile ist eigentlich nicht ganz richtig denn der Selenium läuft ja auf dem Host-Rechner und nicht auf der Virtuellen Maschine, man muss also die IP-Adresse vom Gast zum Host eintragen.
Diese findet man heraus indem man sich am Host einloggt und

eingibt. Der Netzwerkadapter hat meistens als Bezeichnung mit „vboxnetX“ in meinem Fall: 10.10.10.1.

also lautet die URL zum SeleniumServer:
http://10.10.10.1:4444/wd/hub
und diese wird auch in dem defaults.xml eingetragen.

als letzte Änderung in der defaults.xml muss noch eine Zeile angepasst werden:
Zeile 66
hier muss der Listener angepasst werden, wir ersetzen die Konfiguration des Listeners.

durch

Bevor wir nun den Test starten muss noch ein Verzeichnis auf der Gast-Maschine angelegt werden:

Nach diesem Schritt ist auch Menta fertig konfiguriert.

 

Schritt 3: Magento installieren

Als nächstes muss nun noch Magento selbst installiert werden.
Also wieder in das Projektverzeichnis wechseln

hier nun ein Verzeichnis mit dem Namen magento anlegen

Um den Magento Shop zu installieren verwende ich den Installer von n98-magerun.
In diesem Verzeichnis legen wir das PHP-Archiv von n98-magerun, der Installationsprozess kann auch gerne hier nachgelesen werden.

also:

Ich verwende hier die Version 1.8.0.1.

 

Schritt 4: Selenium Tests starten

Nachdem nun auch Magento installiert ist kann man mit den Tests starten.
Dazu wieder das Terminal auf dem Gast-Rechner öffnen.

und schon werden die Tests die in dem File ScreenshotsTest.php definiert sind ausgeführt

Das war es auch schon 🙂

Die Magento instanz kann nun anhand der Konfiguration getestet werden.

Teilen