Bloggo back to the blog
Testing is just like cooking-->
As a professional I am a senior test automation expert, but in my spare free time I like to think that I am a well skilled amateur chef, specialized in Asian cuisine. So last weekend when I cooked up some fine Thai food for some friends I had this thought about testing and came up with the idea that the process is quite similar to cooking. Let me explain.
I decided that I wanted to create this great beef curry with a lot of nice fresh ingredients, so I picked one of my books on Thai cooking of the shelf and found this recipe: Spicey Curry with Beef and Coconut.
With this recipe, which is basically a plan for cooking came a list of ingredients, so I thought this was somehow a list of requirements for the dish. Next to the list of ingredients was a description on how to prepare the curry and it even had a nice picture on how the final product should look like.
Now let’s get back to testing, cooking this curry is sort of an approach to software testing, most likely TMap®® is the best approach for cooking.
Let me give a short overview on the TMap®®( http://www.TMap®.net/en/TMap®-next) phases, for all of you who don’t know this approach.
• Planning; formulate an approach that is supported by the client to adequately execute the test assignment, described in a test plan.
• Control; in this phase all activities described in the test plan are executed, monitored and adjusted if necessary
• Infra; This phase aims to provide the required test environment for the various phases and activities
• Preparation; Design test cases based on the available test basis.
• Specification; specify tests
• Execution; execute the tests
• Completion; conclude the test assignment. Also this phase offers the opportunity to learn lessons from experiences gained in the project
Let me port this approach and the phases to cooking up the curry.
First let’s take a look at the planning phase. This phase started a few weeks ago when my partner invited some friends over for dinner. My partner being one of the most important stakeholders, she promised our friends a nice dinner, so expectations were high. I immediately started with setting up a planning for this evening, because I only had a few weeks to do this project. My planning looked somewhat like this:
• Gather information on what food our friends like and dislike.
• Planning the different phases and the corresponding activities
• Have a nice dinner
• Evaluate dinner
TMap®: To provide the required test infrastructure, which is used in the various TMap phases and activities.
Setting up a test environment proofed to be not that difficult. Although there are different environments necessary for the curry project. The first environment was my kitchen, already in my home, but some adjustments needed to be done. I had to install my food processor, get my cutlery and cutting board out and setup all the needed pans, pots and what so ever. This is quite similar to setting up different test environments in a software development project. You need to install all kinds of things, like servers, applications and (testing) tools in order to complete your project.
The second environment was the acceptance or production environment. For my curry project they were the same. Being really nice weather (it tends to rain a lot in the Netherlands, so that was great) I decided my acceptance environment would be setup in the garden. This was a different location than I first had in mind, so I needed somewhat adjusting in my planning (Control phase).
This can be the case with your software test project. You can have a lab test environment to prepare and execute your tests, but most likely your acceptance and production environment will be completely different and can even be on a different location somewhere around the globe.
TMap®: Providing the client with sufficient insight into, and the opportunity to influence, the following:
• The progress of the test process
• The quality and risks of the test object
• The quality of the test process
To this end, the test manager manages the test process optimally and reports on it.
This is in cooking the most important phase, because when you are cooking, you constantly monitor the progress and the quality of the dish. Monitoring is basically testing (tasting) the dish as it comes to a finish. If necessary adjust (add some more salt and pepper) the recipe and taste it again. This is done to absolutely get the quality you want to serve to your stakeholder and the clients (our friends).
Preparation and specification
TMap®: To obtain, with the client’s agreement, a test basis that is of sufficient quality for designing the test cases. In order to determine this, a testability review of the test basis is carried out during this phase, which will provide insight into the testability of the system.
TMap®: During the Specification phase, the required tests and starting points are specified. The aim is to have as much as possible prepared, in order to be able to run the test as quickly as possible when the developers deliver the test object.
I combined these two phases into one. This phase is different when it comes to cooking, because I decided on the recipe I basically did not agree with my clients a test basis but I forced it upon them. But they did agree on the dish and it’s ingredients. So I had my basis. I did not design test cases, but designed test moments. When do I need to test (taste) the dish, to monitor my quality as stated in the control phase. I am sure you agree that tasting the water when it comes to a boil is an un necessary test. But when you add ingredients like the fish sauce or the curry paste, it’s a good idea to test it when you add if. Too little means lower quality, too much spoils your dish.
What is the same, is that I prepared as much as possible up front, so I could start my execution phase on time and had my dinner ready on time.
TMap®: To obtain insight into the quality of the test object through the execution of the agreed tests.
My execution phase was cooking up the dish and executing all the tasting tests. Adding more and more ingredients and constantly monitoring progress and quality. So after a certain amount of time I finished my execution phase and had a fully t(a)(e)sted product, ready for the acceptance test by my stakeholders and my clients.
For the curry project, the acceptance test was the biggest challenge. Do my stakeholder and my clients accept the dish. My acceptance environment was ready, I had set the table and all the side dishes, which are really important for accepting the curry. A nice ambience was created when I lit up the fireplace and at that moment I served my curry.
After enjoying the meal and some nice drinks the curry had met all the requirements stated and was accepted by my clients. After this I entered the completion phase.
TMap®: To learn from experience gained during this test and to preserve testware for reuse in a future test.
So I did not preserve anything in this phase, because my testware was all gone. This of course being a big plus for me, because they ate everything, meaning the curry project was well accepted.
I did learn a thing or two, one of them being that although I can eat spicey food, not all of my acceptants had the same level of accepting that I did. But with the side dishes and some sugar, it was accepted.
So, I guess you think what is he doing, writing something about testing and thinking it’s like cooking. There are a few things I enjoy, one of them is testing and one of them is cooking, so why not take the best of both worlds.
Now for some final thoughts, when you intend to cook a fantastic meal for your friends or relatives, think of this article and monitor you quality. Because nothing can spoil a nice dinner like bad tasting food.
Please find the recipe (4 persons) below:
400 ml coconut milk
2 tbsp Thai red curry paste
2 gloves of garlic (crushed)
500 grams of beef round (diced)
2 sliced kaffir lime leaves
3 tbsp Thai fish sauce
1 large red chili (sliced)
1/2 teaspoon turmeric
salt and pepper
2 tbsp fresh basil (sliced)
2 tbsp fresh coriander (sliced)
1. Bring the coconut milk to the boil. Temper the fire and slowly cook for 10 minutes. Add the curry paste and the garlic and let it simmer for 5 more minutes
2. Dice the beef, add to the pan and bring to a boil. Temper the fire and add the kaffir lime leaves, lime juice, fish sauce, the chili, turmeric and a pinch of salt. Put the lid on the pan and simmer for 20 – 25 minutes or until the beef is cooked. Add some water if the sauce gets too dry.
3. Add the basil and the coriander and season with salt and pepper. Sprinkle the coconut flakes on top and serve with the rice.
Bernd Beersma is competence leader test automation and senior test consultant with Squerist. He has over 11 years experience with different forms of test automation and performance testing for different companies.
Bernd holds a bachelor degree in software engineering and became acquainted with software testing during this period.
Bernd is a member of the TestNet workgroup on Test Automation, co-initiator of the Test Automation Day and board member of ATI Europe.
His goal is to keep on learning and thus improving his skills on test automation.