聊一聊自底向上测试和自顶向下测试的优缺点

自顶向下的测试是从程序的顶部或初始模块开始。测试开始之后,挑选哪一个后续模块进行增量测试没有唯一正确的方法,唯一的原则是要成为合乎条件的下一个模块,至少一个该模块的从属模块,调用它的模块事先经过了测试。

在大多数情况下,自底向上的策略与自顶向下的策略是相对立的。自顶向下测试的优点成为自底向上测试的缺点,而自顶向下测试的缺点又成为自底向上测试的优点。正因为这一点,我们对自底向上测试的介绍就简短一些。

自顶向下方法中无法建立所有测试环境的问题,在这里都不复存在。如果将驱动模块看作是一个测试探针的话,那么该探针是直接放入被测模块中去的不会受到中间模块的困扰。检查一下与自顶向下方法相关的其他问题,我们再也不会做出让设计和测试重叠的不明智决定,因为自底向上的测试要直到程序底层设计完成之后方才开始。

如果自顶向下的方法和自底向上的方法,就象增量测试和非增量测试一样区别分明,那么比较起来很容易但遗憾的是,情况并非如此。

由于这里缺乏一个规程,自顶向下测试第四个缺点的严重后果,以及有可用的测试工具减少了对驱动模块而不是桩模块的需求,这样似乎给自底向上的策略带来了优势。

自顶向下测试优缺点

优点:

1、如果主要的缺陷发生程序的顶层将非常有利

2、 一旦引入 I/O 功能提交测试用例会更容易

3、早期的程序框架可以进行演示,并可激发积极性

4、全局视角:可以尽早地验证系统的设计和架构,确保高层次的需求得到满足。

5、优先级处理:关键功能或高风险区域可以优先实现和测试。

6、用户界面先行:用户界面等与用户体验直接相关的部分可以先进行测试,保证最终用户的满意度。

7、仿真容易:使用存根(stubs)代替未开发完的部分比较直观且易于实施。

缺点:

1、必须开发桩模块

2、桩模块要比最初表现的更复杂

3、在引入 I/O 功能之前,向桩模块中引入测试用例比较用难

4、创建测试环境可能很难,甚至无法实现

5、观察测试输出可能很困难

6、使人误解设计和测试可以交迭进行

7、会导致特定模块测试的完成延后

8、复杂度较高:需要创建大量的存根来模拟尚未开发的功能,增加了额外的工作量。

9、后期修改困难:如果底层出现重大变更,则可能影响到已经完成的高层模块,造成较大的重构成本。

10、性能问题:存根通常不会像真实模块那样高效,因此在使用存根时很难准确评估系统性能。

自底向上测试的优缺点

优点:

1、如果主要的缺陷发生在程序的底层将非常有利

2、测试环境比较容易建立

3、观察测试输出比较容易

4、早期检测错误:从底层模块开始测试,可以及早发现并修复低层模块的问题。

5、独立性:每个模块都可以单独进行测试,不需要等待其他部分完成。

6、驱动程序简单:不需要复杂的驱动程序来模拟高层调用,因为实际的高层组件会逐渐加入。

7、渐进式构建:系统逐步构建起来,可以让团队看到进展,有助于保持动力。

缺点:

1、必须开发驱动模块

2、直到最后一个模块添加进去,程序才形成一个整体

3、缺乏整体视角:初期可能无法验证整个系统的架构设计是否合理。

4、后期问题:如果顶层设计有问题,在测试过程中较晚才会被发现,这可能会导致大量的返工。

5、接口不明确:在没有上层模块的情况下,底层模块之间的接口可能不够清晰,可能导致不必要的调整。

自底向上测试和自顶向下测试各有优缺点,选择哪种测试策略取决于具体的软件开发场景和需求。对于底层接口稳定、高层接口变化频繁且底层模块较早完成的软件产品,可以考虑采用自底向上测试策略。而对于控制结构清晰稳定、高层接口变化较小且需要尽早验证系统功能的软件产品,则更适合采用自顶向下测试策略。在实际应用中,也可以综合采用两种测试策略,以充分利用各自的优势。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Feng.Lee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值