Tag Archives: Eclipse

Introduction To MGT

Part of a series about the personal project MGT. See here for details.

The MGT project started as a thesis in 2012. MGT stands for Mobile GUI Testframework. The Framework contains a keyword based Test Language, an architecture, that uses Eclipse Plug-ins as Adapters for the different platforms and, well, the adapters. But let’s start at the beginning.

The thesis was motivated as follows. Compared to native desktop applications and also web applications mobile apps are distributed to a bigger count of platforms. The current hype of smartphones and tablets caused the creation of millions of apps. While there exist several tools for cross platform app creation (e.g. PhoneGap), testing is left out (as always). Looking at the app-stores shows that software quality is also an issue of mobile software development. Therefor the goal of my thesis was to develop a test language (incl. tooling) that enables cross platform testing.

In times of agile development processes it was also important that those tests could be executed automatically. Since any platform has its own test drivers the language is based on a meta-model so that adapters for the different platforms can be implemented. The meta-model was also a prerequisite for the inclusion in the ‘MATE’ project.

So the goal of the thesis finally was the creation of a test language based on a meta model and the automatic test execution of tests defined in that language.

At the end MGT was the outcome of the thesis. This post will give an overview about the result of the thesis. Details are provided in other posts.
The whole product is based on Eclipse. There is no real justification for that choice. I just knew it already and it’s widely used at my university. The following image shows the big picture of the tool.

Concrete Architecture

So I built the meta-model with EMF and generate the language through EMFText. Into the generated EMFText code I included an Adapter Interface as extension point, whose implementations provide platform-specific actions. Those actions are the provision of usable keywords and GUI elements and the test execution. The provided keywords and elements are used for code completion and validation of the test model. As an example and proof of concept I implemented that interface for Android. Usable keywords are those of the Robotium framework. GUI element ids are extracted from the styles folder of the app to test. For the test execution a test model is converted into a valid JUnit test file and executed through Androids instrumentation framework.

Posts about the meta-model, test-language and the Android Adapter will be written soon.