详解持续测试

作者阿里云代理 文章分类 分类:linux图文教程 阅读次数 已被围观 638

继续测验


在我开端写这个文章之前,我一向认为继续测验就和继续集成、继续交给、继续布置相同,有明确的阶段性界说的一个概念,当我开端不断的查资料,我得到了无数个继续测验的界说。有的界说清晰,有的界说模糊,每个文章都有自己的界说,那么我讲这些文章的内容的堆叠部分尝试用简单的办法描绘出来,希望能收拾清楚继续测验是什么。


继续测验是什么


提到继续测验,我发现大部分网站顶用的是Tricentis公司的CMO的Wayne Ariola在公司的博客中的Continuous Testing: “Perfect” Software Is not the Goal文章中给出的界说,“继续测验侧重于事务危险并供给有关软件是否能够被发布的决议方案根底。自动化测验关于连续测验至关重要,但它并非全部。自动化测验旨在生成一组与用户故事或应用需求相关的经过/失利数据检查点。而继续测验侧重于事务危险并供给有关软件是否能够被发布的决议方案根底。除了将测验用例自动化,继续测验还包含了比如验证事务危险,应用服务虚拟化和状态化测验数据管理以稳定继续测验;在每个迭代中运用探索性测验来尽早发现阻碍性问题等实践。它不单是意味着运用更多的不同的东西。它要求的是包含技能在内的人和流程的深度改变。”除去这个界说,还有一些引用了Thomas Hamilton在Continuous Testing in DevOps: What is, Definition, Benefit, Tools中给出的“继续测验是DevOps中的一种软件测验类型,它主要是约束在软件开产生命周期任何一个阶段都有对应的测验活动,然后提前的进行频频的测验,这也就完结了在继续交给进程中每一步都有了质量评价活动然后也就完结了继续测验”。除去这两个饮用比较广泛的,还有一些不是界说的界说,就不详细描绘了,我略微收拾一下这些翻译,最中给出的继续测验。


继续测验:在软件交给生命周期进程中,以防控事务危险为目的,将每一个阶段都经过测验活动进行质量保证,并尽最大或许自动化测验活动,并将测验成果不断的反馈给制品进程的测验实践活动便是继续测验。


继续测验有什么


传动的测验和其他团队中的人物有显着的交给进程,交给也是传统IT团队最显着的合作办法,产品司理讲产品将交给给开发团队后,开发团队将开发调试成功的体系交给给测验,测验将经过测验的体系交给神韵。这种瀑布的交给就和当时要求快速交给,快速验证的思路有点相左。


继续测验也就意味的不断的测验、频频的测验,这既包含了要不断的有需要测验的体系,也包含了制品进程中的每一步都要测验。


  • 不断的有需要测验的体系,这也是继续测验给前序制品取得的要求,也便是不断的有体系交给给测验,这也就阐明要完结继续测验的一个条件便是要完结继续交给。
  • 制品进程中的每一步都要测验,是指需求部分的质量保证活动、开发阶段的测验活动以及QA部分的测验活动,乃至上线后的质量保证活动



继续测验怎么做

image.png


  • 继续集成(Continuous Integration,CI)是指在开发人员提交代码更新后,就立刻对体系进行构建和测验(此阶段最常出现的是单元测验),然后经过测验来确定新提交的代码和原有代码之间是否能够正确集成到一同(也便是集成到骨干)。继续集成能够快速发现分支问题,防止分支严重偏离骨干。继续集成旨在完结高质量的快速迭代,是一种快速发现缺点而非处理缺点的手法。


  • 继续交给(Continuous Deliver,CD)是指定时或按需将被测体系的最新版本交给测验人员或用户,目的是对体系进行评估、评定或测验,也便是依照必定的需求将最新版本的代码不断发布到测验环境中。继续交给其实能够看作继续集成的下一步。继续交给着重的是被测体系能够随时随地交给,这决议了任何新版的被测体系都必须依照必定的需求具备可交给性。


从上面的继续交给的界说能够看出来,只要团队完结了继续交给才有或许完结继续测验的一个部分的内容,这也就牵出了关于交给流水线的要求,每逢开发人员checkin代码的时分,像 Jenkins 这样的流水线东西会线履行静态代码扫描、单元测验。 假如扫描成果、单元测验成果、测验代码掩盖度都满意了逾期要求,那么构建经过测验,则将其布置到QA环境中,然后调用单接口自动化测验、事务场景接口自动化测验、自动化UI测验完结自动化测验验证,经往后通知测验工程师进行探索测验。这个进程便是在继续交给根底之上的继续测验。这些都是需要DevOps流水线才干支撑的。



在制品进程中的每一步都要有测验活动,这主要是包含了上面依据继续交给的测验活动,还包含了测验左移和测验右移。


测验左移

“测验左移”的概念最早出现在Arthur Hicken宣布的文章中。Arthur Hicken提出:为了补偿瀑布模型的缺乏以及防止测验作业成为体系交给前的最后且唯一的质量保证手法,测验应左移并贯穿于项目的整个研制生命周期。这也阐明测验工程师在项目的需求剖析阶段就应该参加相关活动,然后在需求剖析阶段就站在测验角度补充各种AC(Acceptance Criteria,检验原则)。从需求剖析开端到测验事务剖析,再到测验用例规划、测验履行以及测验定论总结,都应由同一名测验工程师完结。在此进程中,这名测验工程师能够不断地了解需求并协助弄清需求。


测验工程师经过在需求剖析阶段就开端参与相关活动,能够更早地协助发现体系在规划之初就存在的事务逻辑缺点、运用缺点及交互缺点,然后将一些有或许出现在体系中的缺点在体系开端开发之前就处理掉,防止团队投入的浪费,进步团队的投入产出比和交给效率。此外,当研制工程师开端开发体系时,测验工程师就能够同步完结测验用例的规划。在这里,测验用例的规划并不是像传统办法下那样依照体系的操作步骤规划测验用例,而是依照事务流程的整理成果规划测验用例。这种更深化的参与和了解能促进测验工程师取得产品的完整常识,完全想清楚各种场景,并依据软件行为规划实时场景。以上这些都能协助团队在编码完结之前识别出一些缺点。测验左移聚焦于使测验人员在最重要的项目阶段就参与进来,使测验人员把关注点从发现缺点转移到危险预防,然后防止一些技能危险和事务危险,一同驱动完结项目的商业方针。


当测验团队不断实践测验左移时,质量文化便会在整个团队中不断地树立并扩大,大家不会再将质量保证等同于在测验中发现缺点,而是一同参与各个环节以防止事务危险和技能危险的产生,促使团队的所有成员都积极合作,在项目的初始阶段就为满意事务需求以及防止事务危险展开作业。测验工程师为树立有效的测验战略不断努力,并在测验战略的指导下防止事务危险和技能危险,使整个团队聚焦于产品的长期价值和牢靠性。


在实践测验左移时,发起在需求进入迭代方案之前就讨论每一张需求卡片,参与每一个需求的AC讨论。研制工程师在开端完结需求之前,需要将自己的了解结合需求卡片的AC详细地讲解给测验工程师和产品司理,大家达到共同后,研制工程师进入编码阶段,测验工程师进入测验用例准备阶段。体系开发完之后,研制工程师再次将自己完结的体系依照需求卡片上的AC要求演示给测验工程师和产品司理,假如一切都不存在歧义,则进入测验阶段。测验工程师在依据一些常规的测验用例规划办法补充异常用例后,就能够开端测验了。在整个进程中,团队都以交给高质量的项目为中心,而不再运用缺点数、测验用例数、代码行数等不科学、不客观的查核目标。


测验右移


测验右移是指相关于测验左移而言的,测验右移是制品发布到出产环境之后,进行的一些测验活动,但是这里的测验活动并不是咱们常说的测验活动,而是经过一些环境监控、事务监控、APM等一些手法对服务的可用性、稳定性等的一些考量,然后完结一旦发现出产环境的问题,尽快将问题露出给制品团队进行快速修正,给用户杰出的体会。


在Ops的穿插

右移,便是移动到出产环境,这也就决议了在该部分的测验活动和咱们常说的测验活动就有着许多的差异。那么在出产环节的测验活动和咱们实际的测验活动就会有许多差异了。在传统的测验人物分工中,出产环境的负责人是咱们的Ops同学,Ops的中心作业理念是“稳”,这就和咱们测验中的快速验证,快速修正的一些办法有些抵触了。既让有一些差异,又如何右移呢?


测验的右移不是仅仅说的是去出产环境进行测验活动,当然也是又一些能够在出产环境的测验活动的,咱们一会再文中也会详细阐明。测验右移不是和Ops同学的抵触,而是利用了Ops的一些技能渠道给咱们一些判断的输入来源,然后再结合测验原有的一些技能沉积,完结服务质量的保证作业。


  • 利用运维技能渠道:能够充分利用Ops同学供给的监控渠道、日志渠道等数据,监控数据的live状态,然后更早的发现出产环节的问题,并将对应问题的一些留痕数据(日志信息、监控数据等)记录到缺点体系中,辅佐处理对应出产缺点(假如形成损失也或许是故障)
  • 利用自动化测验:能够利用自动化测验手法为出产环节供给事务正确性的巡检功用,这样能够在Ops保证服务Live的根底之上,自动化测验模仿的事务逻辑又能保证事务的live,这样也是监控分层的一种思绪。


PS:任何的层级处理方案,都是为了补偿层级之间的一些空隙而规划的。


经过出产数据反哺测验左移


用户运用体系的行为有或许并不是依照这个咱们预期的办法来进行的,因而咱们需要在右移的环节中,经过一些前端埋点等技能,留痕实在用户的运用办法、喜爱等然后能够在测验左移的时分反哺事务需求,这样就能够将许多右移中取得的有价值的内容,在左移进程中落地完结,然后最大化保证从事务到需求的环节。


当然假如要完结反哺测验右移,必需要完结真实的灵敏测验,而不是仅仅是穿戴灵敏外衣的伪灵敏实践。


出产环境的测验

尽管出产环境是以稳定为前提的,但是也是有测验技能手法能够在稳定前提下能够施行的。


  • 全链路测验:全链路测验是经过流量录制回放技能,再出产环境完结的测验技能。当然要施行出产环境的全链路测验并不是测验工程师的事情,这需要对SUT做全套的技能改造,详细能够详细学习一下全链路测验的文章。


  • 灰度环境:有了灰度环境就有了能够在部分环境先上线,然后进行一些测验活动或者实验活动。


- AB测验:AB测验有或许在用户增长范畴比测验用的更多,但它也是一种出产环节的测验验证活动,因而咱们也把他放到这里。


测验右移的重点落地仍是QA,那么这个QA既是质量保证(Quality Assurance),也有质量剖析(Quality Analysis),更有质量倡导(Quality Advocate)。




继续测验的收益


  • 加速软件交给
  • 进步制品的质量
  • 它有助于评估准确的事务危险掩盖率。
  • 和DevOps流水线一同坚持即快又好的完结事务交给
  • 有助于在数小时内创立敏牢靠的流程。
  • 经过继续反馈机制加速产品上市时刻。
  • 消除产品、开发、测验和运维之间的脱节。
  • 测验自动化为所有相关测验保护相同完结共同性。
  • 着重事务价值交给
  • 随用随取的测验环境管理和一致的测验数据管理渠道
本公司销售:阿里云新/老客户,只要购买阿里云,即可享受折上折优惠!>

我有话说: