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.

Tools

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)

Requirements

  • 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

Sampler

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)

Timer

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

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?

#HappyTesting

Why I became a tester ?

What do you want to be when you grow up ?

When someone asked me that question,  I always tell  I wanted to be a software tester!

No, Absolutely not! In fact, even in university I wasn’t sure what I wanted to be. I had a subject in software quality assurance in my degree, which impressed me immensely at that time. But after that when I was looking for a job, I got an opportunity from a well reputed company in the Quality Assurance track, and I grabbed that opportunity without any hesitation.

Today I am happy about the decision I’ve made on that day. I’m having a career that I love and I make lots of wonderful memories, experiences from it.

Like many other in the industry, even though I became a tester because of the opportunity I was given, now I am a software quality assurance engineer because I feel passionately about Testing. It kept me challenging everyday!

#HappyTesting

Software Testing 101 – Test Case

A set of input values, execution preconditions, expected results and execution post conditions, developed for a particular objective or test condition, such as to exercise a particular program path or to verify compliance with a specific requirement

Above is the definition from official ISTQB glossary, but in a simple term test case is a set of conditions which a tester use to determine whether a system under test satisfies requirement. Test cases help to find problems in requirement or the design of the application.

Test case template

Test case template can be vary from different companies. However the basic items/section would remain same. Below are some of the basic items you may find in a test case document.

  • Test Case ID: Identification number used to identify the test cases.
  • BR Number: Business Requirement number, this will map with the corresponding requirement on the requirement / Spec document.
  • Prerequisites: Any preconditions that must be fulfilled prior to executing the test.
  • Test Steps: Step by step procedure to execute the test.
  • Test Data: Relevant test data which needs to execute the test case.
  • Expected Results: Expected result of the test case.
  • Actual Results: Actual result of the test ( To be filled after the test )
  • Test Status: Status of the test – Could be ‘Not started’ / ‘Pass’ / ‘Fail’ / ‘Blocked’
  • Executed By: Name of the person who performed the test
  • Test Environment: Environment which test was executed
  • Remarks: Any special notes with regard to the test case / or the test execution

How to write a good test case

  • Ensure all the positive / negative test scenarios.
  • Write in simple language.
  •  Use the exact names in the Web forms / Web screens / Windows forms

Good characteristics of a good test case

  • Accurate – On point, It says what it does
  • Traceable – It maps with the requirement document, So when in doubt it can be traced back.
  • Repeatable – Can be used to perform over and over

#HappyTesting

Access denied – Call ‘chmod’, May be ?

Have you ever experienced a message saying politely that you have no privileges to perform an action? I am pretty much sure that all of you may have that experience. Like for an example, suddenly your DB server stopped you have to restart the server to continue your work, but the remote user which you are using has not the right access which Oracle ( DB user ) has ( Yes, We had faced a related situation recently! )

Since we are dealing with servers & most servers are Linux based machines, we need to figure a way to handle permission related things on Linux. So then our speaker, ‘chmod’ comes to action.

There are few things you needed to know before you proceed,

  • r – Read permission
  • w – Write permission
  • x – Execute permission
  • + – Adding permission
  •  – – Revoking permission

So let’s  say you want to give the permission to everyone to access this file, Here is the way to do ,

You can check the revised access permission by simply type,

ls -la <file_name>
In this case, It should be,  ls -la test1

Likewise you can revoke access permission by following below command,
 chmod u-rx <file_name>