G C Reddy Profile


G C Reddy Profile

G C Reddy, Information Technology Trainer and Consultant

Born in Kurugonda Village, Ozili Mandal, Nellore District, AP, India. Now I am living in Hyderabad City, Telangana, India.

Worked as a,

i) Network Administrator

ii) Software Developer (Using COBOL)

iii) Business Analyst

iv) Software Tester (Manual Tester, Automation Tester using WinRunner, QTP/UFT, Selenium...)
--------------------------------------------------
v) Software Testing Trainer and Consultant 

Conducted,

i) Class Room Training Programs

ii) Corporate Training Programs

iii) Online Training Programs

Subjects:

i) Manual Testing

ii) QTP/UFT

iii) Selenium

iv) LoadRunner

v) Java

vi) Perl

Created knowledge sharing platforms,

i) www.gcreddy.com (Website)
ii) www.youtube.com/gcreddy (Video Channel)

Software Knowledge:

i) Computer Programming (COBOL, C, C++, Java, VBScript, Perl and Python....)

ii) Database Technologies (SQL, SQL Server, Oracle, MySQL...)

iii) Software Testing (Manual Testing, Functional Test Automation using UFT/QTP, Selenium..., Performance Test Automation Using LoadRunner and JMeter...)
-----------------------------------------------------------
G C Reddy Network

• YouTube Video Channel
(https://www.youtube.com/gcreddy)

• Facebook Page
(https://www.facebook.com/ComputerSoftwareTesting/)

• Facebook Group
(https://www.facebook.com/groups/gcreddy/)

• Google Plus
(https://plus.google.com/+gcreddy)

• LinkedIn
(https://www.linkedin.com/in/g-c-reddy-b9547421)
------------------------------------------------------------------
I) Career Brief:

Involvement in Setting up Test Environments, Requirements Management, Client Interactions, Test Infrastructure Development, Test Strategy Development, Test Planning, Test Design, Test Automation, Test Execution (Manual and Automated), Defect Reporting, Defect Tracking, Test Status Reporting, Test Closure Activities and Risk Management.

II) Software Testing Summary:

• Familiar with all Phases of Software Development Life Cycle and different life cycle models like Waterfall, V Model, Prototype and Agile models.
• Expertise on all levels of Testing (Unit Testing, Integration Testing, System Testing and Acceptance Testing)
• Expertise on Functional and Non-Functional Testing
• Expertise in Creating Test Plans, Generating Test Scenarios, Collecting Test Data and Test Case Documentation.
• Familiar with all phases of Software Test Process.
• Expertise on Test Design Techniques (White Box, Black Box and Experienced Based Techniques)

III) Selenium Summary:

• Selenium Test Environment Setup
• Involvement in Automation Framework Design and Implementation
• Involvement in Automation infrastructure Development using Selenium WebDriver, Java and TestNG for Functional and Regression Testing.
• Development of Test Scripts/Test Cases using Element Locators, WebDriver Commands, Java programming features and TestNG Annotations.
• Cross Browser Testing, Data Driven Testing, Batch Testing, Database Testing and Parallel Test Execution.
• Regression Testing and Maintenance of Test Automation Resources.

IV) UFT / QTP Summary:

• Involvement in Automation framework Design and Implementation
• Involvement in Automation Infrastructure Development using UFT/QTP for Functional and Regression testing.
• Development of Test Scripts/Tests using Share Object Repositories and Descriptive Programming
• Development of User Defined Functions and Creating Library Files.
• Development of Test Scripts and Wrote SQL queries to validate the Back End Functionality.
• Enhancing Tests using QTP tool features (Synchronization, Parameterization, Environment variables etc.) and VB Script flow control statements.
• Defect Reporting and Tracking using Quality Center/ALM.

V) Computer Programming:

• Writing Comments
• Modifiers (Access and Non Access)
• Data Types (Characters, Integers, Double, Strings, Boolean....)
• Variables
• Constants
• Operators (Arithmetic, Comparison, Logical....)
• Flow Control
Conditional Statements
Loop Statements
• String Handling
• Arrays
• Input and Output Operations
• File Handling (Folders, Flat Files, Excel Files...)
• Working with Databases
• Predefined Functions/Methods
• User defined Methods/Functions
• Regular Expressions
• Exception Handling
• Object Oriented Programming
Inheritance
Polymorphism
Abstraction
Encapsulation

VI) Database Technology:

• Creating New Databases
•  Creating New Tables in a database
•  Inserting Records in a database
•  Updating Records in a database
•  Deleting Records from a database
•  Retrieving Data from a database
•  Executing Queries against a database
•  Set Permissions on Tables, Procedures, and Views
•  Creating Stored Procedures in a database
•  Creating Views in a database

Etc...

VII) Domain Knowledge:

Banking (Core Banking Operations, ATM Banking, Internet Banking ...)
Insurance (Policy Management, Risk Management, Claims Processing...)
ERP (Enterprise Resource Planning - Human Resources Management, Customer Relation Management, Sales and Distribution, Marketing...)
Ecommerce (Business to Business, Business to Customers, Customers to Customers...)
Healthcare (Hospitals Management, Claims Processing etc...)
Mobile (Native applications, Web apps, and Hybrid Applications)
-------------------------------------------------------------------

Selenium WebDriver Commands

Selenium WebDriver Commands

Selenium WebDriver Methods / Commands are used to perform Operations on Web Elements

Using Element Locators and WebDriver Commands we create Test Cases.

Element Locators - To recognize / Indentify / Locate Elements

WebDriver Commands - To Perform Operations on Elements
------------------------------------------------------------
Important WebDriver Commands / Methods

1) get()
2) getTile()
3) getCurrentUrl()
4) navigate().to()
5) navigate().back()
6) navigate().forward()
7) navigate().refresh()
8) close()
9) quit()
----------------------
10) findElement()
11) sendkeys()
12) clear()
13) click()
----------------------
14) isDisplayed()
15) isEnabled()
16) isSelected()
----------------------
17) getText()
----------------------------------
1) get()

Description: Opens a specified URL in the Browser window.

Syntax:

driverObject.get("URL");

Example:

WebDriver driver = new FirefoxDriver();
driver.get("https://in.yahoo.com/");
----------------------------------
2) getTitle()

Description: Returns the Browser Title

Syntax:

String stringName = driverObject.getTitle();

Example:

WebDriver driver = new FirefoxDriver();
driver.get("https://www.google.co.in/");
String browserTitle = driver.getTitle();
System.out.println(browserTitle);
----------------------------------
3) getCurrentUrl()

Description: Returns current url of the Browser

Syntax:

String stringName = driver.getCurrentUrl();

example:

WebDriver driver = new FirefoxDriver();
driver.get("https://www.google.co.in/");
String browserURL = driver.getCurrentUrl();
System.out.println(browserURL);
----------------------------------
Browser Navigation Methods

4) navigate().to()

Description: Loads a new Page in the Browser window

Syntax:

driver.navigate().to("URL");

Example:

WebDriver driver = new FirefoxDriver();
driver.get("https://www.google.co.in/");
driver.navigate().to("http://www.rediff.com/");
----------------------------------
5) navigate().back()

Description: Moves a single item back in the Browser history

Syntax:

driver.navigate().back();

Example:
WebDriver driver = new FirefoxDriver();
driver.get("https://www.google.com/");
Thread.sleep(3000);
driver.navigate().to("https://in.yahoo.com/");
driver.navigate().back();
----------------------------------
6) navigate().forward()

Description: Moves single item forward in the Browser history

Syntax:

driver.navigate().forward();

Example:

WebDriver driver = new FirefoxDriver();
driver.get("https://www.google.com/");
Thread.sleep(3000);
driver.navigate().to("https://in.yahoo.com/");
Thread.sleep(3000);
driver.navigate().back();
Thread.sleep(3000);
driver.navigate().forward();
----------------------------------
7) navigate().refresh()

Description: Refreshes the current web page

Syntax:

driver.navigate().refresh();

Example:

WebDriver driver = new FirefoxDriver();
driver.get("https://www.google.com/");
driver.navigate().refresh();
----------------------------------
8) close()

Description: It closes the focused browser

Syntax:

driver.close();

Example:

WebDriver driver = new FirefoxDriver();
driver.get("https://www.google.com/");
driver.close();
----------------------------------
9) quit()

Description: Closes all Browsers that opened by WebDriver during execution

Syntax:

driver.quit();

Example:

WebDriver driver = new FirefoxDriver();
driver.get("file:///C:/Users/gcreddy/Desktop/HTMLExamples/LoginPage.html");
driver.findElement(By.linkText("Sign In")).click();
driver.quit();
----------------------------------
10) findElement()

Description: Finds the first element within the web page using given locator.

Syntax:

driver.findElement(By.ElementLocator("value")) - Partial Code

driver.findElement(By.ElementLocator("value")).WebDriverCommands();

Or

WebElement elementName = driver.findElement(By.ElementLocator("Value"));

elementName.WebDriverCommand();

Example:

driver.findElement(By.id("Email")).sendKeys("India123");

driver.findElement(By.id("Email")).sendKeys("India123");
Thread.sleep(3000);
driver.findElement(By.id("Email")).clear();


Or
WebElement editbox = driver.findElement(By.id("Email"));
editbox.sendKeys("India123");

WebElement editbox = driver.findElement(By.id("Email"));
editbox.sendKeys("India123");
Thread.sleep(3000);
editbox.clear();
----------------------------------
11) sendkeys()

Enters a value into Edit box

Syntax:

driver.findElement(By.ElementLocaror("Value")).sendkeys("Value/input data");

Or

WebElement elementName =driver.findElement(By.ElementLocaror("Value"));
elementName.sendkeys("Value/input data");

example:

driver.findElement(By.id("Email")).sendKeys("India123");
Or
WebElement editbox = driver.findElement(By.id("Email"));
editbox.sendKeys("India123");
----------------------------------
12) clear()

Clears the value from Edit box

Syntax:

driver.findElement(By.ElementLocaror("Value")).clear();

example:

driver.findElement(By.id("Email")).clear();
----------------------------------
13) click()

Clicks an Element (Click Button, click Link, select Radio button, Select/Unselect check box...)

Syntax:

driverObject.findElement(By.ElementLocator("Value")).click();

Example:

//Click Method/Command on Button

WebDriver driver = new FirefoxDriver();
driver.get("https://www.gmail.com");
driver.findElement(By.id("next")).click();

//Click Method/Command on Radio Button

WebDriver driver = new FirefoxDriver();
driver.get("http://www.gcrit.com/build3/create_account.php?osCsid=3c0h0jqup9tub8k53vq36mjam6");
driver.findElement(By.xpath(".//*[@id='bodyContent']/form/div/div[2]/table/tbody/tr[1]/td[2]/input[2]")).click();

//Click Method/Command on Link

WebDriver driver = new FirefoxDriver();
driver.get("https://www.google.com");
driver.findElement(By.linkText("Images")).click();

//Click Method/Command on Check Box
WebDriver driver = new FirefoxDriver();
driver.get("file:///C:/Users/gcreddy/Desktop/HTMLExamples/MultipleCheckbox.html");
driver.findElement(By.xpath("html/body/input[2]")).click();
Thread.sleep(3000);
driver.findElement(By.xpath("html/body/input[2]")).click();
-----------------------------
Click Command/Method Operations

i) Click a Button
ii) Click a Link
iii) Select a Radio Button
iv) Select a Check box
v) Unselect a Check box
----------------------------------
14) isDisplayed()

Checks if the element is displayed or not? in the current web page.

Syntax:

boolean variableName = driver.findElement(By.ElementLocator("Value")).isDisplayed();

Example:

boolean a = driver.findElement(By.id("next")).isDisplayed();
System.out.println(a);

Or
System.out.println(driver.findElement(By.id("next")).isDisplayed());
----------------------------------
15) isEnabled()

Checks if the element is in Enabled state or not?
Returns boolean / Logical value (true/false)

Syntax:

boolean variableName = driver.findElement(By.ElementLocator("Value")).isEnabled();

Example:

WebDriver driver = new FirefoxDriver();
driver.get("https://www.gmail.com");
boolean b = driver.findElement(By.id("Email")).isEnabled();
System.out.println(b);
driver.close();
----------------------------------
16) isSelected()

Checks if the Element is selected or not?

Syntax:
boolean variableName = driver.findElement(By.ElementLocator("Value")).isSelected();

Example:

WebDriver driver = new FirefoxDriver();
driver.get("file:///C:/Users/gcreddy/Desktop/HTMLExamples/MultipleCheckbox.html");
System.out.println(driver.findElement(By.xpath("html/body/input[2]")).isSelected());
driver.findElement(By.xpath("html/body/input[2]")).click();
System.out.println(driver.findElement(By.xpath("html/body/input[2]")).isSelected());
driver.close();
----------------------------------
17) getText();

Returns the specified Element's Text value

syntax:

String stringname = driver.findElement(By.ElementLocator("Value")).getText();

Example:

WebDriver driver = new FirefoxDriver();
driver.get("https://www.gmail.com");
String pageHeader = driver.findElement(By.tagName("h1")).getText();
System.out.println(pageHeader);
driver.close();
------------------------------------------------------------

Selenium WebDriver Introduction

Introduction to Selenium WebDriver

i) Introduction to Selenium WebDriver

ii) Selenium WebDriver Environment Setup

iii) Write first Selenium Test Case
----------------------------------------------
i) Introduction to Selenium WebDriver

Selenium's Tool Suite
   
    Selenium IDE
    Selenium RC
    Selenium WebDriver
    Selenium Grid
----------------------------------------------
Selenium WebDriver Features:

> In 2006, Selenium WebDriver was launched at Google.

> In 2008, the whole Selenium team decided to merge Selenium RC with Selenium WebDriver
in order to form more powerful tool called Selenium 2.0

Selenium 1.0 + Selenium WebDriver = Selenium 2.0

Selenium 1.0

Selenium IDE + Selenium RC + Selenium Grid

Selenium 2.0

Selenium IDE + Selenium RC + Selenium WebDriver + Selenium Grid

Note: Now Selenium RC is only for maintenance Projects
----------------------------------------------
Selenium WebDriver Features:

> Selenium WebDriver doesn't have IDE (Integrated Development Environment), only Programming Interface

> Using Element Locators and WebDriver Commands we create Test Cases

Element / Object    Locator / Property    Value
--------------------------------------------------------
Dog                       color                      black
                            height                    30
--------------------------------------------------------
Edit box                  name                    Email

link                         linkText                Gmail
----------------------------------------------------------
> Selenium WebDriver supports various Operating Environments

MS Windows
Linux
Macintosh etc...

> Selenium WebDriver supports various Programming Environments to write Test Scripts/Programs.

Java
C#
Perl
Python
Ruby
PHP

> Selenium WebDriver supports various Browsers

Mozilla Firefox

Google Chrome

IE

Safari

Opera etc...

> Selenium WebDriver supports various Testing Frameworks,

JNunit
TestNG
-----------------
NUnit

> It supports Batch Testing, Data Driven Testing, Database Testing and Parallel Test execution
----------------------------------------------
Drawbacks of Selenium WebDriver
> Selenium WebDriver supports only Web Applications

> It doesn't have IDE, so creating Test Cases takes more time and efforts.

> No reliable Technical support.

> No built in Result Reporting facility.

> Limited support for Image Testing

> No other tool integration with Selenium WebDriver for Test Management
----------------------------------------------
ii) Selenium WebDriver Environment Setup

Steps:

1) Download and Install Java Software (jdk) - To create and execute programs (Test Scripts)

2) Download Eclipse IDE and Extract - Platform to write and execute Java Programs.

3) Download Selenium WebDriver Java Language binding from www.seleniumhq.org and Add  WebDriver jar files to Java Project in Eclipse IDE.
---------------------------------------------------------
Download Browser drivers (Chrome, IE, safari etc...) to execute Test Cases using different browsers.
--------------------------------------------------------
You can download and Install Firebug and Firepath plug ins for Firefox Browser to inspect elements,

Or
You can use Firefox Browser built in feature "Page Inspector" to inspect elements

If we use Chrome or IE, they have built-in developer tools to inspect elements.
----------------------------------------------
WebDriver Environment Setup:

> Create Java Project
>Select Java Project in Eclipse IDE and right click
> Build path
> Configure build path
> Select Libraries tab
> Click "External jars"
> Browse path of selenium Webdriver jars
> Add
----------------------------------------------
iii) Write first Selenium Test Case

Test Scenario / Manual Test Case

Test Case Name: Verify Admin Login in gcrShop web portal

Test Steps:
1) Launch the Browser
2) Navigate to "http://www.gcrit.com/build3/admin/"
3) Enter Username
4) Enter Password
5) Click "Login" Button

Test Data:

Username = admin
Password = admin@123

Verification Point:
 

Capture the URL after Login and compare with expected.

Expected: http://www.gcrit.com/build3/admin/index.php

Actual:

Status: Pass/Fail
----------------------------------------------
Inspect Elements:
Username -Edit box- username (name locator value) - madhuri@gmail.com (Input data/Test Data)
 

Password -Edit box - password (name locator value) -
 

Login - Button - tdb1 (id locator value)
---------------------------
Element Locators - To identify/recognize/locate Elements
 

WebDriver Commands - To perform Operations on Elements
----------------------------------------------
Write Selenium WebDriver Test Case:

WebDriver driver = new FirefoxDriver();
driver.get("http://www.gcrit.com/build3/admin/");
driver.findElement(By.name("username")).sendKeys("admin");
driver.findElement(By.name("password")).sendKeys("admin@123");
driver.findElement(By.id("tdb1")).click();

String url = driver.getCurrentUrl();

if (url.equals("http://www.gcrit.com/build3/admin/index.php")){
System.out.println("Admin Login Successful - Passed");
}
else {
System.out.println("Admin Login Unsuccessful - Failed");
}
driver.close();
}
}
----------------------------------------------
String url = driver.getCurrentUrl();
if (url.equals("http://www.gcrit.com/build3/admin/index.php")){
}

Or

if ((driver.getCurrentUrl()).equals("http://www.gcrit.com/build3/admin/index.php")){
}
----------------------------------------------
Keywords used in this Test Case:
driver / driver Object - Firefox Browser Driver

get - WebDriver Command
findElement - WebDriver Command
sendKeys -WebDriver Command
click - WebDriver Command
getCurrentUrl -WebDriver Command
close - WebDriver Command

By - Predifined Class

name - Element Locator
id - Element Locator

username - Element Locator Value
password- Element Locator Value
tdb1- Element Locator Value

admin - Input / Test Data
admin@123 - Input / Test Data

if - Java Conditional Statement

equals - Java String Method
----------------------------------------------

Introduction to Performance Testing

Introduction to Performance Testing

i) What is Performance Testing?
ii) Functional Testing Vs. Performance Testing
iii) How to Conduct Performance Testing?
iv) Performance Test Process (Automated Test Process)
------------------------------------------------------------
i) What is Performance Testing?

It is a Test Type,
Basically Software Testing is two types,

1) Functional Testing

2) Non Functional Testing

Functional Testing

Checking the Functionality of the System (AUT)

Non Functional Testing

Checking Quality Attributes of the System (AUT)

Quality Attributes:

Performance,
(Load, Stress, Spike, Endurance etc...)

Usability,

Recovery,

Compliance,

Localization

Internationalization, Etc...
---------------------------------------------------------------
ii) Functional Testing Vs. Performance Testing

Functional Test Requirement: Login to xyz Application 

Functional Testing: 

Positive Scenario:
1 Login to xyz Application using valid user name and valid password
(Expected: Application Home Page)

Negative Scenario: Login to xyz Application with invalid input  (Expected: Meaningful Error Message)


Negative Test Cases:
1 Login to xyz Application with invalid user name and valid password
2 Login to xyz Application with valid user name and invalid password
3 Login to xyz Application with invalid user name and invalid password
4 Login to xyz Application with blank user name and valid password etc...


Performance Test Requirement: Login to xyz Application with multiple users load

Performance Testing:

1) Login to xyz Application with increasing multiple users Load(2000, 3000, 4000....)(Expected: Login within 6 Seconds) - Load Testing

2) Login to xyz Application with maximum load and more than the capacity(10000, 11000...) -Stress Testing

3) Login to xyz Application with sudden increments/decrements of Load (1000, 7000, 2000...) - Spike Testing

4) Login to xyz Application with multiple users over a period of Time (5000 Users for 2 Hours/repeat Login operation for 5000 users for 2 hours of Time) - Endurance Testing
-------------------------------------------------------------------
iii) How to Conduct Performance Testing?

Generally, Software Testing can be done in two ways,

1) Manual Testing
2) Automated Testing

Ex: We can conduct Functional Testing manually or using Test Tools like UFT or Selenium etc...

But Manual Testing is impractical for performance Testing, Automated Testing only possible.

Popular Test Tools for Performance Testing:

1) LoadRunner (Commercial Tool)

2) JMeter (Open Source Tool)

3) RPT (Commercial Tool)

4) SilkPerformer (Commercial Tool)

5) WebLoad Etc...
------------------------------------------------------------
iv) Performance Test Process (Automated Test Process)

Important Steps:

> Setup Performance Test Environment

> Create Test Script

> Create and Apply multiple users (Virtual users) Load

> Distribute the Load across multiple Computers

> Run Load Scenario/s

> Analysis (Analyze the Test Result)
------------------------------------------------------------

Software Testing Tools


Software Testing Tools

Important Categories of Test Tools

i) Functional and Regression Test Tools

ii) Performance Test Tools

iii) Mobile Test Tools

iv) Test Management Tools

v) Defect management Tools
-----------------------------------------------------
i) Functional and Regression Test Tools

Popular Test Tools for Functional and Regression Testing

1) Selenium - (Open Source Tool)
2) UFT / QTP (Commercial Tool)
3) RFT (Commercial Tool)
4) SoapUI - (Open Source Tool)
5) Watir - (Open Source Tool)
6)  SilkTest (Commercial Tool)
7) TestComplete - (Commercial Tool)
8) Cucumber (Open Source Tool)
-----------------------------------------------------
ii) Performance Test Tools
 

Popular Test Tools for Performance Testing

1) LoadRunner (Commercial Tool)
2) JMeter - (Open Source Tool)
3) RPT (Commercial Tool)
4) Silk Performer (Commercial Tool)
5) WebLoad (Commercial Tool)
-----------------------------------------------------
iii) Mobile Test Tools

Popular Test Tools for Mobile Testing

1) Appium - (Open Source Tool)
2) Silk Mobile (Commercial Tool)
-----------------------------------------------------
iv) Test Management Tools

Popular Test Tools for Test Management

1) HP ALM/Quality Center (Commercial Tool)
2) Jira
3) TestLink (Open Source Tool)
4) QAComplete
5) IBM Rational Quality Manager (Commercial Tool)
-----------------------------------------------------
v) Defect Management Tools

Popular Test Tools for Defect Management

1)  Bugzilla (Open Source Tool)
2) Mantis or MantisBT (Open Source Tool)
3)  IBM Rational ClearQuest (Commercial Tool)
4) BugHost (Commercial Tool)
-----------------------------------------------------

Note: Defect Management is Part of Test Management
---------------------------------------------------------
Now we have two types of Software,

i) Computer Software

ii) Mobile Software
-------------------------------------------------------
Three types of Mobile Software,

1) Native Applications
2) Web Applications / Web Apps
3) Hybrid Applications
------------------------------------------------------
Types of Computer Software,

1) Desktop Applications (I-Tier and II-Tier)
2) Web Applications (III-Tier and N-Tier)
3) Hybrid Applications
------------------------------------------------------
Test Managements Tasks,

1) Requirements Management
2) Test Design and Test Case management
3) Requirements Traceability
4) Test Execution and Reporting
5) Defect Management Etc...
------------------------------------------------------
Defect Management Tasks,

1) Defect Reporting
2) Defect Tracking 
------------------------------------------------------

Functional and Regression Test Tools

Functional and Regression Test Tools

Important / Popular Test Tools for Functional and Regression Testing.

1) Selenium - (Open Source Tool)
2) UFT / QTP (Commercial Tool)
3) RFT (Commercial Tool)
4) SoapUI - (Open Source Tool)-SmartBear
5) Watir - (Open Source Tool)
6)  SilkTest (Commercial Tool)
7) TestComplete - (Commercial Tool)
8) Cucumber (Open Source Tool)
--------------------------------------
1) Selenium - (Open Source Tool)

•  Selenium is a suite of Software Tools that automate Web Browsers, 
•  Selenium is mainly used for Functional and Regression Testing, 
•  Selenium supports Computer Web Applications and Mobile Web Applications.
•  Selenium supports various operating environments (Ex: MS Windows, Linux, Macintosh etc...), 
•  Selenium supports various Browser Environments (Ex: Mozilla Firefox, Google Chrome, IE etc...) 
•  Selenium supports various Programming Environments (Ex: Java, C#, Python, Perl, PHP, Ruby) to write 
    Test Scripts.
--------------------------------------
2) UFT / QTP (Commercial Tool)

•  HP Unified Functional Testing (formerly QuickTest Professional) is a Functional and Regression Test tool, 
•  UFT supports Computer Desktop Applications and Web Applications, Mobile Applications
•  UFT supports MS Windows Operating environment only.
•  Mobile Add-On for UFT supports  iOS, Android, WindowsPhone and Blackberry Mobile Operating Environments.
•  UFT supports VBScript to write Test Scripts
•  UFT can be integrated with ALM for Test management.
--------------------------------------
3) RFT (Commercial Tool)

•  IBM Rational Functional Tester is an automated functional testing and regression testing tool. 
•  RFT provides automated testing capabilities for functional, regression, GUI, and data-driven testing.
•  RFT  supports Java or Visual Basic .NET to write Test Scripts, testers using Java can work in the Eclipse 
   Java editor, and those using Visual Basic .NET can work in Visual Studio .NET.
•  RFT supports Windows, Linux operating environments.
--------------------------------------
4) SoapUI - (Open Source Tool)-SmartBear

•  SoapUI is a free and open source Functional Testing solution.
•  SoapUI is cross-platform, and can be used on either Windows, Mac or Linux/Unix Opers Environments.
•  SoapUI allows us to create and execute automated functional, regression, compliance, and load tests. 

Compliance Testing: It is related with the IT standards followed by the company and it is the testing done 
to find the deviations from the company prescribed standards.
--------------------------------------
5) Watir - (Open Source Tool)

•  Watir, is an open-source (BSD) family of Ruby libraries for automating web browsers.
•  Watir supports multiple browsers on different platforms.
•  It uses Ruby scripting language to write Test scripts
--------------------------------------
6)  SilkTest (Commercial Tool)

•  Micro Focus SilkTest is a tool for automated function and regression testing of enterprise applications.
•  SilkTest supports VB.NET, C# and Java, or Silk Test’s own 4Test.
•  SilkTest supports various Browser environments.
•  It supports Moblie Testing also (Native Applications, web apps and hybrid applications)
•  It uses standard test frameworks including JUnit, NUnit and MSTest. 
--------------------------------------
7) TestComplete - (Commercial Tool)

•  TestComplete is a Functional and Regression Test Tool developed by SmartBear Software.
•  It supports Computer Desktop, Web and Mobile Applications.
•  It uses Python, VBScript, JScript, DelphiScript, C++Script, and C#Script to create automated tests.
•  It supports various Browsers.
•  It supports Cross Browser Testing, Data driven Testing and Database Testing.
--------------------------------------
8) Cucumber (Open Source Tool)

•  Cucumber is a tool based on BDD(Behavior Driven Development) framework which is used to write 
    acceptance tests for web applications.
•  Cucumber supports only web environment.
•  Cucumber written in Ruby it also supports other languages like Perl, PHP, Python, .Net etc.
--------------------------------------

TestNG Framework Quick Tutorial for Selenium

TestNG Framework Quick Tutorial for Selenium

i) Introduction to TestNG Framework

ii) Install TestNG and write first TestNG Program

iii) Create multiple Test cases and prioritize Test Cases.

iv) Execute multiple Classes / Programs using XML

v) Grouping Test Cases
--------------------------------------------
i) Introduction to TestNG Framework

> In Selenium using Java there are two Frameworks available,

1) JUnit

2) TestNG

> TestNG is a Testing Framework designed to simplify a broad range of Testing activities from Unit Testing to System Testing.

> Initially developed for Unit Testing, now used for all kinds of Testing

> TestNG is an open source Framework where NG Stands for Next Generation.

> TestNG inspired from JUnit (Java platform and NUnit (.NET platform), but introduced some new functionality.
--------------------------------------------
Advantages of TestNG

> TestNG Annotations are easy to create Test Cases

> Test Cases can be grouped and prioritized more easily.

> Supports Parameterization

> Execute Test Batches

> Parallel Test Execution

> Generate HTML Test Reports.
--------------------------------------------
ii) Install TestNG and write first TestNG Program

In Eclipse IDE,

> Help Menu
> Install New Software
> Click Add
> Enter name as "TestNG"
> Enter URL as : "http://beust.com/eclipse/"
> Select "TestNG"
> Next > Next > accept License Agreement > finish
--------------------------------------------
Write first TestNG Test Case

Manual Test Case: Verify the Title of Gmail Home Page

Test Steps:
i) Launch the Browser
ii) Navigate to "https://www.gmail.com"

Verification Point:
Capture the Page Title and Compare with expected.

Expected: Gmail

Input Data: None
--------------------------------------------
public class VerifyTitle {
@Test
public void verifyTitle(){
WebDriver driver = new FirefoxDriver();
driver.get("https://www.gmail.com");

String pageTitle = driver.getTitle();
Assert.assertEquals (pageTitle, "Gmail");
driver.close();
}
}
--------------------------------------------
Note:

1) main method is not used for TestNG programs.
2) TestNG Program contains only methods that contain @Test Annotations
3) If we don't write @Test Annotation then the method is not going to be executed.
--------------------------------------------
iii) Create multiple Test cases and prioritize Test Cases.

public class VerifyTitle {
@Test
public void logout(){
Assert.assertEquals("Gmail", "Gmail");
}
@Test
public void abcd(){
Assert.assertEquals("abcd", "abcd");
}
@Test
public void xyz(){
Assert.assertEquals("Yahoo", "Yahoo");
}
@Test
public void login(){
Assert.assertEquals("Google", "Google");
}
}
---------------------------------------
Test Execution Flow as per the Program:

logout
abcd
xyz
login
--------------------------------
abcd
login
logout
xyz

Note: TestNG Test Cases are executed in Alphabetical Order.

If you want control the Test Execution then use priority attribute or dependsOnMethods attribute
---------------------------------------
Required Flow:
login
abcd
xyz
logout

Using priority attribute

public class VerifyTitle {
@Test(priority = 4)
public void logout(){
Assert.assertEquals("Gmail", "Gmail");
}
@Test(priority = 2)
public void abcd(){
Assert.assertEquals("abcd", "abcd");
}
@Test(priority = 3)
public void xyz(){
Assert.assertEquals("Yahoo", "Yahoo");
}
@Test(priority = 1)
public void login(){
Assert.assertEquals("Google", "Google");
}
}
--------------------------------------------
Using dependsOnMethods attribute

import org.testng.Assert;
import org.testng.annotations.Test;

public class VerifyTitle {
@Test(dependsOnMethods = {"xyz"})
public void logout(){
Assert.assertEquals("Gmail", "Gmail");
}
@Test(dependsOnMethods = {"login"})
public void abcd(){
Assert.assertEquals("abcd", "abcd");
}
@Test(dependsOnMethods = {"abcd"})
public void xyz(){
Assert.assertEquals("Yahoo", "Yahoo");
}
@Test
public void login(){
Assert.assertEquals("Google", "Google");
}
}
--------------------------------------------
login -Pre condition for every Test case
logout -Post Condition for Evey Test Case

Required Flow:

login
abcd
logout

login
xyz
logout
--------------------------------------------
public class VerifyTitle {
@AfterMethod
public void logout(){
System.out.println("Logout Successful");
}
@Test
public void abcd(){
System.out.println("abcd Successful");
}
@Test
public void xyz(){
    System.out.println("xyz Successful");
}
@BeforeMethod
public void login(){
System.out.println("Login Successful");
}
}
-------------------------------------------
login -Pre condition for all Test cases in the Program
logout -Post Condition for all Test cases in the Program

Required Flow:

login
xyz
abcd
logout
-----------------------------------------
public class VerifyTitle {
@AfterClass
public void logout(){
System.out.println("Logout Successful");
}
@Test(priority = 2)
public void abcd(){
System.out.println("abcd Successful");
}
@Test(priority = 1)
public void xyz(){
    System.out.println("xyz Successful");
}
@BeforeClass
public void login(){
System.out.println("Login Successful");
}
}
--------------------------------------------
iv) Execute multiple Classes / Programs using XML
XML file for executing multiple Classes/Programs.

<suite name ="SuiteName">
<test name = "TestName" >
<classes>
<class name = "Package.Class1Name" />
<class name = "Package.Class2Name" />
<class name = "Package.Class3Name" />
</classes>
</test name = "TestName" >
</suite name ="Suite Name">

Tags

suite
test
classes
class
-------------------------------
Navigation to create XML file

Select Java Package > Right Click > New > Others...
> Enter "TestNG" and Select TestNg Class
> Enter source and Package names
> Enter XML file name
> Finish
--------------------------------------------
Test Cases:

login
addVendor
addCurrency
addProduct
logout
-------------------------------------
XML File

<?xml version="1.0" encoding="UTF-8"?>
<suite name="Ecommerce" parallel="false">
  <test name="Smoke Tests">
    <classes>
      <class name="abcd.Class1"/>
      <class name="abcd.Class2"/>
    </classes>
  </test> <!-- Test -->
</suite> <!-- Suite -->
---------------------------------------
Class 1

public class Class1 {
@BeforeTest
public void login() {
System.out.println("Login Successful");
}
@AfterTest
public void logout() {
System.out.println("Logout Successful");
}
@Test(priority = 1)
public void addVendor() {
System.out.println("Add Vendor Successful");
}
@Test(priority = 3)
public void addProduct() {
System.out.println("Add product Successful");
}
@Test(priority = 2)
public void addCurrency() {
System.out.println("Add Currency Successful");
}
}
------------------------------------------------
Class 2:

public class Class2 {
/*@BeforeClass
public void login() {
System.out.println("Login Successful");
}
@AfterClass
public void logout() {
System.out.println("Logout Successful");
}*/
@Test(priority = 1)
public void deleteVendor() {
System.out.println("Delete Vendor Successful");
}
@Test(priority = 3)
public void deleteProduct() {
System.out.println("Delete Product Successful");
}
@Test(priority = 2)
public void deleteCurrency() {
System.out.println("Delete Currency Successful");
}
}
--------------------------------------------
v) Grouping Test Cases

XML file for grouping Test Cases

<suite name ="Suite Name">
<test name ="Test Name">

<groups>
<run>
<include name ="GroupName"/>
</run>
</groups>

<classes>
<class name = "Package.Class1"/>
<class name = "Package.Class1"/>
</classes>

</test name ="Test Name">
</suite name ="SuiteName">
--------------------------------------------
Tags

suite
test
groups
run
include
classes
class
--------------------------------------------
Sanity group

login
search
prepaidRecharge
logout

Regression group

login
advancedSearch
prepaidRecharge
billPayments
logout
-------------------------------------
XML File

<?xml version="1.0" encoding="UTF-8"?>
<suite name="Suite" parallel="false">
  <test name="Test">
 
  <groups>
  <run>
  <include name ="Regression"/>
  </run>
 
  </groups>
    <classes>
      <class name="abcd.Class3"/>
    </classes>
  </test> <!-- Test -->
</suite> <!-- Suite -->
-------------------------------------------
Class File

public class Class3 {
@Test(groups = {"Sanity", "Regression"}, priority=1)
public void login() {
System.out.println("Login Successful"); 
}
@Test(groups = {"Sanity", "Regression"}, priority=10)
public void logout() {
System.out.println("Logout Successful"); 
}
@Test(groups = {"Sanity"}, priority=2)
public void search() {
System.out.println("Search Successful"); 
}
@Test(groups = {"Regression"}, priority=2)
public void advancedSearch() {
System.out.println("Advanced Search Successful"); 
}

@Test (groups = {"Sanity", "Regression"}, priority=3)
public void prepaidRecharge() {
System.out.println("Prepaid Recharge Successful"); 
}
@Test (groups = {"Regression"}, priority=4)
public void billPayments() {
System.out.println("Bill Payments Successful"); 
}
}
--------------------------------------------
Selenium Webdriver Test Cases
1) Launch Browser
2) Verify Gmail Home Page
3) Verify Yahoo Home Page
4) Close Browser
-----------------------------------
TestNG Program:

public class Sample {
public WebDriver driver;

@BeforeClass
public void launchBrowser(){
driver = new FirefoxDriver();   
}
@AfterClass
public void closeBrowser(){
driver.close();
}
@Test(priority=1)
public void verifyGmailpage(){
driver.get("https://www.gmail.com");
Assert.assertEquals("Gmail", driver.getTitle());
}
@Test(priority=2)
public void verifyYahoopage(){
driver.get("https://in.yahoo.com");
Assert.assertEquals("Yahoo", driver.getTitle());
}
}
--------------------------------------------