An Adaptation Model for Android Application Testing with Refactoring

Similar documents
Comparative Study of Automated testing techniques for Mobile Apps

An Automated Model Based Approach to Test Web Application Using Ontology

A Framework of Model-Driven Web Application Testing

Review of Mobile Applications Testing with Automated Techniques

International Journal of Advanced Engineering Research and Science (IJAERS) Vol-2, Issue-11, Nov- 2015] ISSN:

Mobile Device and Technology Characteristics Impact on Mobile Application Testing

Going Faster: Testing The Web Application. By Adithya N. Analysis and Testing of Web Applications Filippo Ricca and Paolo Tonella

AndroLIFT: A Tool for Android Application Life Cycles

CHAPTER 20 TESING WEB APPLICATIONS. Overview

A STUDY OF TESTING TECHNIQUES FOR WEB APPLICATIONS

Automated Model Based Testing for an Web Applications

Demonstration of an Automated Integrated Test Environment for Web-based Applications

How To Test A Web Based Application Automatically

Techniques and Tools for Rich Internet Applications Testing

Fault Localization in a Software Project using Back- Tracking Principles of Matrix Dependency

A Platform Independent Testing Tool for Automated Testing of Web Applications

The Hitchhiker's Guide to Mobile Apps Test Automation Galaxy

Industrial Adoption of Automatically Extracted GUI Models for Testing

Introduction to Automated Testing

An Automatic Tool for Checking Consistency between Data Flow Diagrams (DFDs)

Chapter 13: Program Development and Programming Languages

A Model for Classification of Issues and Strategies Related To Smart Phones Applications Testing

Requirements engineering

Mobile App Testing Guide. Basics of Mobile App Testing

Chapter 13: Program Development and Programming Languages

Mechanisms to support automated testing of mobile applications

Load testing with. WAPT Cloud. Quick Start Guide

How To Test Your Web Site On Wapt On A Pc Or Mac Or Mac (Or Mac) On A Mac Or Ipad Or Ipa (Or Ipa) On Pc Or Ipam (Or Pc Or Pc) On An Ip

Model Driven Testing AGEDIS Architecture Interfaces and Tools

Model-based approach to design web application testing tool

Method of Fault Detection in Cloud Computing Systems

I would like to express my gratitude to the following people who provided me with help and support through out this project.

A GUI Crawling-based technique for Android Mobile Application Testing

[Rokadiya,5(4): October-December 2015] ISSN Impact Factor

SOFTWARE TESTING TRAINING COURSES CONTENTS

Regression Testing of Web Services Using Parsing and Test case Prioritization Approach

A Monitored Student Testing Application Using Cloud Computing

Component visualization methods for large legacy software in C/C++

Finding Execution Faults in Dynamic Web Application

An Agent-Based Concept for Problem Management Systems to Enhance Reliability

Regression Testing Based on Comparing Fault Detection by multi criteria before prioritization and after prioritization

The "Eclipse Classic" version is recommended. Otherwise, a Java or RCP version of Eclipse is recommended.

Addressing Mobile Load Testing Challenges. A Neotys White Paper

Requirements engineering and quality attributes

WEB TESTING APPLICATION WITH PHP AUTOMATED TOOL

Automated testing for Mobility New age applications require New age Mobility solutions

GUI Testing On Android Application

Model Based Testing (MBT) J u n e

Develop enterprise mobile applications with IBM Rational software

Intelligent and Automated Software Testing Methods Classification

Latest Trends in Testing. Ajay K Chhokra

A Mobile Application for Bus Information System and Location Tracking using Client-Server Technology

Certifying Energy Efficiency of Android Applications

Student Attendance Through Mobile Devices

Introduction to Android

A Modular Approach to Teaching Mobile APPS Development

Getting Started with Android Development

Chapter 5. Regression Testing of Web-Components

Optimised Realistic Test Input Generation

Visualisation in the Google Cloud

Review of Computer Engineering Research CURRENT TRENDS IN SOFTWARE ENGINEERING RESEARCH

Reverse Engineering Techniques: from Web Applications to Rich Internet Applications

ANDROID APPLICATION FOR FILE STORAGE AND RETRIEVAL OVER SECURED AND DISTRIBUTED FILE SERVERS SOWMYA KUKKADAPU B.E., OSMANIA UNIVERSITY, 2010 A REPORT

Monitoring Databases on VMware

How Crawlers Aid Regression Testing in Web Applications: The State of the Art

Robotium Automated Testing for Android

DESIGN AND IMPLEMENTATION OF A FILE SHARING APPLICATION FOR ANDROID

International Journal of Engineering Technology, Management and Applied Sciences. November 2014, Volume 2 Issue 6, ISSN

Model Driven Testing of Web Applications Using Domain Specific Language

Literature Review: Starting Mobile Application Development for E-Sports Portal Hayoung Noh

Remote Android Assistant with Global Positioning System Tracking

Challenges in Android Application Development: A Case Study

Experiences in Test Automation for Multi-Client System with Social Media Backend

A Review of Different Comparative Studies on Mobile Operating System

TECHNOLOGIES MOBILE STRATEGY

Random Testing: The Best Coverage Technique - An Empirical Proof

Apache Web Server Execution Tracing Using Third Eye

Service Virtualization:

BCS THE CHARTERED INSTITUTE FOR IT. BCS HIGHER EDUCATION QUALIFICATIONS BCS Level 6 Professional Graduate Diploma in IT SOFTWARE ENGINEERING 2

Fuzzy Cognitive Map for Software Testing Using Artificial Intelligence Techniques

A Comparative Evaluation of approaches for Web Application Testing

Android Mobile App Building Tutorial

Topics in Website Testing. [Reading assignment: Chapter 14, pp ]

Statement of Direction

Winery A Modeling Tool for TOSCA-based Cloud Applications

MDE Opportunities in Multi-Tenant Cloud Applications

Cross Platform Mobile. -Vinod Doshi

Software Development In the Cloud Cloud management and ALM

Keywords Distributed Computing, On Demand Resources, Cloud Computing, Virtualization, Server Consolidation, Load Balancing

Technology in Action. Alan Evans Kendall Martin Mary Anne Poatsy. Eleventh Edition. Copyright 2015 Pearson Education, Inc.

Towards Collaborative Requirements Engineering Tool for ERP product customization

Cross Platform Applications with IBM Worklight

Revel8or: Model Driven Capacity Planning Tool Suite

Image Area. White Paper. Best Practices in Mobile Application Testing. - Mohan Kumar, Manish Chauhan.

Tools for Anomaly and Failure Detection in Web Applications

Open source Test Automation Tools for Mobile Applications A Primer

Assurance for Cloud Computing. Robert V. Binder Chicago Quality Assurance Association January 27, 2010

Delivering Quality in Software Performance and Scalability Testing

Copyright 1

TEST AUTOMATION FRAMEWORK

Transcription:

, pp. 65-74 http://dx.doi.org/10.14257/ijseia.2015.9.10.07 An Adaptation Model for Android Application Testing with Refactoring Maryam Ahmed 1, Rosziati Ibrahim 2 and Noraini Ibrahim 3 1,2,3 Department of Software Engineering 1,2,3 FSKTM, UTHM 86400 Parit Raja, Batu Pahat, Johor, Malaysia 1 hi120055@siswa.uthm.edu.my, 2 rosziati@uthm.edu.my, 3 noraini@uthm.edu.my Abstract Software testing is a set of activities that typically consumes roughly 50% of the total time and cost of testers during the software development process. Developing an enhanced technique to test mobile application becomes a necessity considering the high demand of mobile applications, android specifically, hence the need for software quality assurance. Adapting software testing model would not only lessen the cost incurred in the process of mobile application development but also increase the reliability of the software under test. In this paper, we discuss mobile application testing and its challenges. The Reweb and Testweb frameworks are also discussed followed by an adaptation model from both frameworks to improve testing of android applications. Asides from adapting these web application testing frameworks, another major contribution of our approach is the refactoring the source code before generating test cases to reduce redundancy in the test case library thereby improving the generated test case. Keywords: Refactoring, Android Application, Software testing, reweb, test web, test case 1. Introduction Android applications, often referred to as android apps or apps, are application software developed to run on smartphones, tablet and other devices running on Android OS [1]. The demand and market of these applications continue to rise as the capabilities of the smartphone approach desktop computing. Hence, assuring the quality of these applications can t be overemphasized. Software Testing incorporates lots of connected activities focusing on detecting faults in a system. Applying distinct methods and procedures can reveal software failures in the entire system, parts of it, or a unit of the software. Fault detection is the main focus in testing processes [2]. Software Testing, a component of software quality and reliability activities, is considered a fundamental part of software development with the aim of exposing bugs in the software under test (SUT). Given the complexity of contemporary mobile applications, it can aid as a tool for endorsement and validation of the of the software quality assurance hence of huge practical significance [3]. Therefore, it is essential that the testing process is well-planned and executed to avoid severe consequences due to faulty or incorrect execution plans. Software testing in the mobile application realm can be very different and exhaustive as discussed in [4-6] given the architecture of the platform they run on. Some of the constraints that influence the testing process include the limited resources such as ram size and power, speedy evolution in advancement, regular updates or iterations, screen size and CPU power. These attributes have called for software testers and researchers in the field of software testing to look into novel approaches that can be implemented to overcome these challenges. Mobile applications run on several platforms including windows mobile, ios and Android. Specifically, android has been going through a rapid ISSN: 1738-9984 IJSEIA Copyright c 2015 SERSC

growth and frequent updates. The similarities in terms of functionality, source code organization and the concept level of mobile applications and other applications (web and desktop) have opened the possibility for adaptation of a particular testing technique into another [7]. Therefore, existing design patterns or frameworks from an established web application or desktop testing model can be adapted for mobile application testing Test case generation is an important part of software testing. Test cases generated from the SUT can represent the working system of the SUT [8]. However, studies show high rate of redundancies in android application source code hence a replication of redundancies in their test cases [8].To further comprehend the redundancy in android, analysis of the source code needs to be done. The software development kit of android is predominantly based on the Java programming language which has enhanced the creation of more android apps but with limited number of high quality applications [9]. Refactoring has been used over time to improve software development. Refactoring is a code transformation procedure that affects only the structure of the code without adding or removing any functional feature of the software [10]. The code transformation procedure focuses on improving the software quality by making the source code more readable and easy to maintain. Studies have shown that almost all android applications need enhancement through refactoring [11]. The process of refactoring ranges from simple name editing to more complex changes to satisfy the purpose of transformation and it has been applied at both source code and bytecode level. A research [11] has it that refactoring at bytecode level could be as efficient as the java code in terms of execution time and energy consumption. Several refactoring tool for Android source code have been developed, especially in the area of computation time [11] and energy management [12], however, researchers are yet to explore refactoring tools that aim at functional testing while considering one of google best practices of avoiding creation of unnecessary objects and classes. The rest of this paper is organized as follows: Section two discusses the two main types of testing; black box and white box testing. Section three sheds more light on the essence of mobile application testing. Section four discusses the web application model that can be adapted for mobile application testing while section five discusses our proposed adaptation model. Section six presents the refactoring algorithm and a case study is presented in section seven. 2. Types of Testing Black Box Testing: Functional testing, also called black box testing, counts on the input/output performance of the system. Specifically, the system is exposed to inputs that are not part of the system, so that the corresponding outputs are used to verify the conformance of the system to the specified performance, without considering other actions. Hence, this process assumes knowledge of the specification of the software under test (proper or improper specification), which can be used to describe the performance representation of the system [13]. One of the crucial aspects of black box testing is therefore the inputs selection. A complete functional test would consist of subjecting the program to all possible input streams and verifying the outcome produced, but as stated in [14] this is theoretically impossible. In reality, formal specification of the system under test (SUT) in the correct language is essential in selecting the test cases, using specific syntax and semantics. The test executor executes the selected test cases to certify the reliability of the system [15]. White Box Testing: The structural testing, usually referred to as the white box testing, require full access to the application s source code including inside data. This implies full access and control of the source code. In this case, the inputs are gotten from the application s structure and this can be used to trace what chunks of the code have been 66 Copyright c 2015 SERSC

implemented during testing. Some common methods used for selection of test case in white box testing include: Data Flow Test Selection and Control flow based selection [16, 12]. Generally, the functional and structural test strategies are not alternative approaches but can be used in combination because they use and provide different information [17]. The combine usage of these two approaches is sometimes referred to as GREY BOX TESTING. In grey box testing, the software architecture and design documentation should be made available to the tester. This gives a hint on the inner working of the software and gives room for the design of better and more fault-revealing test cases. 3. Mobile Application Testing Mobile phones essentially smartphones have continuously enjoyed steady growth in the mobile market due to technological advancement in the areas of telecommunications and information technology. Undoubtedly, this has also been influenced by the availability of countless number of mobile applications across the mobile stores combined translating into huge revenue and profit as obvious in Figure 1. However, this sporadic rise in the number of mobile apps has raised many concerns bordering on application quality and functionality hence the urgent need for mobile application testing by software engineers. Figure 1. The Growth Rate of Mobile Phones over the Years Source: http://www.aumcore.com/blog/2013/05/14/the-expected-growth-rate-of-adoptions-ofmobile-apps/ However, this has been an issue given the varying platforms mobile applications work on especially Google android whose market has continued to grow rapidly over the years [18, 19]. Hardware complexity and diversity is another challenge in mobile application testing [20]. Android was introduced by Google Inc. in October 2003. Android OS is an open source software which gives room for amendment or manipulation by other software developers. Being an open source has made it the choice of many users and hence a rapid rate of growth in it market (Figure 2). The quality of application working on such a large market of OS becomes indispensable and makes testing unavoidable. Copyright c 2015 SERSC 67

Source: http://trak.in/tags/business/2011/05/31/android-vs-ios-new-market-share/ Figure 2. The Android Market Growth The contemporary testing techniques need to be reviewed so as to put into consideration the structural testing of mobile application considering the new mobile languages [21]. Some faults in existing mobile application approach are due to unreliability and diversity of the mobile operating systems [22]. Android in particular is well known for its frequent updates. However, to maintain a high quality standard of android apps, there is need to analyze the source code of the applications to view the difference and similarities in code and tag the code accordingly. A similar solution in web application testing that also serves as code analyzer is the Reweb and Testweb. Reweb and Testweb comprise of two parts: Reweb is an analysis model that is defined and implemented for the high level representation of Web applications [23] while Testweb adopts testing techniques that are typical to web based applications [23]. 4. Reweb and Testweb Web application testing is usually categorized based on the testing model. The two most common models are UML and Finite state machine (FSM). Reweb and testweb are based on the UML model. These two integrated models are built to aid analysis and testing of the applications in web environment. Their tasks as sketched in Figure 3 are distinct. ReWeb takes as input the web pages and analyze them to generate UML model in agreement with the meta model of the page. While TestWeb focuses on testing by generating and executing sets of test cases for the application whose UML model has been generated by ReWeb. The whole processes are not completely automated as the user actions are represented using diamond shape (Figure 3). In the case of reweb, three elements are present: spider, analyzer and viewer. The spider copies all pages of the source web site from a known URL. Each page present in the given site is copied and labelled with the download date. The HTML files attached to the web site are not taken into consideration. The pages of a site are gotten by directing the related requests to the web server. The outcome of the requests is usually an HTML page, thus it doesn t give room for discrimination between dynamic and static pages. However, an exception to this submission is pages represented by target form. Since they are handling input values, they are predominantly dynamic. By default, reweb analyzer tags all pages as static aside from those directly accessible from the form. The end user can adjust the resultant model by swapping the page type from static to dynamic when applicable. The user presents the collection of used variables, for every dynamic page that its content relies on some input values. Lastly, the user will be 68 Copyright c 2015 SERSC

required to assign conditions to the boundaries such that it existence relies on the input values. The input values that ensure such conditions to be true have to be provided to the spider for a complete download of the source site as indicated by the line arrow in Figure 3. The reweb uses the UML model of the site to execute loads of analyses [24], parts of which are broken in the process of static authentication. The viewer offers a Graphical User Interface (GUI) to display the web application model as well as the result of the static analyses. This GUI supports several navigation and query functions which includes zoom, search, focus and HTML code display. Of the offered views, the history view displays the architecture of the site; the system view signifies the planning of pages into directories, while the data flow view shows the read/write mapping of pages to variables, separately through incoming/outgoing boundaries that links pages to variables. TestWeb contains a test case generation tool known as the Test generator. It is able to detect the path manifestation from the model of the web application, and generate test cases from it, as long as a test criterion is indicated. Generated test cases are structures of links which, once implemented, assures the coverage of the particular criterion. Test generator leaves all input values in the entire link structure blank, so the user has to fix them in, possibly manipulating the methods conventionally used in black box testing (boundary values, etc.,). TestWeb s test executor can now offer the link request structure of every test case to the web server, assigning suitable inputs to all forms. The resultant pages created by the server, tagged in the UML model with a non-empty use attribute, are saved for further scrutiny. After implementation, the test engineer interferes to evaluate the pass/fail outcome of all test cases. To carry out the evaluation process, she/he opens the resultant pages on a browser and confirms the result for each input. While the regression confirmation is on, user involvement is no longer necessary, since the expected result is the outcome of a previous test confirmation. Though, manual involvement might still be necessary in occurrence of inconsistencies. Ricca and Tonella technique accepts as the source code as input for the analysis phase and uses the UML model to represent the units of web applications. This model representation is executed by the reweb. While the testweb make use of the UML model generated by the reweb for test case generation. This technique is well established in the field of research for web application analysis [25]. However, this framework is yet to be adapted in the field of mobile application testing. 5. The Proposed Framework Figure 3. Reweb and Testweb Framework The focus of this research is on poor testability of mobile applications which can be attributed to the frequent updates in android application. These updates are found to be Copyright c 2015 SERSC 69

similar in functionalities and source code but they are still found to be poorly tested which has led to about 5% failure expected of Android Apps with approximately 20% of users with issues in a day [26]. A survey is carried out on web and mobile application testing in [3]. Differences and similarities are discussed and this depicts the possibility of adaptation of a web application testing model to test mobile application. The corresponding framework is as shown in Figure 4 below. The proposed adaptation model has two sections as in reweb and testweb. The top section is the Mobile Analyzer that analyzes the source code of the mobile application; it refactors the source code, generates the use case diagram and test cases and pass to the test mobile for testing implementation. The mobile analyzer takes the source code as input. The source code is then refactored to eliminate redundant class or objects. The use case is generated from the refactored source code. The generated use case diagram is then forwarded to the test case generator to generate the test cases. Test cases are generated based on the test criterion or use case specification and passed to the test case executor. To minimize the test cases generated and improve the completeness of testing, use case specification is based on functional and scenario case. The use case specification used in the model is based on the following: (i) Identifying the main and other functions of the SUT. (ii) Knowing how to determine if the SUT is working properly. (iii) Testing each function based on scenario cases, one at a time and (iv) Validate if the SUT is pass or fail. Once the analysis is done based on the use case specification and then passed to the test executor, the test executor gives an output of pass/fail depending on the comparism of actual output and the expected output. The Test_Mobile randomly selects from the test cases generated from the UML as its own input and carry out the test and passes out output result as pass or fail. The refactoring tool is an integrated model designed to be implemented as an eclipse plug-in that work within the eclipse IDE. Figure 4. The Adaptation Model for Android Application Testing 70 Copyright c 2015 SERSC

6. Refactoring Refactoring is defined as a practice aim at restructuring an existing code by changing the internal structure of the code without affecting the external functionality [9]. Refactoring is done based on the purpose for refactor. The purpose of refactoring in this case is to reduce generated test cases while maintaining a good coverage. Our first tactic is to minimise dependencies between classes hence making the codes more testable with reduced number of test paths. The next step is to identify repetitive methods on same objects in different classes of the code, then reconstruct the code using extract class approach while keeping all functionalities unbroken. The following steps are followed to refactor: 1 Find all classes in the set Ci of the source code of the software under test. 2 Categorize each class by creating a state S(Ci) for each class in the universal set Ci. 3 Identify the relationship between each class in the set. 4 Identify all test paths P in the program. 5 Identify unworkable test path and the respective classes. 6 Reconstruct the source code to eliminate redundant classes. 7 Identify set of new classes NC of the code. 8 For each class NCi of the new code, check for repetitive methods. 9 Reconstruct to reduce repetitive testing of same object in different classes. 10 Run the new code to ensure all functionalities are not altered. 11 Validate the new source code to generate the new UML model. 7. Case Study In this section, a case study is presented for better understanding of our approach. It shows a regenerated source code of SUT with no alteration in it functionality and keeping the test path to the best minimal. The source code is been run on the Eclipse IDE to detect the possible area where refactoring can be applied. For the purpose of this study, the SUT has one main class and is valid for purpose of testing; hence, no class was eliminated. However, in a class, there s repetitive method and this was handled by reconstructing the source code to avoid a repetitive task in process of testing. The new source code is then generated. To verify the validity of our approach, the two source code is run using the emulator in the Android SDK. The emulator is configured to run on Android 4.4 API 19, simulating the ARM (armeabi-v7a) processor. Copyright c 2015 SERSC 71

Figure 5. Source Code Before and After Refactoring From Figure 5, the common call of IF statement is in the arrow, which is called under each function in (a). In (b), it is tested once outside the methods, hence reducing the number of times the numbers are tested for null. The change applied has no effect on their output as shown in figure. 72 Copyright c 2015 SERSC

(a) Figure 6. Output of Source Code before and after Refactoring (b) 8. Conclusion Mobile application testing, which is an area of software testing remains an essential and challenging aspect of software testing due to its specialized specifications and attributes. The increase in android market demand has made ensuring the quality of the application non-negotiable. Hence, ensuring good testing technique cannot be compromised. However, adaptation and reuse has over time been used in research and industry to solve problems and minimize time and effort in providing solution to issues. This paper presents an adaptation model for testing mobile application. Reweb and testweb has proven its success in testing functioning web applications including amazon. A proposed adaptation of Reweb and testweb is been looked into in tackling similar challenges in android application testing. In addition, the testing tool for android application aims to improve android application testing by applying android best practices of removing unused classes and reducing repetitive object use within the code. A case study is presented to illustrate our approach. The source code is analysed and refactored based on our proposed method. The refactored source code tends to give less test path than the original source code with about 75%. This extent of difference can be relative depending on the number of classes and functionalities of the code. The result also shows no difference in the application usage. As future work, automating the process of refactoring is in progress and we will also be looking at a clearer display of difference in test case being generated. Acknowledgements This research is supported under the Graduate Research Incentive Grants (GIPS), vote 1256, Universiti Tun Hussein Onn Malaysia. References [1] F. Taibi, On Measuring the Reusability Proneness of Mobile Applications, International Journal of Computer, Control, Quantum and Information Engineering, vol. 8, no. 7, (2014),pp. 9. [2] N. Pourya, A Comparative Evaluation of approaches for Model Testability, International Journal of Computers & Technology, vol. 9, no. 1, (2013), pp. 949-955. [3] H. Jin and F. Zeng, "Research on the definition and model of software testing quality", Reliability, Maintainability and Safety (ICRMS), 2011 9th International Conference, IEEE, (2011). [4] M. Ahmed and R. Ibrahim, A Comparative Study of Web Application Testing and Mobile Application Testing, Advanced Computer and Communication Engineering Technology, Springer International Publishing, (2015), pp. 491-500. [5] D. Franke and S. Kowalewski, Testing Conformance of Life Cycle Dependent Properties of Mobile Applications, doi:10.1109/icst, vol. 36, (2012). Copyright c 2015 SERSC 73

[6] M. Karami, Behavioral analysis of android applications using automated instrumentation, Software Security and Reliability-Companion (SERE-C), 2013 IEEE 7th International Conference IEEE, (2013). [7] D. Franke and C. Weise, Providing a Software Quality Framework for Testing of Mobile Applications, 2011 Fourth IEEE International Conference on Software Testing, Verification and Validation, doi:10.1109/icst.2011.18, pp. 431 434. [8] S. P. R. Asaithambi and S. Jarzabek, Towards test case reuse: a study of redundancies in android platform test libraries, Safe and Secure Software Reuse, Springer Berlin Heidelberg, (2013), pp. 49-64. [9] F. A. Kraemer, Engineering android applications based on UML activities, Model Driven Engineering Languages and Systems, Springer Berlin Heidelberg, (2011), pp. 183-197. [10] E. L. Alves, P. D. Machado, T. Massoni and S. T. Santos, A refactoring-based approach for test case selection and prioritization, Proceedings of the 8th International Workshop on Automation of Software Test, IEEE Press, (2013) May, pp. 93-99. [11] Y. Zhang, G. Huang, X. Liu, W. Zhang, H. Mei and S. Yang, Refactoring android java code for ondemand computation offloading, ACM SIGPLAN Notices, ACM, vol. 47, no. 10, (2012) October, pp. 233-248. [12] M. Gottschalk, M. Josefiok, J. Jelschen and A. Winter, Removing Energy Code Smells with Reengineering Services, GI-Jahrestagung, (2012), pp. 441-455. [13] D. Amalfitano, A. R. Fasolino and P. Tramontana, A GUI Crawling-Based Technique for Android Mobile Application Testing, 2011 IEEE Fourth International Conference on Software Testing, Verification and Validation Workshops, doi:10.1109/icstw.2011.77, (2011), pp. 252-261. [14] P. Machado, J. Campos and R. Abreu, MZoltar: automatic debugging of Android applications, Proceedings of the 2013 International Workshop on Software Development Lifecycle for Mobile DeMobile, doi:10.1145/2501553.2501556, (2013), pp. 9-16. [15] A. M. R. Vincenzi, JaBUTi: A coverage analysis tool for Java programs, XVII SBES Simpósio Brasileiro de Engenharia de Software, Manaus, AM, Brasil, (2003), pp. 79-84. [16] W. Yang, M. R. Prasad and T. Xie, A grey-box approach for automated GUI-model generation of mobile applications, Fundamental Approaches to Software Engineering, Springer Berlin Heidelberg, (2013), pp. 250-265. [17] S. Yoo and M. Harman, Regression testing minimization, selection and prioritization: a survey, Software Testing, Verification and Reliability, vol. 22, no. 2, (2012), pp. 67-120. [18] A. I. Wasserman, Software engineering issues for mobile application development, Proceedings of the FSE/SDP workshop on Future of software engineering research - FoSER 10, 397. doi:10.1145/1882362.1882443, (2010). [19] S. Baride and K. Dutta, A cloud based software testing paradigm for mobile applications, ACM SIGSOFT Software Engineering Notes, doi:10.1145/1968587.1968601, vol. 36, no. 3, (2011), pp. 1. [20] B. Zhu, H. Miao and L. Cai, Testing a Web Application Involving Web Browser Interaction, 2009 10th ACIS International Conference on Software Engineering, Artificial Intelligences, Networking and Parallel/Distributed Computing, doi:10.1109/snpd.2009.59, pp. 589-594. [21] C. Hu and I. Neamtiu. Automating GUI testing for Android applications, Proceedings of the 6th International Workshop on Automation of Software Test. ACM, (2011). [22] H. Muccini, A. Di Francesco and P. Esposito, Software testing of mobile applications: Challenges and future research directions, Automation of Software Test (AST), 2012 7th International Workshop on. IEEE, (2012). [23] F. Ricca and P. Tonella, Analysis and testing of Web applications, Proceedings of the 23rd International Conference on Software Engineering, ICSE 2001, 25 34. doi:10.1109/icse.2001.919078. [24] F. Ricca and P. Tonella, Web site analysis: Structure and evolution, Software Maintenance, Proceedings. International Conference on. IEEE, 2000, (2000). [25] F. Ricca and P. Tonella, Anomaly detection in web applications: A review of already conducted case studies, Software Maintenance and Reengineering, 2005. CSMR 2005. Ninth European Conference on. IEEE, (2005). [26] B. Dennis, Repatterning: Improving the Reliability of Android Applications with an Adaptation of Refactoring, (2014). 74 Copyright c 2015 SERSC