分层自动化测试模型变与不变

简介: 分层自动化测试模型变与不变

分层自动化测试模型变与不变


最近在思考自动化分层模型,多少有些相关,所以就赶紧总结出来。


分层自动化测试模型的发展


image.png


分层自动化测试模型最早是由Mike Cohn在2009年出版的《Succeeding with Agile》书中的第十六章进行阐述的,他说“测试金字塔是分层测试的一种最佳实践“。金字塔自动化测试模型如上图A所示,从下往上分为单元测试、接口测试、界面测试(其实我更习惯于叫UI自动化)。那么他为什么是金字塔的样子呢?这其实是和每一类自动化测试的投入产出比相关联的。


“越早开始测试,发现问题修复问题的成本越低”,这句话决定了在单元测试阶段发现的问题修复成本最低,因此应该加大单元测试的投入,因此在金字塔模型中单元测试就应该占据的面积最大,以此类推,接口测试次之,界面测试占面积最少。也就是说,在金字塔模型中各类测试所占的面积代表了对应测试的投入成本。

随着互联网的快速发展,以及微服务、容器的快速推广,金字塔模型已经不是非常满足业务交付的需求,测试重心逐渐的偏移到了接口测试,接口测试的投入越来越大,相比单元测试的投入越来越少。接口测试逐渐的内部分成单接口测试和业务接口测试,单接口测试向下做了一个本该由单元测试的工作,因此单接口测试会充分测试接口的稳定性,这部分主要通过边界值以及其他一些测试用例设计方法完成测试用例设计。业务接口测试用例主要是通过一些接口的调研模拟部分业务来验证业务实现的真确性,这部分常用场景法等测试用例设计方法。如上图B所示,称之为橄榄球模型。




分层测试模型为什么分层



image.png


前面我说过,金字塔分层自动化模型单元测试投入最大是因为单元测试的投入产出比最大,那么为什么不能将这种最大收益的测试类型最大化,那岂不是应该为最优秀的自动化测试实践吗?

image.png

其实,这不能达到最大收益,反而会降低整体自动化测试效果。如上图所示蓝色部分(蓝色部分表示单元测试)所示,单元测试的被测件是每一个逻辑单元,在做单元测试的时候会将外部依赖、数据依赖等通过TestDouble进行解耦,这就可以看出,单元测试没有覆盖到真实数据的依赖、外部服务依赖等,而且它只测试了每一个逻辑单元(很大程度上可以理解为是一个函数),那么函数和函数间的调用却没有被测试到称之为测试间隙,如上图绿色部分(绿色部分表示接口测试)所示,通过单接口测试和业务接口测试就可以弥补单元测试的测试间隙,那么黄色部分(黄色部分代表界面自动化测试)通过模拟主要业务,弥补了接口测试的测试间隙。

发展中的分层自动化测试模型的不变实践


无论分层自动化测试模型怎么发展,UI自动化测试部分却永远没有发生变化。这是为什么呢?


首先,UI测试需要SUT的各个组件都处于就绪状态。那么为了支持UI自动化测试就需要在准备测试环境、测试数据这等,需要投入很多人力物力。

其次,UI是给人与系统进行交互,用户手工操作速度就比计算机运行速度慢了很多个数量级。


所以无论怎么发展,分层自动化测试模型都没有增加在UI自动化上的投入。虽然UI自动化测试在分层模型中并没有绝对的变化,但是UI自动化测试也并没有完全被取代,这说明UI自动化测试还是有其的优越性的:

  • 1、UI自动化测试可以大大缩短反馈周期,发现BUG、修复BUG相较于手工测试更快更容易。
  • 2、UI自动化测试的一个合格的测试场景需要开发工程师、测试工程师、产品经理紧密的合作,相互理解,这也使得团队更加关注于质量内建,团队全部的角色都会关注业务价值交付。


合适的技术还是需要用到正确的地方,UI自动化测试最适合验收测试阶段。验收测试是测试部分的最后阶段,因此在这个阶段中被测试系统的外部依赖会真实访问外部依赖服务。利用UI自动化测试实现自动化验收测试,能够加快验收测试反馈周期,提升验收测试阶段的效率。自动化验收测试会模拟系统使用的主要流程,那么这里的主要流程在最开始的设计UI自动化测试的时候有可能覆盖并不全面,因此会在后续迭代中不断的发现遗漏主要业务场景,并马上变写一个UI自动化测试覆盖这个场景,逐渐就会的得到一个完善的自动化验收测试的测试用例集。那么自动化验收测试也并不是随意执行的,如果执行频次很高,那么无论是从测试耗时还是外部依赖系统的压力上都会有所影响,所以自动化验收测试推荐每天运行一次的频次。



总结


未来伴随则自动化测试技术的发展,分层自动化测试模型也会不断演进和发展,但是无论如何演进分层模型的依据还是测试投入,因此未来如果智能化测试能够替代人工投入那么分层模型也会有根本性的改变的。

目录
相关文章
|
2月前
|
人工智能 搜索推荐 测试技术
模拟试错(STE)法让7B大模型测试超GPT-4
【2月更文挑战第24天】模拟试错(STE)法让7B大模型测试超GPT-4
37 1
模拟试错(STE)法让7B大模型测试超GPT-4
|
3月前
|
并行计算 Linux 计算机视觉
还在手工标注数据集?快来试一试自动化多模型标注大模型-gui交互式标注(部署运行教程-高效生产力)
还在手工标注数据集?快来试一试自动化多模型标注大模型-gui交互式标注(部署运行教程-高效生产力)
82 0
|
2月前
|
传感器 算法 计算机视觉
基于肤色模型和中值滤波的手部检测算法FPGA实现,包括tb测试文件和MATLAB辅助验证
该内容是关于一个基于肤色模型和中值滤波的手部检测算法的描述,包括算法的运行效果图和所使用的软件版本(matlab2022a, vivado2019.2)。算法分为肤色分割和中值滤波两步,其中肤色模型在YCbCr色彩空间定义,中值滤波用于去除噪声。提供了一段核心程序代码,用于处理图像数据并在FPGA上实现。最终,检测结果输出到"hand.txt"文件。
|
2月前
|
测试技术
模型驱动测试:引领软件质量的新潮流
模型驱动测试:引领软件质量的新潮流
24 2
|
3月前
|
存储 XML JSON
开集目标检测-标签提示目标检测大模型(吊打YOLO系列-自动化检测标注)
开集目标检测-标签提示目标检测大模型(吊打YOLO系列-自动化检测标注)
91 2
|
4月前
|
机器学习/深度学习 搜索推荐 算法
推荐系统离线评估方法和评估指标,以及在推荐服务器内部实现A/B测试和解决A/B测试资源紧张的方法。还介绍了如何在TensorFlow中进行模型离线评估实践。
推荐系统离线评估方法和评估指标,以及在推荐服务器内部实现A/B测试和解决A/B测试资源紧张的方法。还介绍了如何在TensorFlow中进行模型离线评估实践。
198 0
|
14天前
R语言估计多元标记的潜过程混合效应模型(lcmm)分析心理测试的认知过程
R语言估计多元标记的潜过程混合效应模型(lcmm)分析心理测试的认知过程
33 0
|
24天前
|
人工智能 搜索推荐 算法
人工智能,应该如何测试?(七)大模型客服系统测试
这篇文稿讨论了企业级对话机器人的知识引擎构建,强调了仅靠大模型如 GPT 是不够的,需要专业领域的知识库。知识引擎的构建涉及文档上传、解析、拆分和特征向量等步骤。文档解析是难点,因文档格式多样,需将内容自动提取。文档拆分按语义切片,以便针对性地回答用户问题。词向量用于表示词的关联性,帮助模型理解词义关系。知识引擎构建完成后,通过语义检索模型或问答模型检索答案。测试环节涵盖文档解析的准确性、问答模型的正确率及意图识别模型的性能。整个过程包含大量模型组合和手动工作,远非简单的自动化任务。
42 0
|
24天前
|
机器学习/深度学习 人工智能 文字识别
|
2月前
|
Java
java面向对象高级分层实例_测试类(main方法所在的类)
java面向对象高级分层实例_测试类(main方法所在的类)
11 1

热门文章

最新文章