Explore/Exploit: An Approach to Software Testing

I recently read a chapter on Explore/Exploit in Algorithms to Live By, and saw how much this concept can apply to software testing. First, let’s define what we mean by “Explore” and “Exploit” in the context of software testing.

Explore: continue to explore the software under test and look into new areas of the SUT

Exploit: Focus your attention on one specific area (or a few areas), based on your findings from the Explore part.

One of the most important factors to consider when deciding whether or not to continue exploring is to consider how much time you have remaining.

Christian and Griffiths advise,

Explore when you will have time to use the resulting knowledge, exploit when you’re ready to cash in.”

Let’s say you are given one day to test a new feature. You may choose to plan your day by spending the first half of the day exploring the feature to “get a feel for it”; to see the “general state” of the feature, then you may spend the second half of the day “exploiting” a few specific areas, based on your findings in the Explore part.

It can be beneficial to be purposeful about how you spend your time so you can plan to explore and then exploit accordingly.