程序验证、测试与软件调制解调器设计
1. 程序验证与测试
在系统开发中,程序验证和测试是确保系统质量的关键环节。除非系统规格发生改变,新系统应该能够通过旧的测试。然而,旧的漏洞可能会重新潜入系统,比如不小心安装了软件模块的旧版本。另外,回归测试以不同于当前代码版本的方式执行代码,因此可能会暴露出不同的漏洞。
对于一些嵌入式系统,特别是数字信号处理系统,可以进行数值分析。为了节省硬件成本,信号处理算法通常采用有限范围的算术运算实现。可以生成激进的数据集来测试系统的数值精度,这些测试往往可以从原始公式生成,而无需参考源代码。
1.1 评估功能测试
多少测试才足够呢?Horgan和Mathur评估了TeX和awk这两个知名程序的功能测试覆盖率。他们使用了经过多年广泛测试而开发的功能测试,得到的代码覆盖率统计如下表所示:
| 程序 | Block | Decision | P-use | C-use |
| ---- | ---- | ---- | ---- | ---- |
| TeX | 85% | 72% | 53% | 48% |
| awk | 70% | 59% | 48% | 55% |
这些结果表明,功能测试并不能完全覆盖代码,因此需要显式地为代码的各个部分生成测试用例,以获得足够的代码覆盖率。
方法学技术对于理解测试质量很重要。例如,记录每天测试的漏洞数量,随着时间推移收集的数据可以显示每页代码的平均错误数量、某些类型的测试能捕获多少漏洞等趋势。
错误注入是一种有趣的分析测试覆盖率的方法。首先,在现有代码中添加漏洞,并记录添加位置,然后对修改后的程
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



