How to drive Boozang using external acceptance test list

Tips & Tricks

How to drive Boozang using external acceptance test list

In this blog post we combine several of the Boozang features to run it as a test engine, using an external CSV file as a driver.

Even though the platform was designed to run as master, there are times when it’s desirable to completely keep both test automation logic and user data external to the platform.

An example of this would be when you are maintaining a spreadsheet of acceptance tests that consist of a large number of simplistic tests, such as access policy tests. Another example could be when doing data provisioning or test data initiation. Regardless of real-life example, it serves to highlight the versatility of the request data type and plug test-case action.

The data

This blog post will be fairly technical and show-case how we can combine several of the features in Boozang to externalize logic and data in CSV files. It is recommended for those unfamiliar with Boozang to first checkout our forum posts

Using external CSV data

Using matrix data

In this example, we have a master list of acceptance tests, testlist.csv, as seen below

Test	Userid	Run
BAC1	admin	m2.t7
BAC2	user 	m2.t8
BAC3	admin	m2.t8

As you can see, we have the following columns

  • Test: Acceptance test id
  • Userid: Userid for the user that runs the test
  • Run: The Boozang test id

We also have a list of users, userlist.csv, as seen below

_key	username	password
admin	johnny	        johnnypwd
user	anna	        annapwd

The file simply contains username and passwords. The first column “_key” will show Boozang that this is matrix data, which means rows can be accessed like

jsonRow = userMatrix["admin"]

We start by copying both files to a Dropbox folder and noting down the external URLs. We could course simply copy this data into Boozang, but that would defeat the idea somewhat of having it run as a slave system.

Loading the main engine in Boozang

We start by defining two new “Request data” variables using the Boozang data tab, “$test.test_case_list” and “$test.user_lookup_list”. You can see in below screenshot how it looks when they are loaded in Boozang.

The next step is to create a master “Engine” test case that drives the data loop. Let’s call it “Engine CSV loop”. Makes sure that under “Data tab -> Loop data” you select the “$test.test_case_list”.

This will loop the test-case over the CSV rows, and the current data row will be available in the “$loop” data handle. In order to extract the “username” and “password” from the user matrix, use the following code snippet

$test.tmp=$test.user_lookup_list[$loop.Userid];

Use a Javascript action and add the following code into it, adding some debug code that writes to the application console.

Code:

console.log($loop.Test);
console.log($loop.Run);
$test.tmp=$test.user_lookup_list[$loop.Userid]

In Boozang:

Now press play and see what happens. If everything is alright the following should be outputted in the application console.

Creating the tests

Now it’s time to create the tests in Boozang. Keep it simple and create two tests in the same module: “TC1” and “TC2”. Put a Javascript action in each test

TC1

console.log("I am running TC1 using $parameter data: ");
console.log($parameter);

TC2

console.log("I am running TC2 using $parameter data: ");
console.log($parameter);

Note down the ids of each test, and update the “testlist.csv” accordingly. In my example, the tests are: m2.t7 and m2.t8.

Tying it together

Now it’s time to update the “engine CSV loop” to call the right test. Add a plug-test-case action and pick any test. Replace the contents of the “Goto Test case” field with

{{$loop.Run}}

Now, it will read the test id from the “Run” column in the testlist.csv” row. Also, update the “Value” column for the plug-test case action and make sure the user-data is sent

Text-editor mode: $test.tmp

The resulting test should look as follows

Running the code

Now, press play and see what happens. If everything was setup correct (fingers crossed), the following should be outputted in the application console

Create your account for free!

No credit card required.