Top Banner
Feeding Your Automated Tests A Practical Demo Joseph E. Beale 02/16/2016
34

Feeding automated test by Joe Beale

Apr 14, 2017

Download

Technology

qaoth
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Feeding automated test by Joe Beale

Feeding Your Automated TestsA Practical Demo

Joseph E. Beale02/16/2016

Page 2: Feeding automated test by Joe Beale

Agenda• Scenario Outlines• Inline Tables• YAML Files• CSV Files• Excel Spreadsheets

Page 3: Feeding automated test by Joe Beale

But before we can get into those…

• We need to understand two Ruby object classes:1. Array – a group of data elements accessed using

subscripts (0…n)2. Hash – a group of key/value pairs where you

access the value via the key.

Page 4: Feeding automated test by Joe Beale

Array and Hash Methods

• .each – is used to iterate through all items in an array:

Page 5: Feeding automated test by Joe Beale

Array and Hash Methods

• .each can also be used on a hash:

Page 6: Feeding automated test by Joe Beale

Array and Hash Methods

• Access an array value using the associated subscript and a hash value using the associated key:

Page 7: Feeding automated test by Joe Beale

What is a Scenario Outline

• If I have the following Gherkin Scenario:

Page 8: Feeding automated test by Joe Beale

What is a Scenario Outline

• If I want to do multiple searches, I have to change the parameters every time.

Page 9: Feeding automated test by Joe Beale

Scenario Outlines to the Rescue

• Conversion to Scenario Outline allows me to drive multiple searches with data!

Page 10: Feeding automated test by Joe Beale

Demo

• Live demo of search engine testing using a scenario outline.

Page 11: Feeding automated test by Joe Beale

What is an Inline Table?

• Suppose I want to feed multiple data elements through one step in the scenario?

• Example: several steps to get to a page and then multiple elements to enter on that page.

Page 12: Feeding automated test by Joe Beale

Inline Table With Header

• Insurance application, add beneficiaries:

Page 13: Feeding automated test by Joe Beale

Inline Table With Header

• You can then use the table headers as hash keys to access the data in the rows:

Page 14: Feeding automated test by Joe Beale

Demo

• Live demo of printing out data from an inline table.

Page 15: Feeding automated test by Joe Beale

What is a YAML file?

• YAML = “YAML Ain’t Markup Language”• Data serialization using colons and indentation

Page 16: Feeding automated test by Joe Beale

Using YAML

• One ordinary usage for a YAML file is storing different logins for your system:

Page 17: Feeding automated test by Joe Beale

Using YAML

• Normal hash principals apply to YAML files:

Page 18: Feeding automated test by Joe Beale

Using YAML

• Another way of using YAML files is for a list of items, like names of insurance companies:

Page 19: Feeding automated test by Joe Beale

Using YAML

• So after using the initial hash key to get the list, you then treat it like an array:

Page 20: Feeding automated test by Joe Beale

Demo

• Demo of using YAML file for login ID and password, plus printing out the list of insurance name.

Page 21: Feeding automated test by Joe Beale

What is a CSV file?

• Comma Separated Value file; really just an ordinary text file that follows this format:

Page 22: Feeding automated test by Joe Beale

Using the Ruby CSV class

• Ruby has a built-in class CSV that is designed to help you manage these very common files.

Page 23: Feeding automated test by Joe Beale

Using the Ruby CSV class

• The .read method wraps our file into a CSV object. The result is an array of arrays:

Page 24: Feeding automated test by Joe Beale

Using the Ruby CSV class

• Even better, adding headers to the file and one argument to the method call creates a CSV table object:

Page 25: Feeding automated test by Joe Beale

Demo

• Demo of using CSV.read method with and without headers.

Page 26: Feeding automated test by Joe Beale

The Ubiquitous Spreadsheet

• Almost everywhere you go in the IT world, you will find data in spreadsheets.

• Spreadsheets are so commonly used for test requirements that some tools have add-ins to use them for importing test artifacts.

• Spreadsheets are the main source of data for data-driven automation tools.

Page 27: Feeding automated test by Joe Beale

Introducing Simple XLSX Reader

• There are several gems that allow you to access spreadsheet data in Ruby. I prefer Simple XLSX Reader for input data.

• To install, add to Gemfile:

Page 28: Feeding automated test by Joe Beale

Using Simple XLSX Reader

• Let’s look at a scenario where we will input and modify the data from a spreadsheet.

Page 29: Feeding automated test by Joe Beale

Using Simple XLSX Reader

• The spreadsheet data looks like this:

Page 30: Feeding automated test by Joe Beale

Using Simple XLSX Reader

• Since a spreadsheet file is really a set of sheets, we need to specify one sheet:

Page 31: Feeding automated test by Joe Beale

Using Simple XLSX Reader

• Now we can iterate through the array of arrays and identify the various cells using subscripts:

Page 32: Feeding automated test by Joe Beale

Bonus Code

• Finally, as a bonus, this is how you can take the modified sheet and write it out to a new .csv file that can then be opened in Excel:

Page 33: Feeding automated test by Joe Beale

Demo

• Demo of using Simple XLSX Reader to input a spreadsheet into a Ruby object, plus modifying the data and writing out to a new .csv file.