Speeding up software testing by several orders of magnitude
A team of computer engineers has developed a scalable approach that can speed up testing of software to ensure software reliability by several orders of magnitude.
“With the increasing importance of software in our everyday life, software reliability has become a critical issue,” said Michael Hsiao, who heads up the team. One method of testing software reliability is a formal verification method called model checking. This involves systematically exploring all the possible behaviors of the system to determine whether it satisfies a specific property in all cases, he explained. “If the property is violated, it also returns counter-examples to explain how.”
However, the rapidly growing complexity and size of software could result in an exponentially growing state space, making staticonly verification both infeasible and impractical, he said. “Abstraction techniques, which reduce system complexity by removing irrelevant information, hold tremendous promise in this situation.”
He and his students, Xueqi Cheng and Nannan He, are exploring first-of-their-kind hybrid approaches that integrate both dynamic and static techniques for efficient program abstraction. “We are leveraging the lightweight, dynamic techniques that are usually associated with program execution. Dynamic program execution, in combination with knowledge/pattern discovery mechanisms, such as data mining and swarm intelligence, provides means for extracting extremely useful information regarding program behaviors with respect to the property under verification.” The approach is also being applied to validate cognitive radio software.