What is Behavior-Driven Development (BDD) Framework?
Lucas da Silva Machado | Sep 21, 2022
Testing is essential simply because software is developed by humans, and humans can make mistakes sometimes.
The importance of testing is to identify defects, reduce flaws in the component/system and increase the overall quality of the system.
There are at least four test levels in an app development process:
The quality delivery of software is one of the most important priorities of the software industry.
To guarantee the quality, it’s necessary to evaluate software components under various expected and unexpected conditions.
Here at Cheesecake Labs, we like to remember we need to deliver a “Wooow” service, and for that, we need a “Wooow” strategy.
Before starting any kind of test, it’s necessary to draw a strategy.
This strategy can be planned in many ways, such as according to the Quality Assurance Analyst and team experience, project strategy, selected test models, etc.
Counting on a good strategy, the tests can be executed in less time and more efficiently, focusing on what really matters.
Building a good strategy doesn’t mean having a specific test roadmap, script, or a list of test cases.
It means to have a plan, most of the time including intuition, talks, and other things that can’t be listed before testing.
It could even include a plan to test simulating a specific type of user exploring app functions.
In this blog post, we are going to explore the Heuristic Test Strategy Model, a set of patterns designed by James Bach.
This model isn’t a script or a specific testing flow, but a way to choose the best techniques according to the collected information.
The “Heuristic” word comes from the same source as the Greek word “Eureka”, which means “I find/discover”.
Talking about heuristics in technology means talking about any approach to problem-solving that employs a practical method that is not guaranteed to be optimal, perfect, or rational, but is nevertheless sufficient for reaching an immediate/short-term goal (solving more quickly than classic methods with an approximate solution instead of any exact solution). (Judea Pearl, 1984)
This strategy model is like a starter kit to create our own model by collecting data and information according to its patterns of heuristics.
The main goal of this strategy model is to find the most suitable test strategy for a project or for a context, with no need to follow a specific script or determined model that doesn’t have a real connection to the scenario.
This way, we can avoid wasting time with inefficient tests.
The Heuristic Test Strategy Model allows the tester follows his/her intuition and searches to test the software enabling great results that might have gone unnoticed in a classic model due to the need to follow a specific pattern.
There are three main categories of collecting data and information using the Heuristic Test Strategy model:
Categories of collecting data and information by the Heuristic Test Strategy Model
According to these three categories, we are able to determine which test techniques we may use.
By executing our test, we can extract the Testing and Quality Story, which can be a very valuable document for the customer, business, and development team.
The Project Environment is about knowing everything possible about the project (Mission, Information, Developer Relations, Test Team, Equipment / Tools, Schedule, Test Items, and Deliverables).
It’s also very important to know the Quality Criteria expected by the customer as well as Product Elements.
The Quality Criteria categories include capability, reliability, usability, charisma, security, scalability, compatibility, performance, installability, and development.
For instance, before testing, it’s very useful to know if it’s important to evaluate how appealing the product is, or if it’s speedy and responsive.
We wouldn’t waste time focusing on charisma if the focus should be on security and performance.
It’s the same with the product elements. We could focus on data instead of the interface if we know before testing that the data in the production processes is the most important element.
It doesn’t mean we need to choose only one category to test, but we can adjust our testing time and choose test techniques according to the information we have.
Of course, we are able to choose different techniques and change strategies when we find new information during test execution. This is a benefit of the heuristic model.
One of the main goals of building a great test strategy is to not waste time with useless tests.
When we know exactly what the Project Environment, Product Elements, and Quality Criteria expected, we are able to determine the best test techniques, therefore, bringing the best results while using less time.
If we establish techniques as a pattern without knowing these categories, we are prone to carry out needless tests.
There are many different test techniques and people are creating new techniques all the time. We can even create our own techniques according to our knowledge.
To create a test technique, we need to use a basis of general techniques. There are many interesting general techniques.
With the Heuristic Strategic Model, there are nine families of techniques to help us build our tests.
These families are listed below:
Sometimes we mistakenly think that we could use the same technique for everything.
For example, we could think a fully automatic test could test everything in a system, but it’s programmed to work according to the code. The human mind could have the intuition to find new things via User Testing.
Same thing if we think only Function Testing would cover everything and find all kinds of bugs, but it wouldn’t stress the system if we didn’t plan for it with a stressing tool, for instance.
The key is to avoid repeating routines, thinking outside the box and going further than regular scenarios, always planning real strategies for each type of product, project, environment and determined quality expected.
With a well-planned strategy, we won’t have perfect software, but we are going to have an excellent Testing and Quality Story that can be used to decide fixes, improvements, and whatever is necessary to improve quality and satisfaction.
The main goal of testing is to extract new information: the Testing and Quality Story.
As explained before, we may do a lot of tests but actually, we can agree that there is no such thing as perfect software. After all, it is made by humans and it’s in constant improvement.
So why do we test?
We test to reach the best version possible of each software because by tests we can obtain a wider range of information to provide the development team, businesses, and customers.
With this information we can decide on the next steps, improving our software delivery.
It’s also important to make this information accessible and easy to understand for the target audience.
The testing/quality story may be delivered in a report format with the most important information for the receiver.
For instance, we can highlight the possible risks, inform the test techniques we used, what is covered or not covered by a test session, show which relevant information we used to decide the strategy, suggest improvements, etc.
With a well-made report, we are able to share information within the team and make many important decisions.
This is why creating a great heuristic strategy, executing these tests, and extracting reports are so valuable to the overall quality of the product, the documentation, and even the budget.
A person who loves to see others happy and change the world for better. Lover of pop culture and fantasy world. In addition to technology, enjoys studying philosophy, psychology and magick.