What’s in a name? Well, in the case of Art+Logic, our name conveys the idea that software development is a combination of both art and logic, involving as much creativity as logic. We find this to be the case in all aspects of the software development life cycle. And this is definitely true with software testing.
With that in mind, let’s take a brief look at these high-level categories of software testing, progressing in levels of creativity. All of these are valuable tools in putting together an effective software testing strategy.
Categories of Software Testing, From Least to Most Creative
Some testing can and should be very logical. For example, any repetitive testing should be included in test cases and considered for automated test scripts. These can be executed quickly and can efficiently cover a large portion of the application under test.
A main goal here is to detect bugs as soon as possible — definitely before an end user sees them and preferably as close to their appearance as possible (perhaps when integrated into a code pipeline deployment). Fixing a bug earlier rather than later saves time, cost, stress, reputation, and much more, though that’s another topic altogether.
But relatively few software projects can be adequately covered with just formal test cases or automated testing. The vast majority also require manual testing. Although writing both test cases and automated test scripts surely requires some level of creativity, manual testing has creativity at the root.
Manual testing requires careful and creative planning and coordination with business and technical objectives to be sure they are all covered. This planning and coordination results in test scripting — usually in the form of test cases that can include very detailed instructions for the tester.
Once the testing starts, the tester must draw upon previous experience and intuition to make it as effective as possible. We might call this directed creativity.
At the least restrictive end of the creativity scale is exploratory testing, which is an especially valuable type of manual testing that is often neglected for various reasons (such as lack of budget, tight schedule, or unfamiliarity with this testing approach).
This unscripted testing should be a regular activity in the software development life cycle because it can take full advantage of the tester’s creativity, intuition, and experience with both the current project and previous projects. The tester may focus on a general goal in the otherwise unscripted testing session, like exercising relatively common functionality or perhaps particularly risky functionality. This is testing without borders.
Exploratory testing also encompasses smoke testing, usually performed by a project manager or other team member. This person may have extensive knowledge of the project’s business and technical objectives or it may be someone representing either a casual or trained end user. Smoke testing brings in another set of eyes, covering as much of the application under test as possible in a reasonably short period of time — much like how smoke quickly spreads out to fill a room. This helps to increase confidence in the release.
In whatever form it may take for a specific project, exploratory testing is a great tool for approximating the random or spontaneous behaviors of end users. It can cover user behavior that hasn’t been predicted. That’s what makes it so valuable, especially when utilized together with the other more logical testing methods.
End users are quite creative in getting software to do what they want it to do, often veering off the well-scripted and well-tested happy path. It surely follows that software testers should apply an ample dose of creativity in helping to prevent bugs from being released.