您现在的位置是:主页 > 凤凰娱乐app怎么注册 > 【专家视角】自动化测试金字塔与反模式

http://seobjetivo.com/xsdg/351.html

【专家视角】自动化测试金字塔与反模式

时间:2019-08-14 23:01  来源:未知  阅读次数: 复制分享 我要评论

  由内容质量、互动评论、分享传布等多维度分值决定,勋章级别越高(),代表其在平台内的分析表示越好。

  原题目:【专家视角】主动化测试金字塔与反模式

  主动化测试金字塔与反模式

  中国金融期货买卖所 陈冬严

  本文引见主动化金字塔以及两种主动化测试的反模式(蛋筒冰激凌、纸杯蛋糕)中具有的问题与发生的缘由,并借助经济学阐发,简要引见了一种适合独立测试团队主动化实施的改良模式-橄榄模式。

  一、主动化金字塔

  主动化金字塔最早是在2009年由Mike Cohn提出的。最早提出来的时候是一个三层的金字塔,从上到下别离是UI/Service/Unit测试。后来Lisa Cripin 在她出名的《agile testing》 [1]这本书中,又给这个金字塔加了一个手工测试的帽子。跟着火速测试的不竭推进,帽子部门又改变成了摸索式测试,如图1所示。当然service层能够也理解为 API测试,或者集成测试等等。这种下宽上窄的三角形布局,代表着各层主动化的投入分派该当是底层的单位测试最多,接口测试居中,UI层起码。

  图1主动化金字塔(火速测试)

  主动化金字塔提出之后,几乎为奉为圭旨,以至还一度呈现了共同火速转型,大规模裁撤独立测试部分,将人员打散并入各个Scrum团队的风潮。但在现实中,真正能持久通过TDD等实践鼎力成长单位测试,建立不变的主动化金字塔的团队是少之又少。

  别的,有些主要的决策消息并没有在金字塔模式中表现。如从每个用例的价值来说,手工或者UI层的用例价值最高,越往下越低。这里的价值,能够是用例带来的质量决心,也能够是每个用例所笼盖的代码行数等等。而且自上而下,用例也是逐渐从面向营业过渡到面向手艺。

  二、蛋筒冰激凌模式(反模式)

  Alister Scott 在2012年提出了蛋筒冰激凌(ice cream cone)这一反模式[2]。从图形上看,这其实是一个倒置的主动化测试金字塔。这个模式的特点就是,整个组织的主动化测试次要仍是针对于用户界面,对于单位测试和集成测试用例的数量或者投资要少很多。更为恐怖的是,这个冰激凌桶上面有一大坨手工用例。这个冰淇淋吃起来,估量远不如哈根达斯或者暴风雪那么好的口胃了。

  图2 主动化冰激凌

  这一模式中复杂的手工用例数量,反映了工程团队对于主动化测试投资的不足。很多起头投资主动化测试的团队,为了能尽快产出结果,获得收益,就采纳了一些短平快的办法,从最容易上手的用户界面起头。在保守的商用软件供应商或者某些新兴的SAAS办事供给商的系统中,往往用户界面中包含有很是多的营业逻辑,他们的测试团队过往次要依赖于通过手工测试来完成其营业的测试,评测产物的质量,因而其主动化测试的投资重点和方针,也往往是逐渐提高现有手工测试用例的主动化替代率。这是一种很是典型的路径依赖,由此发生的成果就是,团队对于底层的主动化测试方面的关心相当不足。

  三、纸杯蛋糕模式(反模式)

  若是说蛋筒冰激凌模式还只是反映了主动化测试在测试类型和投资分派上的问题,那么来自ThoughtWorks的Fabio Pereira于2014年提出的纸杯蛋糕模式(Software Testing Cupcake)[3]这一反模式就反映出了很多更深条理的问题。

  图3 主动化纸杯蛋糕

  从图形上看,这个团队的主动化测试投资在各个类型间的分布愈加的合理。集成测试或者接口的数量比拟蛋筒冰激凌模式来说大了很多,单位测试的规模也有较大增加。在引入火速和全员质量的认识之后,工程团队也愈加注重测试和产质量量,于是测试用例可能来自于以下三个团队:

  - 开辟团队编写单位测试、集成测试和组件测试用例

  - 主动化测试团队编写UI主动化测试用例

  - 手工测试团队编写手工运转的测试用例,以系统集成测试/营业场景测试为主

  按照提出者的引见,纸杯蛋糕模式的构成缘由,次要是由于开辟和测试团队分属分歧部分,两者两头有着厚厚的部分墙。从团队协作的角度上来讲,由于墙的具有,这些团队都各自为政,相互间并不克不及很无效地协作。在测试的级别/类型/场景划分上,这三个团队是相互没有协同的。如许就必然导致某些反复工作,有些用例被频频地进行主动化;而另一方面,质量拼图不完整也是不完整的,具有裂缝和缝隙,成果必然是1+1+13。

  从流程上来讲,测试工作也仍然是顺次线性发生的,而不是同步的。起首,开辟编写代码以及对应的测试用例;然背工工测试者设想并运转本人编写的用例;最初,主动化测试团队编写UI主动化测试用例并施行。这个场景可能某些读者很是熟悉,这就是很多声称曾经火速化的团队的工作模式,在Scrum的流程中照旧利用保守的瀑布式开辟模式。他们的Scrum模式,有同业给取了个名字,叫做Scrummerfall[4] 。

  当然,良多时候固执于部分间职责的切分,有些很好的建议,在现实中比力难以展开。如利用垂直分布的主动化测试怀抱方针,实现针对某个story或者某个发布在所有级别(UI, Unit)上与所有团队(开辟、测试)进行共享。由于怀抱方针是分享的,更容易达到双赢和互相补位的成果。而现实中,有些Scrum团队的工作DOD(Definition of Done,完成的定义)并不包含测试团队或者测试人员的交付物。当在看板里把一个story置为“Done”的时候,那么很可能只是Dev Done(开辟完成),然后交付给测试去实现“Test Done”(测试完成)。别的,出于专注于本职工作,做精做细功能和非功能测试的考虑,一般独立的测试团队也很少去参与开辟团队的测试,更不要说配合切磋若何分享测试资本、怀抱方针了。

  四、橄榄模式(不倒翁模式)

  家喻户晓,软件测试的边际成本会跟着缺陷探测率的提高而提高,这就是软件测试的根基公理之一测试的不成穷尽性的经济学表现。这一纪律也合用于主动化测试,也就是说跟着主动化笼盖率的提拔,主动化的成本也呈现指数式上升。按照这个思绪进行拓展,能够阐发下单位测试,集成测试和UI测试的主动化成本曲线所示。与凡是理解的分歧,为了达到不异的主动化率(x0),UI的成本最高、其次是API,Unit则最低。

  经济学中有别的一个出名的理论叫做边际效益递减。当做一项投资,跟着投资量的添加,单元投资增量所带来的单元收益是越来越少的,以至在某个临界点之后,这个收益有可能是负数。而这个零界点,就是投资收益最大的点。在这个点之前的所有投资,都能够扩大总收益,而在跨越之后继续进行投资,就不那么明智了。

  图4 主动化成本/收益曲线

  按照这个思绪,在图4上,针对三种分歧类型的主动化测试,能够获得三个零界点。而总收益最大的点在集成测试上,随后是单位测试,UI测试则最低。

  若是从测试结果上看,接口测试和UI/单位测试比拟,有良多劣势。 对于单位测试来说,凡是单位测试是针对代码进行的测试,而接口测试是在测试一个活的,颠末摆设的系统。 别的,单个接口测试与单个单位测试用例比拟,也能够笼盖更多的代码。更主要的是,接口测试也能够是面向营业的测试,通过接口进行营业层面的测试。

  而比拟UI主动化用例,接口测试愈加的简单间接,施行效率更高。 除了部门如企业级使用软件,可能良多营业在前端进行之外,良多环境下,绝大部门通过UI完成的营业操作完全能够通过API端完成。某些环境下,API的测试前提笼盖率以至能够多过UI。

  分析上述的阐发,笔者认为在在主动化测试的初级阶段,适合奔小康的测试团队的主动化模式该当是两头层的接口最大,两头的UI和Unit测试适度实施。从图形上看,就是一个橄榄型。若是再加上一部门的手工测试,那就是一个不倒翁了,如图5所示。

  图5 橄榄模式(不倒翁模式)

  按照这个模式,将大部门主动化投资用于接口测试,能够获得最高的投资报答。再连系持续测试与持续集成等最佳实践,在团队之间相互共享测试用例、测试框架或者平台,通过接口测试这一承先启后的测试类型,能够自下而上地逐渐翻越过纸杯蛋糕模式中的那堵墙。

  [1].火速软件测试:测试人员与火速团队的实践指南[美]克里斯平(Lisa Crispin) 等 著;崔康 译 清华大学出书社

  [2].蛋筒冰激凌模式

  答复N1~N4,查看新版季刊第1期~第4期

  答复6~13,查看改版前季刊前往搜狐,查看更多