<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Context-Dependent App Testing</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Tim A. Majchrzak</string-name>
          <email>tima@ercis.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Matthias Schulte</string-name>
          <email>Matthias.Schulte@viadee.de</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>University of Agder</institution>
          ,
          <addr-line>Kristiansand</addr-line>
          ,
          <country country="NO">Norway</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>viadee Unternehmensberatung GmbH</institution>
          ,
          <addr-line>Munster</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Software quality of apps often is low, which at least partly results from problems with testing them. A main problem are frequent context changes that have to be dealt with. Network parameters such as latency and usable bandwidth change while moving; usage patterns vary. To address context changes in testing, we propose a novel concept. It is based on identifying blocks of code between which context changes are possible. It helps to greatly reduce complexity.</p>
      </abstract>
      <kwd-group>
        <kwd>app</kwd>
        <kwd>mobile</kwd>
        <kwd>test</kwd>
        <kwd>testing</kwd>
        <kwd>context</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        Mobile applications { apps { draw greatly from the possibilities o ered by devices
such as smartphones and tablets, e.g. by making use of localization via GPS.
Software testing is a main challenge in app development. Testing software is
a cumbersome task [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] and requires sophistication. App testing poses several
particularities: Apps are not developed on the platform they run (mobile device)
but on a PC. Testing on emulators will not yield the same results as testing
natively. This also makes it laborious and hard to automate. Moreover, tool
support currently is limited. Finally, many apps combine various technologies
and programming languages.
      </p>
      <p>Testing is greatly in uenced by context. Mobile devices are subject to many
di erent contexts; the simplest one is location, since mobility typically means
frequent changes of position. There are many further context changes such as
network condition, availability of data from sensors, and even social issues such as
sharing devices. Thus, devices need to be tested taking context into considerations.</p>
      <p>We propose a novel approach for software testing of apps that takes into
account context changes. Our contributions are a sketch of context as an in
uencing factor of apps, the introduction of our unique approach for handling context
in testing, and the demonstration of a real-life scenario to underline feasibility.</p>
      <p>This paper is structured as follows. Section 2 highlights the relevance of
context changes. Section 3 explains our approach. Application, limitations and
challenges are discussed in Section 4.</p>
    </sec>
    <sec id="sec-2">
      <title>Mobile Devices and Context</title>
      <p>The usage paradigm of apps contrasts that of applications on PCs and that of
Web sites (Webapps). The main di erence is mobility. Even if an app not explicitly
battery status
dynamic
hardware
context
currently
available
memory
variation of
available
space
memory</p>
      <p>disk space
static
screen size
and resolution
component
configuration processing power
availability</p>
      <p>accuracy
geolocation
technologies
physical context
sensor data
devices / objects</p>
      <p>around
partly
measured</p>
      <p>by
motion
position
environment
business
private
in meeting
etc.</p>
      <p>Bluetooth</p>
      <p>USB</p>
      <p>NFC
etc.</p>
      <p>has
effects on
level of
attention
situation</p>
      <p>Influences … of week
connectivity
direct
communication
social context
time</p>
      <p>data cellular
bandwidth network com. context network</p>
      <p>status status
… of day
latency
available
roaming
unavailable
application
lifecycle
application
system
3rd party
system apps
software context operating system</p>
      <p>Android version
vendor specific
adjustments
takes notice of mobility it is in uenced by it due to changing conditions e.g.
regarding connectivity. Apps might be halted on external events such as incoming
phone calls. Moreover, they are built to be used in a changing environment.</p>
      <p>Consequently, apps are heavily in uenced by context but are also capable of
making use of it. To give an example: when you drive out of town your smartphone
might need to switch to a cellular system providing less bandwidth (adaption
to context) but help you nd a nearby swimming lake by matching geolocation
information with map data (utilization of context).
2.1</p>
      <sec id="sec-2-1">
        <title>Contexts Relevant for Mobile Devices</title>
        <p>In the following, we propose a categorization scheme for app context that
distinguishes ve core contexts. It is sketched in Figure 1.</p>
        <p>Firstly, there is the hardware context. Apps run on a multitude of devices,
ranging from smartwatches to TVs. Components of devices greatly di er, leading
to various screen sizes, resolutions, sensors, and input means besides touch to
name just a few. Apps might not nd the kind of hardware they require for proper
operation and might need to adapt to hardware of di erent quality. Additionally,
available memory and battery capacity have to be taken into consideration. The
situation is worsened by the rapid progress in hardware development, making
requirements very hard to forecast. The problem can be handled by seeking for a
kind of \greatest common divisor" among devices. Context testing should include
various possibilities of encountered hardware, e.g. with a sensor being present
or not, and considering di erent levels of quality (such as precision). A testing
strategy similar to equivalence partitioning [13, p. 28] might be chosen.</p>
        <p>
          Fragmentation in terms of hardware goes along with software fragmentation,
forming the software context. With at least four popular platforms [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ], each
existing in a variety of versions and some even modi ed by the hardware vendors,
app development is problematic. It is unlikely that soon a cross-platform approach
[
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] will alleviate the problem. In fact, apps existing both in a native version and
as a mobile Webapp even complicate testing. Context-related problems might
also arise from the combination of contextual factors of hardware and software.
        </p>
        <p>
          Mobility means that the physical context is continuously changing [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ].
Location determines factors such as connectivity [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ]. Most devices have one or more
means to determine their location. The physical context also comprises other
devices that can be contacted with technology such as Bluetooth and Near Field
Communication (NFC). Moreover, devices are usually equipped with a number
of context-depended sensors such as gyroscopes, thermometers and similar units.
        </p>
        <p>Depending on the location, connection parameters such as availability,
bandwidth and latency vary. This forms the communication context. it is in uenced by
static (e.g. the carrier of a user's choice) and dynamic factors. Location typically
determines which mobile services are available and which bandwidth can be used.
Apps ought to be robust and maintain functionality in o ine scenarios. Testing
includes simulations of small bandwidths, high latencies, changes in connection
quality, and abrupt unavailability of service as well as resuming service.</p>
        <p>
          The social context is harder to grasp than the other context categories. It
comprises of user-speci c ways of using an app. Firstly, more and more mobile
devices are used both for work and for private purposes as part of Bring your
own device (BYOD) [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ] policies. Some apps are used for work, others are used
for personal reasons, and some for both (but probably used in a di erent way).
Secondly, some devices are used by more than one person. Di erent people use
apps uniquely despite there typical set-up single-user scenarios. Thirdly, users'
attention span will not be the same in all situations. This can be explained with
the mobile nature: a person that uses the smartphone while walking would risk
bumping into a street light if constantly staring on the screen. The social context
is very challenging for testing; its factors are fuzzy, hard to estimate and in many
cases impossible to exhaustively simulate.
        </p>
        <p>In consequence, app testing has to be adjusted. Frequent changes of context
have to be expected and patterns of change not necessarily are predictable. The
multiplicativity of contexts makes testing more complex and time-consuming.
2.2</p>
      </sec>
      <sec id="sec-2-2">
        <title>Related Work</title>
        <p>
          The relevance of context in mobile computing has been discussed as early as in
2001 [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ]. Despite varying notations, context is often used in connection with
awareness, i.e. devices' ability to perceive changes and react accordingly [
          <xref ref-type="bibr" rid="ref20 ref4">4, 20</xref>
          ].
        </p>
        <p>
          Standard testing literature is valuable since Web-based applications are
typically covered (e.g. [17, Chap. 22]). Techniques for testing of graphical user
interfaces (GUI) can be applied to apps. Mobility is sometimes covered. Factors
such as di erent connection speeds of mobile services [15, pp. 166] might be
addressed despite not explicitly discussing context. However, textbooks on app
development often do not address testing but for some exceptions such as [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ].
        </p>
        <p>
          There is a variety of { typically research-in-progress { papers on app testing.
Directions of research are automation [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ], user-centered testing [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ], tools [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ],
approaches [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ], and user interface testing [
          <xref ref-type="bibr" rid="ref21 ref5">21, 5</xref>
          ]. All these papers tackle testing
of apps but are conceptually di erent to our approach. In a work complementary
to ours, Amal tano et al. [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ] consider context as the result from events triggered
by the user, the phone, or external activities. They propose to identify patters
and use them for manual, mutation-based and exploration-based testing.
3
        </p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Context-Sensitive Testing</title>
      <p>To combine context changes with app testing, it has to be possible to automatically
change context parameters whilst test cases are executed. The naive approach
would be to specify the context for each test case a priori. Asserting that a single
code unit produces an expected output in a certain context would not be helpful
for testing business processes, though. As many in uencing contextual factors
are not static but change constantly during usage, a dynamic approach is needed.</p>
      <p>Being able to specify context changes still is static if they have to be stated
within test cases. For scenarios including di erent variations of context many
test cases are required, each containing the same test code. This multiplication
is not desirable. Test cases would be costly to develop and hard to maintain.
3.1</p>
      <sec id="sec-3-1">
        <title>General Considerations and Principles</title>
        <p>To provide a solution that fosters dynamic changes of context, we use
modularization. Test cases are split into blocks; between each block a change of context
is possible. Blocks are reused and combined with context changes. Therefore,
testing di erent scenarios is possible without duplication of test code. As blocks
are the foundation of our concept, we call it block-based context-sensitive testing.</p>
        <p>A given test case may result in a number of blocks, each containing operations
and assertions. Similar to unit testing frameworks, operations are needed to
simulate user interaction; assertions are used to verify expected behavior. Our
idea is to derive blocks from existing test cases. A single case may be transformed
into a structure of blocks that can be used to generate context-dependent ones. To
preserve the test case's intention, blocks are ordered and executed consecutively.</p>
        <p>Listing 1.1 illustrates in a schematic way how a test case looks like. If the test
code itself would be divided into blocks, this schematic test case contains two of
them: one from lines 3 to 7 (block A) and one from lines 10 to 12 (block B ).</p>
        <p>The scope of each block has to be atomic w.r.t. changing contexts. In other
words, during execution of test operations belonging to one single block, the
∅</p>
        <p>Block 1
seg
n
a
tC Block 2
h
x
e
t
n
o
C</p>
        <p>Block 3
Block 4</p>
        <p>A d.1
A d.2
A d.3
A d.4
Context
Change
A 1.1
A 1.2</p>
        <p>A 2.2</p>
        <p>A 2.4
Context 1</p>
        <p>Context 2
context remains stable. Only between blocks changes of context are possible
(lines 2 and 9). To realize di erent scenarios, only the context changes in between
have to be altered. The solution is expected to be most bene cial utilizing a
generator that automatically creates test cases from blocks. Manual e ort for
writing context-sensitive test cases is reduced and redundant test code minimized.
1 public void
2 contextCha ntegset(EcxoanmtepxlteA( )) f;
3 clickSomewhere ( ) ;
4 enterText ( ) ;
5 c l i c k B u t t o n ( ) ;
6 . . .
7 asse rtThat ( ) ;
8
9
10
11
12
contextChange ( contextB ) ;
doSomeOtherThings ( ) ;
. . .
asse rtThat ( ) ; g</p>
        <p>Listing 1.1. Schematic Test Case with Context Changes</p>
        <p>Assertions have to be extracted from blocks due to their potential dependency
on a context. For each block at least one default assertion has to be assigned,
which veri es the app's standard behavior. For each known context, a speci c
assertion may be de ned to assess context-dependent behavior. The blocks shown
in the schematic test case in Listing 1.1 therefore have to be tailored smaller.
Strictly spoken, assertions in lines 7 (Block A) and 12 (Block B) are not part of the
blocks but have to be treated as another building block of our concept. Depending
on the app's expected behavior, assertions may be default or context-sensitive.</p>
        <p>The building blocks of block-based context-sensitive testing are shown in
Figure 2. The structure of a test case is depicted by an ordered list of blocks.
3.2</p>
      </sec>
      <sec id="sec-3-2">
        <title>Context-Dependent Test Case Execution and Example</title>
        <p>A possible test execution is illustrated in Figure 3. The beginning of the test
case is denoted as the empty set. Before the rst block is executed, Context 1 is
established. Next, an assertion tting to the current context is searched: there is
one for Context 1. As the assertion holds, execution continues. Between Block 1
and Block 2 the context is changed again. This time, Context 2 is established and
kept for the remaining execution. The second block is executed similarly to the
rst one. This changes when reaching Block 3, which does not have any speci c
assertions. Consequently, the expected behavior is invariant between various
contexts and the default assertion is evaluated. Finally, Block 4 is executed
together with assertion A 2.4, which is the assigned assertion for Context 2.</p>
        <p>As shown in the matrix in Figure 2, there are numerous execution paths as
prior to each block the context is changeable and alternative assertions can be
de ned. The matrix grows with the number of contexts but typically is sparse.</p>
        <p>To illustrate practical bene ts, we implemented a proof-of-concept tool and
evaluated the approach in cooperation with an industry partner. We used
a simple app to explain how it works: a client for the micro blogging
service Twitter, which allows logging in to the service and posting messages.
To prepare the setting, a jar archive containing our proof-of-concept has to
be added to the classpath of the app's Android testing project. Moreover, as
the Internet connectivity has to be changed to test the app in various
contexts, ACCESS NETWORK STATE and CHANGE NETWORK STATE permissions have to
be added to the AndroidManifest.xml of the app if not already contained.</p>
        <p>The process steps for testing are logging in with invalid credentials, logging in
with correct credentials, and posting a message. Each step can be conducted in a
di erent context. Listing 1.2 shows the rst block implemented with our solution.
The test operations are implemented in the operation part of the block (lines 4
to 7). The credentials are invalid: the app is expected to show a corresponding
message. This is checked by the default assertion (lines 8 to 10). However, if the
app is in disconnected context, it is expected to show an error message. This
context-dependent behavior is veri ed by an alternative assertion (lines 14 to 16).
l o g i n I n c o r r e c t B l o c k . a d d A l t e r n a t i v e A s s e r t i o n ( discContext , new</p>
        <p>A s s e r t i o n ( ) f
public void
a s s e r t T r u e (a wssaeitr FtioornT(e)xt f("Could not l o g i n : No connect ion . " ) ) ;</p>
        <p>Listing 1.2. Sample Block implementation</p>
        <p>For each of the above stated process steps a block with context-speci c
assertions is implemented and added to a list of blocks. A generator creates test
cases as di erent mutations in terms of context changes from that list. In one
possible test case, the rst two blocks are executed in connected context and
their default assertions are used for verifying. Before executing the third block,
the context is changed. The context dependent assertion for that block checks
whether in the disconnected context the message \No connection" is shown. Even
in a small scenario as shown here a lot of di erent execution paths are possible:
testing without our approach would be burdensome.</p>
        <p>We used two sample generators to create test cases from the blocks explained
above. In each test case the generator changes the context at di erent steps in
the process. Finally, test cases are executed by means of JUnit. Like any other
test for the Android platform, they are running on the device or emulator itself.
4</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Discussion and Conclusion</title>
      <p>In this paper we presented block-based context-sensitive testing. Our concept
extends the literature of context-sensitivity in mobile computing. We have shown
the viability of our approach in a case study and by presenting a prototype.</p>
      <p>
        Out proof-of-concept Android tool is written in Java and can be checked
out from GitHub [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. Release under the Apache License allows free usage and
modi cation; studying the source code will allow rapid development of similar
tools for platforms such as Apple iOS. While the tool is not a core contribution
of our work, it demonstrates the feasibility of our approach.
      </p>
      <p>We found that by using our proof-of-concept it is possible to test apps in
various contexts e ectively. Blocks of test code are reusable and thus the e ort
in writing tests is reduced. Using generators the concept even gets more e ective.
Testers only have to implement blocks and de ne context-speci c assertions once.
Our approach also helps to nd errors in code units where they are not expected.</p>
      <p>However, our concept cannot (yet) be a panacea. We deem it a supportive
mean for testing parts of apps which are heavily in uenced by context. Due to
the novelty of our approach, several limitations exist. Firstly, having a ordered
linear list of blocks allows for only one way of execution, but the order of blocks
and the decision if a block is executed may depend on the context used. We
introduced a method for aborting test case execution to cope with this. Anyhow,
our concept is not able to deal with process steps that only have to be executed
in certain contexts. Secondly, the case study is an example of feasibility, yet not
exhausting. E ectiveness has to be proven both qualitatively and quantitatively.
Thirdly, our prototype is scarcely commented and not yet very user friendly.</p>
      <p>These limitations have to be kept in mind yet do not question the general
feasibility of our approach. In fact, they lead to future work. The most important
task is an extension of our tool. Better support for test case generation w.r.t.
context selection is desirable. Compiling best practices for context-sensitive
testing would complement our work. A general challenge is to become able to
cope with ample contexts. While our approach theoretically is capable of dealing
with arbitrary context changes, actually simulating them for testing is very hard.</p>
      <p>
        Future work needs to re ne our concept and investigate into the consequences
of context changes. Moreover, we will scrutinize the relationship of our work to
other methods, e.g. data-driven testing [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. We will also have a look at di erent
domains that might share properties important for testing. For example, the
context-dependence described here might similarly be found in embedded systems.
      </p>
    </sec>
    <sec id="sec-5">
      <title>Acknowledgments</title>
      <p>We would like to thank viadee Unternehmensberatung GmbH for their support.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1. Amal tano, D.,
          <string-name>
            <surname>Fasolino</surname>
            ,
            <given-names>A.R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tramontana</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Amatucci</surname>
          </string-name>
          , N.:
          <article-title>Considering context events in event-based testing of mobile applications</article-title>
          .
          <source>In: Proc. ICSTW</source>
          . pp.
          <volume>126</volume>
          {
          <fpage>133</fpage>
          . IEEE CS (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Anand</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Naik</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Harrold</surname>
            ,
            <given-names>M.J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Yang</surname>
          </string-name>
          , H.:
          <article-title>Automated concolic testing of smartphone apps</article-title>
          .
          <source>In: Proc. ACM SIGSOFT FSE '12</source>
          . pp.
          <volume>59</volume>
          :
          <issue>1</issue>
          {
          <fpage>59</fpage>
          :
          <fpage>11</fpage>
          .
          <string-name>
            <surname>ACM</surname>
          </string-name>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Baker</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dai</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Grabowski</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          , Haugen, .,
          <string-name>
            <surname>Schieferdecker</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Williams</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Data-driven testing</article-title>
          .
          <source>In: Model-Driven Testing</source>
          , pp.
          <volume>87</volume>
          {
          <fpage>95</fpage>
          . Springer (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4. Bohmer,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Lander</surname>
          </string-name>
          ,
          <string-name>
            <surname>C.</surname>
          </string-name>
          , Kruger, A.:
          <article-title>What's in the apps for context?</article-title>
          <source>In: Proc. 2013 UbiComp Adjunct Pub</source>
          . pp.
          <volume>1423</volume>
          {
          <fpage>1426</fpage>
          .
          <string-name>
            <surname>ACM</surname>
          </string-name>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Choi</surname>
          </string-name>
          , W.:
          <article-title>Automated testing of graphical user interfaces: A new algorithm and challenges</article-title>
          .
          <source>In: Proc. ACM WS on MobileDeLi</source>
          . pp.
          <volume>27</volume>
          {
          <fpage>28</fpage>
          .
          <string-name>
            <surname>ACM</surname>
          </string-name>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6. contextTesting @GitHub (
          <year>2014</year>
          ), https://github.com/viadee/contextTesting
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Disterer</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kleiner</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Using mobile devices with BYOD</article-title>
          .
          <source>Int. J. Web Portals</source>
          <volume>5</volume>
          (
          <issue>4</issue>
          ),
          <volume>33</volume>
          {
          <fpage>45</fpage>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Gao</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bai</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tsai</surname>
          </string-name>
          , W.T.,
          <string-name>
            <surname>Uehara</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>Mobile application testing</article-title>
          .
          <source>Computer</source>
          <volume>47</volume>
          (
          <issue>2</issue>
          ),
          <volume>46</volume>
          {
          <fpage>55</fpage>
          (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9. Gartner Press Release (
          <year>2012</year>
          ), http://www.gartner.com/it/page.jsp?id=
          <fpage>1924314</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Gomez</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Neamtiu</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Azim</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Millstein</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>Reran: Timing- and touch-sensitive record and replay for android</article-title>
          .
          <source>In: Proc. ICSE '13</source>
          . pp.
          <volume>72</volume>
          {
          <fpage>81</fpage>
          . IEEE Press (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Haller</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          :
          <article-title>Mobile testing</article-title>
          .
          <source>SIGSOFT Softw. Eng. Notes</source>
          <volume>38</volume>
          (
          <issue>6</issue>
          ), 1{8 (Nov
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12. Heitkotter, H.,
          <string-name>
            <surname>Hanschke</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Majchrzak</surname>
            ,
            <given-names>T.A.</given-names>
          </string-name>
          :
          <article-title>Evaluating cross-platform development approaches for mobile applications</article-title>
          .
          <source>In: LNBIP</source>
          , vol.
          <volume>140</volume>
          , pp.
          <volume>120</volume>
          {
          <fpage>138</fpage>
          . Springer (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Majchrzak</surname>
            ,
            <given-names>T.A.</given-names>
          </string-name>
          :
          <source>Improving Software Testing</source>
          . Springer, Heidelberg (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Milano</surname>
          </string-name>
          , D.T.:
          <article-title>Android application testing guide</article-title>
          .
          <source>Packt</source>
          (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Nguyen</surname>
            ,
            <given-names>H.Q.</given-names>
          </string-name>
          :
          <article-title>Testing Applications on the Web</article-title>
          . Wiley (
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Nugroho</surname>
            ,
            <given-names>L.E.</given-names>
          </string-name>
          :
          <article-title>A context-based approach for mobile application development</article-title>
          .
          <source>Ph.D. thesis</source>
          , Monash University (
          <year>2001</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Perry</surname>
          </string-name>
          , W.:
          <article-title>E ective methods for software testing</article-title>
          . Wiley, New York, 3rd edn. (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Schilit</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Adams</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Want</surname>
          </string-name>
          , R.:
          <article-title>Context-aware computing applications</article-title>
          .
          <source>In: Proc. of the 1994 1st WMCSA</source>
          . pp.
          <volume>85</volume>
          {
          <fpage>90</fpage>
          . IEEE CS (
          <year>1994</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Schmidt</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Beigl</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gellersen</surname>
            ,
            <given-names>H.W.</given-names>
          </string-name>
          :
          <article-title>There is more to context than location</article-title>
          .
          <source>Computers &amp; Graphics</source>
          <volume>23</volume>
          (
          <issue>6</issue>
          ),
          <volume>893</volume>
          {
          <fpage>901</fpage>
          (
          <year>1999</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Taranu</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tiemann</surname>
          </string-name>
          , J.:
          <article-title>General method for testing context aware applications</article-title>
          .
          <source>In: Proc. 6th Int. Workshop on MUCS</source>
          . pp.
          <volume>3</volume>
          {
          <issue>8</issue>
          .
          <string-name>
            <surname>ACM</surname>
          </string-name>
          (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Yeh</surname>
            ,
            <given-names>C.C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Huang</surname>
            ,
            <given-names>S.K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chang</surname>
          </string-name>
          , S.Y.:
          <article-title>A black-box based android GUI testing system</article-title>
          .
          <source>In: Proc. 11th MobiSys</source>
          . pp.
          <volume>529</volume>
          {
          <fpage>530</fpage>
          .
          <string-name>
            <surname>ACM</surname>
          </string-name>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>