Friday, April 15, 2016

Jenkins for Automation and Performance Testing - DevOps QA

Jenkins an open source continuous integration utility developed using Java

Continuous integration features of Jenkins is being used by QA team very robustly. Automation QA team needs to validate build for consideration of Regression Testing Go/No Go. Jenkins being used to validate the build status and stability by exciting JAVA scripts converted and configured as JAR and executed via command lines.

QA Team also use Jenkins to do performance testing by executing Jmeter scripts configured as job and servers as slaves.


Core Features
  1. Continuous Integration and Continuous Delivery
  2. Easy installation
  3. Easy configuration
  4. Plugins
  5. Extensible
  6. Extensible
Steps to Start: 

  1. Download Jenkins
  2. Identify Scenario
  3. Download and Discover Plugins
  4. Create Jobs
  5. Execute
  6. Analyse
So now we can consider Jenkins as new tool to be used by Automation QA and now can be converted as DevOps QA



Monday, June 15, 2015

Performance Testing & Load Runner

Performance Testing:

Performance testing is the process of determining the responsiveness or effectiveness or scalability and stability of software or device to determine how the components of a system are performing with given a particular state.

It can also serve to investigate, measure, validate or verify other quality attributes of the system, such as scalability, reliability and resource usage.

It includes: Load Testing, Stress Testing, capacity testing, volume testing, endurance testing, spike testing, scalability testing and reliability testing etc.
This type of testing does not give pass or fail result, it performed to get benchmark & standard of the application against Concurrency / Throughput, Server response time, Latency, Render response time etc. for responsiveness, speed, scalability and stability characteristics.

Load Runner has 4 key components

1. Virtual User Generator (VUGEN)
VUGEN is used for generating and editing scripts
It has four components
1)    Record
2)    Run
3)    Debug
4)    Design

2. Controller
Controller is where we apply the load. The Controller systematizes drives, manages and monitors the load test.
3. Load Generator
Load Generate is local CPU which generates the load by running virtual users
4. Analysis
Analysis accumulates logs from various load generators and present reports for visualization of run result data & monitoring data
Load Runners shows error details as below.
1) Syntax error: [ , ; : “ ) ] etc.
2) Runtime error: Spelling error.
3) Compiling error:

Advance Components

·         Parameterization
Replacing the recorded value with a script value.The value that you are replacing has to be in the database
          Parameterization helps
1.    Reducing script size
2.    Avoiding cache effect

·         Correlation
Using “Correlation” we can capture the dynamically generated value from the server using nested queries.

·         Load Balancing
How to increase/decrease the load

·         Think time
Think time is the time that a real user waits/ pause between actions.

·         Rendezvous Point

Rendezvous Points means “meeting points”. This option used to check the peak load from off peak load. Virtual users instructed/configured to wait during test execution for multiple Vusers to arrive at a certain point before execution

Wednesday, October 1, 2014

Https Recording Using Jmeter - QA Hint

Https traffic recording with Jmeter had been a issue for quite a long time. With recent version of Jmeter releases, it has tried to fill the gap on this shortcoming. It had previously https spoof until Jmeter version 2.6 which didnt quite work well with redirects etc. The latest release of Jmeter (currently 2.9) doesn't use this anymore. Jmeter https recording works normally. But for some URL's , it works straight forward. 

Steps allows you to do Https recording


1. Importing Jmeter proxy certificate. 
I had looked into this on google, but couldn't find a source to tell how this can be done. But my colleague found out that there is a file in extras directory of Jmeter.. Its called proxycert.cmd(sh for linux) . Import this file firefox by clicking on Options->Advanced –>View certificates>Authorities –> Import. After this you will see the Jmeter Proxy certificate as shown below
image 
Then click on the edit button and tick the all boxes as shown below link click Ok
image 
Try recording with Jmeter now.refer Proxy Setup 

Even after this if you still facing issue recording the https traffic, which I too had, then install firefox 3.6. When it didnt work for me after trying the above steps, I downloaded the older version of firefox 3.6. After downgrade, I had following options unchecked in the firefox browser options. After this changes, https recording for Jmeter through firefox worked.
image

Tuesday, September 30, 2014

Read/Write".ods" file (OpenOffice.org spreadsheet),Using Selenium Webdriver Data-Driven/Keyword-Driven/Hybrid Framework - QA Hint

STEPS:
1. Convert ODF into XML
2. Read/Write XML

Introduction
The OpenDocument Format (ODF) is an XML-based file format for representing electronic documents such as spreadsheets, charts, presentations and word processing documents. The standard was developed by the OASIS (Organization for the Advancement of Structured Information Standards), and it is a free and open format.
The OpenDocument format is used in free software and in proprietary software. Originally, the format was implemented by the OpenOffice.org office suite and, with Office 2007 SP2, Microsoft also supports ODF subset.
This article will explain the basics of ODF format, and specifically its implementation in spreadsheet applications (OpenOffice.org Calc and Microsoft Office Excel 2007 SP2). Presented is a demo application which writes/reads tabular data to/from .ods files. The application is written in C# using Visual Studio 2010. Created .ods files can be opened using Excel 2007 SP2 or greater and OpenOffice.org Calc.

ODF Format

OpenDocument format supports document representation:
  • As a single XML document
  • As a collection of several subdocuments within a package
Office applications use the second approach, so we will explain in detail.
Every ODF file is a collection of several subdocuments within a package (ZIP file), each of which stores part of the complete document. Each subdocument stores a particular aspect of the document. For example, one subdocument contains the style information and another subdocument contains the content of the document.
This approach has the following benefits:
  • You don't need to process the entire file in order to extract specific data.
  • Images and multimedia are now encoded in native format, not as text streams.
  • Files are smaller as a result of compression and native multimedia storage.
There are four subdocuments in the package that contain file's data:
  • content.xml - Document content and automatic styles used in the content
  • styles.xml - Styles used in the document content and automatic styles used in the styles themselves
  • meta.xml - Document meta information, such as the author or the time of the last save action
  • settings.xml - Application-specific settings, such as the window size or printer information
Besides them, in the package, there can be many other subdocuments like document thumbnail, images, etc.
In order to read the data from an ODF file, you need to:
  1. Open package as a ZIP archive
  2. Find parts that contain data you want to read
  3. Read parts you are interested in
On the other side, if you want to create a new ODF file, you need to:
  1. Create/get all necessary parts
  2. Package everything into a ZIP file with appropriate extension

Spreadsheet Documents

Spreadsheet document files are the subset of ODF files. Spreadsheet files have .ods file extensions.
The content (sheets) is stored in content.xml subdocument.
image1.png
Picture 1: content.xml subdocument.
As we can see in Picture 1, sheets are stored as XML elements. They contain column and row definitions, rows contain cells and so on... In the picture is data from one specific document, but from this we can see the basic structure of content.xml file (you can also download the full ODF specification).

Implementation

Our demo is Windows Presentation Foundation application (picture 2) written in C# using Visual Studio 2010.
image2.png
Picture 2: Demo application.
The application can:
  • create a new Spreadsheet document.
  • read an existing Spreadsheet document.
  • write a created Spreadsheet document.

Creating New Document and Underlying Model of Application

Internally, spreadsheet document is stored as DataSet. Each sheet is represented with DataTable, sheet's row withDataRow, and sheet's column with DataColumn. So, to create a new document, we have to create a new DataSet, with DataTables. Each DataTable has a number of rows and columns that conforms to our needs.
To show data from our DataSet (and to allow editing that data) the application dynamically creates tabs withDataGridViews (that are connected to our DataTables).
Through the interface, a user can read, write, edit data and add new rows to the Spreadsheet document.
As application, basically, transforms Spreadsheet document to / from DataSet, it can also be used as a reference forExcel to DataSet export / import scenarios.

Zip Component and XML Parser

Although classes from System.IO.Packaging namespace (.NET 3.0) provide a way to read and write ZIP files, they require a different format of ZIP file. Because of that, our demo uses the open source component called DotNetZip.
Using ZIP component we can extract files, get subdocument, replace (or add) subdocuments that we want and save that file as .ods file (which is a ZIP file).
For processing documents, we have used XmlDocument because it offers an easy way to reach parts that we want. Note that, if performance is crucial for you, you should use XmlTextReader and XmlTextWriter. That solution needs more work (and code), but provides better performance.

Reading Spreadsheet Document

To read a document, we follow these steps:
  1. Extract .ods file
  2. Get content.xml file (which contains sheets data)
  3. Create XmlDocument object from content.xml file
  4. Create DataSet (that represent Spreadsheet file)
  5. With XmlDocument, we select "table:table" elements, and then we create adequate DataTables
  6. We parse children of "table:table" element and fill DataTables with those data
  7. At the end, we return DataSet and show it in the application's interface
Although ODF specification provides a way to specify default row, column and cell style, implementations have nasty practice (that specially apply for Excel) that they rather write sheet as sheet with maximum number of columns and maximum number of rows, and then they write all cells with their style. So you could see that your sheet has more than 1000 columns (1024 in Calc and 16384 in Excel), and even more rows (and each rows contains the number of cells that are equal to the number of columns), although you only have to write data to the first few rows/columns.
ODF specification provides a way that you specify some element (like column/row/cell) and then you specify the number of times it repeats. So the above behavior doesn't affect the size of the file, but that complicates our implementation.
Because of that, we can't just read the number of columns and add an equal number of DataColumns toDataTable (because of performance issues). In this implementation, we rather read cells and, if they have data, we first create rows/columns they belong to, and then we add those cells to the DataTable. So, at the end, we allocate only space that we need to.

Writing Spreadsheet Document

To write a document, we follow these steps:
  1. Extract template.ods file (.ods file that we use as template)
  2. Get content.xml file
  3. Create XmlDocument object from content.xml file
  4. Erase all "table:table" elements from the content.xml file
  5. Read data from our DataSet and composing adequate "table:table" elements
  6. Add "table:table" elements to content.xml file
  7. Zip that file as new .ods file.
In this application, as template, we have to use an empty document. But the application can be easily modified to use some other template (so that you have preserved styles, etc.).

Reading from XML to trigger a Selenium Driver
xml:

http://www.gmail.com
bijoy.meethal@gmail.com
1676M##T#$@*&%H@L
inbox
 

Java code:

/*
* @ Description : A simple program to read XML and retrieve data to manipulate Selenium webdriver
*/
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.*;
import org.w3c.dom.*;

public class GmailXMLTest {

public static void main(String argv[]) {

try {
File file = new File("C:\\TestData.xml"); //file location should be specified correctly
// Prepare XML
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.parse(file);
document.getDocumentElement().normalize();
System.out.println("Debug: Root element"+ document.getDocumentElement().getNodeName());
NodeList node = document.getElementsByTagName("TestData");
System.out.println("TestData Details");
System.out.println("________________________________________________");

//Read XML to get test data

for (int i = 0; i < node.getLength(); i++) {
Node currentNode = node.item(i);

if (currentNode.getNodeType() == Node.ELEMENT_NODE) {

Element element = (Element) currentNode;
NodeList mailServerElemntList = element.getElementsByTagName("service");
Element mailServer = (Element) mailServerElemntList.item(0);
NodeList mailServer1 = mailServer.getChildNodes();
String Service = ((Node)mailServer1.item(0)).getNodeValue();
System.out.println("Mail Servername:"+ Service);

NodeList emailNodeElementList = element.getElementsByTagName("email-id");
Element emailNodeElement = (Element)emailNodeElementList.item(0);
NodeList details = emailNodeElement.getChildNodes();
String emailAddress=((Node) details.item(0)).getNodeValue();
System.out.println("email :" + emailAddress);

NodeList passwordNodeElementList = element.getElementsByTagName("password");
Element passwordNodeElement = (Element) passwordNodeElementList.item(0);
NodeList address = passwordNodeElement.getChildNodes();
String passCode = ((Node) address.item(0)).getNodeValue();
System.out.println("Password : "+passCode);

NodeList destFolder = element.getElementsByTagName("folder");
Element destElement = (Element) destFolder.item(0);
NodeList city = destElement.getChildNodes();
String destnFolder = ((Node) city.item(0)).getNodeValue();
System.out.println("Folder : " + destnFolder);

FirefoxDriver wd = new FirefoxDriver();
wd.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
wd.get(Service);
wd.findElement(By.id("Email")).sendKeys(emailAddress);
wd.findElement(By.id("Passwd")).sendKeys(passCode);
wd.findElement(By.id("signIn")).click();
Thread.sleep(8000);
System.out.println(wd.getTitle());
System.out.println(wd.getCurrentUrl());
if (!wd.getCurrentUrl().equals("https://mail.google.com/mail/?shva=1#inbox")) {
wd.close();
System.out.println("Failed to navigate to inbox");
throw new RuntimeException("assertTitle failed");
}
System.out.println("Test Completed - login passed and navigated to inbox");
wd.close(); 

}
}}
catch (Exception e) {e.printStackTrace();}
}
}

Read/Write".ods" file (OpenOffice.org spreadsheet),Using Selenium Webdriver Data-Driven/Keyword-Driven/Hybrid Framework - QA Hint

Thursday, September 25, 2014

Build automation software - QA Hint

Apache Ant("Another Neat Tool")

What is Ant?
Ant is a platform-independent scripting tool that lets you construct your build scripts in much the same fashion as the "make" tool in C or C++. You can use a large number of built-in tasks in Ant without any customization. Some of the most important tasks are shown in the following table but explained in more detail in the example that follows.

Steps to Use ANT:1. Install three components on your machine JDK, XML parser and Ant
Note:
a.In many cases, the XML parser is part of the lib files distributed with the Servlet runner or the Web Server. If not, the free XML parser from java.sun.com is sufficient.
b.Ant installation consists of downloading the files, adding the class libraries to the classpath, and adding the Ant binaries to the path.

Apache Maven

Maven is a build automation tool used primarily for Java projects.
Maven addresses two aspects of building software:
1. It describes how software is built,
2. It describes its dependencies.
Contrary to preceding tools like Apache Ant it uses conventions for the build procedure, and only exceptions need to be written down

An XML file describes the software project being built, its dependencies on other external modules and components, the build order, directories, and required plug-ins. It comes with pre-defined targets for performing certain well-defined tasks such as compilation of code and its packaging. Maven dynamically downloads Java libraries and Maven plug-ins from one or more repositories such as the Maven 2 Central Repository, and stores them in a local cache.This local cache of downloaded artifacts can also be updated with artifacts created by local projects. Public repositories can also be updated.

Maven can also be used to build and manage projects written in C#, Ruby, Scala, and other languages. The Maven project is hosted by the Apache Software Foundation, where it was formerly part of the Jakarta Project.

POM 
POM (Project Object Model)only defines a unique identifier for the project (coordinates) and its dependency on the JUnit framework. However, that is already enough for building the project and running the unit tests associated with the project. Maven accomplishes this by embracing the idea of Convention over Configuration, that is, Maven provides default values for the project's configuration. The directory structure of a normal idiomatic Maven project has the following directory entries:

JENKINS

Continuous Integration (CI) with automated test execution and trends has changed the way companies look at Build Management, Release Management, Deployment Automation, and Test Orchestration.

Jenkins provides continuous integration services for software development. It is a server-based system running in a servlet container such as Apache Tomcat. It supports SCM tools including AccuRev, CVS, Subversion, Git, Mercurial, Perforce, Clearcase and RTC, and can execute Apache Ant and Apache Maven based projects as well as arbitrary shell scripts and Windows batch commands. The primary developer of Jenkins is Kohsuke Kawaguchi. Released under the MIT License, Jenkins is free software.

Plugins
Plugins have been released for Jenkins that extend its use to projects written in languages other than Java.Plugins are available for integrating Jenkins with most version control systems and big databases. Many build tools are supported via their respective plugins. Plugins can also change the way Jenkins looks or add new functionality.
Builds can generate test reports in various formats (JUnit is supported out-of-the-box, others via plugins) and Jenkins can display the reports and generate trends and render them in the GUI.

Tuesday, August 12, 2014

FLASH TESTING/VERIFICATION WITH SELENIUM WEBDRIVER

Sikuli  is a robust and powerful tool to automate and tests user interfaces screenshots. The core of Sikuli Script is written in Java, which means you can use Sikuli Script as a standard JAVA library in your program. This article lets you know how to do that.
Sikuli is a robust and powerful tool to automate and tests user interfaces screenshots. The core of Sikuli Script is written in Java, which means you can use Sikuli Script as a standard JAVA library in your program. This article lets you know how to do that.

1. Download and install Sikuli using the self-extracting installer(http://www.sikuli.org/download.html).
Note: Only 32-bit version is provided for using as a standard JAVA library. But SIKULI IDE could run on both 32-bit and 64-bit Windows systems.

2. Create new Java project (use Eclipse as an example):
3. Fill project name and click Finish:
 
4. Create new class:
 
5. Fill class name and click Finish:
 

6. Include sikuli-script.jar, selenium-server-standalone-2.25.0.jar, selenium-java-2.25.0.jar in the CLASSPATH of your Java project.
Get sikuli-script.jar from your Sikuli IDE installation path.
 


Sikuli Script is packed in a JAR file - sikuli-script.jar. Depending on the operating system you use, you can find the sikuli-script.jar in according places.

Windows, Linux: Sikuli-IDE/sikuli-script.jar
Mac OS X: Sikuli-IDE.app/Contents/Resources/Java/sikuli-script.jar

After adding sikuli-script.jar, selenium-server-standalone-2.25.0.jar, selenium-java-2.25.0.jar as a libraries into your project, the project hierarchy should look like this:

After click OK:

7. After configuring in build path, create and initialize an instance of Screen object.

SIKULI + SELENIUM WEBDRIVER


import org.junit.Test;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.firefox.FirefoxDriver;

import org.sikuli.script.App;

import org.sikuli.script.FindFailed;

import org.sikuli.script.Pattern;

import org.sikuli.script.Screen;



public class sikuliFirstTest {



@Test

public void functionName() throws FindFailed {

  

// Create a new instance of the Firefox driver

WebDriver driver = new FirefoxDriver();



// And now use this to visit Google

driver.get("http://www.google.com");



//Create and initialize an instance of Screen object   

Screen screen = new Screen();



//Add image path  

Pattern image = new Pattern("C:\\searchButton.png");

   

//Wait 10ms for image 

screen.wait(image, 10);

   

//Click on the image

screen.click(image);

  }

}

Here example using SIKULI without Selenium WebDriver:


import org.junit.Test;

import org.sikuli.script.App;

import org.sikuli.script.FindFailed;

import org.sikuli.script.Pattern;

import org.sikuli.script.Screen;



public class sikuliFirstTest {



@Test

public void functionName() throws FindFailed {



//Open FireFox application with google home page   

App firefox = App.open("c:\\Program Files\\MozillaFirefox\\firefox.exe");



//Create and initialize an instance of Screen object   

Screen screen = new Screen();



//Add image path  

Pattern image = new Pattern("C:\\searchButton.png");

   

//Wait 10ms for image 

screen.wait(image, 10);

   

//Click on the image

screen.click(image);



//Close firefox  

firefox.close();

  }

}

Wednesday, October 12, 2011

Mobile Testing-Software Testing future


Mobile Testing - Getting Started:


Basics of Software Testing :-
Event if you are fresher or experienced in the field of software testing (Mobile Testing), Having knowledge of Software Testing basics is  vital.
Before starting career in any field you should have basic knowledge of that field. For starting career as a Mobile Application Quality Assurance Engineer , you should  have understanding of  software testing principles, Software Testing Techniques, Types of Software Testing, Objective of Testing and other basics in Software Testing.
You can refer many websites, One which I personally recommend is http://www.onestoptesting.com/
After having basic knowledge of Software testing lets Start for Mobile Testing

    Step 1 or we can say Precondition in the language of software testing is, you should know  Basics of Telecom
For any field of Software testing one should know basics of respected Domain.
For mobile domain , Telecom basics will be always  an supplementary benefit. Mobile Apps Testing is not just about testing of mobile product or application. You will surely get an advantage if you are aware of other things in this domain which revolves around Mobile products testing. 2G, 3G, CDMA, GPRS, GSM, HSCSD, SIM, SMS, WAP are some basic things of telecom that you should be aware of. 

    Awareness about Mobile OS/Platforms :-
There are many Mobile OS/Platforms present in the market. Android, iOS( iPhone), Blackberry OS(RIM), J2ME, Symbian, Palm, Windows phone, Samsung Bada , Nokia Meego and so on. It is very important to have knowledge about these Mobile OS/Platforms as a Mobile Apps Tester. Awareness about the capabilities and limitations of these platforms give you confidence to differentiate application bug with platform/OS limitations. You may find some more details about Mobile Operating Systems here.

    Get familiar with own Mobile Phone (Basic Need) :-
I am sure many of you must not even be completely aware of which Mobile Handset model you are using, what OS  and which software version your phone is having. If you are a beginner, just start exploring your own cell phone. Just open up and try using internet on your Smartphone. Use Wi-Fi, GPRS. Check out how you can format or perform Factory reset on your device (Be careful).Check what is the IMEI number of your phone. Try to upgrade OS version of your Android device. Experiment with different settings and user permissions on your phone.  In short, be familiar with all the features and functions of your mobile handset and it will surely help you to dig out more scenarios while testing any mobile app or any mobile Handset you are given to test .

    Get aware of Testing in Mobile Domain :-
When we talk about testing in Mobile domain, it is not only confined to Mobile Apps, but also includes mobile handset and mobile website testing.
   Downloadable Mobile Application Testing: – Some applications come pre-installed  in mobile handset while some mobile applications are downloadable from different mobile application stores(Apple App store, Android Market, Getjar, Nokia Ovi Store, Blackberry  App world etc.). Apart from conventional Functional and UI testing, you may need to test your application against the submission criteria and guidelines provided by these Application stores. As said earlier, tester’s role here should not be only functional testing of mobile app, but also to make sure your application adheres to the guidelines provided by these mobile app stores.

    Mobile Handset Testing :-Similar to Organizations that develop third party downloadable mobile applications, there are many companies that develop complete mobile handset. A mobile QA here may need to test native applications or features that are available in the phone. SMS, MMS, Voice Call, MMS, Phonebook, Calculator, Bluetooth and other mobile features. It also includes Multimedia (Camera, Video, Media player, ringtones) and Mobile Protocol stack testing.

    Mobile Website Testing (WAP Sites) :-Unlike downloadable mobile applications, mobile websites can be accessed via browser. No download involved. Testing of Mobile WAP sites has its own challenges. Proper navigation, good user interfaces (design), security, performance and mobile browser compatibility are important areas.

    Types of Mobile Application Testing :-
Similar to general Software Testing, Mobile Software Testing also includes :-
•    User Interface Testing (Color scheme, Menu styles, Consistency of UI over various Devices)
•    Functional Testing (Testing core functionality of Mobile App as per specification)
•    Performance & Stress Testing [Behavior of Mobile Application in Low resources(Memory/Space),    
•    Behavior of mobile website when many mobile user simultaneously access mobile website)]
•    Usability Testing (Testing of usability aspects of Mobile Apps)
Apart from above mentioned testing types, some key testing types may include the following.
    Testing for Compatibility :-Testing the compatibility of your application with native device features (i.e. To make sure your application is not hampering native device functionality)
 
    Certification Compliance Testing :-For downloadable mobile applications, there are various Third party Mobile Quality Certification program for various platforms. True Brew Testing(for BREW Apps), Java Verified program (for J2ME apps), Symbian Signed Test Criteria (for Symbian Apps) are some examples. Apart from regular functional testing, you may need to test your application against the test cases/Testing criteria provided by these certification processes. However, it depends on your client, whether they want to certify their application or not.
    Submission Guidelines Compliance Testing: – The application needs to adhere to the specified submission guidelines  to publish it in any mobile application store. Failure to meet these guidelines may result in rejection of your app on mobile application stores. For example failure to comply with application Submission guidelines for Apple App Store may result in rejection of your app in Apple app store.
    Interruption Testing (Voice Calls, SMS, Charger, Low memory Notification) while application is running.
    Monkey Testing: – Continual key pad entries via tools to test application stability with various key press events.
    Low Network/No Network case Testing: – Application behavior when there is no network coverage or Low network strength.

    Sample Test Cases for Mobile Application :-
For newbie in Mobile Testing, it is always advisable to go through some sample test cases for Mobile Apps. Going through the test cases for any mobile application, gives a complete insight of the kind of testing conducted for Mobile Application. You may ask your seniors to provide you some Test Suites for any mobile project your organization completed earlier. However, you can still go through some general Test Cases for Mobile application here.

    Explore the Capabilities of Simulator :-
Simulators always play big role when there are no mobile devices available for testing. Though Device testing is always preferred as it represents more likely end user scenarios, the importance of simulators cannot be ignored. In order to have effective testing over Simulator, It is recommended to explore all the capabilities of Simulator.

    Remote Device Access Service
Due to a large number of devices available in the market, it is not feasible to buy a new device every time. At the same time Simulators are not completely reliable enough to launch a mobile app based on testing conducted only on simulators. RDA (Remote device services) can be a good solution to deal with these challenges. The remote device access services enable access to a live device over the Internet. As a Mobile Apps Tester, you should be aware of such services and should suggest your managers about the capabilities of such Services.
Some Available RDA Services are:
•    Device Anywhere (Paid)
•    Perfecto Mobile (Paid)
•    Nokia RDA (Free, For Symbian Phones)

Advantages of RDA:
    User can select different Carriers  e.g.  Verizon, T-Mobile, AT & T.
    RDAs are more reliable than simulators as they are real devices.
    Some RDA Service like Device Anywhere also has automation capabilities.

Disadvantages of RDA:
    Since you access devices remotely it takes time for any action or key event.
    Sometimes the needed device is not available due to prior reservations.
    Higher Service Cost

    Tools and Utilities :-
There are many software tools and utilities available in the market which may help you in testing of your Mobile Application effectively. Some of these tools are available in SDKs itself. However you may still dig out the internet for such tools on various platforms.

    Tools to check Battery Consumption while your app is running. E.g. Nokia Energy Profiler.
    Tools/Software to capture screenshot: – There are many tools available for various mobile platforms to capture screenshot from device itself. E.g Screenshot tool for Symbian S60 Devices.
    Tools to Generate dummy files to test behavior of mobile app at Low EFS. e.g. Maxfilecnt utility from QUALCOMM for BREW mobile apps,Fill Device Memory Lite for Android apps.
    Tools to Generate Random key events. e.g. Monkey tool(Android), BREW Grinder(BREW), Hopper Test Tool (Windows Mobile)
    Tools to Capture Logs. E.g. Apphance for Android.

    Explore Automation Tools for Mobile :-
Along with Manual Mobile Testing, be ready to explore your potential in Mobile Automation Testing as well. Mobile Testing is a new field and many automation tools are coming in to market gradually. If you get any opportunity to work on any mobile automation tool, it is well and good. But if you don’t get such opportunity, it is better to explore on your own. Don’t wait for the time when you will get an opportunity to work on Mobile Automation Tool. Believe me, sooner or later you will definitely face a question from your Interviewer- “Have you worked on any Mobile automation tool ? ”
Here are some automation tools available for Mobile Apps Testing :-
•    TestComplete
•    M-Eux
•    TestQuest Countdown
•    Test Quest Pro
•    Robotium
•    VNC
•    Sikuli
•    Deviceanywhere
•    FoneMonkey (iPhone)
•    Eggplant (iPhone)
•    TestiPhone( For iPhone Mobile Web)
•    IBM® Rational® Performance Tester (RPT)
•    3P Mobile
•    Expertest
•    MITE (A Mobile content testing and validation tool for Mobile Web app)