Performance Testing Tools for Mobile Applications - android

I am testing the application on Android & iOS platforms. The application uses the device mic. Network usage is used persistent.
Can any one suggest a simple Performance Testing tool to test the following,
I need to monitor & analyse the Network Usage
I need to analyse the Battery Consumption
Need to list down the scenarios when Memory Loss occurs
Generating the reports for the above mentioned scenarios would be much appreciated.

For battery consumption monitoring on Android you can use Battery Historian.
It provides detailed information, uses JavaScript visualization libraries to display battery related events on a timeline with panning and zooming functionality

You should be using AT&Ts ARO tool for deep network usage
analysis
You should be using Battery Historian for analysis of
Battery usage
You need to leverage a set of tools to find the right Memory Loss scenarios.

Its been an old post but thought I shall mention the tools that I have been using:
mAutomate (They have been providing lots of performance graphs for memory/CPU/Network etc)
Robotium (I had to write hell lot of code for it :) & was not automated)
I have used these tools for Android Test automation. mAutomate works for iOS too ,not sure about Robotium.

You should take a look at latest native Android Studio Profiler. It contains necessary tools for your purposes and they are often upgraded. Also for working with network I would like you to recommend Charles Proxy

Related

Android Monitor Graph logs

I have a simple application that contains two implementations which I want to compare(benchmark) with each other in terms of usage during a certain amount of time.
The testing method is equal for both implementations (they both execute exactly the same commands/events) the only difference is the way they process the command and events.
I wish to get a log per second of:
CPU load
Memory usage
Network traffic
The Android Monitor provides everything I need in a graph and logs per second the current CPU load, Memory usage and the TX/RX for network traffic, great!
However I wish to have this all in a text log instead of a live graph. Can someone tell me where I could find such a log? OR if there is no such thing, any suggestions to get similar data?
Doppie, I looked for a solution using out-of-box tools, but there is no good way to use the Android tools to export just the information you want to a text file without lots of work. Logcat is way too verbose and requires conversion, and Dalvik doesn't exactly provide you the every-second control over data collection. I would love to have a simple solution for this too. :/
[Disclaimer: Because I work with Perfecto, I know that the devices in their cloud lab can do this easily, so if you are trying to diagnose a specific problem, you could use their free public cloud and export the device vitals (shown below). This is not a pitch, but since it's free to play, it might help you in the short-term.]
hi first of all if you looking for memory logs. There is one option you can directly go and check that one.
Open Android Device Monitor then checks heap dumps.Check the uses of memory.
Another way to monitor Android Device Monitor then see the Allocation Tracker it gives you details in everyclass where you memory is used.
Expect these things you can directly check your Current logs.
Click Android Monitor and see logcat and second option Monitors.
Monitors gives you Four type of details :
1. Memory usages.
2. CPU how kuch usages of your phone.
3. Network
4. GPU.
Now after these all things. If you still have some problem then need to check your gradle.
What kind of libraries you used.
First of all remove unwanted libraries.
Secondly need to import only useful libraries. Like if you looking for map related things in your app then import only.
compile "com.google.android.gms:play-services-maps:9.4.0"
not this one.
compile 'com.google.android.gms:play-services:9.4.0'
Aware about replication of libraries.
Example : If you using some libraries and that libaray contain appcompt and you are also using same libaray in your app side.Then its better to use that libaray as module.
At last try to use proguard rules.
These are few ways to handle better memory management.
I have made one android app architecture here is link..
Thanks hope this will help you.

Portable Mobile/Tablet application proof of concept

I need to develop a portable application mainly for Windows 8.1 and iPad, but could be expanded for Android, WP and iOS later.
The application consists of calling web services to display data in grids and it contains CRUD operation, and it may save some local data for offline mode then synchronizes later when connectivity is up.
I'm torn between too many solutions, I need your advise for better solution.
1- Solution 1: Go Native for each OS (VS for Windows 8.1 [RT and pro] and xCode for iPad): this solution requires code duplication, logic and UI.
2- HTML5 with WebView app: I think this is a weak solution especially that we have local storage, checking for connectivity and calling ws ...
3- Using Xamarin: I think Xamarin does not support WinRT or Windows 8.1 to share logic code between iPad and Windows 8.1
4- Using Xamarin.Forms: Building the UI is tough and also it does not support Windows 8.1.
From your perspective, what is the best solution? please advices if you have any other proof of concept.
Many Thanks.
Most of the html/hibrid frameworks like Cordova (cordova.apache.org), Ionic (http://ionicframework.com/), etc, uses a native WebView on Android. Until Kitkat the performance of WebView is not production-ready and if you've a list with a lot of elements, the scroll experience is really bad.
If you want to do a simple proof of concept, prototype or whatever, I think that html frameworks are a good alternative. But if you are going to put your bussiness on top of one of this framworks, I would not recommend.
There is an alternative to embed a Chrome using Cordova & crosswalk (https://crosswalk-project.org/documentation/cordova.html) but you will end with an APK ~40Mb for a simple hello world.
Just my 2 cents. I don't see a point in using libraries that are unsupported across the platforms you plan to release and support on. Personally, I'd code natively for each platform. While this takes a lot of work, if you have to ask for direction on which path you want to take your application, then this type of project sounds more like a "you reap what you sow" application. Also, you'll be able to directly support each problem without having to wait for patches, but there are 2 sides to that coin as well. Your opportunity cost is missing future features the library will provide, if it's worth it to you.
If you aim at quality, going native is the only way... You can reduce the amount of work like Google is doing: writing the business logic and unit tests in Java, then converting it to ObjC with J2ObjC and to Javascript with GWT.
In your case, being that Java is a dumbed-down version of C#, you can easily find tools to convert to the latter, finding yourself with native business logic for every platform! That should account for 50%-70% of the codebase...
I think going with HTML5 with webapp view is better option.
Using Cordova (Phonegap) most of the native features are easily achievable in HTML webapp.
PhoneGap Platform Guide
Alot of other plugins are available for the advances features like BLE, NFC.
Calling webservice is really not an issue in HTML5.
Simple ajax is enough, however now a days many advanced frameworks are available which makes your work easy. One of the best among them is Angular JS(maintained by Google ).
Angular JS
For database you can access native database of the target OS or SQLite db of the mobile device.
You can check this link
Storage options
So developing a webapp can be a more efficient solution in your case. It can be best way for you as per my view point. However, you can do some R & D and can find the appropriate for you.

Android performance meter

I looking a tools that can be helps for me to measure my performance in some parts of code in my android application.
Is there any tools for help me?
Now i was written a class that measure my functions in app, but may be is exist more effective methods?
I'm not sure if you are looking for a tool to instrument your code and review your stack trace execution time or something more related to different metrics, but maybe I can help. I'm working on a tool we will release soon, this tool will allow us to monitor our application performance in production using real-time stats. The platform is named FlowUp http://flowup.io/. Just adding an Android library to your project you could monitor your application in production in real-time :)
Using FLowUp you can get information about your application performance in terms of:
Frame time.
Frames per second.
Network consumption.
CPU usage.
Disk usage.
Memory consumption in terms of load and bytes allocated.
And much more metrics. Of course, all these metrics can be reviewed crossing this information with some tags related to the application or the device. For example, you could get information about the network consumption or the frames per second of your app per activity and comparing different app or Android OS version.
This is an screenshot I've taken from our landing page:
Right now we are under development but I recommend you to subscribe to our mail list in http://flowup.io to have access to the first beta we will release soon :)
If you have any metric you'd really like to monitor, please don't hesitate to request it! Maybe we can implement this for you :)
Sure there are tools for that. Try this: Android Systrace.

How can i check time taken for each screen on my android app

My PM wants me to test that how much time my android app is taking on GPRS/edge/3g when i navigate in app.
Is there any tool that i can use as he want me to use a tool that we can run.
he wants that when we use our app on mobile network how much time each page takes to load..
Please help!!
There are several tool provided by Android itself to optimize and monitor Application Performance
One of the tool is TraceView
Documentation:
Traceview is a graphical viewer for execution logs saved by your
application. Traceview can help you debug your application and profile
its performance.
Android also provides Device Monitor is available which comprises of several tools including TraceView
Documentation:
Android Device Monitor is a stand-alone tool that provides a graphical user interface for several Android application debugging and analysis tools.
Give it a try to these tools
Also if you want to find out how to improve performance, go through following blog I usually refer to optimize application performance
http://opensignal.com/blog/2013/07/30/40-developer-tips-for-android-optimization/
Hope this will help
If you are looking for a way to log the time that is spend in some method call you could use TimingLogger. With that you could log every network request and how long it takes to receive the network response.

What are the key differences between Android, iOS and Blackberry OS?

What are the key differences between Android, iOS and Blackberry OS in terms of level of accessibility by application developers (i.e. access to the video input, sound input, phone functionalities, to which extent, etc.)?
PS: Assume latest version of each OS.
EDIT: Can someone turn this into a wiki so we can compile answers from people that don"t necessarily have experience in all 3 plaforms.
I'm not familiar with BlackBerry, but on Android and iOS you can access just about anything. Until recently iOS had some restrictions about camera access (see this), but I belive those have been solved. Because Android is open-source, you can theoretically go as deep as you want as far as accessing the hardware, but you may or may not be able to get any deeper through the standard Android API than you can through the iOS API.
On Android, you can do a lot more to override default functionality. For example, you can create your own launcher screen or phone application. The iOS approval process wouldn't allow these kinds of applications.
API hardware access really isn't an issue on either platform, the bigger concern is overriding default software (almost never possible in iOS) and what types of applications iOS allows.
Each platform has its own nice and bad parts. I have been working on both Android and BB. I wish I could take only nice parts from both to create a platform of a dev dream! :)
For instance, I could take these features from BB:
The greates feature I like in BB is the simplicity of the application architecture - you can always count on your main UIApplication instance - OS never kills it.
Also I do like the simplicity the Dialog class provides - it is very easy to implement business logic related to user choice - while Dialog screen is shown the code execution just stops and waits for user input.
From Android I'd take the following:
Network communication. On BB this is a real nightmare (BES, BIS, WIFI, Direct TCP without APN, Direct TCP with APN, WAP, WAP2, Unite - who's next? :)).
For file manipulations you just use a native/usual Java API.
Nice looking UI components are available right out of the box.
I should add I'm not happy with GPS related stuff on both platforms, however maybe it is due to GPS hardware limitations rather than API creators.
Thanks!
BlackBerry is a pain, once I made a project for it (the JDE version was 4.7 back then) and it didn't had an ArrayList. WTF?

Categories

Resources