One of the challenges I faced as I started working on the
Luminescence R package was how to navigate the very large set of
functions that the package provides (by the last count, there are 155
functions that are exposed to the user, plus several internal helpers).
As I fumbled my way through it, I started noticing that when a function failed
on a certain input, similar failures would also occur elsewhere.
However, finding manually which other functions were affected was frustrating
and time-consuming. Wouldn’t it be great if we could (quickly and with limited
manual intervention) go through all the functions in the package and being
told which are the ones that need to be fixed?
This got me to think about fuzz testing, and how that approach could be
adapted for my purposes.