要衡量软件的可维护性,可以从四个方面去度量,即可分析性(Analyzability)、可改变性(Changeability)、稳定性(Stability)以及可测试性(Testability)。具体到软件的可测试性怎么去衡量呢?又可以从三个度量元去考虑,例如圈复杂度、输入/输出的个数等。圈复杂度越大,说明代码中的路径越多;路径越多,意味着要去做测试,需要写更多的测试用例。输入/输出的个数同样的道理。
在具体的实践中,专门的质量度量工具是必要的。没有工具的支持,这一步很难只靠人工完成。在这个阶段,比较专业的工具有Testbed、Logiscope等。
3、代码错误检测——提高软件的靠性
在传统意义上认为,错误检测应该是动态的系统测试的范围。但在bug的成本上分析,有以下公认的结论。
In Boris Beizers well known analysis, the longer a fault stays in the product as it goes through the lifecycle, by a factor of 10 at each stage. This has become a cliche somewhat, but is not without foundation. If the fault can be found by the developer or colleague it will cost tens or hundreds of pounds. If a customer finds the fault, thousands of pounds may be the cost.
Bug发现的越晚,修正的成本就越高,测试阶段修正bug的成本是编码阶段的约4倍的关系。为了减少成本,bug被发现的越早越好。在编程阶段,静态的分析代码就能找到代码的bug,是很多人的梦想。这个梦想在21世纪初变成了现实。以PolySpacee、Klocwork、Coverity为代表的静态分析软件,实现了只要静态分析代码,就可以发现代码的bug,例如数组越界、除数为0、缓冲区溢出等,虽然还不是特别完美。
微软在其最新的开发工具Visual Studio 2005的 team system editon中集成了安全工具PREFix。PREFix原来就是著名的静态分析工具,后被微软收购过来。从微软的倾向看发展走势,类似的静态工具未来会成为市场的主流。
PolySpace详细的信息可以参考我的另外一篇文章《嵌入式软件动态运行时错误的检测》。
Coverity的详细信息可以参考其网站 www.coverity.com
以上是我在几年的实践过程中总结出来的实施静态测试的方法,个人评价,理论性一般,但实践性很强,这套方式已经推荐给国内的很多研究所使用,实践证明是一套行之有效的方法。(以上言论仅代表作者的个人观点,不代表51Testing观点)
版权声明:本文出自huior的51Testing软件测试博客:http://www.51testing.com/?10851
原创作品,转载时请务必以超链接形式标明本文原始出处、作者信息和本声明,否则将追究法律责任。