Tobias Hertkorn im Interview mit HR Performance

Die HR Performance befragt unseren Geschäftsführer über die Erfolgsfaktoren mobiler Zusammenarbeit. Wie man Kommunikationsprozesse bestmöglich in die Onlinewelt transferiert und im Team effektiv mit der Herausforderung asynchroner Kommunikationskanäle umgeht, lesen Sie hier:

https://www.hrperformance-online.de/news/collaboration-erfolgsfaktoren-guter-teamarbeit-im-digitalen-zeitalter


Chefbüro berichtet über Reportheld

Das Business-Magazin für Führungskräfte "Chefbüro" berichtete am 22. August 2016 über Reportheld und die Zusammenarbeit mit der Vensys Energy AG. Neben der Integration in den Arbeitsalltag der Vensys-Techniker geht es in dem Artikel ebenfalls um die Funktionsweise Reporthelds.

Zu dem Artikel gelangen Sie hier.


MTM vs. Selenium - How to run tests in parallel?

MTM:
You need to set up an environment including multiple machines in the same role. The test controller organizes the tests in buckets of 10 or 100 tests (linked to how much tests you have in your test run) and sends bucket for bucket to its agents/machines.

Selenium:
When you change the parameter in your Test Settings, then the tests will be executed in parallel. But the hub isn't able to realize that it should wait, when all instances of the grid are already in use, before broadcasting the next test request. Because of that, the next test will fail with timeout error, because the other tests took longer than the timeout.


MTM vs. Selenium - Is it possible to run automated tests on Android and iOS devices?

We already have our Test environment set up with Selenium. But we also use VSO (Visual Studio Online), which means that it could be better to change or to additionally use MS Testmanager (MTM) to organize and execute manual and automated tests. I wrote down some questions and started to analyse if any of the nice features would be lost by changeing from Selenium to MTM.

During my research I stumbled over some articles and posts about how to integrate Selenium tests into MTM. But my questions are still interesting, for the decision if I want to continue writing my tests in Selenium and then add them to MTM or to start creating them on MTM.


MTM:
You need to extend your VSO with a Plugin. Those extensions give you the opportunity to record manual tests same as on Selenium IDE - but for any mobile devices / operating systems instead of Firefox. It also has the functionality to export that recorded test into some code, which you can add on MTM.
There are various different Plugins, but none of them are for free - and I'm very happy with Selenium.

Selenium:
Here you need to set up a hub/node and connect a mobile device. Then you can record tests via Selenium IDE on Firefox and generate the test code. As last step you have to change the used WebDriver from Firefox to Android or iOS.


Selenium Grid - How does it work

Grid

When we start one of our Selenium tests, then a request is sent to the Hub.
The Hub checks all the Nodes which are registered, for a System, that matches the desired Capabilities for the started testcase (for example, Chrome).

DesiredCapabilities

With a match, the Hub sends the Selense to the Node which is communicating with the browser and the test will be executed step by step. If there is no free slot on the matched Node, then the Hub will wait and try again until the timeout is reached.

Seleneium_Grid

Source: http://goo.gl/RwUijO

In our case the tests are structured in a way, so that it use specific URLs to reach different application systems depends where the tests will run. That means, when we start the tests local on our own developer machine, then it works with the local code and application. When we start it on the grid instead, then the Version on the Testsystem will be tested.


Drei Schritte, mit denen ich Selenium kennen lernte

1. Einstieg – Selenium-IDE für Firefox

Hierbei handelt es sich um ein Add-on für Firefox, das manuell ausgeführte Abläufe in einer Web-Anwendung mitprotokolliert und per Knopfdruck wiederholen kann. (Downloadlink)

Der daraus resultierende Test-Workflow ist folgender:
Einschalten / Aufzeichnen > Prozess durchlaufen > ggf. Skript modifizieren > Fehler reporten / Skript mitschicken > Entwickler kann Fehler dank Skript einfach reproduzieren > Bugfix > Retest mit Skript
-> Das bedeutet, man spart sich mind. 2 mal das manuelle Durchspielen des Prozesses und die Erklärung.

Für ein Beispiel öffne ich „www.google.de“ und tippe „Was ist Selenium“ ein.
Aufgezeichnet wurde folgendes:

Selenium 1

Da mein Test darauf ausgelegt ist zu überprüfen, ob Google wirklich Suchergebnisse ausspuckt, die das Wort „Selenium“ beinhalten, modifiziere ich das Skript etwas.
In diesem Fall habe ich über die Select-Funktion den Bereich mit den Suchergebnissen ausgewählt (id=ires) und die Befehle waitForElementPresent (damit die Folgebefehle erst ausgeführt werden, wenn das Element geladen ist) und assertText (um das Wort zu überprüfen) darauf ausgeführt:

Selenium 2

2. Übergang zum Code – Export aus Selenium-IDE zu Selenium WebDriver

Selenium-IDE bietet die Möglichkeit die aufgezeichneten Befehlen in Code einer gewünschten Programmiersprache zu konvertieren (ich wähle hier "C#/NUnit/WebDriver"):

Selenium 3

Es wird eine Klasse erzeugt, die kompiliert und ausgeführt werden kann. Zur besseren Übersicht zeige ich hier nur die Methoden, die für die Ausführung der Befehle zuständig sind - man erkennt, dass die Befehle einfach nur aufgelistet und schwer nachvollziehbar sind - oder ist euch klar, wofür "gbqfq" steht?
[crayon-5dce09b0e7875863716666/]

3. Abrunden – Code Refactoring

Um den Code besser lesbar und ohne Wiederholungen zu gestalten, wende ich erstmal folgende Tricks an:

  1. Referenzen/Eingaben auslagern
  2. Kommentare verfassen
  3. Leerräume einfügen

An dieser Stelle möchte ich noch anfügen, dass dieses hier vorgeschlagene Code Refactoring noch nicht abgeschlossen ist. Bei größerem Umfang macht es beispielsweise Sinn die Referenzen in eine eigene Datei auszulagern und abstrakte Klassen zu schreiben, die Grundvoraussetzungen bereits abprüfen, z.B. ob die geforderte Seite wirklich schon offen ist.
[crayon-5dce09b0e7879729788228/]
Je mehr ich mich mit der Materie beschäftige und vertrauter sie mir wird, desto mehr freue ich mich darauf unsere Qualitätssicherung mithilfe von Selenium aufzustocken. Momentan träume ich von einem zusammenhängenden Netz aus Selenium-Tests, mit denen unser gesamtes Projekt auf Knopfdruck durchgetestet wird.
Allerdings muss ich erstmal einen Fuß vor den anderen setzen; meine nächste Etappe wird sein, mir Gedanken darüber zu machen, wann welches Tool zum Einsatz kommt - ob Aufzeichnung mit Selenium-IDE oder direkt über Selenium WebDriver - und ich werde einen tieferen Blick in die Masse an Befehlen werfen.

Ihr dürft also gespannt sein.


Was ist Selenium?

Es ermöglicht automatisiertes testen von Webanwendungen auf UI-Ebene. Folgende Gegebenheiten lassen sich durch Selenium überprüfen:

  • Existenz von UI-Elementen aufgrund ihrer HTML-Tags
  • Bestimmte Inhalte
  • Links, Eingabefelder, Auswahllisten, Eingabeformulare, Tabellendaten
  • Unterstützt Tests im Zusammenhang mit Fenstergröße, Mauspositon, Alerts, Ajax Funktionen, Pop-up Fenster, Event-handling und vielen weiteren Web-App Features

=> Beispiel:

Man erstellt ein Skript, das eine Webseite öffnen,
nach Elementen suchen,
Daten eintragen,
Links auslösen
und dann weitere Informationen überprüfen kann.
> Login-Textfeld
> „Beispiel Username“
> Login-Button klicken
> „Bestimmter Text“ vorhanden?