Why didn’t you tell me!
Here comes a testing focused article after a series of technical blogs! It is based on experience with projects managed through waterfall processes and it continues the series about tackling test complexity.
It is about a luxury that we so often ask for and we often don’t have in testing: to be involved early in the product development process. What does it mean actually to be involved early in the process? Why is it so important? And how does it help tackling test complexity anyway?
The better testers are informed, the better job they can do. Testing is not different from other project roles from this stand point. The quality of information we use to plan, execute or adapt to changes affects the quality of those plans, execution an adequacy of adaptive actions. The sooner we get the information, the more time we have to process it. It may improve our chances to do the job well.
Thinking in terms of a heavy weighted waterfall process, test execution is often planned in a late phase of the flow of product development activities. Usually somewhere after most of analysis, specification and development is done. A phase, when the train of actions is running full speed ahead, difficult to stop or change. Testers often lack information about requirements, specifications, environments and other artifacts when test activities start. This limits them in doing a great job. This is perhaps, where the desire to get involved early in the process comes from.
I like the train metaphor for the case. You are up on a train and you realize that something is going wrong. You can’t find a free seat (hey, and no one told you that you have to buy a seat-reservation ticket, if you want to have a seat guaranteed!). Or, you realize that the train doesn’t stop on the stations you believed it to stop at due to construction work (and no one informed you!). Or, even worse, you realize that it goes in a wrong direction!? Frustrating, isn’t it? So, what now? Sure, you can complain to the conductor or blame the whole railway system. How much would it help though?
As an alternative to complaining, the first obvious thing that you could do in such a situation is to help yourself. Perhaps ask the conductor, if there are any free seats available in other parts of the train, or walk through the train on your own to find it. You could find out, what’s the closest station to the station that you intend to get off based on discussions with the conductor and passengers. Or, if it really goes the wrong direction, just to get off on the next station. Well, if you are not in a hurry and you are fond of adventures, you might even enjoy it:)
Other than that, it is probably worth learning from the experience and ask for a seat-reservation ticket next time you travel or maybe double-check the passenger information before you get on the train to make sure that no construction work is going on. In other words, you do something actively about getting early in the process to influence your future. This needs an experienced guy though. You are less likely to engage actively, if you haven’t burned your fingers yet. Why should you care!?
Or, you could try to change the whole railway system, so it fits your needs better. This is a very difficult task. Needs a guy, who is even more experienced, patient and credible to drive acceptance for changes. That being said, the value it can bring is the most significant.
But, perhaps even more importantly, you may need to realize that you are not a passenger on this train. You provide it a service, you are part of it! You are testing the product or service that your train delivers to its passengers (or customers, if you will). Facing this reality, complaining to the conductor or blaming the railway system is just out of line. Your task is to figure out, how to get the most out of the actual circumstances in order to accomplish your tasks.
Here is how I think the train experience applies for testing. You never know, when a change in the project comes, you can’t be sure that you will get the necessary information in time, if you wait for it passively. The “early” phase that you are eager to be involved it may be well over, when a new requirement appears. Being proactive in communication can help. Besides it helping you to be in the picture, it may help you influencing things to better too. So, use the opportunity and talk to peers and management across departments to share knowledge. Sure, extra communication comes with an extra cost. This is where being aligned around a process could help. More alignment with less time spent on communication. The challenge is to find the right balance. Communicating a lot just for the sake of it wouldn’t make sense, if it obviously doesn’t help. Why would you spend time on asking about the next planned station, if the break of your train doesn’t work? The challenge is, when to say enough: “I need to invest too much to getting what I need to do my job right. I do not want to be part of this train anymore!”. The right balance is most probably individual. If you like exploring unknown, this is a great question to pursue through your career.
So, how does this all help you in tackling test complexity. Having time for planning the work gives you a better chance to make smart choices. This is very important, when the task in hand is complex. The try and fail approach would be risky. Unlike for simple tasks, your try would have a relatively small chance to succeed. The shorter the time is, the higher the pressure is and the more you are suspectible to blind test execution. Having time gives you a better opportunity to apply the breadth of your test skills and reflecting the past test experience with product complexity in subsequent product releases. It is worth to look back to the lessons you learned at the end of each release, so you can consciously think about their value and decide about making them part of your future practice.