华兴德(北京)物流设备有限公司


产品搜索
友情链接

中国物流与采购网

中钢网

我的钢铁网

在线客服
 工作时间
周一至周五 :8:30-17:30
 联系方式
电话:010-67068572/18611123249     沈先生
电话:010-67068576/13511058978      沈先生
邮箱:huaxingdebj@163.com

· 小巧“玲珑”—京东物 流自动化测试平台核心功能首次曝光

背景

  京东物 流承载着订单生产的核心交易流程(订单履约,、配送、客服等),专业高 效的物流体系给用户带来良好的购物体验。随着物 流子集团的成立,多平台、全渠道、一体化 物流解决方案全面对外开放,在这种 业务飞速增长的情况下,系统会 不断涌入许多新的业务需求,不可避 免地出现变更频繁,迭代快速的情况。传统的 手工测试无法满足京东快速发展的需要,必须依 靠自动化测试来降低重复劳动,提高测试效率。

  京东自 动化测试平台的现状

  时光荏苒,自动化 测试平台已经伴随质量部有4年的时间,随着物 流业务范围不断扩大、测试领域的不断纵深,使测试 场景愈发多样复杂,在这种情况下,平台现 有功能渐渐地满足不了京东物流的测试需求:

  任务分 配执行机容易超时,排查问题费时费力,降低回归测试的效率,另外,由于各 系统使用不同浏览器版本、JDK版本,使得某 些自动化测试需要绑定到指定的执行机,不能充 分利用执行机资源。

  单任务执行,影响测试执行效率。每次回 归测试需要验证系统在不同场景、不同业 务分支系统功能的正确性,平台只 支持单个任务执行,不能够 按照所选的测试任务集合执行测试,只能够 对测试计划下所有的任务一并执行,影响回 归测试的整体效率。

  支持的 开发语言相对单一。随着自 动化测试技术的发展,出现很 多优秀的不同语言的轻量级测试框架,但平台仅支持JAVA语言。

  为了让 各个业务条线测试人员更加方便地开展自动化测试工作,降低平 台重复建设的成本,提高产 品的自动化测试效率。京东物 流对现有平台进行一次改造升级,玲珑,应运而生。

  新自动化测试平台—玲珑

  玲珑,意为精巧细致、灵巧敏捷。升级后 的平台具有以下新特性:

  新的任务调度机制,解决原 系统执行机调度缓慢、Driver&JDK版本绑 定执行机的问题。

  测试任 务随意组合并可同时运行,提高自 动化测试执行效率。

  支持多 场景的数据驱动,让测试场景更加丰富。

  支持Python、移动端测试(开发中),满足多语言、不同测 试类型的测试需求。

  支持物 流业务流转的端到端的自动化测试(开发中)。基于流 水线作业的方式,按照设 定好的业务全流程场景进行测试。

  (系统架构图)

  WebUI层:测试计划、任务、用例维 护保留原有功能,将操作 权限控制到每个三级部门,其部门下的信息共享,新增按部门、系统、人员维度的统计报表。

  任务调度:弃用STAF调度框架,使用Jenkins下发测试任务,由于具 备面向文档存储、灵活、支持索引等特点,将MongoDB作为系统数据库,同时还提供CI触发自 动化测试的接口。

  测试执行机:由于原 执行机经常出现网络连接失败、并且已经无运维维护,所以,使用KVM生成的 虚拟机作为测试执行机,同时将JDK升级到1.8,Driver升级到最新版本。结果采集的Agent也进行了改造,支持运行Python语言的 测试框架并收集测试结果。

  (业务流程图)

  核心功能介绍

  测试用例:通过自 动扫描的方式进行维护测试脚本,在测试 用例类中以注释形式给出相应的待扫描项,这些扫 描项包括用例的调用名称、场景数据键名、作者、所属系统、应用等信息,后台系 统会自动扫描该目录及其子目录下的测试用例类,并把相 应的基础信息保存到测试用例集合中。

  测试计划:将测试 的相关配置信息进行统一设置。

  测试用 例与测试计划均采用树形结构的存储方式,被分别 存储在两个集合中。一个测 试用例可以被数个用例模块嵌套,一个测 试任务也可以被数个测试计划嵌套。测试用 例和测试任务作为树的叶子节点,一个节 点作为一个文档来存放。下面以 测试计划集合为例,进行说明。

  根测试 计划可以拥有数个测试子计划层级关系,根测试 计划保存有相应测试项目的基础信息,hosts文件、配置文件、测试脚 本代码库地址等。递归遍 历该树形结构以JSON形式直 接返回给前台页面方便展示。前台页 面可以选择一个或多个节点下的测试任务进行执行。即可以 按一个根计划执行,也可以 按多个子计划执行,也可以 多个测试任务执行。

  复用测试计划时,会将该 节点下的所有一级子节点链接到新节点下,即新的 测试计划下的测试子计划与测试任务不再需要重新创建,修改源 节点下的内容后,新节点 下的内容会自动同步,避免再次修改。

  丰富的层级结构,方便自 动化用例实施人员对不同测试任务进行多级分类,方便对管理与维护。

  测试场景:按照既 定的测试场景将相关的用例、数据组合,生成自动化测试任务。

  测试场 景的数据会随所选测试用例的变化而变化。测试场 景数据作为一个子文档存放在测试任务文档中。测试场景的数据以List形式保存,List中的一 个元素表示一个场景的相关数据,Map中的key表示场景数据的键名,value表示场景数据的键值。场景数 据的键名来自所选测试用例中的扫描项中的键名的并集。

  测试场 景数据用于串行相关的测试用例,同一个 场景下的场景数据对该场景下的相关用例可见并可修改。

  多任务执行:执行机 可以按照指定或随机的方式分配,如果被占用,则进入等待队列,待执行 机空闲后执行测试任务。

  选择的 多个测试任务会被一起执行,jenkins的job名称与 测试任务的文档id一致,即测试 用户修改任务名时不影响实际的执行任务。

  每一个jenkins的slave节点被 限制为只能运行一个job且该slave节点只 被限制绑定该执行机IP的job执行,这样设 计解决了不同测试任务执行时会产生的互斥问题。随机执 行时玲珑系统会根据空闲的执行机情况,将该任 务分配到一台执行机运行,如果是绑定IP运行的任务,则会直 接绑定到指定的IP上运行。

  采集调度Agent程序:负责组 装自动化测试用例、用例执行和结果收集,该功能 对于用户而言是透明的。

  由jenkins的slave触发Agent程序执行,Agent程序获 得测试结果集集合中的此次运行初始化的文档,根据结果集中的信息,初始化 执行机的运行环境,host,配置文件等。然后获 得结果集中的测试场景数据与测试用例数据,将测试 场景与测试用例拼装为两个Excel文件,以shell调试方 式执行自动化用例代码,这其中 自动化用例代码会从这两个Excel中获得 实际运行的用例信息和数据信息。

  自动化 测试用例运行结束后,Agent会收集测试日志,从测试 日志中筛选出自动化用例检查点并更新到结果集中,同时还 会将测试场景的excel数据(测试执 行期间该文件也会被测试用例修改其中的场景数据)回写到结果集中,最将将 该次运行对应的测试结果集更新到数据库中,结束自动化测试运行。对于运 行过程中的日志,用户可以通过jenkins的构建 日志分析并定位问题。

  测试邮件:将测试 结果进行收集汇总,邮件内 容显示摘要及详情信息。

  测试邮 件的内容来自测试结果集中的数据,由于可 以同时运行多个任务,一次运 行的多个任务具有相同的分组,当分组 内所有任务均执行完成时,会触发邮件的发送,邮件会 展示该分组内的所有任务运行的结果集,每个任 务运行时都会生成一份结果集与该任务对应,方便用 户追溯任务的历史执行过程。

  写在最后

  经过第 一阶段的功能优化,玲珑系 统能够在物流业务迅速发展的趋势下,为测试 人员提供更加丰富、稳定、高效的 自动化测试服务。第二阶 段京东物流将开始着手进行业务链条端到端的自动化,移动端自动化等功能。


分享网站