I noticed few days ago that it’s over a year from my last blog post. While it’s been hectic year (working on developing autonomous ships), that’s way too long break for my writing here. Which is why I’ve tried to catch on idea that I’d like to think about through writing. And I managed to find one, it’s how we approach automating something and how that relates to test automation.
Say there’s a system being operated by human and you want to automate that such far that system can accomplish its tasks without human interaction and human intervention. In order to accomplish this you need to have deep understanding on what is the role of the human(s) in the loop.
Role covers naturally operational tasks, but also the situations when things go wrong and automation fails.
One of the approaches for figuring out the role of human is to do a task analysis. Here’s an example of such done for car turning left on green light. It was introduced on a paper called Task Analysis of Intersection Driving Scenarios: Information Processing Bottlenecks
Needless to say, it’s getting rather complicated when we are talking about automating a car, ship or an airplane - in multiple different contexts.
Choosing what to automate
When the amount of tasks performed by humans is high (and contexts those are performed in) and they are challenging to automate, you ask yourself: “What tasks do we want to automate? To what degree? And in what context(s)?”
Perhaps not everything needs to be automated. It might be that some of the performed tasks don’t provide value. Or perhaps they do. You make the decision based on your understanding of them and their significance.
How is this related to test automation?
If we consider the approach of automating something through task analysis and having a deep understanding of how human intervenes with the system, I think it makes sense to consider similar things when building a test automation approach for a product.
How does a tester (person performing testing) intervene with the system while testing? What tasks does (s)he perform? What kind of reasoning (s)he is using for making decisions? Which of the tasks we want to automate (to what degree)? And which of the tasks we don’t want to or can’t automate?
Not to forget human ability to learn and adapt through experiences.