Thursday, August 9, 2012

Control your Android and iPhone through Laptop or Desktop


Control your Android and iPhone through Laptop or Desktop 

Problem Statement :-In Mobile applications testing, purchasing a cloud based solutions is costly. It also involves some security constraints as you are using the devices which are shared with other unknown users. 

Solution :- If you have limited set of devices with you at one location and your testing team is distributed across differant locations then you can put your devices on cloud without heavy investment. 

Before implementing this solution in your project, please verify on compliance, copyright laws and blah blah....as jailbreaking and rooting of devices is required to achieve this. 

Lets see how to achieve this - Basic idea is to convert your Android or iPhone in to VNC Server. 


Procedure for Android Device:- 
1.Pre-requiste for this is, your Android phone must be rooted. Rooting is the procedure by which you get super user access to your phone. Android is based on Linux kernal, though its open source operating system it doesnt allow to access its file system structure. 
2.On rooted android device, open Google play store. Install the VNC Server app on it.  https://play.google.com/store/apps/details?id=com.schumi.vncs&feature=search_result#?t=W251bGwsMSwxLDEsImNvbS5zY2h1bWkudm5jcyJd 
3.Install the VNC client on your machine. You can use any VNC Client, prefer realVNC.  http://www.realvnc.com/download/viewer/
4.Connect your Android phone and desktop / laptop (from which you want to control) to the Wi Fi network. 
5.Launch the VNC Server app on your rooted android phone. Note the IP address shown. 
6.Enter the IP address in VNC Client, accept the connection on phone. 

Procedure for iPhone :- 

1.Pre -requiste for this is, your Apple phone must be jailbroken. Jailbroken allowes you to install non App stores (not approved from Apple)items to install on your iPhone. Jailbroken Video is available on Youtube. 



2.On jailbroken iPhone, open Cydia. (Cydia is app store of jailbroken iPhone). Install Veency. 
3. Install the VNC client on your machine. You can use any VNC Client, prefer realVNC. 
4.Connect your i-Phone and desktop / laptop (from which you want to control) to the Wi Fi network. 
5.Launch the VNC Server app on your jailbroken i-Phone. Note the IP address shown. 
6.Enter the IP address in VNC Client, accept the connection on phone. 

      YOU HAVE DONE IT!!!!!!!! Access your all phone features from desktop....

Saturday, May 26, 2012

DeviceAnywhere Studio

My personal experience with DeviceAnywhere Studio -

I have had a chance to use DeviceAnywhere studio in my one of the projects.

This post is an attempt to list down all the required things about DA Studio to get start.

Please note, this is based on my personal understanding. For detailed, i would advise to attend the webinar arranged by DeviceAnywhere.


What is DeviceAnywhere Studio :- DeviceAnywhere studio is repository of  physical devices using real cellular network. These devices are plugged in to the DA Studio servers and you need to install a client on your desktop to access these devices. [ In layman language you can compare this to remote desktop connection] Through this client you can access the physical devices. DA Studio will be just interface between your machine and devices.

What you can do with these devices:- You need to acquire the device, and just start using it. To perform the actions on physical device, you can use device keypad or your desktops keypad.
After acquiring the devices using the right pane, you can perform actions like restart the device, pull the battery, screen resolutions and other device aspect.


If you are performing application testing, then you can upload your mobile builds through this section of devices. You need to upload them as per application type viz -Android app, iPhone app etc.
Applications can be removed as soon as you release the device, considering the security aspect.

DeviceAnywhere Packages :- Devices are available as per your package. They have standard packages e.g. [US AT&T] - in this package all the devices will be on AT&T carrier in US [North America] geography.
Package is nothing but "how the devices are grouped" i.e. based on carrier, based on Device OEM's, based on user's requirement.
DeviceAnywhere provides end to end testing features like creation of test cases, execution of test cases, tracking of defects.
DeviceAnywhere have provided the feature of capturing the screen shot as well as video of actions performed on the devices.You can book the devices in advance as per your requirement.

@ Automation capabilities:- Yes, DeviceAnywhere support automation. They have defined controls which are used to perform the actions on devices.

If you have any queries, please give a shout. I will try to respond to best of my knowledge.

Sunday, May 20, 2012

Invoke 'adb' from any location


1.0 In Android SDK, android debug bridge (adb) is invoked through platform-tools folder. User have to go to platform-tools folder each time through command prompt and execute the adb commands. 




2.0 By adding the location of adb to Path variable, we can execute the adb from any location. 
3.0 Navigate Computer --> Properties --> Advanced system settings --> Enviornment Variables. 
4.0 Edit the 'Path' system variable. 
5.0 At the end of 'Path' system variable, add the semicolon and add the path of adb. e.g. if your sdk is on D drive then D:\android-sdk-windows\platform-tools 


6.0 Save the changes. 
7.0 Navigate to command prompt and execute any adb command to verify that its working.



Wednesday, May 16, 2012

ADB commands

ADB (android debug bridge) is command line utility available in Android SDK to manage the emulators. Below are all the commands - 



Android Debug Bridge version 1.0.20

 -d - directs command to the only connected USB device                               returns an error if more than one USB device is present.
 -e - directs command to the only runing emulator.                                 returns an error if more than one emulator is running.
 -s  - directs command to the USB device or emulator with
the given serial number
 -p - simple product name like 'sooner', or
a relative/absolute path to a product out directory like 'out/target/product/sooner'.If -p is not specified, the ANDROID_PRODUCT_OUT environment variable is used, which must                                  be an absolute path.
 devices - list all connected devices

device commands:
adb push  - copy file/dir to device
  adb pull - copy file/dir from device
  adb sync [ ]- copy host->device only if changed
                                 (see 'adb help all')
adb shell - run remote shell interactively
  adb shell - run remote shell command
  adb emu   - run emulator console command
  adb logcat [ ] - View device log
  adb forward - forward socket connections
                                 forward specs are one of:tcp:
                                   localabstract:
                                   localreserved:
                                   localfilesystem:
                                   dev:
                                   jdwp: (remote only)
adb jdwp - list PIDs of processeshosting a JDWP transport

adb install [-l] [-r] - push this package file to the device and install it
                                 ('-l' means forward-lock the app)
                                 ('-r' means reinstall the app, keeping its data)
adb uninstall [-k] - remove this app package from the device
                                 ('-k' means keep the data and cache directories)
  adb bugreport                - return all information from the device
                                 that should be included in a bug report.

  adb help                     - show this help message
  adb version                  - show version num

DATAOPTS:
 (no option)                   - don't touch the data partition
  -w                           - wipe the data partition
  -d                           - flash the data partition

scripting:
  adb wait-for-device          - block until device is online
  adb start-server             - ensure that there is a server running
  adb kill-server              - kill the server if it is running
  adb get-state                - prints: offline | bootloader | device
  adb get-product              - prints:
  adb get-serialno             - prints:
  adb status-window            - continuously print device status for a specified device
  adb remount                  - remounts the /system partition on the device read-write

networking:
  adb ppp [parameters]   - Run PPP over USB.
 Note: you should not automatically start a PDP connection.
  refers to the tty for PPP stream. Eg. dev:/dev/omap_csmi_tty1
 [parameters] - Eg. defaultroute debug dump local notty usepeerdns

adb sync notes: adb sync [ ]
  can be interpreted in several ways:

  - If is not specified, both /system and /data partitions will be updated.

  - If it is "system" or "data", only the corresponding partition
    is updated

Tuesday, April 3, 2012

Harsha Bhogale at IIM-A on Excellence

A must watch video. Lecture delivered by Harsha Bhogale on Excellence at IIM- A. There are total six video's; i have given link for first video. Dont miss this.







Thursday, March 29, 2012

Ideal Test Execution Summary / Report

What the ideal Test Execution report should include, is always a question of debate. It should be crisp and contain the infomration required by Test Management Team OR all the stake-holders. Below are the important aspects which Test Execution Summary should include.

Level Of Testing :- Unit/System/System Integration/UAT

Type Of Testing :- Functional/UI/Compatibility/Non-Functional (e.g. Performance, Security etc)

Enviornment Details :- Build Details, Server Details on which execution is carried out, Database details, Database package details

Test Suite Details :- Details about the test suite executed i.e. e.g. Regression Pack 1.1, SIT 2.2 etc.

Total # of Test Cases:-

Total # of Test Cases Executed :- No Test Cases should be in "No Run" (ideally)

Total # Test cases Passed :-

Total # Test Cases Failed :- # along with Defect# raised during this run of Test Execution

Total # Test Cases NA :- # along with reasons

Total # Test Cases as Deferred :- # along with reasons
% of Test Cases Passed : (Total#Test Cases Passed)/(Total#TestCases Executed)*100

% Test Cases Failed :-  (Total#Test Cases Failed)/(Total#TestCases Executed)*100

These are the "MUST" of any Test Execution Report

If we collate this information in tabular format, then this will give exact picture of our Test Execution.

Sample Test Execution report is as below, please not all data is fictious any resemblance with other is purely co-incidance.


Thursday, March 22, 2012

Software testing - Is it different in Agile projects from traditional projects?

"Yes", There are lots of differences in testing an application in agile methodologies and in traditional projects. To have a comparative study lets consider Agile Scrum as base

"Sprint team should ship a workable product at the end of each sprint" is the purpose to adopt the Agile methodology.

Documentation Challenges:

Agile project follows minimum documentation so each time test team have to liaise with Dev, Product, System Analyst to get their queries clarified. (Depending on nature of queries). This slows down the test prep phase and sometimes understanding gaps. So testers have to be a quick learner to overcome these kinds of hurdles.

Estimation:

Estimation used in Agile projects is Poker planning. This requires knowledge of application under test. This imposes a barrier on new team members in participating in estimations, poker planning and sprint planning sessions.

Review of Test Deliverables:

In Waterfall or other project methodology, we allocate special time frame for Review, Rework and Sign Off of Work Products. But in Agile, we follow generally a sprint cycle of 2 weeks or 4 weeks. In such a short span of time, it’s very difficult to follow a detailed review process. This may impact in missing some test scenarios. So tester should be competent enough to not to miss any scenarios and should give a full test coverage and assure a quality product.

Solution to this review process could be selective review of functionalities. Business critical functionalities should be reviewed irrespective of time crunch issue.

Retesting after Demo:

In Agile Scrum, QA Points provides the demo of functionality to product owner and sometimes product suggest the changes after demo is completed successfully. This creates additional burden to QA Team to complete the testing. (retesting the complete functionality)

Regression Test Efforts:

In each sprint, some enhancements are delivered. Regression testing is required to show that these enhancements are not impacted the current functionality. In turn regression testing is required irrespective of 2 week / 4 week sprint. If regression suite test count is too much then this will delay the test certification and project delivery.

To reduce the regression testing window, automation of regression suite is necessary.

Updating of Test Documentation / Regression Suite:

In 4 week sprint cycle, it’s very challenging to update the existing test documentation (master test plan, test strategy) and regression suite. So at any point of time these are not updated and team need to follow a sperate plan to keep these test deliverables.

This achieved by adding a tech deb task in, in between sprints.

Resource Management:

If a resource goes on leave for more than 3-4 days in a single sprint, then this creates a burden on other testers. Because of this there is risk of not meeting the commitments by the sprint team.

As sprint cycle is very short so this kinds of issues are very frequent.

To summarize, to perform the testing in Agile Projects: - Testers have to be quick learner, 'can do' attitude of work and a good team member with excellent work ethics.

"It’s not every one's cup of Tea :)"

Sunday, March 4, 2012

Civil Services Aspirant

Excellent blog to get motivated to prepare for Indian Civil Services / Competitive Exams and lot more

http://chasingthebeacon.blogspot.in/2009/05/v-behaviorurldefaultvml-o.html

Technical - Android Emulators

Below are few tips while installing Android emulator in CMMI company environment where security instructions are placed :-

1.0 Make sure that you have full internet access . i.e. download access

2.0 Please add your proxy server details to settings section of Android emulator

3.0 Disable your antivirus.

4.0 If your company policy doesnt allow you to disable Antivirus then you can add your host to exception list of Antvirus. File type to add to exception list should be media files .

These are what i can recollect at the moment, will add as i get more.

Trouble shootings -

1] Few times you launch your AVD and observes that there is no signal , work around for this issue is just relaunch AVD.

2] In ADB, few times your device doesnt get listed.i.e. if you run command adb devices then you get output as List of Devices as nothing, though you have few AVD's running.

Just run below commands to start your local server again -

adb kill-server

adb start-server

These should start your daemon sucessfully and devices should get listed.

Technical - Updating your iOS

Thought of sharing the experiance of updating iOS on apple device.

I updated my iPod Touch to 4.2.1 from iOS 2.1.2. Its very easy, steps/tips/tricks as below. I performed all these things on my Windows machine.

1.0 Connect your iPod touch to the machine and launch your iTunes.

2.0 Go to your device i.e. iPod touch and verify all the details viz device name, serial number, firmware version i.e. iOS version etc.

3.0 You can see the update and restore two options in the device menu.

4.0 Click on update.

5.0 iTunes will connect to app store and determine the latest version of iOS compatible for your hardware.

Note :- While updating, latest version available in market is iOS 5 but my hardware was not compatible with this, so smart app store determined to install iOS 4 on my iPod touch :).

6.0 iTunes will start to download the setup under iTunes store section in download tab.

7.0 This download should take around 3 hours of time. [ mine took 3 hours ]

8.0 This setup doesnt get stored at any location and as soon as download completes, it will start applying these files to your devices.

9.0 In the process of installation of iOS, iTunes will show two messages.

One as pop-up window - "Back-up iPod name>> "

And other

Processing software files....in the iTunes upper tab.

10.0 In whole process, i never saw a message as "Updating your iPod touch" its always shown as Restoring your iPod...not sure why this was.

11.0 Once the application of files is done, message of iPod touch being restarted is shown.

12.0 Your iPod touch is restarted and you are done with updating.

Key to successful updation is be patient , most of the time you will think nothing is happening but its not the fact.

Keep your iPod touch pluged in and you can see the new Version of iOS installed.

This is the best , what i can recollect. Please correct if i am incorrect at any of the steps.

Best Regards,

Vaibhav