Need testing support? Check our Quality Assurance services.

See also

In the dynamic and highly complex world of software quality assurance (QA), much attention is being paid to methodologies and techniques that aim to systematize and optimize the verification process. There is talk about the key role of test automation that allows for fast and repeatable regression checking, the need to create precise, detailed test cases that explicitly verify defined functionality, and the fundamental importance of covering defined business and technical requirements as fully as possible. These are all extremely important, even indispensable elements of building robust, reliable and secure IT systems. However, relying solely on predefined, structured test scenarios, whether performed manually by testers or fully automated by appropriate scripts and tools, carries certain, often underestimated risks. After all, tests based on predefined scripts are excellent at verifying that a system performs according to our expectations and formal specifications under known, predicted conditions. However, they can fall far short of uncovering unexpected, subtle problems, hidden logical flaws, unintuitive and sometimes even irrational application behavior, or deeper usability problems that only reveal themselves during free, unscripted, natural interaction with the system, similar to what a real, target user would perform. So how do we get to these often hidden, unobvious defects and look at the software under development through the eyes of a real, often unpredictable user? The answer, which we successfully apply and promote at ARDURA Consulting, is exploratory testing - an extremely powerful, albeit skill-intensive, manual testing technique that we see as a necessary, synergistic complement to more formalized and automated quality verification methods.

Exploring the unknown - The role of exploratory testing at ARDURA Consulting

“Exploratory testing is simultaneous learning, test design, and test execution.”

James A. Whittaker, Exploratory Software Testing | Source

Exploratory testing, at its core, is a unique combination of the freedom of testing and the discipline of thinking. At ARDURA Consulting, we see it as a dynamic process in which the tester simultaneously learns about the system under test, designs experiments and test scenarios in his head on the fly, and then executes them immediately, observing the application’s reactions and drawing conclusions. This approach is diametrically opposed to scripted testing, where the tester is merely an executor of pre-imposed steps. In exploration, he or she becomes a detective, an investigator who roams the application with curiosity and a critical mind, looking not only for confirmation that something works, but more importantly, trying to discover where and under what conditions the system might fail or behave in undesirable ways. Although the exploration gives a lot of freedom, it is not a chaotic activity. We base it on a structured framework, such as Session-Based Test Management and clearly defined objectives (exploration cards), which allows for efficient use of the tester’s time and skills. We believe that exploratory testing is indispensable for discovering defects related to usability, complex interactions, business logic and edge cases - exactly those areas where human intelligence, intuition and adaptability exceed the capabilities of even the most advanced test machines. For us, this is a key element of a holistic quality assurance strategy that allows us to deliver software that is not only functionally correct, but also authentically usable and resilient to unexpected scenarios.

Exploratory Testing: The art and science of going beyond predefined scripts

So what exactly is exploratory testing and what distinguishes it from other forms of testing? Most simply and accurately, it can be described as a simultaneous, iterative and mutually influencing process of learning about the system under test, dynamically designing subsequent tests, and executing them immediately and analyzing the results. Unlike script-based testing, where the tester, like an actor, plays a pre-written role, following a pre-prepared, detailed instruction step by step, in exploratory testing the tester acts much more like a detective conducting an investigation, a scientist experimenting in a laboratory, or an explorer exploring unknown territory. Of course, the exploratory tester does not operate in a complete vacuum - he usually has some general goal, mission or specific functional area of the system to explore, which can be defined, for example, in the form of a so-called exploration charter. Such a charter defines what is to be tested and what potential risks are to be taken into account, but does not impose a rigid scenario on how to do it. How the tester will carry out the objective set before him depends largely on his domain knowledge, his previous experience with similar systems, his professional intuition, his creativity and, above all, what he learns on an ongoing basis about the specifics and behavior of the system under test during the testing process itself. This is an extremely dynamic, interactive and non-linear process, in which observations made in one step, the system’s responses to actions performed, or even accidentally noticed anomalies, directly influence the tester’s decisions on next steps, the direction of further exploration and the formulation of new test hypotheses.

A figurative analogy can be used here: scripted testing is similar to a train trip along a predetermined, meticulously planned route - we know exactly what towns we will pass through, what stations we will stop at and what time we will arrive at our destination. It is a predictable approach and effective in verifying known aspects. Exploratory testing, on the other hand, is like a fascinating, albeit challenging hike through an unknown, dense forest, equipped only with a general map of the area and a compass. We know more or less what direction we want to go and what potentially valuable things we want to find in that forest (such as a rare plant species or a hidden spring), but we choose a specific path on the fly, reacting dynamically to what we encounter along the way - it could be an unexpected obstacle, an interesting side path, or tracks pointing to something interesting. In the course of such a hike, we discover previously unknown corners, identify potential hazards we had no idea about, and learn the terrain in a much deeper and more comprehensive way than if we just rode a train through it on designated tracks. This freedom and adaptability are the essence of exploratory testing.

Why does free exploration uncover what escapes scripts? The value of human intuition and critical thinking in QA

Why is this seemingly “freer,” less formalized way of testing so extremely valuable, and why is it such an important complement to scripted and automated testing? First of all, because the human mind, unlike even the most sophisticated test machine, has unique cognitive abilities. It can not only execute pre-programmed sequences of actions, but also perceive subtle anomalies and unexpected patterns of behavior, dynamically ask fundamental “what if…?” questions, critically question the system’s design assumptions and business logic, and, crucially, empathize with the perspective and needs of a real user, who will not always follow the strictly prescribed ideal functional path. Exploratory testing is particularly effective and indispensable in detecting certain specific types of bugs and problems that traditional script-based tests often have difficulty with.

One of the key areas where exploration shines is in Usability Issues (UI) and overall User Experience (UX). Is the user interface truly intuitive and easy to navigate? Are the workflows in the system logical, consistent and efficient from the user’s perspective? Does the user easily find the functions and information he or she needs, or does the user get lost in a maze of options and unclear messages? An exploratory tester, playing the role of a typical (or atypical) user and trying to meet his or her goals, can identify interface elements that may be confusing, frustrating, unergonomic or simply unfriendly. This can include unclear labels, illogical placement of elements, complicated forms, lack of adequate feedback from the system, or accessibility issues for people with disabilities. Such subtle problems often escape automated testing, which focuses mainly on functional correctness.

Scripting testing, due to its nature and the need for precisely defined steps, often focuses on verifying single, isolated functions or relatively simple, linear scenarios. In contrast, exploratory testing allows for much deeper and more comprehensive testing of complex interactions and unexpected dependencies between different modules, components or layers of a system. An experienced exploratory tester, given the freedom to operate, can create and verify much more complex, multi-step user scenarios that involve interactions between different parts of the application, integration with external systems or working on shared data. It is in such complex contexts that unforeseen integration problems, data synchronization errors, unexpected side effects or resource conflicts that would be difficult to detect with standard functional tests often surface.

What’s more, an experienced and insightful exploratory tester, thanks to his domain knowledge and analytical thinking skills, can often spot subtle inconsistencies in application performance, illogical, contradictory system behavior, or even situations where the system allows formally forbidden or potentially dangerous operations to be performed. This can include, for example, situations where the same data is presented differently in different parts of the system, where certain actions lead to unexpected or irreversible consequences, or where it is possible to circumvent certain business rules or security mechanisms through an unusual sequence of actions. The human ability to recognize patterns, associate facts and critically evaluate the logic of the system’s operation caot be overestimated here.

Exploration by nature also encourages **Systematic testing of so-called edge cases and unusual, rare use scenarios **. Exploratory testers, given the freedom to choose input data and sequences of actions, often deliberately try to “break” the system by inputting unusual, borderline or even incorrect data, performing unexpected combinations of operations, or testing the application’s performance under non-standard, harsh environmental conditions (e.g., a poor network connection, a low mobile device battery, or a maximum resource load). This “out-of-the-box” approach makes it possible to discover bugs and vulnerabilities hiding at the “edges” of individual functionality, which are often overlooked when designing standard test cases focused on typical “happy” paths. It is also worth adding that exploratory testing is extremely valuable in uncovering ambiguities, gaps or internal contradictions in the business requirements and functional specifications themselves. The tester, actively exploring the system and questioning its operation, often comes across situations that are not clearly described in the documentation, or where the implementation seems to contradict the spirit of the requirements. Such feedback is extremely valuable to analysts and the Product Owner, allowing for early clarification and improvement of specifications.

Discipline in Discovery: ARDURA Consulting’s structured approach to effective exploration

At ARDURA Consulting, we are well aware that in order for exploratory testing to bring real, measurable benefits and to be an effective component of a quality assurance strategy, it caot be treated as a chaotic, haphazard “click in the dark” without any goal or plan. On the contrary, effective exploratory testing is a highly disciplined, structured and skill-intensive intellectual activity that, while it allows a great deal of freedom of action, is based on a clearly defined framework and methodical approach. To ensure the effectiveness and measurability of our exploratory activities, we at ARDURA Consulting often employ advanced techniques such as Session-Based Test Management (SBTM). In this approach, each exploratory session, conducted by one or sometimes two testers, has a clearly defined goal, mission or area to be explored, set out in a so-called exploration charter. Such a charter can be created on the basis of a risk analysis, newly implemented functionality, areas where problems previously existed, or specific concerns raised by stakeholders. An exploratory session also has a predetermined, limited duration (e.g., typically 60-90 minutes, with a maximum of 2 hours), which helps the tester focus on the goal and prevents “drifting” without a specific direction. Each such session ends with a systematic documentation of its progress, the most important discoveries made, the risks identified, any problems or defects found (along with steps to reproduce them), and ideas for further testing or improvements. Such a session report is then analyzed and is a valuable resource for the entire team.

During exploratory sessions, our testers also often use various types of testing heuristics - i.e., general principles, guidelines and patterns of thinking that help generate test ideas and identify potential problems - and specialized checklists, tailored to the specific application or technology under test. These can include, for example, heuristics related to CRUD operations (Create, Read, Update, Delete), heuristics based on the data model, or lists of common security flaws or usability issues. However, it is important to emphasize that these tools serve only as inspiration and support for the tester’s thinking, not as a rigid scenario to be executed - the tester always retains full freedom in exploration and decision-making. For exploratory testing to be truly effective, the tester’s specific skills and personality traits are key, such as unbridled curiosity and a desire to understand the system in depth, developed critical thinking and analysis skills, the ability to make keen observations and spot subtle anomalies, the courage to ask difficult “why?” and “what if?” questions, as well as the systematicity and precision to document their findings in a way that the rest of the team can understand. Having a solid domain knowledge of the application under test, a basic understanding of the underlying technologies, and excellent communication skills to effectively communicate the problems found and work with developers to resolve them are also extremely helpful. While exploratory testing is, at its core, a manual and intellectual activity, there are also a number of tools that can support it, such as note-taking and mind-mapping tools, screen capture and session recording tools, and specialized browser plug-ins to facilitate data manipulation or problem identification.

Benefits of integrating exploratory testing into your quality assurance strategy

Consciously and systematically incorporating exploratory testing as an integral part of an overall quality assurance strategy brings a number of tangible and extremely important benefits to any software development project. First and foremost, as we have repeatedly pointed out, exploratory testing significantly increases the likelihood and chance of discovering important, often critical bugs and defects that might be completely missed by predefined script-based testing and automated testing. By its very nature, it allows the discovery of problems in unusual scenarios, complex interactions or areas for which detailed specifications do not yet exist. The human ability to adapt, recognize patterns and intuitively “sense” problems is irreplaceable here.

Another major advantage is the ability to get valuable feedback (fast feedback) on newly developed or modified functionalities much faster, even if there is no complete technical documentation, detailed test cases or ready-made automation scripts for them yet. Exploratory testers can start testing a new version of an application almost as soon as it is released, providing developers and stakeholders with the first valuable insights into its performance, stability and usability. Such rapid feedback is especially valuable in agile methodologies, where development cycles are short and the ability to quickly correct course is crucial.

Exploratory testing also engages testers and QA specialists in a much more creative, intellectually stimulating and rewarding way than mechanically executing repetitive steps from a script. It allows them to take full advantage of their knowledge, experience, analytical skills and intuition, and to gain a much deeper understanding and appreciation of the product under test from the user’s perspective. This form of work is often more motivating, leads to testers’ professional development and increases their sense of influence over the quality of the product.

What’s more, exploratory testing is an invaluable tool in dynamic, fast-changing agile (Agile) environments, where requirements often evolve during the course of a project, documentation can be limited, and time to prepare detailed, formal test scripts is usually very limited. The flexibility and adaptability of exploratory testing fit perfectly with the Agile philosophy, allowing for efficient testing of user stories and delivery of rapid feedback within short sprints. It is an excellent complement to automated regression testing, which ensures the stability of key functionality, while exploratory testing focuses on discovering new, unknown problems. In addition, the results of exploratory sessions, such as identified scenarios or found defects, can be a valuable source of inspiration for creating new test cases, both manual and automated, contributing to the continuous improvement of the testing process. It is also worth noting that exploratory testing fosters a better understanding of the product by the entire team, as testers, by sharing their discoveries and observations, often shed new light on various aspects of the application’s performance, which can lead to valuable discussions and improvements.

In conclusion, exploratory testing is by no means an alternative to script-based testing or to advanced test process automation, but it is an extremely valuable, synergistic and often necessary complement to them. It is a kind of art and science of discovering the unknown, requiring from the tester the right attitude, a unique set of skills, insight, creativity, but also, very importantly, the right structure and discipline in action. At ARDURA Consulting, we deeply appreciate the tremendous value that this technique brings to the QA process, and we constantly ensure that our QA specialists have not only the necessary competence and experience, but also the right amount of time and space to conduct effective, valuable exploration. This approach allows us to provide our customers with software that is not only compliant with specifications and free of critical bugs, but also much more reliable, intuitive to use, usable and resilient to unexpected problems - software that truly serves its users well and effectively, bringing real business value.

Want to make sure that your project’s testing process goes beyond standard requirements checking and effectively uncovers those less obvious issues as well? Wondering how to implement or improve exploratory testing in your team? Talk to the QA experts at ARDURA Consulting. We will share our experience and show you how this powerful technique can take your software to the next level.

Feel free to contact us