问答 web 平台编写 UI 自动化用例,如何调试呢?

重来看雨 · 2021年05月08日 · 最后由 重来看雨 回复于 2023年07月24日 · 4450 次阅读

问题:

最近做 UI 自动化平台的设计,设计倒是没什么问题,但遇到一个,如何调试呢!!!

说明:

  • 在 web 上编写关键字用例后,保存到数据库
  • 用户在 web 上选择用例执行测试,则由框架触发测试

解决方案:

  • 用户在 web 上编写用例,点击 debug 按钮,由框架执行测试,通过测试报告的日志和截图确认调试过程,但无法看到执行过程,感觉好别扭。
  • 用户在本地编写关键字用例 (一个 json 格式文件),通过框架命令行执行测试,虽然本地可以看到执行过程,但用例没有入库,最后还得在 web 上写一遍。
  • 整体方案不用关键字,编码写用例,本地调试,但整个平台就是调度和结果展示平台,脱离了设计。

各位同学,提供点思路呗。感谢感谢!

共收到 27 条回复 时间 点赞

把框架的执行日志收集回来在 web 端实时展示

cool 回复

日志实时展示与在报告查看应该差别不大,主要是看不到浏览器 (客户端) 的界面😂

重来看雨 回复

那可以考虑在框架这边搞个录屏功能,执行完之后看录屏也方便调试,我们目前 web 自动化用 selenoid_ui 执行,有录屏功能,app 自动化还没有

cool 回复

也是可以哦。谢谢

你说的调试是指编写过程中的调试(类似写代码的断点调试),还是后面多次运行偶尔出现的出错后问题排查定位?

如果是前者,看是否可以支持一个一个 action 手动执行 + 随时手动插入 action 功能。之前看到站内开源的 opendx 这块做的挺不错,但它是针对 app 的,你可以看下看是否有可以借鉴的点?

不过从习惯写代码的角度,再怎么好的 web 平台,调试起来还是没有 ide 的断点调试那么强大。

6楼 已删除

我觉得你这个最简单的办法就是可以让用户吧本地作为执行机,然后 debug 的时候 可以吧本地当做执行机去执行

请教下,用例都是单独没有关联的吗?每次执行都需要重启 chrome 吗?

陈恒捷 回复

是第一种方式,大概理解了 opendx 的调试方式,可以借鉴借鉴。哈哈哈

咸鱼菜鸡 回复

这样也可以,但得保证设备和测试工具在局域网。

ZYH 回复

目前设计上,是否每次都需要重启 chrome,由写用例的人决定。

重来看雨 回复

web 自动化相对移动自动化部署来说还是方便了很多,你可以直接搞个 jenkins+gitlab 这种

重来看雨 回复

大佬,什么时候分享下整体啊,不方便源码的话,看下页面也好

ZYH 回复

😂 还没开始写呢

每次截一下图?同步存到执行结果的日志目录里面?
直接改测试框架

zalenium 具有录屏和实时预览功能,可以进行调试。不用谢~

汉学堂 回复

这样整体的测试运行效率会好低

好的。谢谢

code-server 了解一下,集成到你的平台里面,装好插件,就是个 cloud-IDE,调试应该还是比较方便的

槽神 回复

成本好高啊。😂

web 端:
1、debug 的话,selenium hub 作为常驻服务,用户自己的机器作为 node 注册上去 (可以结合下面 zalenium),指定对应的服务执行调试 (可以百度下 selenium grid 关键字)。Remote 还可以拓展通过 sessionId 调试已打开的浏览器。
2、zalenium 作为分布式执行机 -- 用于任务调度的执行,包含了录像和实时查看执行结果;

App 的话:
本身可以支持无线方式吧,集中进行管理即可。
开源好像也有个云机的管理平台。

石头君丶 回复

我现在使用消息队列,每个人的框架,都往该 MQ 订阅消息。当 web server 收到任务请求,向 MQ 生产消息。本地的框架收到消息后,判断标识,true 的话,就开始本地环境执行测试。

ZYH 回复

用例页:

用例详情:
封装的操作关键字:["点击","坐标点击","输入","清除","双击","长按","前往","睡眠","上滑","下滑","左滑","右滑","android 按键操作","ios 键盘操作","切到 webview","切到 NATIVE","切到新 window","切到旧 window","登录","登出"]

开始测试页:
调试地址即 selenium grid master 的地址。
调试环境即 本地执行框架的标识

报告页:

ZYH 回复

另外,还支持接口自动化测试的调度和报告展示。

大佬请教下,调试这个功能做的如何了?在平台点击调试,可以在用户本地执行查看预览效果么?

ZYH 回复

可以的。我的做法本地启动 selenium grid 将浏览器和移动设备接入,然后本地启动执行框架,在平台开始任务界面提交本地的 selenium grid master ip 和需要的浏览器后和调式环境标识后,服务端再发布 MQ 消息,本地框架收到 MQ 消息,就可以本地执行了。

楼主最终如何解决的呢?

toasttwo 回复

请看上一个回复。

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