Software Testing Theory

IT is common to talk about the ‘functionality’ of software, but establishing a rigorous connection between code and a precise mathematical description of the behaviors of that code is a challenging intellectual task. The syntax of code is apparent and well understood—every programmer uses it daily and tools like compilers mechanically exploit it—but the semantics that provides execution meaning to code is another matter. Any theory of software testing must be built on an underlying theory of semantics.