How to Write Complex Business Logic Test Scenarios Using Decision Table Technique


There are many test case design techniques. In this article, we will learn how to use Decision Table technique effectively to write test cases for an application with complex business logic.

Decision table testing is an easy and confident approach to identify test scenarios for complex business logic.

Here is an illustration with example:

We all know that business rules and validations take up major portion of the requirements given by the customers. While observing how these requirements are represented and communicated to the entire project team by Business Analyst’s or customers, we come to know that most of such business rules and logic are presented in a logical process flow diagram.

A logical process flow diagram for a complex requirement comprises of many branches, nodes and decision boxes. Hopefully we testers are expected to cover all those branches and touch every nook and corner of such a complex logical tree. I have also faced such complex business flows and tried many test case/test scenario preparation techniques for making the process easier.

Finally, I found decision table testing technique to be highly useful in this aspect. Here is how decision table technique can make the test scenario preparation for complex business logic easier.

E.g. writing test cases for a login screen using the Decision Table technique:

Let’s take an Decision Table example of below business requirement for a login screen.

Decision table testing

Fig: 1.0 Sample business flow diagram

The first step we do is to name all the branches and leaves with numbers or alphabets as below.

1, 2, 3 are the leaves and a, b, c are the branches.

Then, we have to create a decision table as below: (Click to enlarge image)

Decision table testing 1

Fig 1.1 Decision table for business flow fig 1.0

Points to remember:

  • All the validations specified in the decision boxes should be made as columns in table.
  • All the results (leaves) mentioned in flow diagram should be covered in the decision table.
  • All combinations of inputs needed to obtain a certain result shall be mentioned in the combinations column and can be included while writing the test cases.
  • After completing the decision table one has to just verify whether all the branches and leaves in the logical tree are covered.

Advantages of Using Decision Table Technique:

#1) Any complex business flow represented as a diagram can be easily covered in this technique.
#2) It provides quick confidence on the test cases. One need not have to review his own test cases multiple times to gain confidence.
#3) Easy to understand. Anyone can make test cases from this decision table template.
#4) Rework on the test cases and test scenario can be totally avoided as it gives complete coverage at the first shot.

Limitations:
#1) Certain test case preparation techniques like Boundary value analysis, equivalence partitioning cannot be directly accommodated in this template. But, one can note it down in the combinations column and use them while writing test cases.

Before explaining why other test case writing techniques cannot assure as much accuracy as Decision tables, I would like to quickly remind other black box and white box test case writing techniques.

Other Test Case Design Techniques:

1) Boundary value analysis: is software testing technique in which test cases are designed to include representatives of boundary values in and out of a given range.

2) Equivalence partitioning: also, called Equivalence Class Partitioning is a software testing technique that divides the given condition into partitions and one input data from each partition can be chosen for testing.

------------

3) State transition testing: is a black box testing technique, which can be used to design test cases for a system that acquires finite number of states and can transit from one state to another upon specific events.

4) Error Guessing: is a technique where experience of a tester is used to find the errors or part of application with highest possibility of finding errors. This is skill-based technique without any rules.

5) Use case testing: In this technique, use cases/scenarios are used to write the test cases. Interaction of users and system is described in a use case.

Some more test design techniques:
6) Statement coverage
7) Condition Coverage
8) Exploratory testing

Why other test case design techniques for business logic cannot prove to be useful as Decision Tables?

1) Boundary value analysis and Equivalence class partitioning are meant for numeric ranges and length. Both of these techniques alone cannot ensure 100% test coverage for business rules.

2) Error guessing is more about experience. Though experience is required, it cannot prove to be everything.

3) With state transition testing technique, one can ensure that all parts of the logical tree are covered but it does not suggest document or artifact as decision table technique ensures coverage with a decision table (fig 1.1).

Conclusion:

For writing test cases for business logic, it is advisable to follow below steps to prepare test cases so as to ensure maximum test coverage:

Step #1) Use decision table test case design technique to attain 100% logical coverage.
Step #2) Boundary value analysis and Equivalence partitioning for covering various ranges of inputs.
Step #3) Combinations and permutations for field level validations (though not all permutations are required).
Step #4) Error guessing (apart from the errors that can be identified from the above three steps) with experience as a final touch

With the right combination of all these techniques, I hope you will be able to discover almost all test scenarios for any application under test.

About the author: Hari Narayan is a software testing professional with more than 3 years of work experience on writing test scenarios for complex business logic. He is currently working with Plintron Global Technologies.

Let us know which test cases design technique you use most often on your project? And which is the best method according to your experience?


The Best Software Testing Training You'll Ever Get!

software testing QA training

10 comments ↓

#1 Kiran J on 10.31.13 at 4:07 am

very simple to understand. We are mainly using only two methods EP and BVA to write test cases, and error guessing to some extent. thanks for sharing.

#2 Kiran Kadam on 10.31.13 at 4:28 am

Great article on decision table tech.
Thanks a lot Vijay & Wish you very very happy diwali.
Keep up the good work!

#3 Natalya on 11.01.13 at 10:02 am

Thank you for the article! It contains very useful info.
On my projects I use most often Decision tables, EP & BVA and State transition testing. Of course, Error Guessing is used as well.

#4 Karuvarasan on 11.01.13 at 10:17 am

Thank you Vijay and Swati. Happy diwali to you and your family.

Thanks Hari Narayan for sharing this wonderful topic

#5 Shrikanth on 11.05.13 at 2:39 pm

Very Good Article. Kudos to the team for posting this ..

#6 murali on 11.06.13 at 12:38 pm

Great work. Thanks for the same. If possible try to post about managing all type of testcases that you have mentioned in the conclusion part (step1,step 3 etc ) with an example and template. For example how we can create all types of testcases for a simple project(scenario based, validation based, equivalence portioning, UI testing etc) and manage it using excel.

#7 JAI on 01.05.14 at 10:25 am

Can u tell me what is the difference between State transition testing and Decision table testing and when to use to what? I understand both but I dont get the difference and when to use what. Please help

#8 Haritha on 02.20.14 at 10:49 pm

Is usecase testing, a part of decision testing?

Can you give an example for each in detail taking use case and business logic in particular?

Thanks for your time and great topics!

#9 Inder on 03.14.14 at 1:34 pm

Can u give State transition technique? In what ways can we test a text field using this method?

Great post…Thanks!!

#10 Nirav on 07.24.14 at 6:25 am

Thanks for article..!

It’s very useful for design new test cases of business logic.
If possible than can you pls explain with one very complex example…with this method

Leave a Comment