Informative Information for the Uninformed | ||||||||||||||
|
||||||||||||||
Conclusion and Future WorkThis paper illustrated an improved testing technique by taking advantage of code coverage methods using basic graph theory. The author would like to reiterate that the driver and fuzz tool used in this paper were simple examples to illustrate the effectiveness of code coverage practices. Finally, more research and experimentation are needed to fully implement these theorems. The question remains on how to integrate a full code coverage analysis tool and a fuzzing tool. Much work has been done on code coverage techniques and their implementations. For example, the paper entitled Cryptographic Verification of Test Coverage Claims, Devanbu, et al[1] presents protocols for coverage testing methods such as verifying coverage with and without source code, with just the binary which can utilize both block and branch testing (e0178[1].PDF). A tool to automate the espousal of code coverage and fuzz technologies needs to be implemented so that the two technologies may work together without manual investigation. Further research may include more sophisticated coverage techniques using graph theory such as super blocks, denominators, and applying weights to frequently used loops, paths and edges. CFGs may also benefit from Bayesian networks which are a directed cyclic graph of nodes represented as variables including distribution probability for these variables given the values of its parents. In other words, the Bayesian theory may be helpful for deterministic prediction of code execution which can in turn lead to more intelligent fuzzing. In closing, the author extends the hope that methods and methodologies shared herein can offer other ideas to researchers. |