亚游会_ag8.com_亚游会娱乐平台

当前位置: 主页 > 小游戏app作品 >

携程酒店自动化360度质量保障体系

时间:2017-10-04 18:44来源:未知 作者:admin 点击:
本次分享的第一部分会解析 PC 时代承载淘宝全站第二大流量的店铺系统的高可用设计方案。从 2015 年开始,基于聚石塔和阿里云,研发了 EWS 全架构容器托管平台,服务了上千个 ISV 的应用,总容器数达到上万个,在这个过程中,也总结出了一套基于公有云的高可

  本次分享的第一部分会解析 PC 时代承载淘宝全站第二大流量的店铺系统的高可用设计方案。从 2015 年开始,基于聚石塔和阿里云,研发了 EWS 全架构容器托管平台,服务了上千个 ISV 的应用,总容器数达到上万个,在这个过程中,也总结出了一套基于公有云的高可用设计原则,并和过去自建机房的模式做类比,比如跨机房容灾演化为跨可用区容灾,异地多活演化为跨 Region 的高可用,以及基于 DTS 等产品...

  本次分享的第一部分会解析 PC 时代承载淘宝全站第二大流量的店铺系统的高可用设计方案。从 2015 年开始,基于聚石塔和阿里云,研发了 EWS 全架构容器托管平台,服务了上千个 ISV 的应用,总容器数达到上万个,在这个过程中,也总结出了一套基于公有云的高可用设计原则,并和过去自建机房的模式做类比,比如跨机房容灾演化为跨可用区容灾,异地多活演化为跨 Region 的高可用,以及基于 DTS 等产品...

  本期主要内容:吴恩达:人工智能是新电能;Michael Jordan:目前人工智能发展到了什么地步?专访ImageNet冠军颜水成团队,如何将比赛成果在企业中落地?格灵深瞳:基于人工智能的新天网;机器学习与微博:TensorFlow在微博的大规模应用与实践;深度学习在美团点评推;荐平台排序中的运用;Twitter机器学习平台的设计与搭建。

  OKR的全称是Objectives and Key Results,中文可以直译为“目标和主要成果”,这套系统最初由英特尔公司制定,但是付诸实践的最大公司并不是英特尔自己,而是谷歌。大家还记得谷歌的成立时间吗?1998年9月4日。英特尔在1999年(成立一年后)就全面引入了OKR管理方式,同时也是目前为止该方的最强力支持方。我认为,也正是用好了OKR管理方式,谷歌才能成长为现在为大家所知的谷歌...

  本文是《Azure Stack 技术深入浅出系列》第四篇,主要介绍如何在 Azure Stack 的 MarketPlace 中添加一个自定义的虚拟机镜像并定制满足需求的 Gallery Item,同时通过自服务的模式提供给业务的消费者。

  携程目前很多的框架和项目都在往 Java 技术栈上进行迁移。在这个过程中我们遇到很多的挑战和困难,为此我们在原有测试体系的基础上做了大量的工作,构建了一整套卓有成效的质量保障体系。本文的开始部分会给大家介绍下目前酒店测试体系的一些情况,后面则会详细地介绍下这个体系的一部分Java 覆盖率统计平台。

  功能测试、自动化测试等这些测试阶段和行为都是围绕着被测系统进行的,所以我们可以形象地把它们的关系看作一个 360 度的环,而被测系统则被围在了环的中央,就像被保镖保护起来的重要人物一般。

  那很容易想到的是,这个环上的保镖越多,围得越密,被保护的人当然就越安全。当然,保镖也是需要成本的,如果被保护的人不是那么重要,当然也就用不了那么多的保安。所以,根据被测系统的重要性以及成本的考虑,不同的公司对质量保障体系有着不同考量。

  携程酒店的 360 度质量保障体系的核心就是自动化,该体系在传统的质量体系中增加了一些“保镖”,特别的是,其中一部分“保镖”是机器人。这么做既增加了被测系统的安全性,也适当地降低了成本。同时,利用自动化,持续集成、API 测试与监控预警的质量和效率都得到了更好的保障。

  单元测试作为代码级别的质量保障手段,有其不可替代的作用。虽然,携程酒店的敏捷开发中并没有强制进行 TDD 或 BDD 这类的实践。但作为自动化测试之外有利的补充,也是要求对于自动化测试或者手工测试无法有效测试的部分,编写单元测试用例进行测试。

  目前酒店测试自动化平台和携程发布系统进行整合,每次应用在发布系统中发布,自动化测试平台都会进行测试用例的执行,并发送测试报告给测试人员。

  测试人员收到报告后会对失败的用例进行分析,如果有问题就记入 Bug,如果是用例本身的问题,则修改测试用例。

  目前酒店测试持续集成包含了 API、UI 以及 Job 这几种自动化测试,且除了 UI 自动化之外都实现了无码测试用例的编写,测试人员可以很便捷地编写和维护相应的测试用例

  Compass,测试管理平台,测试人员在此平台可以及时了解自己的工作情况,比如本周的任务有哪些?各种自动化测试的执行情况如何等等。

  CAS,测试自动化平台,测试人员可以根据需要手动地去触发执行自动化测试用例,并得到详尽的报告。

  Click,测试工具平台,测试人员在整个测试周期中肯定会用到各种各样的工具,而在 Click 中测试人员可以很快捷地找到并使用自己需要的工具。

  在回归测试中,持续集成依然会继续进行,而且通过在早期对测试用例执行已经进行的分析,此时测试用例的质量已经得到了加强。测试自动化的实施效果应该会更显著。

  我们提供了两种性能测试方式,场景简单的性能测试,测试人员可以通过性能测试平台自助的完成性能测试;而对于场景复杂的性能测试,测试人员可以在性能测试平台中申请常规性能测试,由专业的性能测试人员完成性能测试。

  产品上线的时候,大家都是如履薄冰,为了能尽早尽快地发现发布后的问题,及时快速地定位问题,我们开发了监控预警平台,其中包括日志预警,性能预警,机器预警以及报表监控。

  前面我们介绍酒店目前的质量保障体系,那么大家可能会注意到,在整个测试周期内会产生大量的测试用例,单元测试用例、API 测试用例、UI 测试用例、Job 测试用例、功能测试用例等等。

  自然而然地,我们想到了覆盖率,覆盖率表示的是测试需求和测试用例的执行进度,是度量测试完整性的一个手段,是测试有效性的一个度量,覆盖率有两种评测方法:基于需求的覆盖率和基于代码的覆盖率。

  基于需求的覆盖率比较的直观,被测系统一共有多少功能,我们编写的测试用例,测试了多少功能,一目了然,所以平常我们测试最多使用的是基于需求覆盖的方式,但是基于需求覆盖的方式很大程度上依赖于需求文档的完整性,测试人员的设计测试用例的水平,覆盖的完整度差异还是比较大的。

  基于需求的覆盖率是一种黑盒测试的手段,适用于功能测试,但对于白盒测试 (比如单元测试),或者你需要知道你的测试到底覆盖了多少的代码、多少的分支,那么它就不适用了。

  这时,我们就需要使用基于代码的覆盖率,通过基于代码的覆盖率统计,你可以很清楚地了解你到底覆盖了哪些代码,没覆盖哪些代码,从而可以得到一个具体的量化指标。

  同时,在执行测试用例后,可以通过代码覆盖率了解自己还有哪些功能没覆盖,补充测试用例后,代码覆盖率自然也会提高。通过代码覆盖率去完善测试用例是代码覆盖率的重要作用之一。

  针对设定的这些目标,我们对现有的发布系统、自动化测试平台、Jacoco、Sonar、Gitlab 进行了整合。

  Java 覆盖率统计平台分为两部分:部署在应用服务器上的覆盖率统计服务和Java 覆盖率统计站点。

  覆盖率统计服务是 Python 编写的 WSGI 服务,为什么需要这个服务呢?主要是因为 Java 覆盖率统计平台通过 Jacoco 的 Agent 技术监控并收集应用程序的覆盖率数据。

  JacocoAgent 有两种 dump 覆盖率数据的方式,tcpclient 和 file,Java 覆盖率统计平台采用的是 file 方式,这种方式需要关闭应用程序的进程后才会 Dump 数据到本地。基于这些需求,覆盖率统计服务主要实现了以下几个功能:

  CDPortal 是携程内部研发的持续集成和发布系统,覆盖率统计平台可以通过用户设置的 Appid 和环境,调用 CDPortal 的接口获取应用部署机器的信息以及发布的版本信息。

  当用户开启应用的覆盖率统计后,覆盖率统计平台会发送命令给覆盖率统计服务配置 JAVA_OPTS,启动 Tomcat 以开始 Jacoco 的数据收集。

  用户开启 Jacoco 数据收集后,可以进行自己需要执行的测试,比如 API 测试、UI 自动化、手工测试等等。

  当测试完成后,用户在覆盖率统计平台关闭应用的覆盖率统计,覆盖率统计平台会发送命令给覆盖率统计服务重启 Tomcat,Jacoco 就会把收集到的数据 dump 到服务器本地。

  然后覆盖率统计平台通过覆覆盖率统计服务的 Jacoco 文件下载接口把 jacoco 文件下载到覆盖率统计平台。当 jacoco 文件下载完毕后,覆盖率统计平台会从 Gitlab 中拉取应用代码并进行编译。

  编译完成后,使用 SonarQube 对下载的 jacoco 文件进行分析。SonarQube 分析完毕后,覆盖率统计平台会通过 SonarQube 的 Web 接口获取覆盖率统计信息并保存到平台的数据库中。

  最后,用户在平台中可以查看覆盖率统计的报告 (最新的覆盖率信息、与上次覆盖率的对比、覆盖率趋势图等等)。

  在很多情况下,我们可能只需要统计某一部分代码的覆盖率情况。Java 覆盖率平台提供了黑白名单设置功能来实现该功能。

  因为平台整合了 Sonar,所以也支持代码扫描功能。使用 Sonar 扫描,可以检查开发代码中潜在的缺陷和不良的编码习惯。

  覆盖率平台与我们现有的自动化测试平台进行了整合,我们在开启覆盖率统计后,调用自动化测试平台的接口进行测试用例的执行,测试用例执行完毕后进行覆盖率分析,最后得到覆盖率统计报告。

  覆盖率统计完毕后,可以通过在 Sonar 中进行代码覆盖率数据的查看。我们也会通过 Sonar 的 Api 把覆盖率数据落地到服务器的数据库中。这样我们就可以知道每次覆盖率统计的数据,进而进行覆盖率数据深入的分析。

  用户也可以通过设置定时任务,设置某个时刻执行哪些应用的覆盖率统计,在定时任务执行完毕后,用户会得到覆盖率统计数据的报告。

  携程酒店的 360 度质量保障体系依然在演化着,朝着更全面,更智能,更效率的方向在努力。在这个提倡数据化、智能化、国际化的互联网时代,传统的测试实践已经在经受着考验。如何能在这些挑战面前保障软件的质量,如何能利用创新来提高效率和质量,这是摆在所有测试人面前的问题。

  王幸福,携程酒店研发部资深测试开发工程师,负责酒店测试框架和测试工具的研发。技术狂热者,热衷于开源项目,利用创新去提高测试工作的效率。本文来自王幸福“携程技术沙龙移动互联背景下的测试技术创新”上的分享。

  给InfoQ中文站投稿或者参与内容翻译工作,请邮件至也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。

  我们理解您使用ad blocker的初衷,但为了保证InfoQ能够继续以免费方式为您服务,我们需要您的支持。InfoQ绝不会在未经您许可的情况下将您的数据提供给第三方。我们仅将其用于向读者发送相关广告内容。请您将InfoQ添加至白名单,感谢您的理解与支持。

(责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
推荐内容