We are committed to keeping you ahead of others. pCloudy is one of the fastest to release the support of Android Q beta devices on the cloud.
Google has launched the final Android Q beta and Android Q official release is just a few weeks away. Testers and developers can test their app against this final beta version. Android Q beta 6 includes the final API 29 SDK and updated build tools for Android Studio. It also supports all the features, developer APIs and system behaviors that will be in the final release.
Now you can test your mobile apps on devices loaded with Android Q beta version in pCloudy.
There are more than 5.5 Million apps available on Google Play and Apple App Store combined and by 2022, the number of app downloads will be around 250 Billion. The number of smartphone users in the world is more than 3 Billion and the users prefer using smartphones instead of desktop. This data shows that the mobile app market is very competitive and growing. In this age of digital transformation, the focus of enterprise mobility is to provide better user experience at great speed. The launch of 5G will further complicate the app development and testing process initially. But apart from this, there are three main challenges to overcome and pCloudy is leading the path to bring positive change. Let’s look at these challenges and their solutions.
Challenges Faced by Enterprise Mobility
There is a growing demand for quality at speed in the mobile app industry. The current market dynamics are such that it is necessary to provide the best quality product in less time to remain in the competition. When we talk about mobile app testing, quality can be maintained only when the enterprise can achieve scale. There is a myriad of devices in the market with different OS versions, browsers, Custom ROM, etc. and the app should be compatible with all the devices. How can ensure this and most importantly, how can we speed up the testing process on multiple devices? pCloudy can help you overcome this challenge with its best in the class features. Let’s have a look at them one by one.
Parallel Testing to Achieve Scalability
If we are talking about scalability then testing your app on 5,10 or even 20 devices are not enough for the enterprises to ensure a bug-free app. pCloudy enables to testers to run your test scripts concurrently on 50, 100 or maybe more devices. Enterprises have the option to perform parallel testing in our public cloud or in our plug & play on-premise infrastructure solution. With more than five thousand device browser combinations, enterprises can ensure that the application is working properly in all the devices.
Parallel testing on 50 devices
You can see in the picture above, we have set up a device infrastructure for 50 devices for demonstration. Similar device setup can be provided for our on-premise solution and public cloud users can just log into the pCloudy platform and book the devices to perform testing. These real devices can be accessed remotely on the cloud which makes it more convenient for the users as there are no location constraints.
Progressive Reports to Improve Quality
It won’t be efficient to go through each and every report to analyze the data for every device. Instead of that, you get intelligent results where you can do a quick analysis of the errors and then debug quickly. In the pic below you can see the list of results for different builds with their start time, progress, status, and Action.
In the status, you will be able to see how many tests pass, fail, and errors. This way you can concentrate on the tests which failed and you will save time as you don’t have to manually go through all the cases.
You can integrate any reporting framework with your existing Appium setup. The same way you have to configure with pCloudy by adding a one-line code while creating an asset.
In the pic above you can see the test case result in detail. You can see the tags, test case name, build, Automation, and the live status of errors.
Once you expand the test case you can see the logs, Jason format, screenshots, video for that particular session. This information can be used to expedite the test execution.
Integration with AI to Speed up Mobile App Testing
The next challenge is to speed up and simplify the test script creation process. Usually, the procedure is to connect the device to the system and use an automation framework like Appium to use object repositories. If you are using images then the XPath may change depending on the devices.
This AI based utility will help you to get the object repository for the entire page. So if there is an icon for contacts then this utility will automatically recognize the element.
In the code, you just need to declare the driver for Appium and for pCloudy as well. Then you need to initialize the drivers and start using the code generated using the AI utility. This is how the script creation is expedited using AI.
Conclusion
To sum up, pCloudy has come forward with solutions for the enterprise mobility to deliver quality at speed with scale. Whether it’s parallel testing, progressive reports or creating a script using AI-based utility, all these features fix the problems that were mentioned earlier. The proverb “change is the only constant” fits well as pCloudy comes up with updates on a regular basis to resolve the issues and make mobile app testing better.
‘Metrics’. This term has become one of the widely used terms today in enterprise mobility especially for measuring mobile app performance.
Let us first understand why are the metrics are so important to analyze the performance of an app.
Generally, app developers consider mobile app performance testing as an afterthought. Mobility teams have to meet stringent deadlines and for them, testing the performance of an app has the least priority. To them, passing the functional tests meet all critical criteria for launching an app. Well, let us find out why is performance such an important criterion for mobile app testing.
Reasons why measuring Mobile App performance is such an important criterion:
1. Speed wins: As per the Compuware report, users expect their apps to load in about two seconds. This can even be proven right by the SEO reports from Google, which considers the site speed as an important parameter for Page ranking.
It is important for mobility teams to understand that your users want their apps to respond in about two seconds or less. Anything beyond two seconds, and you might lose your business.
Once the app starts taking anywhere close to five or 10 seconds, users start shifting to your competitors.
2. Mobile App Error Rates are probably much higher than it seems: You must have struggled with issues like images not loading, network errors, content feeds leaving blank holes in the app, timeouts, crashes, freezing, upload failure etc. Most of these issues are not errors of apps but caused by unreliable networks.
The error rates are highly variable and depend on network conditions. In the United States, we’ll typically see 3% error rates, whereas in India, China, and on challenging networks in Europe and Asia, we see error rates up to a frustrating 12%. Not measuring and then getting a handle on mobile app errors will quickly result in frustrated customers, uninstalls and 1-star reviews in the app stores. And no one wants that.
3. 5 star app rating: Reviews and ratings have become important aspects of judgment for any user before downloading your app. And the app should be perfect in all the ways to ensure a 5 star rating.
If you focus on functional tests and miss out on the mobile app performance not knowing, if too much battery is drained on a particular device, or is consuming too much data, then your Playstore might be full of negative reviews even before you market it well.
In this post, you’ll know how app monitoring performance works so that you can get the best out of your Smartphone software.
What is application performance management? 10 APM features that we can tick right off our fingers are:
Troubleshooting of disruption of frequent speed and uptime
Monitoring of the speed at which transactions are performed by end-users and systems
Use of a single integrated suite of software tools
Load-testing
Synthetic monitoring
Real-use monitoring
Root-cause analysis
Web-performance monitoring, to gauge app speed and uptime
An end-to-end overview of bottlenecks
Review of service interruptions
APM is integrated through the lifecycle of an application including the pre-deployment and post-deployment stages. It is therefore important for developers, testers, and business teams. A slow load can be prevalent due to a host of issues related to APIs, servers, or browsers. APM techniques are what help pinpoint the actual problem.
Basic availability monitoring involves testing IP protocols and network services, but a user needs to establish some optimal performance thresholds and real-time alerts to monitor and manage both speed and reliability.
Tips for monitoring app performance
Performance monitoring must take into account certain things in order to optimize user experience. These include measuring from the user’s point of view, i.e. performance, stability, and resource utilization in real time the way the user perceives them.
The context is crucial too. It’s important to determine how many users were affected by a slowdown, and what action on a specific operating device prompted the disruption. To truly experience a ‘mobile moment,’ you should follow these tips for monitoring your app performance:
a) Measure Frame rendering time
Only measuring network time doesn’t cut it out for users, who are interested in when the network resumes as well as when it responds.
Measuring response time by the device or operating system allows the product manager to focus on one platform at a time, respond to performance issues, and deploy resources accordingly.
b) Measure battery usage
It’s crucial to measure the battery consumption of your mobile app, along with data plan impact and memory usage. If the app is responsible for draining your battery, you should bring it in line with best practices.
Frequent updates can also be minimized so that user satisfaction can be increased.
c) Measure cell data consumption
Recent studies by Dimensional Research have shown that 20% of respondents stopped using apps that were heavy on data usage. This indicates that you should measure the consumption by app version, the total number of users, KBs of data consumed per minute, the amount of data being transferred per hit, and the percentage of data being consumed per hit.
d) Measure errors
HTTP errors from certain URLs need to be captured. This will help track the number of users who received an error, the actions that resulted in it, number of users with errors on app launch, the percentage of actions that led to at least one error, and the app version.
pCloudy helps you with performance profiling of your mobile apps. You can view the CPU usage, Memory usage, Data usage and Battery consumption while performing a series of actions on the app. The Real time mobile app performance monitoring feature helps you to keep track of the app’s performance while conducting manual tests. You can even check the performance consistency of the app by running automation test suites in parallel on multiple devices and by also simulating different network environments.
App Performance while conducting Manual Tests
The performance of an app can be viewed real-time while conducting functional tests. You can simply select the application installed on the device from the Tools section to view a graph of Memory and CPU usage, with the packets/bytes consumed in the Data Usage.
All information captured during a testing session is gathered by the platform and stored in a secure location to be used later. When a tester completes his testing session using a device, the performance related information can be found in the Cloud Drive.
Battery Consumption
The Battery Consumption graph indicates Battery consumption by Device, Battery consumption by Application and Battery consumption in %.
CPU Consumption
The CPU consumption of an App is plotted as CPU consumption in percentage against Time Duration in seconds.
Memory Consumption
The CPU consumption of an App is plotted as Memory consumption in ‘Mb’ against Time Duration in seconds.
You can listen to this webinar on Performance testing to find out how a cloud based solution can help your app perform well in all situations.
There are millions of mobile apps available in the market today. The statistics shows that since 2016, on an average around 6000 apps on Google play store and 1400 on the Apple store have been released every day. In order to be hassle free and to be on top of the competitors, an app needs to be stable and be properly tested.
Testing on mobile devices could be very challenging as it has to constantly be in touch with the new updates, new features and a myriad of DevOps tools that get introduced every time to ensure better performance and reliability of the mobile app.
Hence, there are many factors that have to be considered while framing the testing strategy in order to avoid all kinds of uncertainties in the app performance, just needs a right planning.
Below are five strategies every mobile testing team should keep in mind in order to reap the most benefits from their QA efforts.
Emulators are the best option only at the early stage of testing, and they have a vital place in the overall QA process. But testing on emulators is not successful for all types of testing. All the tests should not run on emulators as those will not be reliable for an app to run immaculately in the real world scenario. Testing on the real devices is certainly more accurate as it can test many device functionalities like camera operations, battery life, GPS, Bluetooth, networks and more. Each device is designed differently and emulators do not solve issues specific to a particular type of device.
Procuring multiple devices and testing the app on each Operating System can be quite a daunting task and it may seem next to impossible to test the app on every OS combination. The best way would be to test apps on a cloud based platform with a hub of real devices. This way your testing results would be more precise and the procurement cost could be controlled. pCloudy has a wide variety of mobile devices available on cloud that can be considered as the preferred option.
2. Testing Automation
Automation testing is the key and the most vital when it comes to mobile apps. It can ease the execution of tests to run simultaneously across real devices which speeds up the entire testing process allowing the apps to float in the market quite earlier and faster. In the cases where the tests require a lot of set up and aren’t the routine tests, manual testing should be preferred over automation. Mobile Automation testing necessitates the use of right automation tools. The choicest one is Appium which is open source and supports both iOS and Android and also allows to write the tests that can run on both the platforms.
3. Functionality testing
The core functionality is the main draw for any app and it has to be rock solid. People seek out apps to perform specific functions. Incomplete or inadequate functionality will result in abandonment, so make sure that the main functions are fully implemented and tested before you move on. User experience really matters and is also a key factor in an app’s success. For example, if the elements of the app are placed incorrectly on the mobile screen, the user will not use the app and uninstall it straightaway. So, the mobile app needs to be tested on each functionality in order to give the best results.
4. Performance and Load Testing
Usual tests are performed at earlier stages to identify the bugs even before they are pushed for production but the performance and load tests are performed later in the SDLC process to assess the maximum operating capacity and behavior of a mobile app in real life load scenarios. Tools like JMeter and Android’s Monkey tool are often used for performance and load testing. Also, the app performance on real devices is done in order to check the issues like network interruptions, memory leaks. Whatever the choice of tool may be, the goal is to ensure the smooth functioning of the app before and after the final release.
The Internet speed can also have a major impact on the experience of using an app. A user connected to a slow cellular network might have a hard time with apps that have rich media content. Make sure your app testing includes slow connections — and fast ones — to make sure the experience is OK at any speed.
5. Choice of Mobile app testing tools
It is very important to choose the right tool for mobile app testing. There are many favored mobile app testing tools to do the right testing.
Out of the meagre tools available in the market, Appium tops the list of the most preferred open source mobile testing tool in the market. Other than this, the tools like Robotium and Espresso which are used widely to test the Android apps by empowering the testers to write UI tests for Android Apps, easily. Google’s EarlGrey performs the similar function as Robotium for iOS framework.
Conclusion
To conclude, we must acknowledge that the decisions related to successful mobile app testing is the key role of the testing team. Testing landscapes keep changing and the testing strategies have to be aligned with the vulnerabilities of the market. It can be deduced from the above discussion that both emulators and the real devices are needed as per the testing situation. Performance and load testing are the saviors and must be performed sincerely in the production to understand the reaction of the mobile apps at different load conditions. There should be a right combination of the testing tools as per the type of operating system where the app has to be installed. To make the Mobile app testing a success, the right decision-matrix regarding the above mentioned points would prove to be the strongest pillar of the QA team of an organization. To know more about the mobile app testing success, visit www.pcloudy.com.
Mobile apps can often crash for many reasons. Nothing is as excruciating as memory leaks. It starts with your app crashing often, or becoming slow or maybe making your entire phone slow down, taking longer time to load activities. Memory leaks are notoriously hard to detect, and thus can easily surprise you. Have we ever thought why most of the users uninstall the application after some use?
Which is why it is critical for Developers to understand the memory consumption by any mobile application. How do you detect memory leaks during Mobile Application Testing? And if so, how can you prevent them from hogging mobile resource consumption?
Memory is one of the key resources of the mobile device.And memory leaks in Android is an important thing to be kept in mind. Java is a garbage collecting language, which removes the need for developers to dig deep to manage allocated memory. This reduces the chances of any segmentation fault crashing an app or any unfreed memory allocation from eating up space of the heap area, thus creating a safer code.
However, a garbage collector is never an insurance against memory leaks. There are other ways by which memory can be leaked within Java. This means that your android mobile application is still pretty prone to wasting unnecessary memory allocation and crashing with out-of-memory (OOM) errors.
Why are Memory Leaks Bad?
Cause: Memory leaks occur when some variable of the application still has references to some objects that are unnecessary, no longer in use or used to be with the app anymore, is bloating the allocated memory heap and the Garbage Collector is not being able to release that memory.
Effect: Android devices mostly run on phones with limited memory, so as a result of too many leaks, the app runs out of available memory. This triggers more frequent Garbage Collector events which paralyze the device (Stop-the-world GC events) by almost stopping the rendering of UI and processing of events. This leads to an Out of Memory Exception and translates to the user as the app being unresponsive.
Testing for Memory Leaks
Memory Leaks are caused by the failure to not be able to de-allocate memory that is no longer in use, which is why they cannot be identified during black box testing. The best phase to find the memory leaks is when developers are developing the application, at a code level.
It’s best to check for memory leaks during unit testing. However, testers can follow these tips:
Release Unused Memory: Memory leaks can be present because of the bad design of the application and thus might consume lot of memory when the application is in use
Test on Multiple devices:The memory consumption by the application should be monitored while doing the system & functional testing. One shouldn’t rely on a single device testing as there are plethora of devices in the market.
Detecting Memory Leaks
There are quite a few techniques and tools devised by developers to pin point memory leaks. Android’s very own Android Studio has a powerful tool to monitor not only memory usage but also for network, GPU and CPU usage as well, called the Android Monitor.
Memory Monitor in this helps track memory usage, find de-allocated objects, identify memory leaks and helps get an overall sense of how your app allocates and frees memory. It’s done in three steps:
1. During and use and debugging of app, track the memory monitor. If the memory usage graph rises for your app and doesn’t fall even if put in background, it’s a memory leak.
2. Using the Allocation tracker, you can check the percentage of memory allocated to different types of variables in your app. This gives you a sense of how much memory is consumed by which object.
3. Create a Java Heap Option to create a heap dump that keeps a snapshot of the memory at any given point of time, thus providing the data consumption data.
Despite Android’s monitor to detect memory leaks, there are a few platforms from developers that help extract memory consumption data without so many steps for faster testing cycles.
pCloudy’s very own platform for example, generates the statistics for Memory consumption while doing the normal functional Mobile Application Testing on real mobile devices.It also generates other vital data such as CPU consumption, battery consumption & data consumption for testers and developers who reiterate several test cycles across multiple physical devices.