在《代码覆盖从简到繁 (一) 》中曾经介绍过,获取和分析代码覆盖数据是为了发现被测试产品中可能存在的测试漏洞(Test Holes),同时也是衡量当前测试覆盖效率的重要指标。代码覆盖率是测试团队的重要工具和测试活动之一,但由于要涉及代码的走查和分析,所以需要开发人员的参与和配合。
那么除了发现测试漏洞,代码覆盖率还有其它什么作用吗?在回答这个问题之前,让我先谈谈软件测试的目的。记得Google的段念在第二届(杭州)互联网测试技术交流会上有一个题为《颠覆者生存:互联网产品测试观点》的演讲。其中,他提出了4个PK,第一个PK是:度量质量的测试 vs. 提高质量的测试。中心思想是说,如果测试仅是以找到缺陷为目标,那么它就是质量度量测试,而如果通过软件测试活动辅助改善软件开发流程,在早期就有效避免缺陷的发生,那就是软件测试一个更高的境界 – 提高软件质量的测试。讲得很有道理!那么这和代码覆盖率又有什么关系呢?其实,代码覆盖率也可以作为一种手段,用来辅助我们改善开发活动。
持续集成是敏捷开发中重要的一环,无论是代码签入前验证(Pre-check-in validation)还是签入后检查(Post-check-in validation),都要求签入的代码达到比较全面的测试,这通常是通过执行一组事先选定好的测试用例,这组用例都通过,也就任务认为签入的代码达到了比较全面的测试。那么该如何选择测试用例才能达到比较全面的测试呢?对于实际的工程而言ÿ