Monday 21 August 2017

Mobile Application – Performance Testing & Engineering

mobile apps performance testing

Why is performance testing important for mobile apps?

Why is performance testing important and why should you be doing it? Well, very simply, it is the key to user engagement, getting people to use your app and continue using your app.
User engagement/experience is definitely a challenge on mobile. This graph is based on data from Apple and Google shows that 80% of apps are never used again after the first day they are downloaded and less than 4% are still used a month after they are downloaded. Looking at the graph, it’s evident that keeping users engaged with your mobile app is difficult.
A side point is that I have had people in the past say that while they accept this for consumer-facing apps, it’s not relevant to them because they are making employee facing apps or some other B2B type apps. But the reality is that adoption and engagement are just as much a challenge in employee facing apps as it is in B2B apps.
Going a bit further I would like to illustrate with two examples with data points, which basically impacts the impacts of performance of user engagement and ultimately the revenue
  • Amazon has reported that a 100-millisecond increase in response time of their app reduces revenue by 1%.
  • Google reported similar findings that a 100-400 milliseconds increase in search response time led to a $90 million dollar reduction in ad revenue.
It’s important to note that there’s nothing unique about Amazon or Google, meaning that this impacts them. So, clearly performance is critical to users, so we need to be testing it.

Importance of Mobile Apps Performance

As the usage of mobile phones is increasing, the importance of mobile apps performance is also increasing simultaneously.  Mobile phone users are very demanding and always expect mobile apps to perform like their desktop apps.
According to a survey,
  • 71% users expect a website to open on their mobile as quickly as on their desktop.
  • 5 seconds is considered as turnaround time for mobile applications and websites.
  • 74% users leave the mobile websites and 50% users exit mobile apps after 5 seconds or more response time.
  • 35% of the frustrated users go to competitors’ applications.
Normally mobile phone users try to access the troubled application twice and nearly half of them never return to the application if they still face the same issue(s) on their mobile device. Achieving and maintaining a good response time of a mobile application is more challenging for performance engineers than a desktop application due to its complex architecture and fewer resources it uses.

Difference between Traditional Desktop Web Apps & Mobile Apps

The both Desktop web applications and mobile applications are quite similar technologies and don’t need to select a unique performance testing tools for mobile apps.

Top 5 Mobile App performance related issues

Client Side
Server Side
  •  Network (Wi-Fi-/2G/3G/4G) impact of connectivity issues
  • CPU Usage
  • Memory Usage
  • 2d & 3d Graphics Card
  • Battery Usage consumption 
  • CPU Usage
  • Memory Usage
  • Cache
  • I/O
  • Bandwidth Usage
  • Connections

Top 3 Performance issues which we have encountered while carrying load testing of mobile based application and solution

S.NoIssueSolution
Bandwidth Consumption issue
1During our mobile app performance, test execution network bandwidth was high due to image & page size was hugeBandwidth consumption decreased by compressing and reducing page & image resources to make it faster
Response Time / Page Load issue
2During mobile app performance test execution, the page load time was high.Reducing the number of HTTP requests between the client and server.
Data Loss Issue
3We experienced in one of our microfinance client application while filling the forms and uploading the images in mobile application and if network connection loss/drops the middle of completing all the data will lose.Create an offline mode/data save option method in the mobile application so that whenever network drops the data won’t lose. We can resume the continued activity once the connection has been re-established. This kind of method will use for travel apps

 Conclusion

There is no choice about the exponential growth of mobile application usage in this world. To better user experience the mobile apps should be quick to respond as expected by the customer.
The Performance testing of mobile apps is not different from our traditional web/desktop applications. However, Performance engineers need to understand all types of mobile apps architecture and details completely (like Network bandwidth, screen size, processing power etc…)so that it will improve the user experience and apparently the user base & revenue.
References:
  1. http://www.testplant.com/2015/04/23/mobile-apps-need-performance-testing-too/ 
  1. http://www.agileload.com/agileload/blog/2013/01/14/mobile-performance-testing-overall-analysis—whitepaper

Wednesday 16 August 2017

Web Services Testing: An Overview

Web Services Testing
Web Services deliver a standard mode of interoperability between software applications running across platforms and frameworks. These form base of connectivity for services that are connected together into a Service Oriented Architecture (SOA).
Further, these services communicate with each other using web services. Web services put force a standard way of integrating web-based applications using XML, Simple Object Access Protocol (SOAP), Web Services Description Language (WSDL), and UDDI open standards over an internet protocol. A Web service is offered by an electronic device to another electronic device, communicating with each other via the World Wide Web.
It is also factual that a failed web service creates chaos not only to the managers but also to the administrators who are responsible for the server maintenance. A failure also discomforts the clients who are trying to call the particular web service.
web-services
The key elements of web services are a repository, messaging, and service. Since web services are distributed over networks and applications, the testing requirements should also include interfaces. Web services are integrally susceptible to added risks in the areas of integration and interoperability.
A web service can be implemented using any programming language on any platform, on condition that a standard XML interface description called WSDL is available. A standard messaging protocol called SOAP is also used at the simultaneously. Web services often run over HTTP but may also run over other application layer transport protocols. Automating web services testing facilitates reduction of its overall testing efforts.

Web Services Testing

web-services-testingWeb services provide the continuous connection from one software application to another over private intranets and the Internet. Web services’ testing includes functionality and loads aspects to check how a Web service performs for single client and scales as the accessing load increases. Testing enables the detection of errors, evaluation, and approval of system qualities at an earlier stage. An automated test approach, in particular, helps to efficiently repeat tests whenever needed and by improvising the time to market. In particular, test automation will be essential to a sound and efficient Web services development process, for the assessment of the functionality, performance, security, scalability, and UI of Web services.

Web Services Testing Steps are

Step 1: Generate the client /skeleton code of the web service
Step 2: Define the required test inputs
Step 3: Invoke the web service using the client/skeleton code
Step 4: Client/skeleton code generation and response verification
Step 5: Actual response Vs expected response verification

Web Services Testing Tools

There are many web services testing tools available, such asweb services testing tools
  • ManageEngine
  • QEngine
  • SoapUI
  • TestMaker
  • WebInject toolsets
These tools are built on open source tools/libraries/frameworks and hence help reduce overall costs. They help to increase automation efficiency by minimizing initial coding effort. These tools can also help to create and execute the tests quickly.
In this fast paced world, a faster test cycle at lower cost is crucial to stay competitive and thus reusable test automation frameworks coupled with open source tools and technologies is a key solution to shrink test cycle time and its costs.
There are Web Services test automation frameworks available that are designed and developed by many testing service providers and adopting them reflects more effectiveness. Some of their important features & benefits are detailed below.
We will discuss more about Web Services Testing in our upcoming blogs.
Subscribe to hear more from our web services testing experts.