去哪儿网全流程自动化测试平台设计与实现原理分享~
- 编辑:admin - 点击数:110去哪儿网全流程自动化测试平台设计与实现原理分享~
前语
在当时软件开发历程中,怎么确保体系的安稳性和质量一直是一个重要的应战。特别是关于杂乱的事务体系,触及多个流程和多个端,怎么全面验证其功用和功用,并发现和处理潜在问题,成为了一个要害需求。因而,构建一个能够串联多个事务流程、掩盖多个端的全流程主动化测验渠道,关于进步体系的安稳性和质量是至关重要的。本文将介绍布景、现状剖析、详细完结和运营机制等方面,协助读者全面了解和了解该渠道的重要性和完结原理。一、界说(一)布景1.毛病剖析:报价发布,导致儿童票购买失利率上涨到80%
先容易介绍一下咱们机票的事务流程,机票的事务流程首要分为查找流程和买卖流程。查找流程包含list和product,用于供给航班信息;买卖流程包含booking和生单,用于完结机票预定。
在事务层级上,报价体系在查找流程给主体系供给航班信息,当用户在主体系中进行航班查找时,主体系将向报价体系发送恳求,恳求获取契合用户查找条件的航班信息和相应的价格。
毛病改动首要是对报价进行数据精简,并更换了传递儿童报价信息的节点。因而,依据现在的主动化验证接口成果来看,不回来老节点数据是契合开发预期的。一起,该问题在查找流程的验证中也没有问题。但是,在生单环节,购买儿童票时运用了查找流程传递的老节点数据,因为老节点没有数据,导致儿童票购买失利。因而,报价精简字段项目发布后,儿童票购买失利率上涨到80%。
(二)现状剖析
1.剖析现有接口主动化经过对咱们现有的接口主动化进行剖析,发现现在事务流程之间是独立验证的,而每个事务模块也是彼此独立验证的。但是,实践上咱们的事务流程是彼此依靠的,而且存在参数传递的状况。
独立验证的办法无法全面捕捉到各事务之间的依靠联系及其彼此影响。特别是在参数传递方面,若某个事务模块传递的参数与其他事务模块的预期不符,会导致过错和反常的发生。
2.剖析前史全体毛病在剖析咱们机票22年代码问题导致的毛病中,发现其间25%的毛病是因为流程验证不全所引起的。进一步细分,其间67%的流程验证不全问题是在APP端导致的,而剩余的33%则是在非APP端导致的。
从这个数据能够看出,流程验证不全是一个重要的大类问题。
(三)方针规模依据对毛病的详细剖析,咱们清晰了全流程主动化渠道的方针:构建一个能够串联流程、掩盖多个端,而且能够主动化验证国内机票主流程的P1/P2服务的渠道。
经过完结这个方针,咱们将完结事务流程的全面验证,然后进步体系的安稳性和可靠性,削减毛病和线上问题的发生。
二、丈量
1.衡量方针经过对上述方针的衡量,咱们能够全面了解渠道的功用和作用,并为后续的优化和改善供给依据。在实践运用中,咱们将继续监测和评价这些方针,并依据成果来优化渠道的功用和功用。
三、详细完结在完结全流程主动化时,分为两个首要方面:渠道建立和达到丈量方针。下面将详细介绍这两个方面。
(一)完结渠道建立
渠道建立是完结全流程主动化测验建造的榜首步,首要包含四个部分的完结:用例获取、流程串联、成果验证和质量门禁。
全体方案:
1.榜首部分:case获取
为了实在复原用户场景,咱们挑选从线上获取case,在主体系模仿用户进行掩盖多个端的流程串联,以完结完好的流程串联。
那么,咱们应该从哪个流程开端匹配case?怎么挑选满意条件的case?找到的case应该怎么进行存储?
1)Case匹配
在机票的事务流程中,一切的用户都会经过完好的流程并终究拜访order页。order页会汇总主流程的一切信息,例如用户在list页挑选的航班以及在booking历程中购买的产品,都会在order页上体现出来。
而且,在咱们的事务恳求参数中添加了一个名为preqtrace的字段,用于记载每个中心接口的前序恳求的qtrace(一个标识符)。
因而,咱们能够在order页面,经过匹配前序恳求的qtrace,来串联一次用户恳求的要害数据。
2)Case挑选有了case匹配的方针,必定少不了对case匹配方针的挑选。咱们供给了一个页面给用户填写须要对case挑选的规矩。在不同的场景下能够创立不同的规矩,一个场景下的一切规矩将会又乘起来构成checklist,只要case满意此场景的checklist时才认为是契合此场景的case。经过对日志中的恳求参数和回来节点装备过滤条件,能够适配不同事务接入,包含不同的事务场景和端。一起,也为不同的事务场景供给定制化的逻辑处理。这样的灵敏性使得体系能够习惯多样化的事务需求。
3)case存储case存储首要分为三部分,包含过滤规矩存储、流程日志存储和满意匹配条件后的流程参数存储。
在过滤规矩存储中,咱们将不同场景的规矩进行存储,以便后续进行匹配和处理。
而流程日志存储部分则是将每个流程的恳求参数依照qTrace作为key,存储到MongoDB中。考虑到数据量巨大的状况,咱们会对数据进行过期处理,即删去超越用户操作最长途径时长2小时的数据。
而满意匹配条件后的流程参数存储,则是在用户进入order页面时,经过判别是否满意规矩装备,假如满意,则依据前序qTrace去流程日志存储的MongoDB中,获取前序每个流程的恳求参数,并存储到es中进跋涉一步处理和运用。
以上便是case存储的首要流程和存储机制
2.第二部分:流程串联
在完结了全事务流程和多端掩盖之后,咱们的体系也能够灵敏地支撑不同的事务流程串联。
1)掩盖全事务流程
在软路由环境串联流程,咱们能够无需mock数据即可串联整个流程,完结了全事务流程的高安稳性。
2)掩盖多端
不管用户是APP端,pc端仍是其他办法发送恳求,它们都将经过主体系进入流程。主体系将解析恳求的参数、途径等,并依据这些信息来确认须要履行的详细事务逻辑。
经过从主体系作为进口,咱们能够掩盖多种不同的端和模仿用户恳求。一起主体系能够供给共同的恳求处理流程,能够方便地对不同的端进行扩展和添加新的功用。
3)灵敏支撑不同事务流程
经过装备,咱们能够依据详细的事务需求,组合和串联不同的事务流程。每个流程的参数传递和履行逻辑都能够经过接口进行自界说。这意味着,咱们能够依据实践需求,彻底自主地调整和装备流程的履行规矩和次序,将容易的事务流程或许杂乱的多环节流程组装成一个完好的流程。
3.第三部分:成果验证
1)常用验证办法断语和diff是常用的成果验证办法,它们各有优劣势。
断语的优势在于其容易直观、精准验证成果的精确性的特色。但是,断语依靠详细值,保护本钱高。相比之下,Diff的优势在于其灵敏自习惯、可视化展现以及动态比较的才能。但是,Diff的杂乱度较高,可读性有限。
2)全流程主动化验证机票事务的杂乱和迭代速度快,咱们须要选用diff的办法,但是,diff东西有时会出现问题,当基准环境中的失利是由流程串联引起的,而软路由环境中的失利是由代码问题引起的时期,两个失利的diff成果可能会得到一个共同的成果。因而咱们须要先验证流程串联是否成功,再验证代码逻辑修正是否有问题;所以全流程主动化成果验证选用diff+断语的办法。
4.第四部分:质量门禁在质量门禁方面,咱们的方针是经过相关项目进行质量操控,并完结可主动或手动触发的主动化流程。为了完结这一方针,咱们须要进行以下过程:
相关项目:将质量门禁与相关项目进行相关,确保每个项目都能进行质量操控。
主动触发:为了确保项目质量,咱们能够主动触发主动化流程。例如,开发完结或提测项目后,会主动履行质量门禁流程。这样能够及时发现和处理质量问题。
手动触发:除了主动触发外,还应该供给手动触发的选项,以便开发人员在须要时能够手动运转质量门禁流程。这样能够满意特定需求或针对单个问题进行质量操控。
成果主动告诉:当质量门禁完结后,体系能够主动发送告诉给相关人员,这样,能够及时了解门禁成果,以便采纳相应的办法。
(二)达到丈量方针
1.case有用
跟着事务改变,存储的case发生改变后是不可用的;首要的应对战略是Case安稳性进步和新鲜度确保
1)Case安稳性进步case安稳性的进步是从事务维度和数据维度两方面来做的:
2)Case新鲜度确保
先确保case量满意,再运用滑动时刻窗口完结case的新鲜度
2.流程安稳
为了流程的安稳性,从体系维度采纳了以下办法:
失利重试机制:在履行Case时,假如遇到失利的状况,能够进行主动的重试操作。重试机制能够经过设定重试次数和重试距离来避免单次失利影响整个测验流程的安稳性。
流量并发约束:对体系的相关接口或功用进行流量并发约束,避免过多的并发恳求导致体系溃散或功用下降。能够经过调整并发约束战略、添加缓存战略等办法来进步体系的安稳性。
3.diff降噪
关于数据搅扰的问题,能够经过降噪操作来下降搅扰率,以进步成果Diff的精确性。以下是几种降噪的办法:
疏忽特定差异:假如已知某些特定的差异不会对比较成果发生严重影响,能够将其标记为可疏忽的,一起支撑项目维度的疏忽。
经过率设置:依据详细状况和事务场景装备其经过率,以满意不同场景下成果Diff的精确性要求

四、运营机制
(一)运营办法(二)运营方针运营方针首要是依据咱们衡量标准来运营保护的
方针名
方针值
case掩盖率
90%
case经过率
90%
履行时长
10min
使用掩盖度
100%
项目越过率
5%
(三)全流程主动化测验渠道运营数据
以下是咱们全流程主动化测验渠道现在的运营数据
五、未来打算
为了进步咱们的全流程主动化渠道的功用和效能,咱们拟定了以下的后续打算,首要包含继续进步case掩盖率和履行并发功用、简化和可视化流程装备,以及支撑世界主流程串联。
总结
作者介绍王慧钧,去哪儿网QA,现在在机票QA团队作业,首要担任的是机票主体系事务的质量确保和功率进步。
出处: