Exploratory Testing Principles 1.0
This is v1.0 of my Exploratory Testing Principles. But what is a principle?
Principle: A belief, a basic truth from where other truths can be built
Whenever testing, we also have a set of principles that guide and support our testing.
Let's see the principles I think might be important.
Exploratory Testing Principles v1.0
1. Testing is about searching for meaningful quality related information
Testing provides information about quality which in turn has multiple dimensions and multiple stakeholders that value those dimensions (quality criteria) differently. The perceived value on each quality dimension also evolves with time...
2. Testing is highly context-dependent and context-driven
The risks that we want to assess and how we perform that assessment depend on the context. Likewise, results of testing are contextualized and need to be interpreted.
3. Testing embraces a whole set of activities, to challenge, investigate, explore, check, report and provide actionable information
Although the essence of testing is around finding problems through investigation, exploration, and checking, testing also involves planning, reporting, and other activities.
4. Testing is mainly a human centered process that can be augmented by tools to an extent
Testing is mainly driven by knowledge, curiosity, and context; these are some main tools used by a tester. Software and hardware tools can also be used to assist testers and augment certain testing activities and may provide information that otherwise would be hard or impossible to obtain.
5. There is no single testing solution
Similarly to coding where there is no single implementation for a given feature, there is also no single testing solution to uncover risks and the risks that matter. However, there are techniques, heuristics, and approaches that maximize results towards specific testing goals.
6. Testing uncovers more risks whenever performed with someone else
Testing can be a “lone ranger” activity but we know that diversity plays a major role around improving knowledge and understanding. Each person has a different background, is aware of different heuristics and risks, and has a different skill set. Testing with someone else, including developers, is a proven-way of exposing risks that otherwise could be missed. Besides, if done with developers for example, it’s a way of improving testing knowledge so that quality can be built-in in the future.
7. Testing requires extensive skills, technical, social, among others
These skills need to evolve, as context evolves, including the software, how it is crafted, how it is delivered and used. The art of crafting value through software is a team effort, thus social and communication skills are also important to foster an overall team improvement environment.
8. Testing is not limited to certain roles, stages, types, levels, or artifacts
Everyone in the team can contribute to testing to have better and timed information about quality, so that risks can be addressed properly and promptly. Testing can and should be applied to all aspects that ultimately lead to a feature in production, in other words, all aspects from ideation up to production.
9. Testing is never complete
As there are numerous stakeholders (internal and external) interested in our products, that in turn have different expectations and use the product differently, the number of test scenarios that we could depict would be infinite. Similarly to coding where we can always refactor code snippets, testing is never complete as we can always learn new information about the software, its internals and its externals. The more time and resources we have, the more we can test. However, there is always a decision of when to stop testing that can be around the confidence the team has so far or restricted by some time constraint, for example.
10. There are no bug free products
Bug free products are a myth. We can only say that we have not found bugs during and for the testing that we performed. Bugs are all aspects that negatively impact quality. Even though we cannot assure a product is bug free, it’s always possible to assess risks and mitigate them through testing, among other options that the team can take.
11. Testing is maximized with clear, meaningful, and fast feedback-loops
Information discovered while testing needs to be shared with the team, so the team can act on it. This information needs to be understandable, manageable, and meaningful. In order for the team to improve, this information needs to be properly delivered and on-time. Enabling fast feedback loops is essential to iterate more often and thus enable agility.
This is a first iteration of the principles I think may relevant for testers, including exploratory testers; in reality, being exploratory is part of the intrinsic nature of testers. Looking forward for your feedback in order to improve these principles or can even create your own variant of your testing principles.
Thanks for reading this article; as always, this represents one point in time of my evolving view :) Feedback is always welcome. Feel free to leave comments, share, retweet or contact me. If you can and wish to support this and additional contents, you may buy me a coffee ☕