首页 > 其他分享 >聊一聊自底向上测试和自顶向下测试的优缺点

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

时间:2024-09-30 20:23:18浏览次数:3  
标签:底向上 测试 存根 自顶向下 模块 底层

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

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

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

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

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

自顶向下测试优缺点

优点:

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、接口不明确:在没有上层模块的情况下,底层模块之间的接口可能不够清晰,可能导致不必要的调整。

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

标签:底向上,测试,存根,自顶向下,模块,底层
From: https://blog.csdn.net/qd_lifeng/article/details/142663231

相关文章

  • C#做MES中FTP代码怎么写?客户端,服务端如何安装测试?
    一、介绍FTP免费开源软件1:FileZilla是一个免费开源的FTP软件,分为客户端版本和服务器版本,且具备所有的FTP软件功能。具有可控性,有条理的界面和管理多站点的简化方式,是的Filezilla客户端版本成为一个方便高效的FTP客户端工具,而Filezilla服务端版本则是一个小巧并且可靠支持FTP&......
  • 大单元综合测试(一):第一章,第二章题解
    \(6.\)已知\(3a>b>0\),则\(\large\frac{a}{3a-b}-\frac{b}{a+b}\)的最小值为多少?基本方法\(\qquad\)对于高中基本不等式,这种分母较为复杂的求最值问题,我们一般都会采用将分母换元换元的方法,理由很自然,因为分式是分子除分母,所以分母形式的简单可以方便我们对问题的处理。那么......
  • 长江存储致态TiPlus7100 4TB满盘读写测试:性能几乎没有下降
    一、前言:看看满盘状态下致态TiPlus71004TB性能会如何!现在还有很多同学对于长江存储品牌的存储产品不太信任,在选择SSD时会优先考虑三星、西数这样的品牌。有鉴于此,我们此次会将手上的长江存储致态TiPlus71004TBSSD进行更严苛测试,将SSD填入80%的数据,也就是在近乎满盘的状态下,看......
  • 从手机发布会的现场测试谈“用户使用场景”
    一红米Note14发布会的现场测试前几天红米Note14发布,现场测试手机防摔、防水、防油触摸以及长时间续航。先不管测试结果怎么样,能不能让大多目标用户满意。单说这种介绍形式,就足够吸引人。这种形式站在了目标用户的使用场景之中,提炼出用户使用中的痛点,针对痛点提出自己的解决方......
  • 负载箱:充电桩测试利器
    RCD负载箱是用于测试和验证电气设备在故障状态下的性能的设备。它可以模拟真实的负载情况,从而帮助工程师和技术人员对设备进行准确的检测和维护。此外,RCD负载箱也是一种重要的安全保护设备,主要用于防止电路中的漏电现象引发的事故。它通常被安装在电路的起始位置,作为主断路器或分......
  • mock数据,不使用springboot的单元测试
    业务代码packagecom.haier.configure.service.impl;importcom.baomidou.mybatisplus.core.toolkit.Wrappers;importcom.baomidou.mybatisplus.extension.service.impl.ServiceImpl;importcom.haier.common.util.RequestUtil;importcom.haier.configure.entity.Langu......
  • 软件测试工具与技术的详细学习要点
    软件测试工具与技术的详细学习要点和方向涵盖了多个方面,以下是一些关键的学习要点和方向:测试工具学习要点1.自动化测试工具  -Selenium:学习SeleniumWebDriver的使用,包括元素定位、操作浏览器、处理页面元素等。同时,掌握SeleniumGrid的使用,以实现分布式测试。  -......
  • SciTech-Automation-UI交互自动化: Microsoft 的 接口自动化测试 : 微信的: LLM(AI/Tr
    用LLM+Python实现微信消息的自动应答!/usr/bin/python3#coding:utf-8importpandasaspdimportnumpyasnpfromuiautomationimportwindowControl,Menucontrolfromfunctoolsimportpartial,wraps#readreplydatadf=pd.read_csv("应答数据.csv",......
  • 基于python+flask框架的软件测试智能管理系统(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着信息技术的迅猛发展,软件在各行各业中的应用日益广泛,其质量和稳定性直接关系到用户体验和企业的竞争力。然而,软件开发的复杂性不断提升......
  • 【C#生态园】六种开源性能测试工具全面比较:选择最适合你的工具
    开发必读:全面介绍JMeter、Gatling、NBomber、Locust等性能测试利器前言在当今互联网时代,应用程序性能测试工具对于确保软件稳定运行和高效性能至关重要。本文将介绍六种不同的开源性能测试工具,分别是JMeter、Gatling、NBomber、Locust、ApacheBench(ab)和Siege,它们各自拥有......