凯时代理登录:突破DevOps瓶颈:京东数科自动化测试平台建设实践

本文来源:http://www.bo884.com/blog_sina_com_cn/

申博太阳城亚洲微信支付充值,HERO相机可以适应许多运动场景,通过配件可以被佩戴在运动者的腕上、头上或胸前,或者是装在冲浪板、汽车、自行车上,对于高速运动、水下运动、夜间运动,HERO相机都有很好的适应性。行情12月07日【广西IT前线今日报道】惠普Pavilion14-AL131TX搭载第七代英特尔#174;酷睿i5-7200U处理器,采用KabyLake架构,运用成熟的14纳米工艺,功耗较第六代更低。为与上述法律法规或金融监管规定相博弈,资本玩家对“一致行动人”情形通常进行“非关联化”处理,改为由多个主体“暗中”共同行动,实现“关联持股非关联化”的效果,达到逃避监管、控制上市公司、实现利益输送、操纵股价等目的。随着深港通的开通,那些业绩优良、成长潜力巨大的白马股自然将受到机构投资者的热捧。

  2013年1月,农产品向包括大股东深圳市国资委在内的7家投资人,定向发行3.14亿股股票,募集17.13亿元。”周国辉说,“怡亚通未来要做金融平台、营销平台。行情12月07日【广西IT前线今日报道】惠普Pavilion14-AL131TX搭载第七代英特尔#174;酷睿i5-7200U处理器,采用KabyLake架构,运用成熟的14纳米工艺,功耗较第六代更低。  总而言之,目前的市场下,档期内还没有影片可以和潘金莲抗衡,在思聪那句“没有人会和钱作对”的概念引领下,话题已被炒热,未来几日万达是否会为了市场而增加排座率,也值得一看。

那些相对而言受教育程度高且年纪轻的劳动者,容易掌握新的技能,可以很快实现转岗;而受教育程度较低和年龄偏大的人群,则容易成为转岗过程中的困难人群。行情12月07日【广西IT前线今日报道】惠普Pavilion14-AL131TX搭载第七代英特尔#174;酷睿i5-7200U处理器,采用KabyLake架构,运用成熟的14纳米工艺,功耗较第六代更低。这也节省了个人合作伙伴的时间。  主要财政和货币政策:尼克松先以削减联邦开支、紧缩货币和信贷应对通胀,后以“新经济政策”应对经济衰退和失业(包括赤字财政、宽松货币、管制工资和价格、停止美元兑换黄金、美元贬值)。

一、了解什么是DevOps

DevOps的目标是实现软件系统的快速交付、并且提升系统稳定性和获得用户良好的反馈。不知道是不是有些同学和我一样,仅仅靠单纯概念性的描述比较难以理解什么是DevOps。

就好像我们常常说要养成“良好的生活习惯”,那这个“良好的生活习惯”可能会包含:早睡早起、健康饮食和合理锻炼锻炼等等具体的行为。其实DevOps这个有点抽象的概念也是由一系列具体的行为和软件工程实践组成的。包含:基础设施即代码、CI/CD、自动化测试、容器化、服务编排、自动化部署和软件度量等。

CI/CD流水线是决定系统能否实现快速交付的关键所在,也是DevOps实践中关键的一环。

在这里插入图片描述

图1:DevOps模式

二、自动化测试的困境

而在研发团队的实践过程中,自动化测试往往是一个比较难啃的硬骨头。我列出其中两个困难点:

(1)自动化测试需要持续不断投入,自动化测试脚本和代码的开发工作量不小于实际业务代码的开发工作量;

(2)构建CI/CD流水线系统的团队往往是独立于业务研发团队而存在的,而其中自动化测试环节却需要业务研发团队的配合才能够良好实施。

在众多的研发团队中,有一些负责质量效能的团队是自动化测试的先行者。他们能够抽出专门的资源来编写自动化测试用例;并通过自己搭建Jenkins来实现自动化测试用例的夜间定时执行;还有些团队自己开发了测试平台实现自动化测试用例管理、执行和度量等功能。但是这种各自独立的自动化测试平台又存在以下问题:

(1)按照各自平台标准开发的自动化测试用例,由于技术框架不同等原因,并不能实现资源共享和重用。

(2)自动化测试相关数据都是存在各自的平台中,当需要在更大范围内对不同应用或系统的自动化测试程序进行度量和评估时,由于标准不统一和数据不互通而导致难以实现。

(3)自动化测试的机器资源有限,常常由于执行资源受限而影响自动化测试的运行效率。而且不时会由于执行机器的偶发性故障影响自动化测试执行的稳定性。

(4)自动化测试常常通过手动触发或者定时触发执行,并没有与实际的研发流程结合起来。研发在进行日常特性功能开发、变更的提测、合并主干和发布上线等操作的时候,并没有实现实时触发自动化测试的执行,

三、破局之道

笔者所在的团队已经为公司内部提供了一套完整的DevOps工具方案,从迭代管理、代码仓库、分支策略、编译构建、静态代码分析、单元测试、测试环境部署、自动化测试到线上发布,贯穿了整个研发过程。

下面重点介绍下自动化测试子系统如何结合实际业务场景来解决研发过程中的痛点。说起自动化测试的实现方式,笔者以目前通用的实现方案为例,从是否需要写代码的角度来分析下其优劣:

1、需要写代码的自动化测试

  • 优点:灵活性强,可以基于不同的XUnit测试框架(例如基于Java语言的Junit、TestNG;基于Python的Pytest、Unittest等)来实现自动化测试代码的编写。对于测试开发工程师来说,使用原生的框架来通过写代码的方式实现自动化测试,有利于自身的技能提升,能够学到更多的东西。

  • 缺点:有一定门槛,有些测试同学缺乏编码能力,要想写自动化测试代码,需要首先学习基本的编程语言语法,还需要学习测试框架的基本使用。

2、不需要写代码的自动化测试

  • 优点:上手简单,成本低;测试工程师不需要掌握编程技能,便可以通过页面配置的方式来编写一个自动化测试用例(参考Postman等工具)。

  • 缺点:扩展能力较差,操作步骤和配置项较繁琐。不像基于代码来实现自动化测试有强大的扩展能力,而且一般有较多的配置项,需要通过较多的步骤和配置来实现复杂业务场景。

另外还有智能化的自动化测试,既不需要写测试代码/脚本,又不需要繁琐配置,一般可基于线上流量或者业务代码自动生成自动化测试;不过目前来看,智能化测试和基于流量录制的Diff测试等等覆盖的场景有限,仍然不能完全替代传统的自动化测试。
而笔者目前所在团队开发的JAT自动化测试子系统,支持以上两种方式来实现自动化测试。用户既可以通过编写Java代码的方式,也可以通过页面配置化的方式来实现自动化测试。

JAT自动化测试平台致力于解决研发过程的测试痛点,其目标是为各业务研发团队提供自动化测试的基础能力,包含测试生成、测试执行和测试度量等。通过与持续集成流水线的集成和在研发过程中的内嵌,在保障系统高质量的前提下,使用自动化的手段逐步提升研发团队的交付效率,从而实现DevOps的落地。

3、针对基于TestNG框架编写的自动化的功能特性

(1)实现测试工程的规范化

通过一键生成测试工程脚手架来规范工程的结构目录和相关配置:
在这里插入图片描述

图2:生成测试工程脚手架

对于外部导入的测试工程会首先进行目录结构和配置的规范检查:

在这里插入图片描述

图3:导入测试工程规范检查

(2)实现测试方法的平台可视化展示和数据统一度量

将测试方法在平台上可视化展示出来:

在这里插入图片描述

图4:测试方法可视化展示

实现产品级测试数据的统一汇总和展示:

在这里插入图片描述

图5:测试数据展示

(3)实现测试工程打包和执行的分离

由原来直接拉取测试工程代码通过Maven命令执行,改为打包服务和执行服务分离,采用先构建测试包,再发到测试区执行的方式。这种把测试代码管理和执行服务分开的方式,能够满足对测试代码管理比较严格的诉求,可以避免把测试代码直接拉到测试执行环境,从而一定程度上控制测试代码的扩散和外漏风险。

在这里插入图片描述

图6:测试工程打包与执行分离

(4)实现与CI/CD流水线系统(JCI)的对接

如果是手动触发或者定时执行的自动化测试计划,那么只需要在JAT平台上创建相应的测试计划就可以了。

而想要实现一个持续集成流水线,也就是当代码变更时,能触发拉取代码、编译构建、环境部署和自动化测试执行一连串的操作。就需要在JCI系统里配置一个自定义流水线来实现。

在这里插入图片描述

图7:CI流水线中的自动化测试

目前是通过测试套件(TestNG测试套件)的方式与流水线集成,后续还会支持通过测试计划的方式与流水线集成,也就是在流水线中可以选择该产品/应用下属的自动化测试计划。

四、未来展望

为了更好的支持研发团队的DevOps实践落地,JAT自动化测试平台后续计划在以下几点继续丰富功能:

(1)接口自动化测试用例的自动生成:能够进一步简化编写自动化用例的成本;基于被测应用服务的源码和配置等信息,自动生成门槛覆盖率的自动化测试用例,并一键创建测试计划,从而满足最基本的基本功能回归测试需求。

(2)自动化测试的精准度量:在目前接口覆盖率和代码覆盖率的基础上,实现产品/应用代码覆盖率及变更代码覆盖多维度的度量。给研发提测、部署和发布等操作提供更加精确和可参考的自动化测试数据 。

(3)进一步丰富持续测试功能:在目前对接自定义流水线的基础上,进一步增加流水线触发自动化测试执行的场景;并且能够实现自动化测试结果数据与CI/CD流水线系统(JCI)上的其他研发过程数据的深度整合,比如自动化测试覆盖率与功能测试覆盖率的数据合并计算等。

互动讨论:你在日常工作中都遇到哪些自动化测试的痛点?又使用了哪些自动化测试的工具?你眼中一个好的自动化测试工具是什么样子的呢?欢迎在评论区分享你的困惑或你的见解。



往期好文推荐:
只看这三点就够:快速了解联邦学习框架!
京东数科七层负载 | HTTPS硬件加速 (Freescale加速卡篇)
京东数科mPaaS:深度解读京东金融App(Android)的秒开优化实践


本文作者:京东数科 熊志男
获取更多技术干货&独家福利,请关注“京东数科技术说”微信公众号

在这里插入图片描述

已标记关键词 清除标记
99真人娱乐成登入 申博开户直营网 申博真人娱乐城登入 www.516sun.com 申博游戏登入直营网 申博游戏登录
申博官网登录登入 申博游戏网站直营网 www.811msc.com www.yh888.cc 菲律宾娱乐在线官方网 申博娱乐
www.55psb.com www.msc22.com 申博138线上娱乐直营网 www.860msc.com 申博138真人在线娱乐直营网 太阳城申博官方直营网