The Ultimate Guide: ISTQB Foundation Test Design Techniques
What is a Test Design Technique?
For any software development lifecycle to be effective, complete and accurate information is a very essential element. These two elements are what enable your test teams to work together cohesively in a systematic manner.
This, in turn, ensures that your end product matches the expectations of your customers as well as your business in general. The goal of a test design technique is the testing of features and functionalities using effective test case scenarios.
The process of analyzing your organizations requirements from a business point of view goes hand in hand with proper testing. Determining the accuracy of completed information can be done using ambiguity testing techniques, which happens to be one of the top testing design techniques.
Basically, a test design technique's main goal is to determine a proper series of tests from a pool of all the possible tests for a particular system. There are numerous types of software testing techniques.
Each one of them has their own weaknesses and strengths. Each technique has it's own way of identifying different types of defects.
What Are the Main Categories
So what are the Test Design Techniques covered in the ISTQB exam? Coincidentally, the two main categories covered by the ISTQB exam are the same categories we're going to cover in this article herein below:
01. Dynamic Test Techniques
Dynamic techniques are divided into another three major categories. These are:-
Black Box Techniques:
This technique is also referred to as specification based or behavioural techniques. This technique uses the software's external descriptions such as customer requirements, design, technical specifications and so on.
In this technique, when the tester doesn't fully understand the software's code or its internal structure they can perform tests using methods such as Boundary Value Analysis (input values are tested at the boundaries), Decision Table Testing, State Transition Testing, Equivalence Class Partitioning and Use Case Testing.
White Box Techniques:
This type of technique is based on the software code as well as the program's internal structure, testing each of them individually, one after the other. In this type of technique, testers and developers usually have a proper understanding of the internal structure and the program's software code.
Experience Based Testing:
This test-design technique doesn't concentrate on external or internal structures. The testing is based on experience and the following test methods are usually adopted when it comes to scenarios such as; Fault attack (here errors are anticipated by testers) and Exploratory Testing (application testing without test case documentation).
02. Static Techniques
This technique is all about manually testing your software product. This process is usually started in the early stages of the software development process. This means that it is most likely going to happen during the verification stage.
The fact that the testing is done without the need to execute the program means that you will not have any need for a computer. These testing techniques can be applied to several forms of documents. These include design documents, source code etc.
What is Boundary Value Analysis?
In the input values' extreme ends is where errors, for the most part , are observed. These extreme values like lower/upper or start/end values are known as Boundary Values.
Boundary Value Analysis is the analysing of these Boundary Values. It's sometimes also referred to as Range Checking. Boundary Value Analysis is based on black box testing technique principles and it's main objectives are to locate errors at input domain boundaries rather than finding the errors at the input's center.
Boundary value analysis and Equivalence partitioning are kind of intertwined and can both be used together at different levels of testing. Test cases are derived for the equivalence classes edges.
Each individual boundary contains invalid boundary values as well as valid boundary values. Normally, each boundary will contribute one test case each. Finding defects using this technique can be quite effective and it has the capability of functioning at most levels.
Your previous experiences or needs are what will determine your choice from the multiple test case applicable from invalid and valid input domains, however, you must remember that you will still be required, from each input domain, to select one test case.
This testing technique is quick, easy and a fantastic way to catch input anomalies that may play a major role in interrupting the programs functionality. So, to cut short testing procedures and save time, experts delivering quality management services as well as software testing heavily rely on this method.
Equivalence Partitioning is basically selecting single input values from every range from a range of values that is made up of divided test input data. It also happens to be a black box based testing technique and its main objective is the calculation of the effectiveness of certain test cases.
This technique also has the ability to function at all testing levels from integration, unit, system testing etc.
In this technique, input is split into several different classes. The equivalence class input criteria represented by each individual class. One input is then chosen from each class.
What this method does is it reduces the number of test cases from an infinite number to a finite one. All this while still securing the effectiveness of each selected test case that has been assigned to monitor all the possible scenarios.
A basic Equivalence Partitioning concept is if a range from one to hundred is being accepted by one application, then those inputs can be divided into classes using Equivalence Partitioning principles. Example, design, invalid as well as valid input all get each class to provide them with one test case each.
Final Words On Test Design Techniques
One of the most vital components in the testing phase is Test Case. These are basically the predefined variables and conditions that are used to check whether your application and software is working like it's supposed to.
For a testing process to be successful, then as a competent software developer you will have to learn and understand how to use some of these techniques. Understanding some of these testing methods will make your work so much easier.
Digging Deeper Into Static Testing
Secret Static Testing Techniques that appear in the ISTQB Exam Questions?
What Is Static Testing?
Static testing involves the testing of documents and software without actually running the code. Static testing is the opposite to dynamic testing, which requires the code to be ran.
According to Guru99, this can be in the form of walkthroughs, peer reviews, informal reviews and inspections.
What Are The Main Uses Of Static Testing?
Testing the software in the initial phase leads to greater efficiency of the code. Static testing offers just that. During the early development phase, the code undergoes various tests and makes sure that the changes in the current part of the code do not affect the other parts.
The main uses of static testing is that it is tested keeping the work environment in mind. During a review process, the software tester engineer can debate whether a certain form of code is applicable in the real world environment or not.
Testing the software at the early stage before implementing it at a large scale saves a lot of time and more impotantly for any project, is the cost saving.
The outputs from this exercise are typically uncovering deviations from code standards, code that will be hard to maintain in the future, design issues and potentially missing requirements.
How Is It Different From System Testing?
System testing requires the code to be ran, whereas static testing does not. It is effectively an offline method to uncover defects early on in the development process.
What Are The Different Roles And Responsibilities?
According to Guru99, there are five major roles in static testing:
The moderator coordinates the activities and tracks the progress of these tasks, to ensure a timely completion.
This person, for example a developer, takes the responsibility of fixing the error that has been identified. This does not have to be a developer, the defect could be a design document, for example. In this situation, an architect may be the author in this context.
This person will keep notes and minutes of meetings. They are typically members of the Project Management Office (PMO), but does not have to be.
As the name suggests, responsible for reviewing defects and providing feedback, to maintain quality.
Manages the process and each individual involved in the static testing activities.
What Are The Different Types Of Reviews Involved?
The foremost step of static testing is the review. It is carried out in four stages depending upon its level of formality. The four types of reviews are
- Informal review - This kind of review includes a single person or two persons who just conduct a top down review of the code. There is no restriction on the number of persons reviewing the code at the informal review level.
- Walkthrough review - This review consists of a group of engineers who collectively conduct a thorough review of the code before passing it to the next level.
- Peer review: This includes a review by a person of similar knowledge and caliber who spots the errors and corrects them.
- Inspection - The inspection is the final level of review in the static testing. It is conducted by some senior software testing engineer who is well proficient in the product requirement and corrects the code accordingly if any flaws are to be spotted.
These four levels of reviews are inter-connected and intertwined, and work in liaison to collectively bring out an error free code.
Final Words on Static Testing
All in all, static testing is the most important part of the software testing process which builds the foundation for a flawless software.
Its importance is based on the fact that it is done manually where there is a greater probability of spotting an error and before executing the code itself.
The early stage of the development of a software product lies heavily with the static testing where each bit of error code is identified and rectified making the software error free.
Is White Box Testing also Called Unit Testing?
What is White Box Testing?
White Box Testing, which is also commonly referred to as Glass Box, Clear Box, Open Box or Structural Testing, is basically all about testing software solution's internal infrastructure and coding.
Its main objectives are to strengthen security, improving usability and design, as well as strengthening the flow of outputs and inputs. This type of testing examines outputs using a particular knowledge of programming code.
The "box testing" approach often used in software testing has two parts to it. One of them is what we're here to discuss, White Box Testing. It's counterpart is known as Black Box testing and this, unlike Clear Box testing, involves the testing of software from an end user type or external perspective.
In White Box testing, the process is concentrated on internal testing and is all about the inner workings of a certain applications.
The concept of a see through box was what was used when coming up with the term "white box". The white box, glass box or clear box name represents the ability to effectively see through the developed software's outer shell right through to its inner workings. Similarly, the "black box" terms used in Black Box testing represents the lack of ability to be able to see the software's inner workings. This approaches main goal is the testing of end user experiences.
Difference Between White Box Testing and Unit Testing?
So, is White Box testing also called Unit testing? Let's find out. First of all, Unit testing, in computer programming, is a process whereby source-code's individual units are tested to determine whether they are okay for use. An application's smallest testable part is known as a unit.
A unit, in procedural programming, may be an individual procedure or function. Unit tests are occasionally created by testers that use the white box approach or regular programmers.
Each individual test case is, ideally, independent from one another. Substitutes such as mock objects, method stubs, test harnesses and fakes can be used to help test modules in isolation. Software developers are the ones that typically write and run unit tests with the goal of ensuring the code meet the behaviour and design it was intended for.
In White Box testing, if you want to effectively design test cases, you will require adequate programming skills as well as an internal perspective of how the said system works.
For the tester to determine the appropriate output levels, they will need to choose exercise path inputs through the code. It is quite similar to the testing of nodes within a circuit as is experienced in the In-Circuit Testing process (ICT). Clear box testing is normally done at unit level.
It is used to test paths between as well as within units. Hopefully now you can see the difference between the two. The two testing approaches are somewhat different in the few ways explained above.
Advantages of White Box Testing
- Ability to Automate
Knowledge of the internal perspectives of the application will in turn allow for unit testing. As was explained earlier, unit tests are all about testing small pieces of units or code with the goal of seeing whether they function and operate as expected.
The simplicity of these tests makes it possible for programmers and developers to run these tests automatically, to see whether there's anything wrong. Unit tests are actually a very effective way of catching errors in the system.
- Its Thoroughness
White box testing's main tenant is its complete code coverage. The idea here is to basically test as much code as you possible can, which happens to be way more thorough and effective compared to your traditional black box test approach.
Its thorough nature also gives you a clear testing structure to rely on. Testing must have a clearly defined set of rules and must be engineering based as well.
Software development will always have deadlines you'll have to meet. This means that during the development process, time is a priority. White box testing helps significantly speeds up testing processes.
Most often than not, developers can see the bugs early, instantly have a slight idea of what the problem is and how to rectify the situation. It also eliminates the cost of communication between the QA and developer.
When developers go through the system's code on section after the other, it allows them the ability to condense existing code as well as remove superfluous code sections. Also, removing hidden errors that may have been missed during normal testing will help optimize the code.
Disadvantages of White Box Testing
Due its thorough nature, the cost and time it will take to conduct proper white box testing will usually prove to be very expensive. Even though unit tests may somewhat alleviate this issue, writing the unit tests give rise to an initial investment which will inevitably increase the procedures overall cost.
Also, large applications can sometimes perform poorly when tested using this approach. Testing each and every individual branch of code can, at sometimes, prove to be virtually impossible.
- Missed Cases
The white box test approach only tests as well as validates features that already exist in the system. If something is missing or the feature is partially implemented, this testing approach will not be able to pick up on this issue. This is where black box testing requirements proves to be superior.
- Rapidly Changing Code Base
Rapid changes of the code base will make automated test cases a waste. Usually, reworks or redesigns will make written test cases useless as well as giving rise to the need for a rewrite.
Final Words on White Box Testing
This type of testing approach can sometimes prove to be quite complex, however, the complexity levels will be determined by the particular application being put through testing.
Small applications, when put through this type of testing, can be completed in a matter of minutes. while larger applications may take several days, and sometimes even several weeks, to complete. White box testing works best during the course of the development of the application software. And with that, hopefully you now know a lot more about White box testing
What is black box testing also known as?
What is it Also Known As?
So, what is Black Box testing also known as? Well, most programmers and developers in the IT realm also commonly refer to this method as "Behavioural Testing", or functional testing.
This testing strategy ignores the application or system's internal mechanisms and mainly concentrates on execution conditions and selected inputs responses.
The program's structure is not taken into consideration in this testing technique. It only takes into account the application's functionality. This testing method is also sometimes referred to as functional testing.
In this strategy, the software tester's main concern is how the application is validated and not how it was produced.
Implementation logic or knowledge of programming isn't required for the software testers that are using this technique. It usually applies at the high levels of testing; System Testing and Acceptance Testing. The software that houses inputs and where you expect the known outputs to be is what IT professionals refer to as a black box.
Transformation of known inputs to known outputs is done using the system and usually goes unchecked in this testing technique. The transformation process in this system is also referred to as a black box.
This technique is basically functional testing whereby development and program testers concentrate on providing the known inputs and checking whether those known inputs have been obtained.
This strategy is usually followed while acceptance testing is being carried out. Here the software developer is merely a user and not the end user.
Black Box Testing Techniques
- Equivalence Partitioning
Rework is greatly reduced when you use this testing method. Test conditions are grouped together by software testers so that only 1 condition in each group requires testing.
This means that all the other conditions probably work if that one particular condition works. A clear example of this is when an uploader is involved, this testing strategy can be used for testing file sizes and types while avoiding the overlapping of every combination.
- Boundary Value Analysis
With this testing strategy, the values boundaries that have been allowed is what is tested.
This means that if your system only accepts a number from one to one hundred, then you will want to focus your testing on those boundaries, along with the slightly over as well as slightly under numbers. However, testing the in-between numbers is not something you will have to waste your time doing.
- Decision Table Testing
This type of testing is ideal for those situations where you might be dealing with complicated combinations whereby different decisions are produced by various inputs (unlike boundary value analysis and equivalence partitioning).
Cause and effect tables are something this technique is also called and decision tables can not only, during format testing, make sure combinations aren't missed they can help when clarifying expected outputs.
- Error Guessing
Error guessing sounds just like what it is. A software tester finds errors by guessing where they're most likely going to be.
However, the term might not be really fair due to the fact that the following factors herein are involved in the decision; understanding of the application, the software tester's own experience, customer issue tickets, test cycle's previous results and risk report.
Error guessing is vital when you're deciding which application part will get the most thorough tests run on them.
- Exploratory Testing
With this technique, test coverage is maximized by the tester by strategically moving through system actions while closely simulating the behavior of the user.
This has black box technique written all over it because you're not required to have knowledge of the internal code.
This means that they are allowed to behave like users but should always keep the tester caps on.
- Cause Effect Graphing
In the cause effect graph technique, effects are set off using a set of causes that have been mapped out through direct graphing. You can think of the causes as the program's input and the effects as the program's output.
The graph usually shows the nodes that represent effects on the right-hand side while causes are represented on the left-hand side. Causes and effects may have additional constraints. A dashed line will represent a constraint symbol and it is usually in the form of an edge label.
Benefits of Black Box Testing
Here are some benefits of Black Box Testing:
- You will not need to have programming knowledge nor will you need to have implementation knowledge as well. The software tester can be a non-technical individual.
- The developers and testers are independent and have no dependencies between them
- The application's quality is assessed by analyzing expected outcomes with actual outcomes
- Helps develop software in a way that is much more user-friendly than the techniques used in requirement document for here the application is tested using the user's point of view.
- Once the system application has been released, the development team can proceed with testing and development team dependency is avoided.
- The designing of test cases can be done after the completion of the function specifications.
- This testing technique is very effective when the system application is complex as well large.
Disadvantages of Black Box Testing
- The absence of programming structure knowledge allows for the risk of leaving unidentified conditions.
- Practically, manual testing can only test a limited number of possible inputs.
- If the software tester isn't aware that they might have already tested the application then you will inevitably run the risk of having repeated test results.
- Not all the logic or paths are usually tested.
- Achieving one hundred percent test coverage is very difficult when the application happens to be relatively large or if it's one that is of a complex nature.
Final Words on Black Box Testing
The main thing that makes this technique so different from white box testing is the fact that here the software tester does not really have to have programming knowledge and does not also have to understand the code being used in the application's test procedure, however, it's still effective in very many ways. As a modern-day IT professional you'll need to learn how to use this testing strategy if you want to be fully effective when it comes to modern-day software testing.
What is the V Model Used For in Software Testing?
So, what is the V-Model?
Many people ask the question, what is the V Model used for in software testing? Well, the V model is basically the classic waterfall model but in overdrive. Meaning it's an enhanced version.
In this model before a development life cycle can move on to the next level, they must be verified. This basically means that software testing starts as soon as written requirements have been produced, so testing explicitly commences at the very start of the procedure.
Here, the term testing translates to verification by way of inspections and reviews, which is static testing. What this does is it helps you identify errors early, during the life cycles early stages, and also reduces the potential for defects showing up in the software's code in future.
A corresponding test plan is assigned to each level of the development process, that is, each phase that is being worked on is assigned a test plan for the preparation of product testing in that particular phase. Expected results can be can be defined using these developed test plans.
Test and design activities, in the V model, are constructed with the same level of detail. The model's left hand or downhill part is where software is designed while on the model's right hand or uphill part is where it is all built and tested. Correspondences between the right and left-hand side are defined by the line that runs through the center of the V.
The Verification Phases
- Requirements Analysis
This is the verification processes first step, which is also commonly referred to as the requirements analysis phase. System requirements are gathered analyzing user needs.
This phase is all about the establishment of what the ideal systems are meant to do. However, it doesn't determine the design nor the build of the software.
The documents containing the user requirements will normally describe the software system's functional performance, interface, security and data requirements in accordance with user expectations.
- System Design
In this phase, system developers and programmers can study the documents that contain user requirements of the overall business of the proposed application.
They figure out techniques and possibilities of how to implement the user requirements. The user is informed whenever the requirements aren't feasible. When this happens the document that contains the user requirements is edited and a resolution is quickly found.
- Architecture Design
The software or computer architecture-design phase is also commonly known as the high-level design phase.
The baseline of architecture selection in this phase is it should typically realize all that consists of each model's functionality level, list of modules, interface relationships, database tables, dependencies etc.
- Module Design
Last on the verification phase list is the module design phase. It is also commonly known as the low-level design phase.
Here, the system is split into smaller modules or units and the programmer or developer gets an explanation of each of them so that they can start the coding process directly.
The Difference Between The V-Model and Waterfall Model
These two models approaches are quite similar in very many ways, however, the major difference that sets them apart is the testing emphasis in both situations as well as how they are presented.
The V shape representation flow chart helps point out the differences that come prior to coding such as architecture-design and requirements as well as everything else that follows coding which is testing.
While the waterfall model has testing at 1 out of its 5 steps, the V model methodology basically improves on that significantly.
What all this means is that what makes these two models differ is that for the V Model, for testing activities to fully commence, the development process has to have been completed.
The waterfall method technique seems to be continuously iterative while the V model seems to have a clear start as well as an end. The fact that the V model is a simultaneous process is what makes the approaches differ a little bit.
This happens to be a big reason why most IT professionals prefer to learn, understand and use this method rather than its waterfall counterpart.
Advantages of the V-Model
- It's very simple and easy to use
- Covers all the functional areas
- Testing activities like test designing, planning happens well before you start the coding procedures. This usually proves to be quite the time saver. hence the higher chances of success it experiences as compared to the waterfall method
- Proactive error tracking. This means that defects are detected at an early stage.
- Helps avoid defect downward flow
- In small projects, where understanding the requirements is easy, nothing would do better than the V Model approach system.
Disadvantages of the V Model Method
- This process isn't ideal for the more complex, fast changing software projects.
- If your requirements keep frequently changing then this option might not be the best approach for you. You might want to consider something else, like Agile, if that's the case.
- The implementation phase is where the software is developed, which means that software prototypes are not produced early.
- If any changes occur midway through the course of the procedure, then the requirement documents, as well as test documents, have to be constantly updated.
- The client does not get to see intermediate modules and only has access to the end result.
- Does not scope for risk mitigation and risk management.
Final Words on the V Model
All in all, the V Model method should generally be used when you as a programmer or developer are working on small or medium-sized projects, whereby requirements are clearly fixed and defined.
You need to have a high level of confidence in your client if you want the V Model technique to be completely effective. It's an approach than many people doing work in the IT realm should learn and understand for it is one of those things for the future.
Having this knowledge will prove to do more harm than good. Most experts around the globe will agree with this. And with that, now you're in the know. So if you haven't already, start reading up!