Here’s my take: Explicit scripts should be used, as much as necessary for the context, with the understanding of the structure and limitation they impose on us and our testing.
Now an incredibly long explanation. It might go a little hard, but I respect your writing so I’m making some assumptions. Here’s a history of why my take makes sense to me.
So in the RST space Exploratory Testing and scripting have gone through a lot of investigation, discussion and exploration and they wound up unpacking Testing, documenting all the parts and putting them all back again and now we have Testing again.
At first, testing was intrinsically exploratory. It began with no particular differentiation between exploration and scripting. Actually if you back all the way up to the 60s Jerry Weinberg was already writing on the dangers of formalisation and the difficulty of encoding intent. We moved through formalisation, factory testing, human scripting, excel pass/fail sheets, and there was nothing left but scripting and confusion. Anything that wasn’t scripted was “ad hoc”.
Cem Kaner came up with the term Exploratory Testing somewhere in the late 80s I think, and as a result of some hard work and some impassioned speaking by people like James Bach we end up, around the 90s, with the beginnings of original ET - “non-scripted” testing. This idea survived probably because it found more problems and avoided the railroading scripting gives us. ET was stuff that scripting wasn’t.
“Context-driven” came next which used philosophical tools and human-centred concepts to raise ET to new ideals where the value of your testing was defined by the context in which you performed it. You can still see the Kantian and Popperian ideas thick in modern ideas of exploratory testing, and you can see its reflection in writing like Weinberg’s General Systems Thinking. Tools, terms and models came out of this part very fast indeed, like heuristics, oracles, sessions and other things most testers with a passing understanding of ET know very well. It was to re-inject humanity and adaptability back into testing and get us out of the scripting mire.
Then ET moved from ET vs scripts to a spectrum from exploratory to scripted, with ad-hoc ideas on the left side and Excel pass/fail sheets towards the right side. About here is where the idea of parallel learning, design and execution come in, where the actions a tester performs are influenced by the results of the actions they already performed. The humanism of ET became louder, putting the focus on the tester and their responsibility to make decisions about testing unfettered by scripts. Around here is where I took notice, and I defined a script in 2004 as “A set of instructions made explicit by one agent such that another (or the same) agent can later interpret them in order to replicate a process to achieve a desired outcome or behaviour.”
Then came along testing vs checking, where testing cannot be automated but checking can be. The semantic differentiation helping to clarify the human element in both, and the limitations of checking-only testing. This was a huge favour to testers, as well as a step forward in understanding. I believe this is where we moved to understand that testing cannot be automated, only tool-assisted, again putting testers in the driving seat.
Then Collins’ book Tacit and Explicit Knowledge, and writing on encoding, communication, interpretation, intent and other elements of epistemology and information theory inspired the investigation into scripting. It was like a Gallilean telescope, rendering existing ideas in crisper detail. It reflected existing thinking in testing around scripting like repeatability, check vs test, and so on.
Finally, combining all the above and more, the RST namespace retired Exploratory Testing entirely, as testing was intrinsically exploratory, and so we end at the beginning - wiser for the journey, despite it being a large circle.
So, with this thinking in mind, there is no exploratory testing, just testing which must contain exploration. Scripting is any system that controls your testing that you, yourself cannot control. Scripting can include:
- Following someone else’s instructions
- Following your own instructions without revising or revisiting them
- Lack of knowledge
- Biases
- Subconscious mental heuristics
- Management
- Tools
- Opportunity cost when choosing test techniques
All insofar as they shape how we work. They power our thinking, change the actions we’re free to take, limit or expand or control our observations.
So we exclude what we cannot change, although understand it as much as is reasonable. Ideas like inattentional blindness, cognitive biases and the like fall into this category, as well as many contextual ideas. Now we have to make reasonable decisions about what we can change - the explicit scripts we can opt into with an understanding of the both the benefit and risk in doing so. Healthy scripting relies on responsible use of agency after excluding what we cannot choose because of scripting.
Explicit scripts should be used, as much as necessary for the context, with the understanding of the structure and limitation they impose on us and our testing.