单元测试对构件的五方面进行测试: (1)模块或构件接口; (2)局部数据结构; (3)边界条件; (4)独立路径;和 (5)处理错误的路径
在控制结构中的所有独立路径(基本路径)都要走遍,以保证在一个模块中的所有语句都能执行至少一次
计算中常见的错误有: (1)误解的或者不正确的算术优先级; (2)混合模式的操作; (3)不正确的初始化; (4)精度不够精确; (5)表达式的不正确符号表示。
集成测试(Integration testing),有时也称作集成与测试(I&T)是软件测试的一个阶段,在这个阶段单独的软件模块被结合在一起,作为一个群接受测试。
什么时候进行集成测试? 在三种情况下进行需要进行集成测试: (1)由若干单元或模块要组成一个构件; (2)由若干构件组成为一个工件; (3)由若干工件组成为一个系统。
在所有的模块都已经完成单元测试之后,有人或许会问这样一个似乎很合理的问题:“如果它们每一个都能单独工作得很好,那么你为什么要怀疑把它们放在一起就不能正常工作呢?”当然,这个问题就在于“把它们放在一起”- 即接口连接问题。
数据可能在通过接口的时候丢失; 在连接时一个模块可能对另外一个模块产生无法预料的副作用; 当子函数被联到一起的时候,可能不能达到期望的功能; 在单个模块中可以接受的不精确性在联起来之后可能会扩大到无法接受的程度; 全局数据结构可能也会存在问题。
集成测试被看作是一种系统化技术,来构造程序并实施测试以发现 与接口连接有关的错误, 它的目标是把通过了单元测试的模块拿来,构造一个在设计中所描述的程序 结构。 有两种集成测试策略: 瞬时集成测试,和 增量集成测试。
由Myers在1979年定义的一种方法,当所有的被隔离的构件通过了测试,就把它们组合成一个最终系统,并观察它是否运转正常。
许多程序员在开发小程序的时候都会用到瞬时集成测试技术,但对大型程序不太适用。 事实上,瞬时集成方法有这样几个缺点: (1)对独立组件测试需要驱动程序和树桩程序的支持; (2)由于所有组件都是一次性的结合在一起,所以很难找出错误的原因; (3)不容易辨别接口错误和其他类型的错误。 一般情况下,不推荐瞬时集成用于任意系统,而是推荐使用增量集成策 略。
是创世大爆炸的方法的对立面。 程序先分成小的部分进行构造和测试,这个时候错误比较容易分离和修正;接口也更容易进行彻底地测试;而且也可以应用一种系统化的测试方法。 增量集成测试会有格外的开销,但会大大减少发现和改正错误的时间,最佳的增量方法本质上取决于各个项目和不同利弊选择的考虑。
**
自顶向下的集成是一种构造程序结构的增量实现方法。模块集成的顺序是首先集成主控模块(主程序),然后按照控制层次结构向下进行集成。 隶属于(和间接隶属于)主控模块的模块按照深度优先或者广度优先的方式集成到整个结构中去。
深度优先集成是集成结构中的某一个主控路径上的所有模块。
主控路径的选择是有些任意的,它依赖于应用程序的特性,例如,选择图中最左边的路径,模块M1, M2,和M5,将会首先进行集成,然后是M8; 或者是(如果对M2的适当的功能是必要的) M6,然后开始构造中间的和右边的控制路径。 广度优先的集成是沿着水平的方向,把每一层中所有直接隶属于上一层模块的模块集成起来,从图中来说,模块M2, M3和M4首先进行集成,然后是下一层的M5, M6,然后继续。
在自顶向下的测试开始的时候,程序桩代替了低层的模块,因此,在程序结构中就不会有重要的数据向上传递,测试者只有下面的三种选择: (1)把测试推迟到程序桩被换成实际的模块之后再进行, (2)开发能够实现有限功能的程序桩,用来模拟实际模块,或者 (3)从层次结构的最底部向上来对软件进行集成。
(1)对高层行为进行早期确认: (2)至多只需一个驱动程序; (3)每步可以只加一个模块; (4)支持深度优先和宽度优先。
(1)对低层行为确认比较晚; (2)对缺少的元素需要编写树桩程序; (3)测试用例的输入和输出可能很难明确表示。
自底向上的测试,就象它的名字中所暗示的一样,是从原子模块(也就是在程序结构的最低层的模块)开始来进行构造和测试的。每个模块由测试装置(test harness)进行测试。
自底向上的集成策略可以使用下列步骤来实现:
(1)对底层行为早期进行确认; (2)不需要写程序桩; (3)对一些子树而言比较容易明确表示输入,比较容易解释对其他的输出。
(1)推迟对高层行为的确认; (2)需要驱动程序; (3)当组合子树的时候,一大堆元素要进行集成
混合式集成策略可以使用下列步骤来实现:
在实际中测试通常是结合了自顶向下和自底向上这两种方法,称作混合式集成测试(mixed testing),也称作三明治式集成测试(sandwich testing)
在由几个小组一起开发的大的软件项目中,或者一个小项目但不同模块是由不同的人进行构建的情况下,小组或个人可以对自己开发的模块采用自底向上测试,然后再由集成小组进行自顶向下测试。
混合式集成策略可以使用下列步骤来实现:
我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=2p5qjwxvujms4
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有