Task on applying different test techniques: Solution
Disclaimer:
This article provides comprehensive guide on performing the last week task which you can find:
Here: https://www.linkedin.com/groups/12765191/
Or here: https://t.me/qa2qas
Test design is one of the usual tester's activities, that's why there are so many test tasks on checklist and test cases creation. It's expected that junior specialist maybe not so good at understanding different technical moments or at usage of some specific tools, but they should be ready start creating checklists and test cases once they join the project.
Another important moment here is deep knowledge of test techniques (equivalence partitioning and boundary values analysis, pairwise testing, state transition testing, decision table testing, exploratory testing and so on). Test techniques are strategies that help testers create better test documentation. The main benefit of using test techniques is the opportunity to write fewer tests while ensuring broad coverage of requirements.
🍕 Last week we offered you to get ready to test the following form for ordering pizza:
The task was:
1. to decide what type of testing documentation (checklist or test cases) you will use and explain your choice.
2. to select appropriate test technique and create test documentation applying this technique / techniques.
So, let's start with selection of test documentation type. Remember that you should take into account the following reasoning:
I consider that web application is not so complex, and can be created during pretty short period of time. I also work with a couple of really experienced software testing engineers, so we do not need too detailed documentation to verify our "pizza" application. So my decision is to select checklists.
📌 Note! This is just one possible answer to the first question. You can select test cases as well. The main part here is reasoning. That's what your potential employer wants to see from your side when you are doing such a task.
The second important decision to make is what test techniques can I apply to create less tests still ensuring effective testing? Taking into account that my web form for ordering pizza contains a lot of different text fields with a quite big range of valid data, I'll select equivalence partitioning and boundary values analysis. Besides, as I have some options to select additionally (pizza size, toppings and extras) - pairwise testing will be a great choice as well.
What should we do next? Create a checklist to test the web form! So, let's start doing it together. Feel free to select any template you like, but keep in mind that as I will use only checklist to test this form, it should be pretty detailed and comprehensive, so that anyone can use it without my assistance.
General points to remember:
📝 You are going to test the web form, not separate fields, so create your checklist with full functional checks.
📝 You can unite positive checks (for example, fill in all the fields with valid input and check that form is submitted), but you should never unite negative checks! If one field is filled with invalid data, all other fields should be filled with valid data.
📝 If you've selected checklist as the only and independent documentation, it should be not "just set of ideas", but contains all the data needed for testing.
1 Equivalence partitioning
If you want to apply this technique, remember the steps:
1) Identify the equivalence classes.
2) Create a test for each equivalence class using one value from each one.
Let's take "Name" text field as an example. It accepts 5-50 English letters, numbers, symbols '-' and '_'. I can identify the following equivalence classes:
Now I will add this checks into my checklist:
For sure, I will continue create this checklist using this approach until I cover all the requirements.
2. Boundary values analysis
I hope you know that boundary value analysis is an extension of the equivalence partitioning test technique and focus on verification of boundary values, or the "edges" of each equivalence class.
When taking the same example with "Name" text field, I can identify the following boundary values:
So to verify boundary values I should add the following checks into my checklist:
📌 Note! In practice you most probably won't add such ideas as separate checks, but still should test this boundary values while execution of tests devoted to appropriate valid or invalid equivalence class.
One more option is to add boundary values into the parameters when using pairwise testing.
3. Pairwise testing.
Pairwise testing is very useful when designing tests for applications that involve multiple parameters. We have a lot of different options in our form, so let's use pairwise tool to create the random combination of parameters. I will use this simple online one: https://pairwise.teremokgames.com/. What should I do?
Step 1: Create a list with all the input variables (parameters).
Step 2: List all possible values for each variable.
I've also added boundary values for "Name" text field as an example for you:
Step 3: Using special tool generate the optimal number of tests (an effective test suite) based on the table you created:
And you'll receive:
Open this file to see ready-made checklist with randomly generated combinations:
This file can be used as a very useful addition to the previously created checklist.