测试分层主要分为哪几层

小编 1141

测试分层主要分为三层:1.UI层(端到端测试);2.service/api层(接口测试);3.unit层(单元测试)。针对上述三种测试分层类型,对应的有三种分层测试模型,分别是冰淇淋模型、金字塔模型和橄榄模型。

1.UI层(端到端测试)

UI层的主要测试对象是展示和交互,简单理解就是“端到端测试”。

冰淇淋模型就是一种以UI测试为主的分层测试模型,其主要特点包括:一,绝大多数测试用例使用UI进行测试保证端到端测试的完备性;二,有一定的服务级的接口测试;三,单元测试少。

以UI测试为主,就意味着系统必须充分开发完成并且正确部署之后才能进行测试,测试的开始时间相对滞后,面临着测试时间不充分的风险。同时,代码改动的影响很难名列前茅时间得到发现和评估,影响范围不清晰,对应的测试无法较好地保证。

2.service/api层(接口测试)

service/api层的测试对象是模块和接口,又被称为“接口测试”。

橄榄球模型就是以接口测试为主的分层测试模型,其特点就是将测试的重心放在接口级的测试上,并提倡高度自动化;同时,单元测试和UI测试适中,保持平衡。由于,该模型将分层做了一定程度的性价比平衡,因此可作为目前的优异实践来参考。

3.unit层(单元测试)

unit层主要的测试对象是函数或方法,又被称为“单元测试”。

金字塔模型是一种以单元测试为主而UI测试相对较少的分层测试模型,其主要特点有:单元测试充分;接口级的测试较多;UI级的测试少,通常只是用户验证。该模型对开发人员的测试能力要求很高,质量控制基本成为开发的本职工作。

由于单元测试和接口测试为主,自动化覆盖度度高,稳定周期短,利于持续集成。而且单元测试和接口测试运行速度快,回归测试很快。

延伸阅读

分层测试有哪些优点?

分层测试的核心思想是:针对有明确分层设计的软件系统,采用白盒测试的技术,在层与层之间验证接口的正确性。分层测试以调用接口驱动被测系统,尽量不依赖于打桩。在应用实践中可以发现,分层测试有如下优点:

1.精准

我们都知道,离问题产生的地方越近,就越容易触发问题。如果问题发生在底层,以白盒测试的方法,很难精确打击,特别是一些复杂场景或异常流程,可能无法构造。而分层测试的切入点就是层与层之间的接口,从机制上更接近出问题的地方,因此也更容易命中目标。

2.低成本

这个优势源于可测试性。举例来说:我们要测试Android系统下拨号的性能,黑盒怎么测呢?测试人员需要打开秒表,同时进行拨号的操作,并观测电话是否拨通。操作麻烦不说,误差也很大。

如果用分层测试的方式,只要提供拨号和检查是否拨通两个对外开放的接口,通过用例脚本调用,并记录两者的时间,就可以方便准确地得到耗时。更进一步,我们还可以在不同层次的接口调用时均记录下时间,在脚本中直接对各个环节的耗时进行分析,从而自动分析流程的瓶颈,找到影响性能的关键环节。

再回过头来看前面提到的尽量避免打桩的建议,也是考虑到成本。打桩是白盒测试最困难的部分,特别是涉及到复杂的数据类型或者系统内部状态。因此很多开发同事不愿意使用UT。分层测试重驱动弱打桩,测试脚本主要还是运行在真实的测试环境中,这样就避免了打桩上的投入,也更接近开发的调试手段。

3.效率高

这里是指用例执行速度快。首先自动化测试的速度就明显优于手工测试,基于API调用的自动化又比UI自动化要快,分层测试的高效就建立在API调用高效的基础上。从我们收集的数据来看,相同的用例,手工执行的耗时平均在5-8分钟,UI自动化一般也需要1-2分钟,而分层测试通常10-20秒就完成了,效率提升达10倍。

4.保持稳定

客户需求是易变的,内部实现也是易变的,但是层与层之间的接口是不同开发人员之间的约定,通常会尽量保持稳定。这里也有一组

实践数据:从Android 4.2到Android 4.4,设计的JNI层用例变更不到10%,而针对APP界面开发的用例,变更率高达40%。

5.尽早测试

尽早测试是敏捷所提倡的,目的是把问题拦截在前端,降低问题修复成本。由于分层测试不依赖于完整系统,可以通过直接调用底层接口进行测试,就不需要等到整个系统开发完成。其实分层测试的思想和自底向上的系统开发模式也是不谋而合的。

回复

我来回复
  • 暂无回复内容

站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部