It is easy to grasp the idea of test exploration for software that has graphical user interfaces. Exploration and discovery are results of engagement of senses, and our day-to-day software running on modern operating systems and web pages present testers with visual guidance and easily identified inputs.
But how does one explore embedded, remote, or web service systems, which reside built-in inside other systems, far away from the testers’ eyes and hands? How does one solve the problem that testing programmatic interfaces demands developing test code, which is hard to do in the same fast cadence of test-learn-change-test used in exploratory testing of GUI systems?
We can solve this riddle through innovation in the testing method and in the testing tools. Fundamental patterns of exploration can be applied to non-GUI systems: identifying the ways to acquire data and to cause change; being in charge of the tests and their interpretation; and modeling the software testing tools in a way that allows quicker interaction.