TestNG – Using @DataProvider and @Factory

TestNG gives you two awesome annotations to implement Data Driven tests. Lets look at them one by one:-

  1. @DataProvider – This annotation can be used to denote that the method will be used for supplying data to a test method. The condition that needs to be met here is that the method marked as @DataProvider must return a 2D Object array (Object[][]) where each Object[] will be used as the input parameter to an iteration of the test method which uses the data provider. Please note that there is no direct way of linking an Excel sheet or CSV to a Data Provider. In the following example, I will be using Apache POI to read an excel to provide the data to my Test Method:-

@DataProvider(name="SearchData")
public Object[][] GetSearchData() {
//Returning 2D array of Test Data
Object[][] arrayObject = readFromExcel("C:/InputData.xls","Sheet1");
return arrayObject;
}

public String[][] readFromExcel(String fileName, String sheetName) {
String[][] arrayExcelData = null;
try {

//Read the data from the Excel Sheet
FileInputStream fs = new FileInputStream(fileName);
Workbook wb = Workbook.getWorkbook(fs);
Sheet sh = wb.getSheet(sheetName);

int totalNoOfCols = sh.getColumns();
int totalNoOfRows = sh.getRows();
arrayExcelData = new String[totalNoOfRows-1][totalNoOfCols];

for (int i= 1 ; i < totalNoOfRows; i++) {

for (int j=0; j < totalNoOfCols; j++) {
arrayExcelData[i-1][j] = sh.getCell(j, i).getContents();
}

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

//Using the Data Provider in the Test Method
@Test(dataProvider = "SearchData")
public void SearchData(String searchTerm)
{
//use searchTerm in the test case. The Test method will run as many times as the
//rows in the excel(with searchTerm having different value everytime)
}

2. @Factory – This is another way of achieving data driven testing using testng.
This feature allows all methods in a class to be run on multiple sets of data. Contrary
to the @DataProvider annotation, this can be used to instantiate a class multiple times
rather than just a method. The factory method should return an Object[]. This can be an
array of Method calls or class objects. We can run the Factory class directly. Here’s a
sample code that shows this:-


public class FactoryTest
{
private string searchValue;

public FactoryTest(string searchValue) {
this.searchValue= searchValue;
}

@Test
public void testMethodOne() {
 //do something with searchValue
}

@Test
public void testMethodTwo() {
 //do something else with searchValue
}
}

public class FactoryClass
{
@Factory
public Object[] factoryMethod() {
//Return an array of Objects of Factory Test Class, each with a different search value
return new Object[] { new FactoryTest("SearchTerm1"), new FactoryTest("SearchTerm1") };
}
}

In a nutshell, @DataProvider gives you the power to run a test method with different sets of data and @Factory gives you the power to run all methods inside a test class with different sets of data. Though you can also run test methods with @Factory also, it depends on your use case as to which approach fits it better. Please comment in case the difference between the two is not clear ūüôā

Happy Automating!
Harshit Kohli

Tagged with: , , , , , ,
Posted in Awesum Stuff

How to connect to Mobile Center Server

In the previous post, I explained the process to install Mobile Center Server. For Mobile Center Introduction and its Architecture, please click on the respective links.

Since now Mobile Center Server is installed, we should be able to connect to the Server.

To check if we are able to connect to the server, please navigate to Mobile Center Server URL that I asked to note in the previous post.

mc_homepage.png

Now, login with default username (admin@default.com) and the password that you provided while installing Mobile Center Server. It will show 3 tabs:

  • Apps
  • Devices
  • Administration

moc_homepage_afterLogin.png

If you are not getting the login page for Mobile Center, then there can be 2 issues:

  • The Mobile Center Server is not installed properly
  • Either of the 2 services that got installed with Mobile Center Server are not started (snapshot below)

mc_services.png

 

Please follow next post in this tutorial series to configure Connector machine (either separate machine or the machine on which Mobile Center Server is installed)

Tagged with: , , , , , ,
Posted in Mobile

How to install and configure Mobile Center Server

In the previous posts, I introduced Mobile Center along with its architecture.

To use Mobile Center, we need to do at least following steps:

  • Install Mobile Center Server
  • Install Mobile Center Connector (only if we want to use separate machine as a Connector)
  • Add Device (Android/IPhone or Emulator)

In this post, we will be looking at the process of installing Mobile Center Server. Now, Mobile Center Server can be installed either on Linux or Windows machine. Windows 7 64-bit is supported. For additional requirements (on both Linux and Windows), please refer System Requirements.

Prerequisites: Install USB drivers for Android Device Manufacturer

Please follow the following steps to install Mobile Center Server:

  • Download Mobile Center Server software from here. You need to click on Download Now button and then register on the website on get the download link
  • Downloaded file will be an ISO file. Extract the contents.
  • Log in to your machine as administrator.
  • Go to Server folder in extracted contents.
  • Choose Run as Administrator after right clicking on install_server-windows-x64-2.01.00.00-352.exe
  • The installation wizard opens. Click Next button until Device¬†requirements Screen

intro_mobile

  • In the Device Configuration screen, select Device Platform for which drivers are installed on the machine

Device_Config.PNG

  • In the Server configuration screen:
    • Enter the IP address or the FQDN of the Mobile Center server machine.
    • Accept or edit the default port 8080.
    • Select SSL only to work with a secure connection using HTTPS
    • Accept or edit the default internal port, 8081
    • Provide a password for the default administrator user, admin@default.com, for accessing the Mobile Center Lab Management console.

Server_Config.PNG

  • In the PostgreSQL configuration screen:
    • Enter a password for the database’s built-in superuser, postgres, created when the PostgreSQL server is installed.
    • Accept or edit the default username for the database administrator, hpmcadmin, and provide a password

postgre.png

  • Installation Summary will be shown after clicking on Next¬†button

ins_summary.PNG

  • Please note Mobile Center Server URL in the above snapshot as we will be using this to connect to it (shown in the next post)
  • When the installation is complete, the wizard displays a message that the server was successfully installed, and provides an option, Start the service.
  • Click Next to start the Mobile Center service.

Please follow next tutorial to connect to Mobile Center Server and access Lab Console

Tagged with: , , , , , , , , , ,
Posted in Mobile

Mobile Center Architecture

Those who are new to Mobile Center, please refer to my previous post about Mobile Center Introduction. We will be covering the high level overview and its architecture in this post.

Broadly, Mobile Center has 2 components:

  1. Mobile Center Server
  2. Mobile Center Connector

Mobile Center Server provides:

  • connection between testing tools (UFT, LeanFT etc) and¬†Mobile Devices
  • User Interface to record and run tests on Real Devices
  • Lab Console to manage devices and users
  • PostgreSQL database storing reusable data, such as Metadata of uploaded apps and connectors, certificates, user information, and so forth

Mobile Center Connector allows communication between Mobile Devices and Mobile Center Server. It is installed automatically with Mobile Center Server, however, it can also be installed as standalone component on different machines.

Following figure shows the Mobile Center components and depicts the relationship between them:

Following connector deployment scenarios are supported:

  1. Devices can be connected to a machine on which Mobile Center Server is installed (as Connector is automatically installed with Server)
  2. Connector can be installed as standalone component on several machines in distributed locations

In the next post, we will be looking into the installation of Mobile Center Server component.

Tagged with: , , , , , , , , , ,
Posted in Mobile

What is HP Mobile Center ?

Mobile Center is a software solution provided by HP to test mobile applications that integrates with a host of HP Testing tools. Following is the list from HP Site:

  1. UFT
  2. Lean FT
  3. BPT
  4. LoadRunner
  5. Performance Center
  6. ALM
  7. Sprinter
  8. Network Virtualization
  9. Business Process Monitor
  10. AppPulse Mobile
  11. Appium

It supports both Real Devices and Emulators to provide on-premise Mobile Lab. It supports following Emulators:

  1. Genymotion
  2. Android SDK Emulator

It can also be configured to run tests on mobile devices from Amazon Devices Farm (ADF) and allows integration with a CI tool such as Jenkins with the help of a Plugin

In the next post, we will be discussing about the high level architecture of Mobile Center.

Tagged with: , , , , , , , ,
Posted in Mobile

Selenium Training Programme

Selenium, without any doubt is the King of Web-Automation. If you’ve landed on this page, I’m sure you want to be a Selenium Pro.

Learn2Automate is offering a comprehensive and hands-on Selenium Training that will kick-start your journey from becoming a QA(Quality Analyst) to SDET(Software Development Engineer in Test).

Highlights of the Training:-

  1. Extensive Coverage of C#/Java before starting the course.
  2. Course Customization based on Individual needs.
  3. Basic and Advanced Level Selenium Commands.
  4. Ready to use Automation Frameworks as well as API’s covered in Depth.
  5. Will enable you to create a Framework from scratch.
  6. Online Training (in-person) over Skype is also an option.
  7. Corporate Batches can also be undertaken.
  8. Lifetime support for Issues.

For more details, just drop an email to kohli_harshit@hotmail.com !

Happy Automating !

Harshit Kohli

Tagged with: , , ,
Posted in Trainings

How to Execute UFT Test Silently

HP provides less known utility along with UFT that also allows user to execute UFT Tests Silently (without opening UFT GUI). Actually, there are 2 ways to achieve this:

  1. Using Silent Test Runner: This utility is located at <UFT Installation Directory>\bin\ SilentTestRunner.exe To execute the Test silently, just launch the utility, select the Test that needs to be executed and click on Run Test button.Silent Test Runner provides test run information in log files. Each test generates a test run log, and  any test with transactions generates an additional transaction summary. The test run log is saved as output.txt in the <Unified Functional Testing>\Tests\<test name> folder. The transaction summary is saved as transactions.txt in the <Unified Functional Testing>\Tests\<test name> folder. A log/transactions summary file is saved for each test run with Silent Test Runner and is overwritten when you rerun the test.silent_test_runner
    2.Using mdrv.exe:  To execute the test from command line, user just needs to invoke the following command from command prompt. As shown in the following snapshot, we need to provide full path of usr file of the Test that user needs toexecute as a parameter to mdrv.exe
    This usr file is present inside every UFT Test and is created automatically.

cmd
         Few points that needs to be considered while executing Tests silently:

  • Only one Test can be executed silently at a time
  • There should not be any error in the Test as Test exits on encountering an error without giving any message
  • There should not be any msgbox statement in the executed Test
Tagged with: , , , , ,
Posted in Awesum Stuff
Blog Stats
  • 149,330 hits
Categories

Enter your email address to follow this blog and receive notifications of new posts by email.

Join 737 other followers

%d bloggers like this: