Showing posts with label QA Hint. Show all posts
Showing posts with label QA Hint. Show all posts

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

Saturday, February 5, 2011

Testing Checklist:


Testing Checklist: 

1 Prepare System and Acceptance Tests
Start Acceptance test Creation
3 Identify test team
Prepare Workplan
5 Prepare test Approach
6 Link Acceptance Criteria and Requirements to form the basis of
acceptance test
Use subset of system test cases to form requirements portion of
acceptance test
8 Prepare scripts for use by the customer to demonstrate that the system meets
requirements
9 Prepare test schedule. Include people and all other resources.
10 Conduct Acceptance Test
11 Start System Test Creation
12 Identify test team members
13 Prepare Workplan
14 Determine resource requirements
15 Identify productivity tools for testing
16 Determine data requirements
17 Reach agreement with data center
18 Prepare test Approach
19 Identify any facilities that are needed
20 Obtain and review existing test material
21 Prepare inventory of test items
22 Identify Design states, conditions, processes, and procedures
23 Determine the need for Code based (white box) testing. Identify conditions.
24 Identify all functional requirements
25 End inventory creation
26 Start test case creation
27 Prepare test cases based on inventory of test items
28 Identify logical groups of business function for new sysyem
29 Divide test cases into functional groups traced to test item inventory  1.30 Design data sets to correspond to test cases
31 End test case creation
32 Review business functions, test cases, and data sets with users
33 Get signoff on test design from Project leader and QA
34 End Test Design
35 Begin test Preparation
36 Obtain test support resources
37 Outline expected results for each test case
38 Obtain test data. Validate and trace to test cases
39 Prepare detailed test scripts for each test case
40 Prepare & document environmental set up procedures. Include back up and
recovery plans
41 End Test Preparation phase
42 Conduct System Test
43 Execute test scripts
44 Compare actual result to expected
45 Document discrepancies and Prepare problem report
46 Prepare maintenance phase input
47 Re-execute test group after problem repairs
48 Prepare final test report, include known bugs list
49 Obtain formal signoff

Thursday, July 22, 2010

Browse Faster

Browse Faster- For Google Chrome and Mozila Firefox.


Extensions/Addons for “Google chrome” and  “Mozila” Firefox  to  Browse Faster
How to use it.

Select Add extension for Google chrome and Add addon for firefox.

1.install extension/Addon
2.Restart browser
3.Open google .com
4.Search for india
5.Scrool till page end ..and continue scrolling and enjoy Fast browsing.

























For Mozila Firefox