When we’re performing the Software Testing we need to make sure that the tested software is working as expected.
Once we’ve prepared the test plan, test script, etc., we need also to think about the tools which we want to use to get better results of the test process.
How we can do that?
We can use the test techniques.
This post will be about the test techniques.
What are the Test Techniques?
Test technique is a method for designing and choosing the correct tests derived from the skills and experience of testers.
What are the benefits of test techniques?
The benefits can target specific types of defects, efficient and targeted approach, delivers confidence, or reduces timescales as well.
Why we use the test techniques?
We use the test techniques to get optional coverage and avoid duplication of effort.
How can we decide about the choosing of the correct test techniques?
On the Test techniques choosing process impacts a lot of factors. These are divided on three groups:
- Formal (documents, policies, functional processes within the organization, test purposes, actual Software Development Lifecycle, etc.)
- Product (software, quality characteristics of it, risk, expected types of defects, predicted way of using the software, etc.)
- Project (available time, budget, tools, skills, knowledge, and experience of Testers, etc.)
The good practice of experienced testers is connecting the techniques. That means using more than one test technique in the test process.
Static testing is the type of Software Testing method, which is performed to check the defects in the software without executing code. The most common static testing techniques are Static Analysis and Reviews. If you want to get more knowledge about static testing you can read about it here.
Dynamic testing is the type of Software testing, which is performed to check the defects in the software by executing the system. Benefits of the Dynamic testing are catching defects with manifest within the physical environment and sweep defects.
Test Techniques categories
We can categorise the test techniques. I will provide only the primary test techniques which are covered in the ISTQB Foundation Level syllabus. The most of test techniques are:
- Black-box techniques
- White-box techniques
- Experience-based techniques
We will write more about them below.
Black-box testing techniques
Black-box techniques are the techniques, which are based on requirements, functional and non-functional specifications. The advantage of using them is that documents like specifications are available a long time before the implementation of the module or system. The black-box techniques are:
- Equivalence Partitioning
- Boundary Value Analysis (BVA)
- Decision Tables
- Pairwise Testing
- State Transition Testing
- Classification Trees
We will tell ourselves more about them.
Equivalence partitioning divides data into partitions (also known as equivalence classes) in such a way that all the members of a given partition are expected to be processed in the same way. There are equivalence partitions for both valid and invalid values. We can partition the range or count, while we cannot partition the sets or values, tick boxes, or radio buttons. To achieve 100% coverage with this technique, test cases must cover all identified partitions (including invalid partitions) by using a minimum of one value from each partition. Equivalence partitioning is applicable at all test levels.
Boundary Value Analysis
Boundary value analysis (BVA) is an extension of equivalence partitioning, but can only be used when the partition is ordered, consisting of numeric or sequential data. The minimum and maximum values (or first and last values) of a partition are its boundary values. We can generally use this technique to test requirements that call for a range of numbers (including dates and times). We may apply boundary value analysis at all test levels.
Why we use both Equivalence Partitioning and Boundary Value Analysis?
We use both the Equivalence Partitioning and Boundary Value Analysis to reduce the number of Test Cases but without compromising quality and still maintaining sufficient cover, testers use it intuitively to a degree or even to combining both techniques to verify the partition.
Decision tables are a good way to record complex business rules that a system must implement. When creating decision tables, the tester identifies conditions and the resulting actions of the system. We can use the decision tables to explore the combinations and ensures that the combinations are correct. In the decision tables, each rule defines a unique combination of conditions associated with the action.
How to develop the Decision Table?
Firstly, we need to precise about the conditions. Then, we need to consider the possible actions. Once we have done it, we may have to think about the number of conditions for each alternatives condition. Lastly, when we put all of the information on our Decision Table, we need to get the number of combinations and create the test cases.
We should never forget about Negative testing!
Pairwise Testing is the test design that delivers 100% test coverage to the system. Moreover, there are all possible combinations, large combinations that need to be tested. Benefits of Pairwise Testing can be, for instance, reducing the numbers of testes, documents evidence suggest it works well.
State transition testing
State Transition Testing is a test design technique in which we can design test cases to execute valid and invalid state transitions. It can be presented as diagrams or state tables, for instance. The diagram shows us the states of a component or system. In addition, it may present the transition between the states, events that cause transition, and actions from transitions, however, the state table contains the test cases created symmetrically, shows both valid and invalid transitions, and exposes missing requirements. The state transition testing covers the common path/every state/every transition.
Classification Trees is a method for test design that we can use in different ways in software development. The two major steps of classification trees are identification of test relevant and combination of different classes. This method leads to a greater understanding of what is under test. Moreover, it provides a structured and systematic approach. How to create a Clarification tree? Firstly, we need to sort it into groups. Then we have to think about subsets within the group. Then we ought to discover structure in the data. Lastly, we need to consider more about the items in the group.
In conclusion, we have told ourselves more about the Black-box techniques and we have clarified a few of them.
White-box testing techniques
White-Box Testing techniques are software testing techniques in which we test the internal structure, design, and coding of software to verify the flow of input-output and to improve design, usability, and security. There are two White-Box testing techniques: Statement testing and Decision testing.
Statement testing exercises the potential executable statements in the code and as a result, we can measure the coverage as the number of statements executed by the tests divided by the total number of executable statements in the test object, normally expressed as a percentage.
Decision testing exercises the decisions in the code and tests the code that is executed based on the decision outcomes. To do this, the test cases follow the control flows that occur from a decision point (e.g., for an IF statement, one for the true outcome, and one for the false outcome; for a CASE statement, we would require the test cases for all the possible outcomes, including the default outcome).
We can measure the coverage as the number of decision outcomes executed by the tests divided by the total number of decision outcomes in the test object, normally expressed as a percentage.
Achieving 100% decision coverage guarantees 100% statement coverage (but not vice versa).
Experience-based testing techniques
Experience-based testing technique is based on the skill and experience of the tester, users. Here testers use their experience with the same technology because inadequate specifications and enough time are not available here to test the application. This testing is used in the low-risk system. We have 3 testing techniques:
- Error guessing
- Exploratory Testing
- Checklist-based Testing
We will tell ourselves more about them.
Error guessing is a technique used to anticipate the occurrence of errors, defects, and failures, based on the tester’s knowledge, including how the application has worked in the past, what kind of errors tend to be made, or failures that have occurred in other applications.
Exploratory Testing is a type of software testing where Test cases are not created in advance but testers check the system on the fly. They may note down ideas about what to test before test execution. In addition, the focus of exploratory testing is more on testing as a “thinking” activity. We can use this technique when we do not have comprehensive documentation or when there is not enough time.
Checklist-based testing is a type of software testing based on the pre-planned “to-do” list of tasks called a checklist. Professional testers, who have sufficient technical experience usually complete these lists. We can create checklists to support various test types, including functional and non-functional testing. In the absence of detailed test cases, checklist-based testing can provide guidelines and a degree of consistency. and as a result, as these are high-level lists, some variability in the actual testing is likely to occur, resulting in potentially greater coverage but less repeatability.
As we can see there is a lot of test techniques to use, and it’s even more of them.
I hope you’ve enjoyed the article and found some inspirational information.
The next post will arrive soon 🙂