多测师是一家拥有先进的教学理念,强大的师资团队,业内好评甚多的接口自动化测试培训机构!

17727591462

联系电话

您现在所在位置:接口自动化测试培训 > 新闻资讯

分层的自动化测试

更新时间:2022-01-04 09:34:21 作者:多测师 浏览:250

  测试金字塔(Test Pyramid):其实分层的自动化测试就是指测试金字塔。

  迈克科恩在2009年《 Succeeding with Agile 》中对此进行了描述,并称为“测试自动化金字塔”。最早是一个包含UI/Service/Unit三层的金字塔,后来Lisa Cripin在《agile testing》中给塔加了一个手工测试的帽子,后来随着敏捷测试的推进,帽子部分转变为探索式测试。马丁福乐在2012年也在他的博客中对测试金字塔进行了描述,主要是增加了对成本和速度箭头的想法。还有 Alister Scott提出的测试金字塔。

  Unit层(单元自动化测试),测试金字塔最底层,投入与产出都是最大的层级,主要有单元测试、代码审查等可以实现自动化。这个层级的东西应该是开发人员做的事情。

  单元测试是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数、Java中单元指一个类、图形化的软件中单元可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块单元。规范的进行单元测试就需要借助单元测试框架,如Java语言的Junit、TestNG,C#语言的Nunit。

  Code Review 中文翻译为代码评审或代码审查,是指在软件开发过程中,通过对源代码进行系统性检查的过程。通常的目的是查找系统缺陷,保证软件总体质量和提高开发者自身水平。与Code Review相关的插件与工具有很多,例如Java语言中基于Eclipse的Review Clipse和Jupiter、findbugs等。

  Service层(可以叫做集成测试也有叫接口自动化测试的),测试金字塔居中的位置,投入与产出居中的价值位置。由于所有的应用程序都存在于其他部件(与其他应用程序的网络调用、数据库、文件系统)集成在一起,集成测试就是测试应用程序与应用程序内外的所有部分的集成内容。也可以理解为接口测试,对于接口测试分为:

分层的自动化测试

  模块接口测试,主要测试模块之间的调用与返回。也可以将其看作是单元测试的基础。它主要强调对一个类方法或函数的调用,并对返回结果的验证,所用到的测试工具与单元测试相同。

  Web接口测试又可分为两类:服务器接口测试和外部接口测试。

  服务器接口测试:指测试浏览器与服务器的接口。Web开发一般分前端和后端,前端开发人员用HTML/CSS/JavaScript等技术,后端开发人员用PHP/Java/C#/Python/Ruby等各种语言。用户的操作是在前端页面上,需要后端提供服务器接口,把前端通过调用这些接口来获得需要的数据,通过HTTP协议来实现前后端的数据传递。

  外部接口测试:指调用的接口由第三方系统提供。典型的例子就是第三方登录,例如新上线的产品为了免于新用户注册账号的麻烦会提供第三方登录,那么用户在登录的时候调用的就是第三方登录的接口,用户登录信息的验证由第三方完成,并返回给当前系统是否验证通过。

  UI层(E2E Tests),处于测试金字塔的塔尖,相对来说投入产出比最小。

  UI层是用户使用该产品的入口,所有功能都通过这一层提供并展示给用户,所以大多测试工作都集中在这一层进行。为了减轻这一层的测试人力和时间成本,早期的自动化测试工具主要针对该层设计。

  除了UI层所展示的功能外,前端代码同样需要进行测试。在前端开发中最主要的莫过于JavaScript脚本语言。测试金字塔映射了不同测试阶段所投入的自动化测试的比例,UI层被放到了塔尖,这也说明UI层应该投入较少的自动化比例。如果系统只关注UI层的自动化测试并不是一种明智的做法,因为其很难从本质上保证产品的质量。如果妄图实现全面的UI层的自动化测试,那么需要投入大量的人力和时间,然而,最终获得的收益可能远低于所投入的成本。因为对于一个系统来讲,越接近用户其越容易变化,为了不断适应这种变化就必然需要投入更多的成本。既然UI层的自动化测试这么劳民伤财,那么我们是不是只做单元测试与接口测试就可以了呢?答案是否定的,因为不管什么样的产品,最终呈现给用户的是UI层的功能,所以产品才需要招聘大量的测试人员进行UI层的功能测试。

  在《Google 测试之道》一书中提到,Google对产品测试类型划分为:小测试、中测试和大测试,采用70%(小)/20%(中)/10%(大)的比例,大体对应测试金子塔中的Unit、Service和UI层。在进行自动化测试中最担心的是变化,因为变化会直接导致测试用例的运行失败,所以需要对自动化脚本进行不断调整。如何控制失败,降低维护成本是对自动化测试工具及人员能力的挑战。反过来讲,一份永远都运行通过的自动化测试用例已经失去了它存在的价值。

  对于测试金字塔,还有一个帽子是探索性测试。

  探索性测试是一种手动测试方法,强调测试人员的自由和创造力,使用破坏性的思维方式,想出办法在被测对象中引发问题和错误,以便在测试对象中发现质量问题。

  就算对于测试金字塔UI、service、unit所有层的自动化都做的极致,由于自动化用例设计或可用性等也不能保证所有某些边缘情景都考虑,发现所有问题也是不可能的事情。所以依然需要有经验的手工测试去补充。让机器做最擅长的重复性工作,让测试人员做一些有挑战的有意义的探索性测试。

  分析测试金字塔,讲的都是理论上的内容,实际的自动化测试实践,大多数情况都变成了倒着的测试金字塔,UI层成了我们投入最多的地方,依次是service层和unit层。

  以上内容为大家介绍了分层的自动化测试,希望对大家有所帮助,如果想要了解更多接口自动化测试相关知识,请关注多测师。https://www.aichudan.com/xwzx/


联系电话

17727591462

返回顶部