Friday, 21 March 2014

Few QA tips for Mobile App Testers

Few areas that we need to concentrate while testing on Mobile Apps.
1. UI
2. Functional
3. Performance

1. UI
  • Testing on Different Devices like Tablets, Different devices which has different scale sizes.
  • UI changes based on the device Orientation
  • When app shows alerts at that time it self tries to Change the orientation of the device (most of the time it crashes).
  • Low battery/SMS alerts while working on the application and check if it affect your alerts/popups

2. Functional
  • Notification Testing (Disabling the Google account, without Google account, Changing the Google account password, Disable Google Account sync action).
  • Payloads validation (which refers to the notification to the app from your server). All the notifications should not have the license key or any secure information. It should always be a simple wake up call for that app to initiate a request to the server from your app.
  • Application logs should not contain the apps informations that has pass from your app to the server and vise versa.
  • Field validations
  • Interrupting communication of the app
  • Offline mode app access 
  • Database testing - Database should be encrypted if it is a security based app
  • Rooted device validations
  • Interrupting the app communication with the server by making a call to the device or turning of the wifi or Drop the Data network. Any way try to disturb the data network of the device
  • Auto start of the app (on device reboots). 
  • Check the app communication in different networks (WIFI, Data Network like 2G, 3G). 
  • If the app was developed by third party vendors like Kony/Work Light/Phone Gap then all these apps will be designed by HTML5. Most of the time if the apps are business related then these apps will maintain a session with the server. So the session ID should not visible any where. 
  • Test the App on different Android OS.
  • If your app uses camera then check disable the camera app from the application manger on the OS then check from your app. 
  • If your app uses GPS then check it should not allow Fake GPS kind of apps to fake the gps location. So your app should always fetch the current location of the app. 
  • Upgrading the app from existing app (Where it should upgrade the db of the existing app).
  • If  your app uses SD card storage to write some data then try to test the app without SD card, with a new SD card, SD Card without enough Space. While app using the SD Card pull out the card...etc.
Basic Performance testing:
1. Long run (Run the app for 1 day)
2. Battery usage of the app
3. Data usage by the app
4. Device speed after using the app, it should not lag the existing speed and performance of the app
5. Use different tools like Little eye to measure the performance of the app


Note: Few of the above tips are applicable for Blackberry/android devices only.



Please share your comments and valuable suggestion to make this blog useful for others/freshers.


How to resign the android apk files with your keystore file?

Hi All,

We can able to sign the apps by your own keystore files.
Todo this, make sure you should ready with your keystore file and apk file which you want to sign.

To Generate the Keystore, refer http://suramsridhar.blogspot.in/2014/03/how-to-create-android-debug-keystore.html


1. Change the APK file to zip file. (let say your file name is abc.apk then rename it to abc.zip).
2. Extract the abc.zip folder to abc folder.
3. Open the abc folder and delete the META-INF folder.
4. Now zip the abc folder to abc.zip
5. Rename the new abc.zip file to abc.apk file.
6. Now the APK file is ready to sign by your keystore file.
7. Run the below command to sign the above generated apk file.

jarsigner -sigalg SHA1withRSA -digestalg SHA1 -keystore yourkeystore.keystore -storepass password abc.apk alias_name

8. After running the above command your abc.apk is ready with your own keystore file.


Note: If you face any problems while executing the above command then check whether your system is configured with Java. And also your system should be configured with all necessary Path variables

How to Create Keystore file and how to extract .cert from keystore?

Hi All,

Here is a simple way that we can create a android keystore file. The below commands are worked on the windows machine. Not sure will that works on Mac or not!!

To create android keystore file, Open the Run command and execute the below command.

keytool -genkey -v -keystore filename.keystore -alias yourname -keyalg RSA -keysize 2048 -validity 1000


Once after hitting the above command, it will ask for the user details and go ahead by entering all the details. Once it finished you are ready to use the Key store file!!!





Note: If you face any problems while executing the above command then check whether your system is configured with Java. And also your system should be configured with all necessary Path variables

How to extract .cer file from Keystore file?
Use the below command to get cer file from keystore file.


keytool -export -keystore <Path to .keystore file> -alias <alias name> -file <filename.cer>

Android Sample Telnet Commands


Connect your emulator from a command prompt:
Eg#   telnet localhost 5556


Telnet Commands:
1.  Help
2. SMS Send 1234567890 Hello!
3. Help Power
4. Power Capacity 100
5. Power ac  
6. Window scale 0.5 (Changing the size of a emulator dynamically)
7. avd start
8. avd stop
9. avd snapshot
10. avd status - Get the current status of the emulator
11. GSM Call 1234567890 - Make call
12. GSM Cancel 1234567890 - Reject the call Or Hit F4 from the emulator window
13. Geo Fix <Longitude Value> <Latitude Value>.

To simulate the GPS points your android emulator run the below java program,Please make sure that Your emulator running on the correct phone numner.

import java.io.IOException; import java.io.PrintStream; import java.net.Socket; import java.net.UnknownHostException; class GPSDemo { static final int PAUSE = 4000; // ms static final float START_LONGITUDE = 51, START_LATITUDE = -1.3f; static final int NO_SAMPLE = 100; static final float DELTA_LONGITUDE = 0.000005f, DELTA_LADITUDE = 0.000005f; public static void main(String[] args) { try { Socket socket = new Socket("localhost", 5554); // usually 5554 PrintStream out = new PrintStream(socket.getOutputStream()); float longitude = START_LONGITUDE, latitude = START_LATITUDE; String str; for (int i = 0; i < NO_SAMPLE; i++) { str = "geo fix " + latitude + " " + longitude + "\n"; out.print(str); System.out.print(str); Thread.sleep(PAUSE); longitude += DELTA_LONGITUDE; latitude += DELTA_LADITUDE; } } catch (UnknownHostException e) { System.exit(-1); } catch (IOException e) { System.exit(-1); } catch (InterruptedException e) { System.exit(-1); } } }

How to Speed Up Android Emulator?

There are two Options where we can use it.
1. Intel Hardware Accelerator
2. Snap Shot
Or You can Use some third party apps like https://shop.genymotion.com/index.php?controller=order-opc

1. Intel Hardware Accelerator

Please refer the Following Web site, it has the full details.

http://software.intel.com/en-us/android/articles/speeding-up-the-android-emulator-on-intel-architecture

2. SnapShot

While creating a android emulator we should enable the Snapshot option. Once we enabled this option then that time onwards it should start the emulator faster.

Thursday, 20 March 2014

Hi This is Sridhar, Having around 8 Years of experience on Mobile applications as a QA Engineer. Also holds 3 years of experience on Automation by using Appium.
During my journey I worked on the Mobile Work force Management, Mobile Device Management and Mobile Application Management.

In this blog, I am going to share my Experience and challenges which I faced. And also will share the TIPS and Tricks in the Upcoming pages.

Stay Connected!!!!!!!