接口测试 阿里录制回放平台 (Doom) 试用记录 (未完待续)

ELes for PPmoney · 2019年07月28日 · 最后由 LTV 回复于 2020年03月25日 · 6929 次阅读

背景

在 2019 的 MTSC,阿里开源了jvm-sandbox-repeater——可对 java 服务进行录制回放的工具。
jvm-sandbox-repeater 是提供录制和回放的功能的底层组件,真正要在实际项目中应用起来,还必须有相关的配套服务配合才行。
于是乎我把目光,放到了阿里更早之前推出公测的录制回放平台——Doom。

Doom 简介

在阿里云平台中,Doom 被称为双引擎自动回归服务,属于测试管理中的一个服务。

关于 Doom 可以直接点击官方文档之平台介绍进行了解,因为官方介绍文档写的非常好,从适用场景、原理、使用常见问题以及解决方案都有给出,所以这里不做赘述。

接下来,我们直接进入正题,按照官方提供的双引擎接入使用文档进行接入。后面的接入步骤,同时打开官方双引擎接入使用文档,配合食用更佳。

快速入门之前

在 doom 平台上开始进行服务接入之前,需要做几个步骤。

  1. 注册一个阿里云账号
  2. 访问【云效】:https://my.rdc.aliyun.com/,并按照指引创建企业/加入企业。
  3. 在阿里云购买 OSS服务,并创建 Bucket 以及配置好 Access Key。(如已有 OSS 服务,可直接使用已有的 OSS。不会操作的话按照官方的 OSS 说明文档操作即可)
  4. 访问【Doom 平台】:https://doom.rdc.aliyun.com/,按照双引擎接入使用文档【1.2 数据存储设置】,进行 OSS 配置。
  5. 在【Doom 平台】:https://doom.rdc.aliyun.com/上,按照双引擎接入使用文档【2. 应用接入申请】进行应用接入申请操作。这里的应用接入分云效应用和非云效应用两种,无论是否是云效上的平台,是否是部署在阿里云服务器上,都可以进行申请接入。由于我没有使用过云效,所以我申请的是非云效应用接入申请。申请的审批时效较长,这个过程需要耐心等待一下。 注意:如果 3 个工作日都没有收到审批结果,可以发邮件到 mufeng@aibaba-inc.com 进行咨询。

快速入门

应用申请通过后,按照双引擎接入使用文档第 3 章节以及平台中的引导进行接入,官方文档中的步骤截图和说明都比较清晰,这里不做赘述。

补充说明

以下主要针对官方说明一些有疑问的地方,经过和负责 Doom 的技术同学确认后,给大家补充说明(未完待续)。

  • 在【3.2 设置 IP】章节中的 IP,填写应用服务器的网卡 IP 即可, 即使用ifconfig查看到的本机 IP。不需要填写公网 IP。这个 IP 主要是用来区分服务器的分组和类型(录制/回放)。
  • 应用服务器需要可访问公网,同时应用服务可被公网访问。(是否需要开启特定端口供公网访问,待确定)

接入过程中遇到的问题

按照接入文档完成了 doom 平台中的配置之后,在服务启动到录制还是遇到了一些问题。至今还没有完成一次录制回放。

以下接入尝试,Doom 客户端的安装方式都是采取免变更模式,详情可参看双引擎接入使用文档【3.7 安装 doom 客户端】。

1 平台上显示 doom 客户端连上了,但录制没有成功

最初在公司的电脑进行接入尝试。

系统信息:Mac OS 10.14.3 (18D109)

java版本信息:
java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)

网络环境:可访问外网,但外网不可访问本机服务

执行 doom 客户端安装脚本attach.sh成功。

doom客户端启动成功日志

doom 平台显示客户端已连接上

doom平台显示客户端已连接上

由于没有配置流量入口,按照文档中的说明预期应该会录制所有的流量。
流量入口配置说明

但实际上当我对目标应用进行请求后,在用例中心却没有看到任何录制记录。
没有采集记录

于是需要通过日志去定位问题。客户端日志地址在使用默认配置的情况下是在/home/{username}/{接入应用名}/logs/doom.log,而在 mac os 下则是/Users/{username}/{接入应用名}/logs/doom.log。从下图日志上看会看到客户端不停地在建立连接,又失败的情况。
从这里的报错看不出更进一步的原因,考虑到公司电脑无法被外网访问,只能推测是网络原因,具体还有需要咨询一下 Doom 的同学。
报错日志

2 doom 客户端安装脚本执行完成,doom 平台显示没连上客户端

考虑到是之前由于网络原因,没有录制成功,于是第二次我使用一台 vps 来进行应用部署。

系统版本信息:
Linux vultr.guest 4.4.0-154-generic #181-Ubuntu SMP Tue Jun 25 05:29:03 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

java版本信息:
java version "1.8.0_221"
Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)

网络环境:可访问外网,但外网可访问本机服务8080端口

在 ubuntu 服务器上遇到的问题比较多。

2.1 doom 客户端安装脚本attach.sh的兼容问题

在已配置 JAVA_HOME 的情况下,会出现 attach 脚本执行失败的情况。

attach.sh 执行报错:
attach.sh执行报错

attach.sh 执行报错定位:
attach.sh执行报错定位

为了快速解决,我注释掉了attach.sh中修改JAVA_HOME的那段逻辑。从而成功启动了。

注释 JAVA_HOME 修改逻辑:
注释JAVA_HOME修改逻辑

attach.sh 执行成功:
attach.sh执行成功

2.2 attach.sh 执行成功,平台显示客户端连接异常,且应用服务器无日志生成

平台显示连接异常:
平台显示连接异常

这时候就需要借助日志来进行排查,结果发现日志没有生成
找不到 doom.log:
找不到doom.log

查看过确定 ip 没有填写错误。如下图填写的是网卡的 IP 地址。
服务器 IP 信息:
服务器IP信息
由于没有日志,无法进一步定位问题了。还是得咨询 Doom 的同学。

共收到 9 条回复 时间 点赞

赞!期待后续解决阻碍后的更新。

像这种对于服务端环境有强依赖的,又没有把代码托管在阿里云的,用这种方案是不是不太可行?感觉本地客户端恐怕也解决不了本地环境负责的问题

稍微聊一下,doom 引流回放是最明显的能力,但是我个人在使用过程中认为其对于阿里内部技术栈,尤其是中间件层的支持才是最强大的,对于这种引流能力,就算是读操作,对两套环境的效果也不是 100% 一致的,比如可能会涉及读操作但写缓存,那写缓存的场景都要 mock 掉,以及到写操作,怎么做到数据不被击穿,队列不被引流环境消费,这种才是最需要考虑的,说真就引流这点我感觉一个 goreplay 就够用了,而且感觉 doom 也没有大力的对外推,毕竟这个的由来严重依赖于阿里的技术体系😂 😢 😓

ELes #4 · 2019年07月29日 Author
simple 回复

主要是想试用一下,想对这个平台的功能做个调研。然后实际尝试接入过程中遇到的坑比较多,在网上也没找到多少资料,所以就打算先把自己遇到的问题记录下来分享一下,大家可以讨论讨论。

之前有跟 doom 的同学了解过,doom 的使用没有要求代码要托管到阿里云或者把服务部署到阿里云的,只对被测服务的网络有要求。

只是目前接入还没有完全成功,是否还有其他限制,就还没有了解到。

ELes #5 · 2019年07月29日 Author
terrychow 回复

感谢分享~~
从 doom 提供的文档中,有提及到提供了部分中间件隔离以及对外服务调用的功能,不知道实际使用起来是否能解决不同环境进行读写操作差异的影响以及队列信息被非回放应用消费的问题。
只是因为现在接入步骤卡住了,暂时没法进一步体验。

有考虑过 doom 的实际使用会比较依赖阿里内部的基建,但是这个试用主要是调研性质的,主要是想学习一下录制回放平台的设计实现。刚好发现了一些接入的问题,就做个记录同时也分享一下。
如果 terry 有相关的使用体验的话,求分享求指导~~

ELes 回复

对的,可以朝这个方向调研学习,个人觉得学习完后可以结合你们那边本身的业务技术特点,自己搞一个能够适配你们的工具或平台,这个产出效果可能会更好

ELes #7 · 2019年08月04日 Author
terrychow 回复

嗯嗯 赞同~

期待更新,尝鲜

goreplay 也挺好的

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册