《大规模C++程序设计》读书笔记8

来源:互联网 发布:淘宝自己的信誉在哪看 编辑:程序博客网 时间:2024/05/21 03:27

定义14:回归测试指的是这样的规程:运行一个程序(该程序被给定了一个固定期望结果集合的特定输入),比较其结果,以便检验程序从一个版本升级到另一个版本时是否能够继续如所期望的那样运行。

基于启发式技术的软件、使用异步通信的系统,系统行为具有随机性,较难进行回归测试。

原则15:对于测试来说,软件中的一个类类似于现实世界中的实例。

原则16:对整个设计的层次结构进行分布式测试,比只在最高层接口进行测试有效得多(就每美元测试费用而言)。

原则17:独立测试降低了一部分与软件集成相关的风险。

定义15:隔离测试是指这样的规程:独立于系统的其他部分对单个组件或子系统进行的测试。

原则18:隔离测试组件是确保可靠性的有效方法。

有非循环物理依赖的系统远远要比那些带有循环依赖的系统更容易进行有效的测试。

原则19:每个有向非循环图都可以被赋予唯一的层次号;一个有循环的图则不能。

定义16:一个可被赋予唯一的层次号的物理依赖图称为是可层次化的(levelizable)

定义17:

层次0:一个在我们的软件包之外的组件。(标准库、第三方组件)

层次1:一个没有局部物理依赖的组件。(只依赖于标准库或第三方组件)

层次N:一个组件,它在物理上依赖于层次N-1上(但不是更高层次上)的一个组件。

如果一个组件只依赖于编译器提供的库,这样的组件称为叶子组件,总是可以对一个叶子组件进行隔离测试。

定义18:一个组件的层次是一个最长路径的长度,该路径是指从那个组件穿过(局部)组件依赖图到外部(或由编译器提供的)库组件的集合(可能为空)的路径。

隔离测试顺序由层次号决定,只有在低层组件测试完以后,才可以测试高层组件。

层次化的优点:1. 层次化也可以清楚标识出哪些组件可以被独立的重用。2. 可以渐进的理解系统。


定义19:分层次测试是指在每个物理层次结构上测试单个组件的惯例。

原则21:分层次测试需要为每个组件提供一个独立的测试驱动程序。

原则20:在大多数真实情况下,如果大型设计要被有效地测试,它们必须是可层次化的。

定义20:增量式测试是指这样的测试惯例:只测试真正在被测试组件中实现的功能。

原则22:只测试在一个组件中直接实现的功能,能够使测试的复杂性与组件的复杂性相当。


定义21:白盒测试是指通过查看组件的底层实现来验证一个组件的期望行为。

定义22:黑盒测试是指仅基于组件的规范(即不必了解其基础实现)来检验一个组件的期望行为的惯例。

原则23:完全的回归测试是昂贵的但也是必须的,建立彻底的回归测试的适当时间,与要测试的子系统的稳定性密切相关。

在开发前期,系统变化频繁的时候,开发测试程序,是代价高昂且得不偿失的,当系统趋于稳定的时候,才编写彻底的、系统的回归测试。

原则24:组件之间的循环物理依赖限制了组件被理解、测试和重用。

指导方针8:避免组件之间的循环物理依赖。

当组件c1和c2出现循环依赖:(1)对c1和c2重新打包以便它们不再相互依赖。(2)将c1和c2从物理上组合成一个组件c12。(3)将c1和c2当作一个单一的组件c12来考虑。

有时候单个的、紧密耦合的抽象会被认为太大了,不适合在一个组件中实现,应该被分拆成相互依赖的组件,但大多数情况下,抽象的紧密耦合部分可能与实现的其他部分隔离开来,并被放到一个单独的组件中,这个组件反过来依赖其他独立的组件,这些独立的组件可以在隔离的情况下进行彻底的测试。

Technorati : C++, 大规模C++程序设计, 读书笔记

原创粉丝点击