DevelopsenseLogo

On Balance

Every day, in some discussion about testing, someone talks about the need for “balance between automated testing and manual testing”. This seems to me to be a supremely unhelpful way to think about testing work.

First, and once again, testing is neither manual nor automated. No one in any other cogntive, intellectual, investigative domain talks about their work that way; and no one in any such domain allows other people to talk about the work that way. That framing leads to serious social and economic problems; and I’m not kidding about that. Meanwhile, there are positive and productive ways to frame the tester’s interaction with the product and engagement with the work.

This time, though, I’d like to talk about the notion of “balance” — which is another category of unhelpful thinking in testing work.

When we’re confronted with a task to perform, it seems to me that we must consider what we need to do or apply get the job done. That’s not about “striking a balance”; that’s about fitting practices or tools to the task at hand.

For instance, when I’m considering going to the corner store just up the street to buy some groceries, I don’t talk about “balance between walking and taking a boat”. I don’t even talk about “balance between walking and taking the bicycle”. I consider whether the bike will save me time or effort; whether I’m in a hurry; whether I can carry the groceries more easily on the bike than on foot.

Similarly, if I’m considering travelling from my home in Toronto to Bucharest, I don’t talk about “balance between walking and taking an airplane”. If I want to get to Romania, the fact that there’s an ocean between here and there means that parts of that journey will involve taking a plane (or a boat); parts of it will involve walking; parts will taking a taxi or a bus to get the airport — unless I’m already at an airport hotel, and the airport is within walking distance.

For almost anything that we do, we can choose to apply tools to help us to extend, accelerate, enable, enhance, intensify, and amplify the activity. But we’re not obliged to use tools to any degree; nor are we obliged to ignore them. So instead of thinking in terms of “balance”, consider the task at hand.

  • Maybe our task is to learn about the product with the goal of developing ideas about how to test it. We could do this without any kind of tools, and rely on our memory. Because memory is fuzzy and unreliable, we might want to create a list, or a mind map, or a table of features to examine. We could choose pencil and paper to help us visualize the list, or to supplement our memory, or to share our ideas with others. Or we might choose to use software tools to help with that.

    Notice that for mind maps, coloured pencils and paper give a lot of freedom and flexibilty. Software tools tend to squash our ability to draw and illustrate our ideas free-form — but they make editing and revising the mind map much easier. Each approach affords advantages and disadvantages, but it would be silly to say we should do some of our mind maps on paper, and then balance that with other mind maps created with XMind. The issue is not balance; it’s about what we want and need to get the job done, in the moment.
  • Our task might be to explore the data that is being presented, stored, or processed by a Web-based product. We could choose to do this via direct interaction using only the interfaces provided to non-technical end users. That can be an important thing to do, because the user’s perspective is fundamental. The underlying data might correct, but problems in the user interface might lead to hidden data, or to confusion, or to frustration.

    On the other hand, maybe aspects of the service never present themselves to end users via a GUI, but only to developers or other businesses. Even when there is a GUI involved, we can also use tools (like Fiddler) to collect HTTP requests and responses, and use other tools (like jq) to probe the details of the traffic and the JSONs that are being passed around. But again, this is not a question of balance; the issue is what we want to know, and how we want to get at it.
  • Our task might be to check specific facts about the output from some function in the product. We could do that directly and interactively for some simple, or visible, or low-risk functions. We’re actually doing that all the time, and we’re often not even conscious of when we’re doing it, and how much. In circumstances where the data is complex, hidden, and critical, it might be a good idea to write a bit of code to provide input to some specific functions, to trigger those function, to collect output from them, and to compare the output to specified and presumably desirable results — something that we call “automated checking“.

    Our clients might give us a mission to do a lot of automated checking. We can also do plenty of valuable testing without ever doing any automated checking whatsoever. Again, this is not a question of balance; it’s about what we need to do to accomplish the mission.

Now, there is something that might look like balance, but isn’t: variety. It is important to consider variety in our models, our tools, our tactics, and our techniques. W. Ross Ashby — one of the central figures in the cybernetics and general systems movements — coined the Law of Requisite Variety — “only variety can destroy variety”. “When regulation is seen as a game between a regulator R and source of disturbances D, only variety in R can force down the variety due to D”. In practical terms, this means a controller of a system needs more states available to it than the system can be in.

Do you find that confusing? In Sensemaking in Organizations, Karl Weick points out that if you want to understand something complicated, you have to complicate yourself, so here’s an example that might help: if we’re going to keep the car on a twisty road, we must be able to observe the road and control the car to a degree of complexity greater than that of the road and its twistiness.

Applied to testing, the Law of Requisite Variety if we’re going to find a variety of bugs, in a variety of areas in the product, we’ll need a variety of models of the product; a variety of ways to recognize problems; a variety of ways to control the product; and a variety of experiments to perform. But that’s not about balance; that’s about diversity.

There’s no need to consider balance in transportation. There’s no need to balance movies with live theatre, nor music with visual arts. Similarly, there’s no need to consider “balance” in terms of whether or when we interact directly or indirectly with the product. Instead, let’s ask: what is the job we need to do, and how might tools help to extend our ability to get the job done?

5 replies to “On Balance”

  1. So true. We always compare it to music. Instead of balance, consider rhythm. Just like in music, where different instruments come in and out to create a melody, our choice of tools should sync with the rhythm of the testing process. Sometimes, exploratory testing takes the lead, and at other times, automation harmonizes to support it. The idea isn’t to balance them but to orchestrate them effectively, with timing and need guiding the interplay. When seen this way, testing becomes more dynamic, adaptive, and responsive.

    Reply
    • I agree that this is a more helpful way to think about it. Bear in mind that nobody talks about a “balance” between oboes and electric guitars, except in specific contexts.

      Pardon me — I’m off to listen to some Frank Zappa. Or the Beach Boys.

      Reply
  2. nice article.

    But,
    when a brand name becomes so well-known that it is incorporated into language as a general word, this is called generic trademark or genericide. In English, this phenomenon is often referred to as genericide.

    Examples include:

    Aspirin (originally a Bayer trademark),
    Jeep (originally a brand of off-road vehicles),
    Tipp-Ex (used instead of correction fluid).
    Manual testing
    or
    Balance

    Everybody knows what is meant by Balance, and indeed they mean Diversity more when you look closer into the matter.
    But everybody also knows: There´s 40 hours in a work week. I can´t spend 100% of my time on scripting and 0% on Manual testing. So I need to `balance´ between those 2 topics. I need to ´diverse´.

    The more interesting aspect is: WHY, when people are talking about software testing, call the time distribution ‘balancing’?
    It has to do with coping with pressure I think that is laid upon them.
    So why is it that software testers feel pressured by their superiors? (or are being pressured?)

    Here’s where it’s becoming to get very interesting. (and why is that solution called “balancing?” (which is weird indeed, I agree)

    Reply
    • In your examples, I think you’re confusing generide with idiom. Those are different.

      Everybody knows what is meant by Balance, and indeed they mean Diversity more when you look closer into the matter.

      I reject the suggestion that “everybody knows” anything in particular. I think what you mean is “I believe I know, and I suspect that lots of other people agree with me.” The test for this is to ask what someone means by “balance”, and to watch them stare at their shoes or wave their hands as they struggle to explain it.

      But everybody also knows: There´s 40 hours in a work week. I can´t spend 100% of my time on scripting and 0% on Manual testing. So I need to `balance´ between those 2 topics. I need to ´diverse´.

      This is a good example of the “everybody knows” fallacy. First, for me, I’m self-employed, and there are more than 40 hours in a work week. (Trust me on that.) Second, there is no law, rule, regulation, standard, or holy writ that says you have to do anything in particular. I’ve written about that here. Your mission and your context may have you scripting for all your working hours, or never scripting at all. (That said, I believe that it would be foolish to try to script an application without interacting with it, but that’s another matter.) And in yet another counter to “everybody knows”, I do not actually know what you mean by “manual testing“. There are several things that you could mean.

      When people are talking about software testing, call the time distribution ‘balancing’?

      My theory is different from yours. I believe people don’t choose their words very carefully, and don’t think about the relationships between words and meaning very much.

      I do agree, however, that people often feel pressured by their bosses or clients.

      Reply
  3. Much of what you reply I can agree to after thinking it thoroughly through!

    It’s about expectations, bosses have expectations. That’s the underlying: “I need to balance.”
    What they mean is: I need to show I can manage my time between things they expect from me and still come up with a good result.

    you say: I believe people don’t choose their words very carefully: I agree. It’s even worse than that.
    People see it wrong sometimes, don’t know better, etc, etc, and on top of that: they choose their words badly.

    absolutely.

    ending with a positive: I really like your recent blogs in particular lately, because they make me overthink in a good way! thanks!!!

    Reply

Leave a Comment