Hello! I'm Chamal Asela Perera.

I test code for living.

Software Testing 101 : Unit Testing

Before even go further, I must emphasize that even though I’ve listed this under the Software Testing 101 article series, This is not a testing type performed by the QA Engineers. Unit testing is performed by Developers.Unit Testing : In this phrase, a unit can refer to a function, individual program or even procedure. Biggest advantage is that by performing this, we can identify the whether the application functions as designed in the early phase. Also it can be run every time a piece of code is changed.

Bugs can be found early as possible by adding unit testing to the software development process ( or even to the CI : Continuous Integration process ). Unit tests normally runs on every day, So whenever there is a code break, It will notify to the relevant party, before it goes to the QA team.

Software Testing 101 : Testing types

Today I’m going to talk about one of the widely used to testing type. That is Regression Test.

According to ISTQB (International Software Testing Quality Board), Regression testing is,

Testing of a previously tested program following modification to ensure  that defects have not been introduced or uncovered in unchanged areas of the software, as a result of the changes made. It is performed when the software or its environment is changed.

What is the purpose of the Regression Test?

The purpose of Regression Testing is to verify, if code change introduces issues/defects into the existing functionality. There are so many kinds of possible changes that can impact the existing functionality in an application system. Even the simplest change to the code could impact previously tested functionality.

When should you use Regression Tests?

As in the definition says, Regression testing should occur when code changes are made to a previously tested application. Regression test plan can help to identify the areas of focus/ important areas for the client. This can be created from the input from development team/ QA Team and  client.

Regression testing can occur in :

  1. New features are introduced.
  2. Defects/Issues are fixed.
  3. Database changes

More importantly, Regression testing is a strong candidate for Test Automation.



ISTQB® –This might be the most widely used word in QA community, probably after ‘bug’ ( or ‘Automation’ ) 😉

What is ISTQB?

ISTQB stands for International Software Testing Qualifications Board. They are offering set of examinations to evaluate QA professionals across the world. So basically, It’s like SCJP OCJP for Java Developers or MCTS for .NET developers.

Why people prefer to do ISTQB examination ?

Apart from using the title after your name, there are some actual benefits that you could gain by doing this examination.

How It works? 

Right, This is the examination path defined by ISTQB. There are two main categories/ exam types. Foundation Level and Advanced Level. Advanced level has 03 different categories ( Test Manager / Test Analyst /Technical Test Analyst )

Right, Sounds Interesting. How much Do I need to pay ?

You have to pay around 15,000 Rs (For the foundation level exams) and around 25,000 Rs (for the Advanced level examinations). Please note that examination cost are subject to change.

Registration procedure is pretty is simple.

1.Contact agent from Sri Lanka Software Testing Board
2.Pay for exam
3.Study & do the exam
4.Wait for the results ( This may take around 2 weeks )
5.Get the certificate

Cross browser testing

A web application that behaves precisely as expected in one web browser might have some issues when run in another web browser. Application might work well in Google Chrome but not in Safari or in Firefox. Reasons for this is that different browsers render the applets, JavaScript, Flash, AJAX requests in different ways.

It’s very important as a QA professional to do a cross browser testing for a website. Recently I had the chance to dig more into this as I got an assignment with regard to this. Here are my findings in this area.

How do you conduct a cross browser testing?

Most simple way or the most common way to start would be to develop a set of check list of the functions that web site must perform & then methodically open up the web site in multiple browsers to very against the checklist.


There are some commercial tools such as BrowserStack, SauceLabs which have the capability to do the cross browser testing. These tools also can be used for the test Automation.

Performance Testing with JMeter – Part I

JMeter is a tool that can be used as a load testing tool for analyzing and measuring the performance of various services/web based applications. JMeter is a 100% pure Java application -that means you can run JMeter anywhere you can run Java. JMeter can be used to load and performance test in many different servers/protocols such as including SOAP/REST/HTTP/HTTPS/FTP.

Latest Apache JMeter version is 3.2 – Latest version can be downloaded from here (This requires Java 8 or later version)


  • JRE (Java Runtime Environment) – Fully compliant Java 8 (or later)
  • Optional: JMeter – Plugins
  1. Update the Java version to the latest If it is not the latest
  2. Download Apache-jmeter-3.2.zip file – You may note that there is no setup file, just set of files and folder. because of this, you can put this in to anywhere. Put the zip file anywhere you want and extract.
  3. Go the bin folder, you may find jmeter.bat file – Double click it and it will open the JMeter ( This is called running JMeter on GUI mode. GUI mode should only be used for creating the test script, NON-GUI mode must be used for load testing )

There are some additional scripts available in the bin folder.

  • jmeter-server.bat – Start JMeter in server mode
  • jmeter-n.cmd – drop a JMX file to run a non-GUI
  • jmeter-t.cmd – drop a JMX file on this to load it in GUI mode
  • shutdown.cmd – Run the shutdown client to stop a non-GUI instance gracefully

The environment variable JVM_ARGS can be used to override JVM settings in the jmeter.bat script

Installing Plugins

There are two ways to install plugins to JMeter.

First, let’s look at the old way to do this!

  1. Download the required plugin from https://jmeter-plugins.org/ 
  2. Unzip and place the file /lib/ext folder
  3. Quit and restart the JMeter

New way of doing this is using the plugin manager,

  1. Download the plugins-manager.jar file from https://jmeter-plugins.org/
  2. Put into the /lib/ext folder
  3. Then use the Options -> Plugins manager option from the UI


Understanding the basic concepts in JMeter

When you open up JMeter, you will see a Test Plan and WorkbBench elements, TestPlan is the root of the entire script. Everything you do will live under the Test Plan. Using a WorkBench is optional.

Thread Group

The job of the Thread Group is to create threads. They are the virtual users performing the actions. You can add a Thread Group by right click Test Plan -> Add -> Threads -> Thread Groups.

Few of the important thread properties are,

  • Number of Threads: Number of users
  • Ramp-up Period: How long would it take the number of threads ( Number of users ) to come up full speed ( EX: If the #of threads equal 100 and ramp up time is 60 seconds, it means that over the course of 60 seconds, Script will execute from 0 to 100 threads(users)
  • Loop Count: How many iterations you need to execute

Also, we can configure what we can do when we encounter an error. That can be configured in Actions to be taken after a Sampler error section. Available options are;

  • Continue: Nothing to worry, just proceed the test
  • Start Next Thread Loop: Gonna stop and continue to next loop
  • Stop Thread: Kills off the thread group
  • Stop Test: Stops entire test gracefully
  • Stop Test Now: Stop the test right abruptly


A sampler is an example of how the load is delivered to a target/how the request is made. There are so many different Samples available in Jmeter.

You can configure the web server details/protocol details in this area (If you use HTTP Request as a Sampler by right click on the added Thread Group)


A timer is used to introduce an intentional delay/or wait before the execution takes place. Reason to do this is to add a realism to our script.

Simplest timer you can use is Constant timer ( Right click the Thread group or/Sampler request and select Add -> Timer -> Constant Timer )


Assertions used to make sure that the script is working as we want/or the server is behaving as we want.

One of the simplest assertions you can use is Response assertion ( to make sure you are receiving what you want when sending HTTP request a.k.a Sampler ). An assertion can be added by Right click on the Sampler and Add -> Assertions -> Response Assertions. There are different fields available in Assertions to assert.

We will talk about JMeter functions/properties in the next article 🙂

Software Testing 101 – Test Automation

Test Automation is the use of software to control the execution of tests. Test Automation is the best way to increase the effectiveness, efficiency and coverage of the software testing.

Manual software testing is done by a human sitting in front of a computer, going through the set of screens/ checking the logics.  Automated software testing is an alternative to manual testing, where software tools, not human executes the tests.

Most commonly used test automation tools in the industry
  • Selenium
  • Telerik
  • Appium
  • Cucumber
  • HP Win Runner

Test Automation benefits

  • Improves the testing efficiency
  • Cost reduction on test
  • Human resources are free to use some other tests such as exploratory tests
  • 24/7 Availability
  • Re usability

Things to consider when doing the test automation

There are some facts/things that you need to consider before deciding the test automation for a project.

  • Status of the Project: Requirement should be finalized and more importantly stable. Another aspect would be the User Interfaces. UIs should be finalized, as it could be costly to change the automation suite to accommodate requirement changes/UI changes.
  • Resources: Skilled resources will always play a role. Building the automation script requires a programming knowledge. Also it would be good to pick a person who has the knowledge on the particular tool.
  • Tool: How well the selected tool support to your project? Does it have a good community support?