Agile Performance Testing - Testing Experience
Agile Performance Testing - Testing Experience
Agile Performance Testing - Testing Experience
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Mobile <strong>Testing</strong> - A Toolkit for Advanced <strong>Testing</strong> -<br />
The Techie, The Simple and The Obvious<br />
The field of mobile1 testing poses unique challenges to the advanced<br />
software tester given its diversity and fast change pace.<br />
It is a world of many devices, ever changing operating systems,<br />
APIs, software components and screen resolutions as well as evolving<br />
customer demands, device designs and mobile network carriers.<br />
These characteristics of the Mobile software world aggravate<br />
the regular challenges faced by software testers. <strong>Testing</strong> has to<br />
be performed in a small window of time - between the tight and<br />
much abused deadlines of the coders and the short planned time<br />
to market of the marketing department. In order to cope with the<br />
high levels of uncertainty and to perform our work with high certainty<br />
(covering the important things) and deliver reproducible<br />
results, we must establish a stable testing platform with which<br />
to navigate through the stormy waters of new mobile platforms,<br />
application releases and tight schedules<br />
While testing world-leading mobile applications in our work<br />
places, our teams have developed over the years (since 2000)<br />
various techniques which allow us to cope with short release<br />
timelines, while only minimally compromising the continuous<br />
quality improvement for which the our products are known. It is<br />
important to remember that ‚testing technology‘ isn‘t just about<br />
the hardware/software technology used, but also about the techniques<br />
of the testing, i.e. the methodology and the way things are<br />
done.<br />
In this article we aim to present a range of useful techniques<br />
(though not a comprehensive one) we have gathered over the years<br />
in our SQA teams. We hope to offer a simple toolkit that will<br />
provide a jumpstart to making the life of mobile testers easier<br />
and help focus on the important things - the “bugs’ hideouts” -<br />
which lay behind the platforms’ built-in impediments.<br />
The Techie - Pure technique tools<br />
Simulating real-world scenarios by means of configurable data<br />
manipulation.<br />
The communication protocols connecting clients with servers are<br />
routed to a proxy mediator in order to simulate various server responses<br />
to the mobile device.<br />
A growing portion of mobile applications aims to provide information<br />
to customers. Two kinds of information are usually provided:<br />
static information hard-coded into the client or online<br />
1 Phones, PDAs and Smartphones<br />
by Dario Uriel Estrin & Bernard Shai Lelchuk<br />
© iStockphoto.com/shironosov<br />
updated information. 2The backend systems provide updated information<br />
upon request. This information changes as a function<br />
of various parameters – reality-related and user- related. Testers<br />
can set the user-related parameters, check the reality- related<br />
ones, and see whether the resulting information/application<br />
behavior is correct. However, such methodology impedes them<br />
from testing all possible results as reality is reality, i.e. chaotic and<br />
unpredictable. For instance, testing an instant messaging mobile<br />
client will require testing interactions with other users, server responses,<br />
network problems, etc. The best way we came up with to<br />
cover the system-centric scenarios was ‘controlling the world’, i.e.<br />
simulating server responses according to real- world input/triggers/responses.<br />
Simulating a server’s response for a given request<br />
(response which is for itself a function of responses provided by<br />
another system) allows us to isolate the mobile client behavior<br />
from real- world input and to focus on inter-system testing.<br />
In our case the response to the mobile application was sent via a<br />
comma- delimited data stream from one of the servers. The testing<br />
team learned how the stream looks like and behaves. Later,<br />
we built a testing server environment which generates responses<br />
according to variables set by the tester (this could be done by manually<br />
manipulating a text file with values or getting an HTML<br />
page to pick values from and which creates the file for the tester).<br />
This resulted in a valid comma-delimited response that was fed<br />
to the mobile client to be tested. This allowed us full control of<br />
the data that in its turn triggered the various logical paths of the<br />
application. Being able to easily simulate any possible scenario<br />
helped discovering flaws in the system, which may not have been<br />
discovered, if we had to count on the uncontrolled real-world<br />
data that is the input to the servers and application.<br />
Technically, we routed the device to a ‘server’ that was getting the<br />
status from our testing environment:<br />
1. We configured the device for data connections via a PC machine<br />
or used a device simulator on a PC machine. 3 This allowed<br />
us to control the routing path of data networking.<br />
2. We manipulated the address of the servers which the client<br />
was looking for and routed it to the testing environment<br />
described above. This was done in the Windows ‚hosts‘ file<br />
(usually located in the ‚C:\WINDOWS\system32\drivers\etc‘<br />
2 Static information on client or server consists of two types of<br />
data. One which is totally static and never changes (e.g. the number<br />
of players in a soccer team), and the other which is rarely updated by<br />
an external source (e.g. the number of teams in the soccer league).<br />
3 In which case the connections are obviously routed via the PC<br />
too.<br />
10 The Magazine for Professional Testers www.testingexperience.com