马蜂窝大交通事务质量体系建造开端实践

发表于:2019-06-17来历:weixin作者:孙海燕点击数: 标签:质量体系
翻开一个互联网公司招聘网站,查找「测验工程师」岗位时,你会发现简直悉数 JD 都包括一条要求「建造或许参与建造所担任事务的质量体系」。那么,是不是谈到质量确保就仅仅测验

质量是决议产品能否成功、企业能否继续展开的要害因素之一。怎么做好质量体系建造,这是个比较大的论题,包括的规划很广,也没有固定的衡量标准。

翻开一个互联网公司招聘网站,查找「测验工程师」岗位时,你会发现简直悉数 JD 都包括一条要求「建造或许参与建造所担任事务的质量体系」。那么,是不是谈到质量确保就仅仅测验团队的责任?测验团队在这个过程中怎么发挥价值?本文将结合马蜂窝大交通测验团队在质量体系从无到有建立过程中的实践,来谈一下对质量体系建造的观点和了解。

质量办理的常见误区

在谈到质量办理的时分,许多团队在开端时会简略进入几个误区:

测验环节再重视

在实践项目中,许多时分都在测验阶段才发现许多完结类 bug测验人员每天拉着研制修 bug;要么就是在挨近上线的时分发现了一个严重问题,导致修正验证时刻不行,但又只能「硬着头皮」上线。质量确保是要贯穿项目实施从需求提出到研制到测验全阶段的,假如到测验环节才来重视,现已晚了。

质量确保是 QA 的事

有了杰出的质量咱们才干进步用户体会和留存率。和第一个问题相相似,许多人会以为质量仅仅 QA 的事,和其他人物没有太大的联络。而实践上,软件的质量是在整个研制过程中逐渐构成的,离不开 QA 团队,但只靠 QA 团队重视肯定是不行的,事务中的悉数人物都需求进步质量认识:开发要增强自测;产品要提早规划和测验好要上线的内容,当在质量和上线时刻发作抵触时应该首选质量;运营同学对自己装备的运营页面要通过测验后再上线等等。

测验人员不需求懂代码

在开发快速迭代的环境下,对测验作业的技能要求越来越高,测验和开发之间的协作愈加快速严密。全手艺测验的办法首要有两个问题,一是时刻本钱高,无法满意当时快速迭代的需求,而且简略犯错;二是测验人员自身的技能水平得不到进步,成长性受限。

除了手艺测验之外,需求依据事务和团队的需求当令打开接口主动化、UI 主动化、Code Review 等进步功率的作业。两者有用的结合才是测验质量确保的要害。

正常上线就功德圆满

一个项目从需求提出、开发、测验、发布仅仅走完了线下流程,尽管体系通过了严厉的测验,可是究竟线上的状况和场景会愈加杂乱多变,上线后才是实在饱尝线上用户检测的时分,咱们有必要重视线上日志、用户反应、线上报警等,及时修正线上问题,并将用户提出的合理化主张转为产品优化或产品需求并完结,构成整个闭环。

大交通研制质量体系建造

为了帮忙用户更好地完结消费决议方案闭环,马蜂窝上线了大交通事务,为用户供给购买机票、火车票等服务。为了进步体系的安稳性、更好地支撑高并发,大交通将原有 PHP 架构的交通事务重构成支撑高并发和更安稳的 Java 集群架构,一起逐渐将各模块的事务容器化,来进步体系的全体功用而且可保护。

大交通测验团队首要担任机票、火车票和用车事务的测验。为了防止上面说的四个误区并结合研制团队的具体状况,大交通研制质量体系建造首要是从项目流程、事务测验、线上事情和东西建造四个方面来进行的。现阶段质量体系建造的方针有 2 点:

  • 缩短线下项目的工期,削减线下 bug 数量

  • 削减线上问题数量

质量体系大盘如下图所示,其间虚线框中的部分是规划中或许正在进行中的,实线框中的部分现已完结。

1. 管控项目流程,进步交给质量

产品的质量不是依托一个团队或一个阶段就能够确保的,需求在研制的整个流程、每一个阶段进行操控和办理。

1.1 分类需求,清晰项目周期

大交通事务从无到有,事务功用开发需求具有快速迭代和交给的才干,现在选用的是双周迭代方式,应战性是比较强的。为了在项目快速上线的一起确保质量,咱们依照需求的不同类型和等级整理了交给的中心时刻节点。

现在大交通客户端页面较少,大多为 H5 前端页面。以双周迭代为条件,需求总共分为 3 类:

  • 日常- 开发工期较短,1 个迭代内完结。

  • 项目- 开发工期 3 天以上,大约 2 个迭代内完结。

  • 线上事情– 方案外的突发状况,一般来说紧迫程度高,可能会直接影响线上事务,需求及时呼应。

需求包括产品需求和技能需求。为了合理安排开发资源,日常需求和项目需求进行双周 PK,依据项目价值、优先级、资源状况等承认后续 2 周的需求规划。日常、项目首要流程如下图所示:

1.2 项目进展可视化办理

要缩短交给周期,怎么让团队更好的协作,灵敏的推进产品研制是需求考虑的问题。全体思路选用 SCRUM 灵敏的办法论来推进,此类落地东西有许多,咱们挑选的是 TAPD 来办理整个研制生命周期。比方用故事墙对大型项目的迭代规划状况进行可视化办理;关于专项使命运用看板进行阶段性同步等,通明团队作业,让每个人物都能对进展直接担任,进步协作功率。

1.3 继续集成作业流

Bug 发现的机会越晚,修正 bug 所需的时刻就越长,项目工期就越长。为了进步每一个环节的交给质量然后削减线下 bug 和加快项目进展,咱们在流程中针对各人物逐渐推进了以下机制:

i) 针对产品和 UI ,咱们约好需求 PK 通往后 3 天内进行需求评定,进步需求的交给速度;开发联调完毕后和提测前参与 Show Case,第一时刻检验产品。

ii) 针对研制 ,在测验环境 CI/CD 中参与了 Sonar 静态代码扫描,只要通过质量阀后才干布置;联调完毕后运转自测用例并将成果标示在用例办理东西中;并安排 Show Case,给产品、运营、测验展现主流程。

iii) 针对测验 ,将测验用例评守时刻提早,尽量跟开发技能方案评守时刻共同,在提测前 2 天就开端布置阻隔的测验环境供开发连谐和自测。

(阻隔的测验环境是为了多项目并行而运用,会在后续章节中具体介绍。)

iv) 运营同学 提出的需求,会在 Show Case 时约请运营第一时刻参与产品检验。

1.4 培育全员项目办理认识

大交通技能团队现在没有专职 PM,一切项目的 PM 均为技能兼职。为了确保一切日常和项目均能按期乃至提早完结、更好的让项目流程落地以及优化项目流程,由测验团队担任人等 3 人兼任 PMO,针对项目流程中的问题为研制和产品同学进行共享和训练,进步研制人员的项目办理才干和产品同学的流程认识。

杰出的项目流程拟定和优化、项目流程落地、每个环节担任人都高质量地交给给下一个环节的担任人,是确保产品质量的第一步。

2. 加强事务测验,完结功用确保

事务规划快速展开,事务逻辑越来越杂乱,体系等级交互越来越多,都给测验团队带来极大应战。大交通测验团队内部首要是从 5 个方面来进步事务测验才干:

2.1 了解事务流程和功用

关于测验人员来说,了解事务流程、功用等需求,才干翻开思想,在测验过程中做到有的放矢。比方大交通的机票事务对根底数据精确性要求很高,还有虚仓、改签、航变、运价、值机等特有的功用,这些都需求测验人员去深化了解。咱们会非守时约请产品、运营同学进行机票事务的训练,一起测验也会给开发同学反和解训练一些事务。

跟着团队新人的参与和体系越来越多以及越来越杂乱,为了防止漏测,咱们发动了整理各事务功用、功用进口矩阵图的作业。举个比方,机票稳妥除了 C 端用户页面,运营后台和供货商后台也有相应功用,那么机票稳妥相关的事务咱们需求把悉数进口都考虑到。矩阵图给技能方案评定、测验方案和测验方案拟定供给了指导性含义。

2.2 阅览后端代码

作为www.188bet.com工程师,不需求对开发代码一目了然、把握每一个办法,可是恰当的阅览代码和代码的逻辑是有必要的。

大交通研制后端代码以 Java 为主,在了解事务的条件下,有 Java 代码根底的测验人员每个季度都会设定阅览后端微服务代码的绩效方针,阅览代码、搞清微服务、数据库或缓存、守时使命之间的调用联络、沉积成文档、并反讲给编写该微服务的开发,由开发来判别阅览作用。读完部分乃至悉数代码之后,后续的新项目中能够愈加自若地从头把控产品质量,如技能方案是否合理、对增量代码进行 Code Review 提早发现 bug、帮忙开发定位问题原因,并推进开发在编码前进行技能方案、接口协议、数据库评定。

下图是机票测验同学阅览机票接入根底数据相关代码时整理的部分流程图:

2.3 测验掩盖率计算

掩盖率是衡量测验完好性和有用性的一个常用手法。在大交通事务体系中,有些项目的逻辑分支十分杂乱,为了评价手艺、接口主动化、UI 主动化等黑盒测验手法是否能掩盖悉数代码逻辑分支。近期咱们发动了增量代码掩盖率计算项目,现在在小型项目中试用,一轮测验完结后查看掩盖率计算数据,在二轮测验中则要点掩盖第一轮中未触及的部分。

有时分某些逻辑分支结构测验场景十分困难,这时需求引进 Code Review 等手法来进行掩盖。需求留意的是,即便把增量代码百分百掩盖掉,也不代表就万事大吉了,有时分隔发会漏开发某部分代码,这种状况下最好的状况是在技能方案评定和结合功用矩阵图来规划测验用例时发现,但咱们主张在测验后期仍要再来审视一次是否有遗失开发的状况。

除了增量代码测验,每次项目上线前还需求对事务主流程进行回归测验。

2.4 推进项目自测

大交通有些较为简略的日常和项目测验没有介入,选用开发自测+产品检验后直接上线的方式。测验同学不守时会给开发和产品同学训练测验根底知识,比方:布置阻隔的 Java 测验环境、布置 PHP 代码,前端微服务切换、Mock 渠道运用等,有些项目测验也会供给测验用例由产品来履行,通过训练使没有测验介入的项目也能够确保质量。

2.5 数据计算剖析

在推进代码质量时,咱们以月为单位需对项目和 Bug 进行数据汇总,并通过对数据进行剖析,发现和总结项目过程中的问题及发作原因,针对问题提出项目目优化和质量进步主张并在项目组中推进实施。

月度陈述重视的是项目质量往更优展开,而不是计算自身。通过数据展现,咱们也能够知道咱们的项目质量在继续进步,比方在多个机票大项目并行的状况下,大交通本年 Q1 的线下 bug 总数比上一年 Q4 下降了 1/4, 通过数据咱们能够感受到项目的全体质量越来越好,也是对团队很好的鼓动。

3. 重视线上,构成问题闭环

在文章开端部分咱们讲过只重视线下是不行的,有必要要重视线上,将线下和线上结合在一起构成闭环。大交通在线上问题的发现、处理、汇总上首要做了以下几个方面的作业:

3.1 标准化反应流程

测验团队拟定了一套完好的线上问题处理和反应机制,清晰作业流,并凭借东西(TAPD)落地。

内部用户和外部客服人员反应问题后,由运营、产品共同记载到 TAPD 中,由技能支撑人员过滤问题,复现并承认问题是否有用,假如有用则判别问题类型:如是咨询类问题,则技能支撑直接回复;如是 bug(即线上毛病),则转交开发处理;如是产品改善,则转交产品记载。遇严重问题开发则告诉 Team Leader 重视。不管何种类型的问题,都会在 TAPD 流通,直至问题问题陈述人验证并封闭。终究,处理成果将反应至内外部用户。

高优先级问题会被优先处理,处理完毕后也会赶快安排毛病 Review。

3.2 主动发现问题

除了线上报警外,技能支撑也会守时巡检各事务,防备严重线上问题发作,并通过数据大盘、数据库反常数据、小时报等反常数据来主动发现线上问题并推进处理。

3.3 质量会议

每周固定举行质量会议,由技能支撑主张,开发、测验、产品、运营参与,对上星期的线上问题逐一进行 Review,毛病类问题剖析原因、以点带面将相似问题悉数处理;咨询类问题转需求和运营东西、开释人力;产品缺点类转为产品需求。每月初的质量会议也会对上月的线上问题进行全体 Review,针对问题提出质量主张并推进落地。

现在大交通的线上毛病月度数据呈下降趋势,与线下项目质量进步、每周的质量会议和全员质量认识培育密不可分,而且跟着产品改善类需求上线,用户体会也越来越好。

4. 完善东西建造,进步测验效能

只要手艺点点点是远远不行的,结合大交通的实践事务场景,测验团队的东西建造首要环绕环境支撑、压力测验、测验渠道、UI 主动化、接口主动化等方面打开。

4.1 环境支撑

不管 Code Review 做得多么完美,终究都需求进行集成测验。杰出的测验环境是对测验功率和项目质量的确保,一起测验环境合适与否会对测验成果的实在性和正确性很重要。

大交通的测验环境共有 3 套:Dev 环境、QA 环境、预发环境。之前测验环境呈现过一些较显着的问题,比方:

  • 在抢占开发 Dev 环境的状况下一起最多只能测验两个 Java 代码改变项目(QA 和 Dev 各测验一个),严重影响功率。

  • QA 环境上频频布置引起测验中止。

  • QA 环境上出了真票发作了资损。

  • Dev 环境上开发自测的很完美,但提测后布置到 QA 环境之后连主流程都不作业。

为了处理以上问题,咱们进行了测验环境改造及预发环境打通。

4.1.1 测验环境改造

针对以上问题,咱们将进步测验环境的 安稳性、并行性、阻隔性、实时性 作为要点目标进行测验环境改造:

  • 相对安稳性:

    - QA 有需求时布置

    - Java 代码:收回开发同学 Jenkins 权限

    - PHP 代码:推进公司 PHP 布置渠道(AOS)进行改造,只要 owner 和共享的人才干布置

  • 并行性:

    - Java:一切微服务均引进测验环境阻隔插件,一起支撑多项目并行测验

  • 阻隔性:

    - 测验环境的订单不能出到线上

    - 机票接入:订单阻拦

  • 实时性:

    - 除被测代码外,其他代码也要实时更新。

杰出的测验环境有力的确保了多项目并行开发、连谐和测验。提测前 2 天测验同学就开端帮忙开发布置项目阻隔环境,开发在阻隔环境中连谐和自测,自测通往后测验同学直接在该项目阻隔环境进行测验,大大节省了从 Dev 到 QA 的转化时刻。

4.1.2 预发环境打通

大交通测验环境中的数据库、MQ、Redis 等中间件跟出产环境是分隔的,账户是虚拟账户,出的票是模仿票,因而测验环境跟出产环境仍是有很大距离的。曩昔测验环境完毕后直接上线的项目中,有些服务上线后连发动都是失利的。

为了能在愈加挨近出产环境的条件下进行测验,进步一次上线成功率,咱们发动了打通机票、火车票预发环境的技能项目,对预发环境咱们的定位是:

  • 上线前预演

  • 实在账户、实在买卖

  • 代码与出产阻隔

机票火车票的预发环境悉数打通后,悉数项目在测验环境完毕后上预发进行主流程回归,然后上线。

现在选用的测验流程如下:

4.2 压力测验

在高并发的场景的查找类项目和活动类项目中,咱们进行压力测验。压测流程如下图所示。这儿能够参阅之前马蜂窝技能大众号发布过的一篇关于压力测验的文章,在此不过多打开。

4.3 测验渠道

测验渠道是大交通测验的门户网站,大交通研制事务线后端运用 Java,前端共同运用 VUE,为了让咱们更快地了解大交通研制技能栈,测验渠道选用了跟研制前、后端共同的架构。

测验渠道的终究方针是将团队开发的东西,如代码掩盖率计算、数据工厂、压测成果展现等整合在一起,后续方案把接口主动化、UI 主动化等功用逐渐参与,逐渐完善测验渠道功用,并以界面化的方式开放给团队内外部人员运用,进步测验功率。

4.4 数据工厂

数据工厂根据大交通测验渠道开发。在一些逆向买卖的需求测验中,需求先创立不同类型的订单作为测验条件,假如早年端下机票订单的话,总共需求操作5步:主页->列表页->报价页->订单填写页->乘机人挑选页。为了简化创立订单的过程和便利产品检验以及外部团队回归运用,咱们规划并完结了机票数据工厂,期望能够完结国内世界机票测验一键生单,向研制、测验快速供给订单数据,为测验环境回归供给数据。

大交通机票测验环境中除了项目阻隔环境外,还保护了一套安稳的骨干环境,该环境中代码根本和线上保持共同,数据工厂根据骨干测验环境来创立机票订单。

现在数据工厂总共分为四个模块:国内/世界机票生单模块、模仿付出模块、出票模块和日志记载模块。四个模块和机票服务端的调用联络如下图所示:

现在数据工厂完结了生单、模仿付出、出票和操作日志等功用,填写了参数之后,在前端页面直接点击相应按钮就能够了。

4.5 接口主动化

接口主动化的优点显而易见,咱们选用的是比较通用的接口主动化结构 TestNG+Rest-assured+Maven,现在在 Jenkins 上装备运转,后边要对接到测验渠道。

现在掩盖主流程的回归测验用例在测验环境守时运转,查找类接口的主动化在线上守时运转进行监控,有反常时会发邮件报警。除此之外接口主动化还用于数据创立、主流程回归和搬迁类项目测验中。

遇到的一些困难

在建立质量体系的过程中,咱们也遇到了一些困难:

1. 流程改善中的困难

比方 Sonar 静态代码扫描的引进。之前 Sonar 仅仅放在了 CI 渠道并没有跟 CD 绑定在一起也没有引进质量阀,需求专职人员来催促开发进行扫描和查看扫描成果,引进静态代码扫描的作用并不是很好。

为了让 Sonar 主动的发挥它的代码查看效能,咱们将 Sonar 引进测验环境 CD 渠道,拟定了共同的质量阀,Sonar 扫描不通过质量阀的就无法布置到测验环境,开端以一个项目为试点启用、发现问题和处理问题,现在悉数项目在提测前都需求通过 Sonar 代码扫描并通过质量阀,通过之后才干够提交测验。

2. 事务测验和东西开发时刻抵触

大交通没有专职的测验开发岗位,发作抵触的状况下优先确保事务测验,事务测验空隙期来做东西开发作业,在这样的状况下有一些跟事务测验结合比较严密的主动化作业打开的比较缓慢,现在咱们的接口主动化只掩盖了中心回归用例,后边需求把接口主动化和大多数项目测验结合在一起,实在把接口主动化应用于项目测验中。

总结

大交通测验团队成立了不到一年,通过一段时刻的探索和实践,在研制质量上有了必定的进步,但咱们在质量体系建造的道路上才刚刚起步。跟着事务体系越来越杂乱,对测验人员和质量体系的要求也会越来越高,也需求全体成员不断进步质量思想、继续寻求质量。未来,咱们将不断堆集办法、优化流程和完善东西,确保高质量的继续交给。


原文转自:https://mp.weixin.qq.com/s/Enr2It-3jCToej71TcdUQQ

188bet www.188bet.com bwin 平博 unibet 明升 188bet uk Ladbrokes 德赢vwin 188bet m88.com w88 平博88 uedbet体育 188bet 188bet 威廉希尔 明升体育app 平博88 M88 Games vwin德赢 uedbet官网 bodog fun88 188bet