One of the coolest feature I came across in Elixir - our code documentation becomes our unit tests. I was amazed by its simplicity when I saw it in action in sample app I was writing. I feel this is one of the most incredibly and helpful feature I saw in any modern programming language in recent times. (Python has similar functionality using Python’s doctest.)

Let me explain this by giving a quick demo using few simple examples: Math functions sum and multiply.

Lets say this is our Maths...

Read complete blog post

Recently I added few integration tests in my projects using Capybara and Selenium webdriver and ran into banging my head against inconsistencies with test database. I create some records in test DB which were completely invisible to Selenium-driven browser-based tests.

The problem is: the tests are being wrapped in database transactions, so any code running outside the actual test process (like, say, a server process servicing a Selenium-driven browser request) does not see the database...

Read complete blog post

What is selenium IDE:

Selenium-IDE (Integrated Development Environment) is a tool that you use to develop your Selenium test cases. It’s a Firefox plug-in. The 'record' button in selenium IDE enables user to record his actions and is a real time saver. Although, many-a-times, due to the external plugins used in our app, we need to manually write scripts or atleast modify the recorded scripts.

Why should developers know about selenium IDE?

In many of our applications, we have multiple forms...

Read complete blog post

1) URL manipulation through HTTP GET methods:

  • The tester should check if the application passes important information in the query-string. This happens when the application uses the HTTP GET method to pass information between the client and the server.

  • The information is passed in parameters in the query-string. The tester can modify a parameter value in the query-string to check if the server accepts it.

  • Via HTTP GET request user information is passed to server for authentication or...

Read complete blog post

Step 1 - Identify Objectives

The purpose of this step is to identify and write the performance objectives of your application. The key question you should ask yourself is:

“How should my application behave under load?”

The main parameters we should consider are:

Response time- The time that would take the application to display a certain output or perform a certain calculation. Example: the product catalog must be displayed in less than 3 seconds.

Throughput– The rate of successful message...

Read complete blog post

1) Use Robust object identification methods:

Preferred selector order: id name cssxpath

To locate an element we can use • the element’s ID

e.g- driver.findElement("LinkId")).click();

the element’s name attribute

e.g- driver.findElement("LinkName")).click();

by CSS statement

e.g- driver.findElement(By.cssSelector(“a#LinkId”)).click();

the element’s CSS statement

e.g- driver.findElement(By.css("LinkName")).click();

an XPath statement


Read complete blog post

1) Do not use the Console to create your load:

You can use the console for debugging purposes or to run a small load from it to make sure the script is running correctly. The GUI consumes a lot of memory under heavy load; therefore the console server by itself cannot sustain a heavy load.

2) Use the remote servers to create the load:

Use the “Remote Start All” or “Remote Start” individual servers.

3) Limit the number of threads per engine to 300:

This means the total number of threads...

Read complete blog post

Performance Testing Process

Below is a generic performance testing process

1. Identify your testing environment

i.Know your physical test environment, production environment and what testing tools are available.
ii. Understand details of the hardware, software and network configurations used during testing before you begin the testing process.

That will help testers create more efficient tests. It will also help identify possible challenges that testers may encounter during the performance...

Read complete blog post

Example Testcase: Create a script to check login functionality of Gmail.

Steps followed:

1) Open Google.
2) Click on Sign in
3) Enter Username and Password.
4) Submit Creds.
5) Check if the user is Signed In


import java.util.concurrent.TimeUnit;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

Read complete blog post

WebDriver Basic Syntax:

1. Creating New Instance of Firefox Driver:

WebDriver driver = new FirefoxDriver();
//Above given syntax will create new instance of Firefox driver.

2. Command to Open URL In Browser:

//This syntax will open specified URL in web browser.

3. Clicking on any element or button of webpage:

//Above given syntax will click on targeted element in WebDriver.

4. Store text of targeted...

Read complete blog post

WebDriver Basics and Setup instructions

A: What is WebDriver?

• WebDriver is a web automation framework that allows us to execute our tests against different browsers, not just Firefox (unlike Selenium IDE). WebDriver supports Firefox, Chrome, IE, Safari and Opera.

• WebDriver supports web as well mobile application testing so we can also test mobile applications (IPhone or Android).

• WebDriver also enables us to use a programming language to create our test scripts (that is not possible in...

Read complete blog post

In Agile, writing test cases can be little different as compared to other methodologies. We never get entire complete functionality to test because we build the functionalities in iterations and only part of the functionality is delivered in each Sprint (aka iteration).

So now whenever any Story is delivered in any Sprint. First thing a Tester must do is request the Programmer for a short Knowledge-Transition (K.T) session regarding this story. And we should cover the following points during...

Read complete blog post