Loading [MathJax]/extensions/Safe.js
Tracking Information Flow We have explored how one could generate better inputs that can penetrate deeper into the program in question. While doing so, we have relied on program crashes to tell us that we have succeeded in finding problems in the program. However, that is rather simplistic. What if the behavior of the program is simply incorrect, but does not lead to a crash? Can one do better? In this chapter, we explore in depth how to track information flows in Python, and how these flows can be used to determine whether a program behaved as expected.