Suyash Dubey | Posted on | 2 min Read

Today, there are many smartphone users in the world and so is the popularity of mobile apps. In order to be competent enough, mobile apps have to be unique and should provide the best user experience to increase the user base. With the users getting more informed and intelligent, the apps built should keep up with the pace. In order to be impeccable, the mobile app should undergo a rigorous testing process and during that process, the testing team faces many challenges in this aspect which will be covered in this blog. But before we dive in, let’s look at the different types of apps that are available in the market.

Types of mobile applications

The creation of mobile applications is a fantastic approach to boost brand recognition, attract new clients, and improve the user experience for existing customers. In light of this, let’s examine the three primary categories of mobile apps: native, web, and hybrid.

Native apps:

Native mobile applications are ones created exclusively for a given operating system. As a result, software created for one System cannot be used on another, and vice versa. Native applications are more effective, quick, and offer greater phone-specific functionality. Thus, the difficulties of testing mobile apps for compatibility with native user interfaces of devices involve ensuring that such traits are preserved strictly.

Web apps:

Similar to native apps, web applications do not require users to download them. Instead, the users’ web browsers on their phones can access these apps because they are incorporated within the website. So, it is envisaged that web applications will operate flawlessly across all platforms. Testing teams must carefully examine the application on a wide range of real devices and browsers to ensure high app quality. Yet in addition to taking a lot of time, this operation is essential because failing to work on a few devices can severely reduce the app quality and incur heavy losses when the app doesn’t function as required.

Hybrid apps:

The features of both online and native apps are available in hybrid apps. These are essentially web applications that mimic native apps in design. These applications are easy to maintain and load quickly. Teams that test mobile apps are in charge of making sure hybrid applications don’t lag on some devices. Any operating systems with the capacity to support the said features have access to all their functionality.

While each of these app types are slightly similar to each other the technical teams face a different challenge with each type of mobile application. Combining these challenges greatly increases the complexity, making the entire procedure laborious and time-consuming. Let’s quickly look into what some of these challenges are?

Challenges in Mobile App Testing


Different Operating Systems and their versions

There are different types of operating systems available in the market such as iOS, Android, Windows etc. Also, these OS have different versions too. So, it becomes challenging to test so many versions of the mobile app in a shorter period of time. One app that works well in one type of OS may not work well in the other. It is very important to test the application with all supported platforms and their version because we don’t know where the user is going to install the application. As per research, iOS users upgrade quickly as compared to Android but in Android the device fragmentation is larger. That means the developers have to support older versions and APIs and testers also have to test accordingly.

2019-03-27 (1)


Device Variations: Based on Screen size

Android comes with a mix of features and variations in pixels densities and ratios which varies in each screen size. Even in the case of Apple, the screen new size was introduced with the launch of the iPhone 6. Now, it is not just about being picture perfect screen design rather designing an adaptive screen design. Well with such a variety in screen sizes, the role of the tester becomes serious as they need to check if all the features are working well in different screens and pixel and aspect ratios are maintained well.

devices-screen-sizes


Based on the number of Devices

The picture below shows the number of devices in the market by different brands. The number of device manufacturers has increased. According to OpenSignal, there are around 1294 distinct Android phone manufacturers alone, imagine if we add up other brands. The pace with which this data is increasing is a bit alarming for the testers as the testers have to check the app performances on different devices, they would probably need a device library to do the same. The challenge remains in context to functionalities like Complex user interactions on touch screen and keypad devices as well. Having a device library is certainly is a costly affair unless emulation is adopted which can simulate multiple device types and testing can run easily on it.

OpenSignal-Brand-Fragmentation

Image Source: venturebeat.com


Various Networks

The QA team also faces challenges when it has to test the devices connected to different networks. Generally, there are 2G, 3G,4G mobile data available. These provide different data transfer speed and transmission. These varying speeds of the networks by various providers remain a challenge for the testers even today. In this case, testers have to check that the app must perform well at different network speeds and connectivity quality and a check on bandwidth usage of the app. This remains a challenge as it is partially controllable based on different network providers and connectivity access in different geographies.

 

Frequent OS releases

Mobile Operating Systems keeps changing. Both Android and iOS have more than 10 versions of their operating systems. They keep enhancing and updating their versions for better performance and user experiences. This frequent OS release comes as a testing challenge as the testers needs to validate the complete application with each of new OS release. It is very important to test the application with the latest OS release otherwise the app performance would be a major issue and consequently loss of users using the app.

screen-shot-2018-07-12-at-1.35.22-pm

Script Execution

Another major challenge of mobile testing is what we call scripting, the method of defining a test. Script execution can either be manual or automated. You can write down the scripts in a document, which is then used by a test engineer who manually interacts with the test environment to determine the result, else you can run automated scripts that in turn drive interaction with the device and app, and record the results.

 

Automated scripting needs to be kept away from the device to be of any real use because there are so many different devices with different interface options. A script that follows strict keystrokes on an Apple iPhone would not have any chance of working on a Samsung device, because the UI is different. Fortunately, most real device automated testing software provides high-level scripting that operates on the text, image, or object layer. Device emulators can automate testexecution using a higher-level, abstracted scripting language that is not device dependent. When you use automated scripting, the cost of setting up the script will typically be higher than the cost of a single manual execution of a test. But if it is a test script that you run on a periodic basis, every time that you subsequently run the script, the more time and effort you will save. You will eventually recover the cost of initial scripting If you run the script enough.

 

So to conclude, to build a better user experience, an app tester needs to work had in overcoming the challenges of testing. By adopting some analytical skills and methods, testers can really cope up with these situations. For eg. Testing only those apps and OS which are mostly used by their user segment, by adopting a strong testing strategy to take situational decisions eg. Decisions regarding when to choose Automation and manual testing. Strategically, the challenges can be overcome.

 

Screen Size

The Android world is not simple. The variety of different aspect ratios and pixel densities can be overwhelming. With the launch of iPhone Xs Max which has a screen size of 6.5 inches, Apple brings new screen sizes to the iOS world as well. Though iOS developers are used to pixel perfect screen design, they now need to change their mindset to the adaptive screen design instead. For testing, it means that we need to check on various devices that all the necessary screen elements are accessible with different screen sizes and aspect ratios. There are many phones with a screen size of 5 inches which are still popular.

 

2019-03-28

Security Issues

Traditional testing tools like selenium and QTP weren’t designed with cross-platform in mind. Automation tools for web apps and mobile apps are different. Operating systems especially Android further adds to the complexity with API level fragmentation. The most common automation testing tools for mobile app automation testing are Appium and calabash. Each tool has it’s own advantages and disadvantages and you need to choose on the basis for your app’s functioning.

Weak Hosting Controls is one of the most common issues. The server on which your app is hosted should have security measures to prevent unauthorized users Weak Encryptions can lead to data theft which will impact the trust factor of the users. Most of the mobile apps require user data such as email ID, password, age, location etc. This data should be encrypted and stored with proper security. Hackers often use this kind of data to get money out of users account online. Encryption will make it difficult for anyone unauthorized to intrude and retrieve that data rather than keeping it in plain text.

Power consumption and battery life

We haven’t seen much innovations in the mobile battery but the mobile usage and specifications are increasing rapidly. People are using more apps nowadays and the apps are more complex than ever. This is why testers need to test the apps power consumption because if the apps use lots of CPU cycles and some apps will also run in the background than the battery will drain out quickly. We need to make sure that the app uses less battery power so that users can use it for a longer period of time.

2019-03-27

Conclusion

Mobile apps are evolving with device technology and user expectations. Developers are emphasizing on reducing the app size and battery usage. Testers play a major role to ensure that the app works smoothly and does not crash or have bugs. This is why testers must be aware of the latest trends in mobile app testing to deal with the mobile app testing challenges.


whitepaper

Related Articles:

Suyash Dubey | Posted on | 2 min Read

End to end testing is done to make sure that the application behaves as expected and the flow of actions from starting to end is complete without any issue. To explain with an example, suppose you are the end user and you are using the app to book a flight. So first you will launch the app and click on the flight’s icon on the home page. Then you will enter the destination, date and other required details. Now you will choose your preferred flight, book the seat, enter the passenger details and make the payment. Once this is done, you will get the ticket and a follow-up email on your registered email ID.
 
Now in this scenario, if the screen takes a lot of time to load the next page or if the book button does not work then this will be an unpleasant experience for the user. So we can figure out if there are any issues from starting to the end of the process. It’s not just about the UI functioning but also the data encryption and security, information flow between other internally used platforms integrated to the app, proper functioning of the firewall and more. This is where end to end testing comes into the picture to make sure that everything works well under any circumstances.
 

How to Perform End to End Testing

While performing end to end testing the first thing to do is to analyze the requirements and set up the test environment. Then you need to evaluate the main system with the connected subsystems and define the responsibilities of all systems involved. Make a list of the testing methods and the description of the standards to be followed. Once that is done you can create the test cases and track the requirement matrix. Finally, you need to save the output and input data before testing each system.
 

Measuring the success of the end to end testing

To perform end to end testing efficiently and save time and effort, a matrix should be created. Some parameters should be defined to gauge the success of the testing performed. These measurements will help you define the testing matrix:
 
Test case status: A proper visualization of the test cases prepared can be observed through graphs and compared with the number of tests that were initially planned.
Tracking Test progress: This measurement will help you to get the details of the tests completed on a weekly basis. It will be easy to keep a track of the test that failed and those that passed.
Defect details: Tracking of the bugs occurred and the issues surfaced should be done one a weekly basis and keeping a track of the defects that were opened and closed on the basis of priority.
Environment availability: Here we need to take a note of the amount of time allotted for running a test in an environment and the time actually spent on performing end to end testing.
 

Best Practices to Perform End to End Testing

End to end testing can be very time consuming and we can save some time and effort by following some steps. It is always better to plan in advance before initiating the testing process.
 
Prioritize: Chances of defect increases as the test cases become complex with more components and it becomes difficult to debug them. Therefore it is better to perform unit testing and integration testing to resolve issues that are easier to detect. After initiating the End to end testing you can also start doing smoke and sanity testing to keep an eye on the high-risk scenarios.
Manage the Environment: The requirements need to be documented and the system administrator needs to be informed about it to meet the requirements before starting the testing. The system setup should be proficient enough to run the test cases and keep your staging environment close to the production.
Optimize: After test completion, you need to clear the test data so that the environment is restored and can be used for testing again. This will make the environment ready to start at any moment.
Risk Analysis: Focus on the features that are crucial and on failure can cause a high risk. Prepare a risk assessment matrix which will come in handy in these situations.
Limit Exception testing: Use low-level unit testing and integration testing for exception scenarios and use end to end testing to deal with typical user scenarios.
 

Conclusion

With the rapid enhancements in the app technology and the increasing use of technologies like IOT, the development teams have to make sure that the app has a smooth functionality. The end users can be very choosy in this competitive market and so it’s necessary to perform end to end testing of applications to provide a good user experience.

 
Related Articles:

  • Start to End Guide for Mobile App Testing
  • 5 Best Practices App Testing Companies Must Follow for Success
  • Top 5 Tips for Successful Mobile Application Testing
  • Mobile Devops+Agile – Challenges and Keys to Success
  • Functional Testing Vs Non-Functional Testing
  • Automation Testing Advantages

    With an incessant advancement in technology and mobile eco-space, it is becoming extremely challenging for companies to maintain the quality and efficiency of mobile app development. Testing being one of the major business critical activities is often neglected because of the time and cost limitations. This ultimately leads to a compromised product quality, dissatisfied customer, delayed delivery and an increase in the overall quality costs. The major reasons for an increase in costs can be an ineffective test strategy, underestimated effort of generating a test case, delay in testing or keeping pace with the device fragmentation. Test automation helps to better the development process of a mobile app in multiple ways. Test automation is generally associated with increased effort and the results pay off quickly in return.

     

    Benefits of Automation Testing

     

    1. Faster feedback: Automation of testing actually comes as a relief for development and testing engineers during different phases of an app development life-cycle. It helps to better the communication among coders, designers, product owners and rectifies the potential glitches with no delay. It also increases the efficiency of the development team.

     

    2. Saves time: Writing codes in manual testing is a tedious process especially when the testers have to write long scripts while doing regression testing. The requirement of fast bug free delivery of apps is not fulfilled and companies have to suffer business losses.

     

    3. Early Bug Detection: Unlike manual testing, bugs can be detected early during the development phase in an automated testing which saves a lot of time during Mobile app development life-cycle for both developers and testers.

    Want to test your Mobile App?

    Join pCloudy Platform!

     

    4. Re-usability of Scripts: Testing automation makes the lives of the testers easy. The scripts can be reused with no or minimal changes in the script. These scripts can be used multiple times no matter if there are changes in the OS version of the device. The scripts and steps are stored and it helps to repeat the test without skipping or forgetting any step.

     

    5. Running tests anytime, anywhere: Automated testing help test engineers to run their tests 24/7. If the test engineer has to leave early for the day, he can easily schedule the tests and leave the office. The test results will be ready by the time he logs in again next morning.

     

    6. Distributed Test Execution: Automation testing cuts down complexities with its distributed test execution feature. It helps the testers to run a test script on more than one computer or shared network or servers simultaneously. So, only an automation testing tool is the requirement rather than multiple tools.

     

    7. Robust and simpler reporting: Automation testing gives us the benefit of tracking each test script. All the test scripts executed will be visible in visual logs. The reports generated can evidently show the number of test scripts already executed, scheduled, their reported bugs or issues and the ways in which they have been fixed.

     

    8. Testing Capabilities: Automated testing offers an unmatched and huge testing capability. The mobile app needs to be tested on multiple devices, OS versions, screen sizes etc. which can be efficiently done through automated testing and not by manual testing. In fact, it is almost impossible to get perfect results through manual testing.

     

    9. Better Test Coverage: Test automation can easily execute thousands of different complex test cases during every test run providing coverage that is impossible with manual tests. It can only be possible through automated testing as it can run test scripts on multiple computers with varied configurations. It can look inside an application and see memory contents, data tables, file contents, and internal program states to determine if the app is functioning as expected.

     

    10. Less Manual Effort: If an enterprise has implemented automation tools for testing, then it can accelerate the process and reduce the manual effort multi-fold. Less number of people will be required for a project and they can be utilized for different projects.

     

    11. Improves Accuracy: We have been saying this time and again that automation testing overcomes the shortcomings of manual testing. It has improved the accuracy to a great deal by giving error-free results unlike manual testing where testing is error-prone, delays the delivery and increases the cost. It is especially a boon in stress testing where getting error free results in manual testing is almost impossible.

     

    12. Return on Investment: One of the most important advantages of automation testing is the return on investment to the organization. Every enterprise analyses the return it would get out of its investment and then would go for creating a test automation framework. Automated testing offers immense returns in terms of faster testing, error-free results, less manual effort. If the enterprise has automated testing tool, then the testing would be more efficient and accurate and easy.

     

    13. Volume: You can run your tests on more than 500 devices in automation testing which is impossible in manual testing.

     

    One of the most important business advantages of automation testing is the return on investment to the organization. There are many advantages of automation testing tools as they are a crucial component in the DevOps toolchain. The importance of automation testing comes into picture when you have to run the test cases with different data and conditions several times.

     

    Conclusion

     

    Automation testing not only helps in saving time and improving accuracy, it does value addition to all the stakeholders involved in the app development lifecycle. Although testing automation offers such huge benefits, but many organizations have not adopted it in its entirety because of its initial cost associated with its configuration. With Agile testing and DevOps methodologies being widely followed in the IT industry, it is advisable to automate your testing processes completely with renowned automated testing tools to get the best results.

    Want to test your Mobile App?

    Join pCloudy Platform!

    For more information check out this video:

    Anshuman Chatterjee | Posted on | 2 min Read

    Explore Full Power of pCloudy

     
    pCloudy understands that businesses need their apps to be rolled out faster than before, without bugs, crashes, functionality issues, UI glitches, memory drainage and well, everything wrong with every app you uninstalled on your phone within minutes of using them.

     

    We simplify testing. More importantly, this platform will equip, enable and guide you to provide single-click access solutions to the battling issues that can easily drive a developer nuts. This platform allows you to test real Android and IOS devices directly from your browser using real Mobile Devices to click-and-perform Manual and Automated Testing for maximum coverage.

     

    Here are the most frequently used App Testing Use Cases you might be interested in.

    Manual App Testing

    Automated Testing

    Responsive Testing of Mobile Web

    Next Gen Mobile App Testing

    Continuous Integration

    Integrate your own Tools

    Plugin for Android Studio

     

    An Overview

    pCloudy has released a plugin for Android Studio which provides you access to the platform for performing manual and automation testing of mobile apps from within Android Studio IDE.

    For Manual Testing

    Now you can build and upload your Android Apps to pCloudy devices directly from your Android Studio project workspace.

    For Automation Testing

    If you are using Appium as automation tool and have created your Automation scripts as a project in Android Studio, you can run the scripts directly on pCloudy devices.

    Prerequisites

    1. An account in pCloudy with enough credits.
    2. An API Access key for authentication with pCloudy.com
    3. Chrome Browser on local machine
    4. Android Studio IDE
    5. Android Studio pCloudy plugin

    Preparation

    Reference the JAR files to Eclipse
    Make a note the API Username and API Access Key

    How to Install the Plugin

    1. Download the Android Studio plugin for pCloudy
    2. Open your Android Studio > go to Setting icon of Android Studio > Select Plugins > All available plugins are shown which can be filtered with the help of Show feature as per requirement.
    3. Click on Install plugin from disk > Browse and select location of your downloaded Android Studio plugin of pCloudy
    4. Click on OK
    5. Now, you can see that pCloudy plugin has been successfully integrated to Android Studio.

    Select pcloudy plugin and click on OK to proceed. Here, we are going to install pCloudy plugin for Android Studio from local disk. Click on Install plugin from disk
    install-plugin-from-disk

    pCloudy plugin for Android Studio has been integrated successfully.

    pcloudy-plugin-over-android-studio

    Click on pCloudy plugin icon shown on Android Studio. pCloudy Login page opens. Enter your Username and Access Key and click on Login. Your login credentials are verified. Click on OK to proceed.
    pcloudy-plugin-over-android-studio

    Note: This is one-time task. Credentials will be valid until you logout.
    Now, you are ready to use the Android Studio Plugin for pCloudy.
    Manual Functional Testing of App

    After successful login, upload your app screen appears. Workspace page helps you to select application path of your local machine.
    successfully-authenticated

    Cloud Drive page lets you to select app from the list and click on Next to proceed.
    upload-your-app

    Local Drive lets you to upload your app from your local machine to perform testing.
    upload-a-project-file

    Mobile Browser enables you to use mobile browser for testing.
    use-mobile-browser-for-testing

    After selecting app, the next step is choosing a device. Select and Connect to devices page provides you list of devices which can be filtered by using filter parameters (Android/iOS, Manufacturer, and OS version). Select duration of your testing. The device will get booked for selected time duration.

    When you click on Next, you get a message “Please wait while we open the pCloudy Platform on your default browser for Manual Testing. Please advised that…”
    select-and-connect-to-devices

    Just after few seconds, you will be redirected to the connected device page over pCloudy to perform manual functional testing of your app on selected device.
    briefing

    Automation Testing of App

    Similarly, the first step towards performing automation testing is selecting an app from workspace/cloud drive/local drive or use mobile browser.
    my-application

    Select your desired device; select duration of automation testing. You can filter devices displaying devices by using filter options (Android/iOS, Manufacturer, and OS version). Click onNext to proceed.
    choose-devices

    Note: Here, you can select multiple devices as well.

    Finally, you get corresponding pseudo code for performing Automation testing of app. You can copy this pseudo code to clipboard and use it within your Automation script…
    paste-the-code-and-proceed

    You will need the pCloudy java connector jar file for the above code to work. The pCloudy-java-conector.jar contains the API wrappers, classes & methods to use the pCloudy RestfulAPIs (without knowing how to call rest webservices from java). The gson.jar is a well known, opensource google library. You should add the pCloudy-java-connector.jar in its build path as a reference within your java project containing appium scripts.

    Avinash Tiwari | Posted on | 2 min Read

    Test Apps on Real Devices

     
    Using Eclipse or Android Studio to code your app? Now with just a few simple mouse clicks test apps directly and in parallel on multiple real mobile devices.

    Eclipse and Android Studio are two popular IDEs for mobile app development. The reason behind their popularity is, these are open source tools and have a great community of developers whom you can turn to for any support. Anyway, if you are one of those mobile app developers using these popular IDEs then there’s good news for you!

    What if you could extend the capability of your IDEs to improve the quality of your apps? What if you could test your app on hundreds of mobile devices right from your IDE? What if you could with the help of simple plugins take your mobile app development process to a whole new level?

    Well, you can – with a simple yet salient solution from pCloudy.com. With a cloud based device lab, pCloudy is contributing to the cause of redefining mobile app testing by providing remarkably useful platform and plugins to test your apps on real mobile devices. As mentioned in our previous articles, it is not enough if mobile apps are tested on Emulators alone. We need to ensure that the apps are tested on Real Devices as well. It is also important to test your mobile apps on different devices based on a carefully analysed device matrix to hit maximum downloads. To continuously develop, integrate and release mobile apps in your DevOps environment such solutions are crucial.
     

    Here’s how can our plugins benefit you

     

    Description:

    Our Plugins act as a wizard that allows you to:

    • extend the ability of Eclipse to use real devices over a cloud platform
    • select and install an app from a Cloud Drive or from local
    • select multiple real devices from a cloud (Public, Private, On-premise) to test your app
    • run test scripts in parallel on multiple devices
    • perform Automation or Manual Testing

    How does it work?

    If you have already created Test Scripts ready for Test execution, then all you need to do is to select some real devices over the cloud platform and run the execution to test your app. To help you out with this, the Plugin generates a pseudo-code that can simply be copied into your existing test scripts using Android Studio or Eclipse. With simple changes in the test script, the app will get installed and test execution is performed on the selected mobile devices. In the end, a detailed automation report will also be generated through our platform.
     

    With these plugins app developers and testers can:

    • choose from hundreds of mobile devices to test your App
    • effortlessly test their apps directly on real mobile devices
    • can view or perform an activity on mobile screen from directly within on your IDE
    • perform automation runs in parallel on multiple mobile devices

    Download and install the plugin:

    How many devices you have tested your applications on? How are you making sure your application is indeed working on all the devices available in the market?

    Yes one must test the application on Real devices, rather quite a lot of devices available in the market and must not rely only on emulators or one or two devices available with the developers. If so, you know that it’s difficult, primarily because of fragmentation in Android space. There are 9+ os versions, 8+ display resolutions, 5+ aspect ratios , 10+ physical device sizes & OEM customizations. All these factors are getting wider and wider day by day. So testing your application on all the devices is impractical because it consumes whole lot of time and buying so many devices is too expensive.

    optimus-Net-169

    Now what? First you should bring out an optimal set of devices which is derived by considering all the above factors in fragmentation. It turns out that its still too expensive to buy these devices. To avoid investing in buying a moving target of devices, you should try to lease the devices. You can save your efforts of buying & managing the moving target and of-course lot of money.

    This is exactly pcloudy is trying to solve, Real Android Devices on cloud for you to lease the devices only for the duration you need to finish your task. You will get access to Real Android Devices through any modern browser to finish your manual testing anddebugging. This tool is being used by lot of testing and development communities across the world today.

    Below are few feature from this wonderful tool.
    Lets make better apps, better experience together….