Keywords

1 Introduction

The idea of quality assurance has been in existence even before the existence of software hence quality of manufactured products including software has been a subject of keen interest from past till present. Quality has been an issue as long as human has been producing product. Software testing is an important and major area of Software Quality Assurance (SQA). Software testing is the process of executing a program with the purpose of finding faults. Testing include effort to find defects but does not include getting solution to fixing the defects. This is the difference between testing and quality assurance as quality assurance is not limited to developing the test plan but also include testing, preventing and fixing the faults found during the process of testing. However, testing can cover different areas such as Specification testing, design testing and implementation testing. Implementation testing which deals with the working system of the software is most time referred to as software testing [1]. Testing cannot be complete or perfect. Having a flawless testing is not realistic [1], as it could take more than a life time to complete even the simple software. Saleh explained the unrealistic nature of complete testing by using a small program of a user filling a text field of 20 characters. This program test will be complete by testing all possible input values. If an assumption of 80 characters is done, then number of possible combinations is 2080. A computer that takes nanoseconds to process one combination, testing will take 1011 years to complete all possible combination which is very impossible and unrealistic. Since it is impossible to guarantee an 100 % error-free software, errors that are not detected at the time of development before deployment may be discovered and reported by the end user or in the process of testing for a subsequent release of the software. Despite the imperfection of software testing, testers need to put their best effort in improving the reliability and efficiency of the software as it can affect the well-being of human and their safety.

The current surge in both number and demand for mobile applications has called the attention of test engineers to the testing of mobile application as users are more concerned about the quality and functionality of the software. However, the mobile applications testing has been an issue given the different platforms the applications work on such as the iOS, Windows mobile, and the Google android; whose market has continued to grow rapidly over the years [2, 3]. Also, Hardware complexity and diversity is another challenge in mobile application testing. Unlike the PC environment that operates with one central processing unit (×86-microprocessor) on which applications running on the system must be tested (whether voice or data services), mobile phones are built with different types of processors that run at different speed and with different memory usage. Testing web application involve looking into the application and attention should be paid to the browser being used (considering factors like backward and forward buttons) [4]. Connectivity is another issue with the smart mobile device. A mobile device could use the 3G technology, wifi, GPRS all with different level of signal strength [5]. Therefore, testing mobile application requires a testing technique that will be compatible with the software and hardware complexity of the mobile phone.

2 Web Application Testing

The advancement of web application is following an evolution similar to that of software systems. Web applications tend to evolve rapidly and pass through frequent modifications as a result of new technological and business opportunities as well as feedback from users [6]. Web application testing can however be more complex than testing standalone or traditional programs due to their synchronized, dispersed and platform-independent environment on which it is been run. Several researches have been going on since the last decade when web application started becoming common around the globe. In 2000, research was carried out to extend data flow testing technique to web application testing. An approach to supporting data flow testing for web application was presented [7]. The approach is such that the white box test artifacts of an application were captured in a Web Application Test Model (WATM) there by treating each component of the web application as an object, while the elements of an HTML or XML were considered as code variables within an object. However, there is need for review of this technique and other similar approach as this is based on the structural testing.

Qian [8] developed a tool for testing web application and to support analysis of the application. They came up with ReWeb and TestWeb. The ReWeb views could be useful in understanding the system organization in terms of navigation path and variable usage while the TestWeb generator and executor of test cases of an application can be used to explore the system to a satisfactory level. Improvement is needed in reducing the manual activities in the process. Automation is required in the area of state unrolling and merging. Bin Zhu, Huaikou Miao and Lizhi Cai (2009) proposed an approach to generating test cases for web application testing using a navigation tree considering the web browser history mechanisms and the user interface facilities such as the back, forward and refresh tool [9]. Another work on web application testing worth mentioning is the development of a cross-browser web application testing tool (Shauvik Roy, 2010). This tool is to find the difference between corresponding elements of a web page opened in different browsers [10]. The tool was evaluated on nine real world applications and result shows that the tool is effective in finding cross-browser issues while keeping the false positive low. Qian Zhongsheng also came with an approach to reducing and optimizing the test case generation from user request traces [8]. A large volume of meaningful user sessions were obtained after purging their irrelevant information by analyzing user logs on the web server. This approach evaluates test cases considering the test coverage ratio only. Many factors need to be considered aside from the test coverage ratio such as the running cost of each test case (CPU time), loading time, time to save the test case and the influence of different test criteria on a test case. The Table 48.1 summarizes the state of the art of web application testing.

Table 48.1 Web application testing techniques

3 Mobile Application Testing

Mobile application also known as Mobile Applications can be used to define the applications that are developed for handheld smart devices such as the mobile phones, etc. These applications can be pre-installed applications that come with the phone straight from the manufacturer or it can be downloaded from the web or app store to enhance better functionality of the smart device. These devices work with powerful application for user consumption and for this reason increases its complexity. The complexity of the mobile applications comes with a cost [9]. Mobile application testing can be very challenging. Many questions need to be addressed when testing a mobile app. Different framework have been proposed for mobile application testing. A cloud based approach was proposed by Baride and Dutta. This approach was proposed to solve the problem of homogeneous testing of mobile application of different platforms [11]. The success of this work was explained in terms of it automation, adaptability to different mobile environment and actual devices and the complexity of the testing which include performance testing, security testing and synchronization testing. Another mobile testing framework was proposed by Ping et al. This framework was based on the V-model and cloud test mechanism. The criteria to be considered in designing a testing model for mobile application was mentioned to include testing scope in terms of the network connection been used, emulators used in testing and devices used [12]. The developed model is however yet to be implemented. The work of Muhammad Karami (2013) presented an automatic analysis approach for security inspection of android applications. This research was inspired by the scrutiny that some malware examples are only triggered on user behavior or action [13]. Hu Cuixiong proposed a novel technique of bringing android specific bug to light and shows how to construct an effective test automation approach for addressing the bugs detected, hence ensuring the reliability of application running on android platform [5].

Different tools have also been developed to aid mobile application testing. MobileTest (2007) is an automatic testing tool for black box mobile devices. This tool can develop refined, maintainable and reusable test case library for testing system level and application level software on different smart devices [14]. The tool was validated by comparing with the result of the TestQuest. Hermes (2009) is another tool for testing smart mobile applications. The motivation of development of this tool comes from the heterogeneity of the mobile device [15]. Hermes can be used for test writing and a distributed run time for automating test execution and reporting. There is need to look into the cost/benefit ratio to improve the evaluation of this tool. Adaptive Random Testing (ART) 2010: ART was also developed from a black box view of testing mobile application [16]. The motivation was from the fact that mobile application has to deal with user input and constant changing in the device or user environment. MZoltar (2013): Mzoltar offers a vigorous analysis of mobile applications which shows a diagnostic report that makes it easy to comprehend [17]. This approach helps in localizing the bugs in android mobile applications by relying on the Spectrum-based fault localization (SFL). Table 48.2 shows a summary of the state of the art of mobile application testing.

Table 48.2 Mobile application testing techniques

4 Difference of Web and Mobile Application Testing

With the high increase of mobile users and the rate at which the internet is being accessed, there is need to bridge the gap in the quality of mobile and web applications. There are different factors to be considered in understanding the adaptability of the two testing techniques. These factors affect the way at which these applications are developed and tested. Such factors include and not limited to: Life conformance or event trigger mode, GUI (GUI of the Input and Output system), Data Synchronization or Network Management, Power Management and Memory management.

4.1 Event Context/Life Conformance

In web application running on a desktop, application life cycle is dependent on the operating system. The operating system handles the states of the event the application is passing through and it safeguards the precise comportment of the application at all statuses. This is not the case in smart mobile operating system such as iOS, Android. Due to limited resources and complexity of the system, the operating systems cannot retain the comprehensive state of an application at any time when there is a change in the state of the life cycle. The application therefore takes care of itself to avoid data loss in case the application is paused or even killed. This makes it a requirement for a mobile application to be life conformance in its design. Testing the life conformance of an application life implies it is responding reasonably to change of state in the operating system such that events like low memory or low battery do not lead to loss of data in the mobile device [1820].

4.2 GUI

Testing GUIs on a general note is a tough and demanding task for so many reasons: Firstly, the input space has a countless and potentially unlimited number of combinations of inputs and states of system outputs, generating test cases then becomes tougher. Secondly, even simple GUIs possess an enormous number of states which are also due to interaction with the inputs. Also, many complex dependencies may hold between different states of the GUI system, and/or between its states and inputs [21]. Web application GUI testing still seems easier. Users of desktop GUI applications might be expected to refer to documentation or lessons to completely understand the usage of the applications. Unlike mobile device, mobile applications are expected to have a simple and intuitive user interface where most, if not all, usage scenarios of an application should be evident to the average user from the GUI [22].

4.3 Network Management

The emphasis of present research is tending towards planning and building of network and infrastructures and applications for mobile system. Testing software in relation to network connection now remains a concern. This is becoming a hindrance in the evolution of mobile computing since the development of smart mobile application is challenging owing to the scarcity in computational resources. The change in location and network can also lead to data loss and poor functionality. This implies that a change in network or location can mean a small shift away from the servers that is being used toward a new one [23].

4.4 Power Management

As users tend to use vital and complex applications, low power consumption becomes a requirement in building mobile applications. Developers of smart mobile device (hardware and software) have considered power-saving features, such that applications can vigorously regulate their power ingestions depending on the required functionality and performance. Software developers therefore need to understand the implication of building a high power-hungry application and should put into consideration the in-built feature of power management in mobile device [24] (Table 48.3).

Table 48.3 Adaptability of mobile and web application testing

5 Conclusion

While the web has taken over businesses and individual life, the mobile is however anticipated to surpass as the world platform for local and internet applications in the nearest future. As the functionality of the mobile and web applications increase so is the complexity and hence the complexity of the testing technique. There is need to fill the gap in the testing of these two important applications area. The difference in performance and testing could be viewed from the event context, GUI interface, network management, power and memory management. There are present works that have been looking into these factors as highlighted in this paper; however, there is a strong need for more research in building more effective testing technique that can handle both the web and mobile application testing.