In that spirit, if you find any information that is misleading, egregiously incorrect, please let me know. I’m not a computer scientist and the point of this blogpost is to merely introduce you to these concepts so that you can understand their utility in fuzzing.
We will do our best to not get bogged down in definitional minutiae, and instead will focus on just learning stuff. Hopefully this helps you at least get on your way doing your own research. I’ve found that a lot of the terminology used in this space is intuitive and easy to understand, but there are some outliers. So if you’re new to fuzzing, new to software testing, this blogpost should be friendly. We’re going to shy away from some of the more esoteric strategies and try to focus on what would be called the ‘bread and butter’, well-trodden subject areas.
We’ve already discussed the importance of code coverage previously in this series so today we’ll try to understand some of the very basic underlying concepts, some common approaches, some tooling, and also see what techniques some popular fuzzing frameworks are capable of leveraging. Fuzzing Like A Caveman 5: A Code Coverage Tour for Cavepeople