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

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

问题:

最近做 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 回复

请看上一个回复。

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