Tip, Tap, Test

Automatisierte Tests im mobilen Umfeld – der Umstieg aus der Desktopwelt

Alexandra Schladebeck, Markus Tiede

Vergleicht man die Mobilität unserer heutigen Welt mit der Situation von vor zehn Jahren, sind wir jetzt bereits relativ mobil. Aber der Trend zur „Mobilisierung“ wird weiter anhalten. Im privaten Bereich ist der mobile Zugang zu Daten und Diensten schon eine Selbstverständlichkeit. Im Arbeitsumfeld ist dieser Umstand noch nicht überall gegeben – aber gerade dort kann der direkte Zugang zu aktuellen Daten und Diensten positive Auswirkungen auf die Effizienz eines Unternehmens haben. Auch größere Firmen interessieren sich daher immer mehr für mobile Versionen ihrer Enterprise-Anwendungen. Dabei handelt es sich um einen Umstieg aus der bekannten Desktopumgebung in die mobile Welt. Für den Kunden sowie für den Dienstleister ist also ein gewisses Umdenken erforderlich – insbesondere beim Thema Testen. Welche Konzepte der Desktopapplikationen bleiben bestehen und werden durch neue ersetzt? Welche Besonderheiten muss man beachten, wenn man mobile Anwendungen automatisiert testet? Und welche Techniken und Technologien stehen zur Verfügung, um in diesem Bereich erfolgreich Qualitätssicherung zu betreiben?

Neues Paradigma, gleiche Fragen: Schon bevor sich die ersten BREDEX-Kunden nach mobilen Versionen ihrer Businessanwendungen erkundigten, hatte sich das GUIdancer/Jubula-Team Gedanken über das (automatisierte) Testen für mobile Geschäftsanwendungen gemacht. Wie bei anderen Entwicklungs- und Testdienstleistern bedeuten die vielen Jahre Erfahrung mit Desktopanwendungen feste Erwartungen, bekannte Prozesse und schon gemeisterte Herausforderungen. Gerade im Testprozess sind Themen wie frühes Testen, Continuous Integration und Testautomatisierung nicht mehr hinwegzudenken – jedes Team, das schon von einer durchgängigen Qualitätssicherung profitiert hat, möchte das hochwertige Feedback in anderen Projekten nicht mehr missen. Denn obwohl die durchschnittliche App deutlich kleiner als die meisten Enterprise-Anwendungen ist, bedeutet das keineswegs, dass das Testen weniger wichtig oder aufwändig ist. Ganz im Gegenteil – zu den alten und bekannten Herausforderungen gesellen sich ganz neue, mobilspezifische Anforderungen.

Ziel dieses Artikels ist es, die fachlichen sowie technischen Umstellungen aus der Perspektive der Testautomatisierung vorzustellen. In den letzten Monaten hat sich das GUIdancer/Jubula-Team intensiv mit der Testautomatisierung im mobilen Umfeld auseinander gesetzt. Im März erscheint die Unterstützung für iOS-Anwendungen, Android ist jetzt schon in der Proof-of-Concept-Phase. Die daraus gewonnenen Eindrücke werden zunächst aus der fachlichen, anschließend aus der technischen Perspektive vorgestellt.

Bekannte Ziele

Die erste gute Nachricht lautet: Unser aktuelles Wissen hilft uns auch im mobilen Umfeld weiter. Die Erwartungen und Voraussetzungen für das automatisierte Testen ändern sich nicht grundlegend. Robuste und intelligente Tests sind nach wie vor der Schlüssel zum Erfolg. Dazu gehören eine zuverlässige Objekterkennung, Strategien zur Wiederverwendung und die Möglichkeit, lesbare und verständliche Tests aus der fachlichen Perspektive zu schreiben. An der grundsätzlichen Bedienung ändert sich ebenfalls nichts. Um einen funktionalen Test durchzuführen, muss man weiterhin Workflows aus der Sicht des Benutzers abbilden: Elemente auswählen und überprüfen sowie Text eingeben und Synchronisationspunkte bereitstellen. Auch bei Cross-Platform-Projekten ist die fachliche Abstraktion gefordert, die man aus der Desktopwelt kennt, um mit demselben Test mehrere Plattformen testen zu können.

Aus den Augen, aus dem Sinn

Die zweite positive Nachricht – und das kommt uns als Toolhersteller mit mehr als 270 Standardaktionen für einen großen Satz an Toolkitkomponenten besonders entgegen – ist: Man stellt bei den mobilen Plattformen freudig fest, dass es weniger Komponenten gibt: Ein komplexes Tabellenkonzept wie in SWT existiert (bisher) nicht, tief verschachtelbare Baumstrukturen kommen ebenfalls nicht vor und aufwändige Menüs und Kontextmenüs fallen ebenfalls weg. Aus der Bedienperspektive (sowohl fachlich als auch technisch gesehen) gehören diese Komponenten zu den komplexesten, sodass wir nicht lange um ihren Verlust trauerten. Auch die kompliziert aussehenden Navigation- oder Tool-Bars sind letztendlich nichts weiter als eine Sammlung tap- oder checkbarer Elemente.

Das Gleiche in Grün – oder auch nicht

Sobald es mit der ersten App losgeht, findet man als erfahrener Tester schnell Punkte, in denen sich die mobilen Konzepte nur wenig von denen der Desktopkomponenten unterscheiden. Buttons oder klickbare Komponenten gibt es überall – nur, dass man jetzt auch noch von „tappen“ redet. Textfelder existieren auch, nur die Tastaturinteraktion ist geringfügig anders (bspw. die Vorbelegung der Tastatur für E-Mail- oder URL-Eingaben).

Die Transferleistung für andere Komponenten ist etwas aufwändiger, allerdings durchaus machbar. So sind Switches (iOS) oder Toggles (Android) die mobilen Varianten der altbekannten Checkboxen (wobei Android ebenfalls Checkboxen sowie Radio-Buttons anbietet). Einspaltige Picker sind analog zu Combo-Boxen bedienbar. Die zusammengestellten Date-and-Time-Pickers kann man sich ganz einfach als „Combo-Box mit Spalten“ vorstellen und bedienen.

Weiter abstrahiert, aber nichtsdestotrotz wiedererkennbar sind die Komponenten Tab-Bars, Page-Indicators und Segmented-Controls, die alle unter die Rubrik Tabbed-Controls fallen. Diese lassen sich inhalts- oder indexbasiert ansprechen, genau wie Reiter in einem SWT TabFolder. Die von ihrer Desktopschwester optisch am weitesten entfernte Komponente (aber dabei eine der meist verwendeten) ist die Table-View (iOS) oder List-View (Android). Neben „normal“ aussehenden Listen befinden sich in diesem Bereich ebenfalls komplexere Listen mit Abschnitten, die über Kopf- und Fußzeilen verfügen können. Sie dienen häufig dem einheitlichen Layouten von Komponenten oder der Darstellung von größeren tabellarischen Daten. Beide Varianten lassen sich mit unseren herkömmlichen „Listen“-Aktionen wie z. B. Select oder Check Existence bedienen (Abb. 1).

Abb. 1: Viele mobile Komponenten können mit Desktopkonzepten adressiert werden

The Point of no Return …

Wer nur bis hierhin liest, mag denken, dass der Umstieg kaum Änderungen mit sich bringe; dass man sich mit wenigen Anpassungen auch „Mobile-Tester“ nennen und dabei alle Desktoperfahrungen direkt anwenden könne. Zwar lassen sich diese Erfahrungen gut auf die bisher erwähnten Bereiche übertragen; sie reichen allerdings nicht aus, um ein lückenloses Verständnis vom Testen mobiler Applikationen zu erreichen. Denn eine App ist häufig viel mehr als ein kleiner Ausschnitt einer Desktopanwendung. Zu beachten sind hier beispielsweise auch Aspekte wie:

  • Neue Bedienungen: Das zusätzliche Bedienkonzept, die Anwendung mithilfe von Gesten zu steuern, ist eine der offensichtlichsten Neuerungen. Die häufigsten Aktionen innerhalb einer App sind „Tap“ und „Tip“. Gesten bieten eine weitere intuitive Möglichkeit der Interaktion, die eine große Bedeutung für den Test besitzen (zum Beispiel Swipe-Gesten, um eine Löschoperation zu signalisieren oder um Bereiche ein- und auszublenden, Drag nach unten, um Aktualisierungen von Ansichten auszulösen oder auch Pinchen mit zwei Fingern, um Inhalte zu zoomen).
  • Die Notwendigkeit weiterer funktionaler Tests: Auch im Bereich der zu testenden Funktionen kommen viele weitere Testfälle hinzu. Das Setzen oder Abfragen der aktuellen Position über GPS kann eine wichtige Voraussetzung für manche Testfälle bilden. Das Gleiche gilt für Internetdienste.  Je nach Funktion sollten „fehlende Verbindung“, „langsame Verbindung“ oder „abgebrochene Verbindung“ getestet werden. Die erfolgreiche Interaktion mit anderen Apps oder Funktionen wie die Multimediafähigkeit der Applikation gehören gegebenenfalls auch zum Test.
  • Nicht funktionale Aspekte: Die nicht funktionalen Qualitätsmerkmale dürfen ebenfalls nicht vergessen werden. Die Auswirkung einer App auf die Laufzeit oder die Performance des Geräts kann schnell den entscheidenden Unterschied zwischen Erfolg und Scheitern bedeuten. Und die Themen Benutzerfreundlichkeit und Bedienbarkeit werden höher geschätzt denn je. Ohne ein durchgängiges, verständliches Konzept wird die App einfach nicht genutzt.

Diese kleine Auswahl zeigt auf der einen Seite die unstrittige Notwendigkeit des automatisierten Testens für mobile Anwendungen. Denn wie sollte man sonst die „normalen“ neben den mobile-spezifischen Tests auf einer immer breiter werdenden Palette an Geräten und OS-Versionen bewältigen – selbst wenn man sich nur auf eine kleine, repräsentative Auswahl an Gerätekombinationen beschränkt? Die Zeiten, in denen Kunden nur ein ausgewähltes Betriebssystem in einer Version einsetzen, sind vorbei – und selbst die Unterschiede zwischen Unterversionen und Systemen sind nicht zu verachten. Ohne Automatisierung ist der daraus entstehende Aufwand zur Sicherung der hohen Qualitätsansprüche nur schwer zu meistern.

Auf der anderen Seite gibt es teilweise fachliche oder technische Schwierigkeiten, einen Test zu automatisieren. Jeder Workflow, alle Bedienschritte und sogar die verfügbaren Funktionen können sich durch die Ausrichtung des Geräts, den Gerätetyp (iPhone/iPad) und natürlich auch durch das Betriebssystem (Android, iOS, Windows Phone) signifikant unterscheiden. Die Testperspektive muss während der Entwicklung vertreten werden, um ein möglichst einheitliches Bedienkonzept zu erreichen. Aber Unterschiede sind auch zu erwarten – deshalb  muss ein automatischer Test so strukturiert werden, dass sich Gemeinsamkeiten wiederverwenden lassen. Letztendlich hängen der Testautomatisierungsumfang und -aufwand vom Testfall, Testziel und Testframework ab. Entscheidend ist, dass ein Testplan alle diese Aspekte berücksichtigt und natürlich eine möglichst hohe Abdeckung mit möglichst wenigen Ressourcen ermöglicht.

Konzepte bewahren – die technische Perspektive

Der nachfolgende Teil des Artikels richtet sich primär an Jubula- und GUIdancer-Anwender, die bereits Erfahrungen in anderen UI-Toolkits wie Swing oder SWT/RCP gesammelt haben, und an neue Anwender, die eine konkrete Einführung in die Welt der iOS-Automatisierung erhalten wollen. Wir wollen erläutern, wie man für iOS

  • funktionale Tests spezifiziert,
  • die zu testenden Anwendungen (AUT) startet,
  • „Object Mappings“ anfertigt und
  • welche Aspekte bei der Testausführung zu beachten sind.

Damit funktionale Tests dem Anspruch und den Herausforderungen von mobilen Apps gerecht werden können, war unser oberstes Ziel, die Konzepte, die bereits in der Desktopwelt zu robusten und wartbaren Tests geführt haben, eins zu eins in die Welt der mobilen Applikationen zu übertragen. Zu diesen Konzepten zählen:

  • das applikations- und toolkitunabhängige Spezifizieren von Tests bereits vor der Verfügbarkeit erster Prototypen der App
  • einen sehr hohen Grad an Wiederverwendbarkeit der Tests zu ermöglichen
  • Tests schreiben und ausführen zu können, ohne ein tiefes technisches Know-how des eingesetzten UI-Toolkits zu besitzen
  • eine robuste, auf heuristischen Merkmalen basierende Objekterkennung von UI-Komponenten anzubieten
  • eine vollständige Integration in CI-Prozesse zu ermöglichen
Die Testspezifikation

In der ITE – der Integrated Testing Environment – ist es jederzeit möglich, einen Test, auch ohne Verfügbarkeit der zugrunde liegenden realen Applikation, zu schreiben. Dazu verwendet man für mobile Applikationen das „mobile“ oder „iOS“-Toolkit (Abb. 2).

Abb. 2: Die Vererbungshierarchie der Toolkits – neu hinzugekommen: „mobile“ und „iOS“

Diese Hierarchie ermöglicht es, alle Tests, die bereits auf dem Toolkitlevel „concrete“ geschrieben wurden, ebenfalls auf mobilen Plattformen auszuführen (Abb. 3).

Abb. 3: Ein „Simple-Adder“-Testlauf lässt sich problemlos auch auf einem iOS-Adder ausführen

Einzige Einschränkung: Das „concrete“-Toolkit besitzt einige Komponenten, die bislang kein Pendant in der mobilen Welt gefunden haben: Bäume, Tabellen und Menü-Bars. Tests, die diese Komponententypen verwenden, lassen sich aufgrund der fehlenden Entsprechung nicht wiederverwenden. Dafür gibt es aber häufig fachlich entsprechend andere Konzepte in der Welt der mobilen Apps. Aus der Sicht der Testspezifikation bleibt damit bislang alles beim Alten. Wenn es allerdings um das Starten der App geht, dann steckt der Teufel im Detail.

[ header = Automatisierte Tests im mobilen Umfeld – der Umstieg aus der Desktopwelt – Teil 2 ]

Von Sandkästen und anderen Schwierigkeiten: AUTs starten

Der Tester kann also wie gewohnt Tests in der ITE unter Verwendung der beiden neu eingeführten Toolkits schreiben. Doch wie sieht es aus, wenn es darum geht, die App zu starten oder gar einen Test auszuführen? Im Bereich der mobilen Applikationen sind an dieser Stelle einige Besonderheiten zu beachten, die im Folgenden näher beschrieben werden.

In iOS gibt es eine Reihe von Eigenschaften, die uns veranlasst haben, Konzepte wie das Starten von AUTs mit einer leicht geänderten Bedeutung zu versehen. Denn iOS-Applikationen können offiziell nur auf zwei Wegen gestartet werden:

  1. Die App startet implizit aus Xcode (der Entwicklungsumgebung für iOS) heraus, wobei der Entwickler seine App direkt aus der IDE auf dem Simulator (oder dem iOS-Gerät) installiert. Da der Tester jedoch in den seltensten Fällen ein Entwickler ist und nicht in allen Fällen über einen Mac-OS-Rechner verfügt (denn ausschließlich darauf lässt sich Xcode betreiben), ist diese Startvariante einer iOS-App für uns nicht ausreichend, s. Kasten „Einsatz in der CI“).
  2. Die zweite Variante, eine iOS-App zu starten, ist, diese explizit durch den Anwender mittels einfachem Tap vom Applikationsbildschirm aufzurufen. Dies kann zwar für den Simulator auch nur auf einem Mac-OS-Rechner erfolgen, erfordert aber keinen Entwickler mit IDE-Kenntnissen. Auch ist diese Variante problemlos durch den Tester durchführbar, sobald die Applikation auf einem iOS-Gerät vorliegt.

Einsatz in der CI:
Um eine durchgängige CI-Anbindung zu erreichen, ist man aktuell weiterhin auf die Lösung von Drittanbietern angewiesen. Diese nutzen die von Xcode bereitgestellte Schnittstelle (wie bspw. iphone sim) und erfordern daher ebenfalls den Einsatz eines Mac-OS-Rechners.

Für uns bedeutet dieser Umstand, dass die AUT aus der ITE heraus nicht direkt gestartet werden kann, sondern lediglich ein connect to AUT durchgeführt wird, sobald der Anwender die Aktion start AUT auslöst. Aus eben diesem Grund müssen als AUT-Konfiguration nur der Hostname/die IP-Adresse des Geräts und eine Portnummer eingestellt werden, über die dann eine TCP/IP-Verbindung zur AUT aufgebaut wird. Im Umkehrschluss bedeutet dies, dass die AUT bereits gestartet sein muss, bevor in der ITE oder im Kommandozeilentool testexec ein start AUT ausgelöst wird. Darüber hinaus müssen sich ITE und AUT im selben „Netz“ befinden (s. Kasten: „Netzwerkkommunikation zwischen ITE und AUT“). Unter [1] finden Sie eine Liste der unterstützten Geräte und Modelle.

Netzwerkkommunikation zwischen ITE und AUT
Die ITE muss in der Lage sein, via Netzwerkkommunikation eine Verbindung zur AUT aufzubauen. Für eine im Simulator gestartete AUT ist es daher erforderlich, dass der Mac-OS-Rechner und der Rechner, auf dem die ITE läuft, untereinander erreichbar sind. Für eine auf einem iOS-Gerät gestartete AUT müssen sich dazu der ITE-Rechner und das iOS-Gerät im selben Netz befinden. Das lässt sich am einfachsten realisieren, indem sich das iOS-Gerät entweder in einem internen WLAN befindet oder ein Bluetooth-PAN (Personal Area Network) zwischen ITE-Rechner und iOS-Gerät eingerichtet.

Der technisch versierte Leser wird sich an dieser Stelle sicherlich fragen: Ist meine App tatsächlich von außen via TCP/IP erreichbar? – An dieser Stelle können wir Sie beruhigen: Nein, natürlich nicht – es sei denn, Sie wollen erfolgreich Testautomatisierung betreiben!

In iOS gibt es grundlegende Sicherheitsmechanismen für Apps, zu denen auch das so genannte Sandbox-Prinzip zählt: Demnach kann keine App auf Ressourcen oder Interna einer anderen App zugreifen – jede Applikation läuft zu jedem Zeitpunkt in ihrem eigenen, privaten „Sandkasten“. Auf diese Art und Weise wird verhindert, dass Applikationen Daten ausspähen und Schindluder damit betreiben.

Für die Testautomatisierung ist es aber unabdingbar, dass auf eben solche Interna, wie beispielsweise UI-Komponenten und deren Zustände, zugegriffen werden kann. Aus eben diesem Grund muss eine AUT für die Testbarkeit minimal modifiziert werden: Es muss eine statische Bibliothek mit in den Kontext der AUT „gelinkt“ und der Port festgelegt werden, über den die Kommunikation abgewickelt wird.

Zusammenfassend lässt sich sagen, dass diese Modifikation an der AUT lediglich konditional für die Testautomatisierung vorgenommen wird und, sofern korrekt durchgeführt, keinerlei Auswirkungen auf die Sicherheit der produktiven Variante der App hat.

Sobald diese Vorkehrungen getroffen sind, kann sich der Tester in der ITE via start (=connect) to AUT zu einer bereits laufenden, leicht modifizierten Version seiner App als AUT verbinden und mit dem aus anderen Toolkits wie Swing und SWT bekannten „Object Mapping“ fortfahren.

Objekt Mapping

Im Object-Mapping-Editor stellt der Tester die konkrete Verbindung zwischen dem in der Testspezifikation verwendeten logischen Platzhalter, dem Component Name, und der realen, aus der AUT stammenden, grafischen Komponente her. Dazu muss der Tester bspw. in SWT/RCP den Mauszeiger über die einzusammelnde grafische Komponente bewegen und ein vordefiniertes Tastenkürzel drücken. Diese Art der Interaktion zum Einsammeln ist in iOS aus zwei Gründen nicht möglich:

  1. Es gibt keinen Mauszeiger und damit keine aktuelle Mausposition auf dem Bildschirm.
  2. Es gibt nur in den seltensten Fällen (bspw. bei Textfeldern) eine sichtbare Tastatur, um einen Shortcut auszulösen.

Aus diesem Grund haben wir uns dazu entschieden, das Einsammeln von UI-Komponenten in iOS über Gesten abzubilden. Befindet sich der Tester im aktiven Object-Mapping-Modus, kann er folgende drei Gesten verwenden, um grafische Komponenten einzusammeln:

  1. Ein einzelner Tap auf eine grafische Komponente entspricht dem Mapping in SWT/RCP. Es wird genau die Komponente eingesammelt, die der Tester getappt hat. Und eben hier besteht eine Herausforderung in iOS. Betrachtet man zum Beispiel einen simplen Button, so „zerfällt“ dieser intern in verschiedene Teilkomponenten: Einerseits in das UILabel, das die Beschriftung des Buttons repräsentiert, und andererseits in den eigentlichen, umgebenden UIButton. Um Tests mit der korrekten Buttonsemantik durchführen zu können, ist es aber erforderlich, eben diesen umgebenden Button einzusammeln und zu mappen und nicht das innenliegende Label, welches beispielsweise – im Gegensatz zum Button – kein Selektionskonzept bietet. Der Anwender trifft aber häufig, nicht zuletzt aufgrund des verwendeten „Mapping-Geräts“ (seines Fingers) lediglich das innenliegende Label. Aus diesem Grund gibt es zusätzlich die folgenden Mapping-Gesten:
  2. Ein doppelter Tap auf eine grafische Komponente. Diese Geste führt dazu, dass nicht nur die Komponente selbst, sondern ebenfalls alle unterstützten Elternkomponenten eingesammelt werden. Dies ist sehr nützlich für den zuvor beschriebenen Fall – der Tester führt einen doppelten Tap auf einem UIButton oder dessen innenliegendem UILabel aus, und es werden gleichzeitig beide Komponenten eingesammelt. Der Tester kann dann im Object-Mapping-Editor entscheiden, welche technische Komponente er ansprechen möchte. An dieser Stelle ist es wichtig, immer die Komponente zu wählen, die das semantisch höherwertige Konzept unterstützt: Befindet sich beispielsweise ein UILabel in einem UIButton, der sich wiederrum in einer UITableView befindet, so ist es empfehlenswert, die UITableView als Liste innerhalb des Tests inhaltsbasiert anzusprechen.
  3. Als dritte Möglichkeit kann der Tester einen Long-Tap (mind. 2 Sekunden) auf dem Bildschirm durchführen. Diese Geste führt dazu, dass sämtliche sichtbare Komponenten auf dem Bildschirm eingesammelt werden – hilfreich, wenn Komponenten keine Gesten erkennen können (bspw. weil sie „disabled“ sind) oder wenn sie, aufgrund ihrer Größe oder Position, nicht getappt werden können. Wir empfehlen diese Art des Einsammelns nur zu verwenden, falls Variante 1 oder 2 nicht funktionieren, da sie zu einer größeren Menge an eingesammelten Komponenten führt, aus denen man sich erst die richtige wieder heraussuchen muss.

Als visuelles Feedback wird eine Mapping-Geste in iOS durch ein Aus- und Einblenden der grafischen Komponente verdeutlicht.

Testausführung

Sobald der Tester das Mapping durchgeführt hat, steht der Testausführung nichts mehr im Wege. Sie unterscheidet sich – zur Abwechslung einmal – nicht von der Testausführung für andere UI-Toolkits. Auch hier kommt zur Laufzeit des Tests die heuristische Objekterkennung zum Tragen, die sich auch bereits in SWT/RCP, HTML, .NET und Swing bewährt hat. An dieser Stelle dazu nur ein kurzer Hinweis: Wessen iOS-Komponenten in der AUT dem UIAccessibilityIdentification-Protokoll entsprechen, der kann sich über eine signifikant verbesserte Objekterkennung während der Testausführung freuen. Denn dieser eindeutige Bezeichner trägt in unserem Standardprofil zum Wiederfinden von grafischen Komponenten bereits zu 60 Prozent von geforderten 85 Prozent zu der Ermittlung der Ähnlichkeit von Komponenten bei.

Erste eigene Ergebnisse

Wer jetzt mit der Testautomatisierung für iOS loslegen möchte, der sollte sich GUIdancer in Version 7.0 herunterladen – die neue Version steht ab sofort zur Verfügung [2]. Technisch unterstützt werden alle iOS-Applikationen, die auf dem iOS SDK 5 und höher aufsetzen. Wie oben erwähnt, laufen bereits die ersten internen Vorbereitungen zur Unterstützung von Android, und auch Windows Phone steht auf unserer Agenda. Auch in diesen Toolkits ist zu erwarten, dass wir Altbekanntes bewahren und transferieren können sowie Neues dazulernen werden.

Geschrieben von
Alexandra Schladebeck
Alexandra Schladebeck
Alex Schladebeck ist Leiterin der Software Qualität und Test Consulting bei BREDEX GmbH. Sie verbringt ihre Zeit in Kommunikation mit Kunden, Testern, Benutzern und Entwicklern. Besonders interessiert sich Alex neben Benutzerfreundlichkeit und Ergonomie auch für Agilität in Test- und Entwicklungsprozessen. Sie spricht häufig auf Konferenzen über Agilität und Qualitätssicherung aus Sicht ihrer Projekterfahrung.
Markus Tiede
Markus Tiede
Markus Tiede arbeitet ebenfalls als Softwareentwickler und Testberater bei der BREDEX GmbH mit den Schwerpunkten auf Eclipse-RCP-Entwicklung und Design von automatisierten Regressionstests. Markus ist darüber hinaus Eclipse Committer im UI-Testautomatisierungsprojekt Jubula, Package Maintainer für „Eclipse for Testers“ und hat einen Abschluss als Diplom-Informatiker von der FH Braunschweig-Wolfenbüttel.
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.