自动化工具 WEB 自动化工具

hippo · 2023年04月17日 · 最后由 面对疾风吧 回复于 2023年09月19日 · 13830 次阅读

背景

使用自动化测试框架编写用例的时候,维护元素信息以及脚本较为麻烦。对应新手来说,编写脚本的能力有限,使用工具会更容易入手。最重要的是可视化操作让我觉得体验舒服。

演示地址

地址:http://43.142.40.119/#/login
账号:test
密码:A123456.
首次访问稍慢一些😅

操作说明

已有 demo 例子,由于部署在服务器,只能够调起服务器的浏览器。

WEB 测试功能介绍

统计图表

首先需要选中项目,后续的测试都是在这个项目下进行。
展示用例/计划的当前数量统计,一周内新增统计,一周内执行结果统计。

项目管理

管理不同的项目,创建完一个项目后,可以在统计图表选中这个项目,来展开后续的测试。

元素管理

元素库:元素的分类用树形结构管理,选中节点后展示其下面的元素列表。
元素列表:管理当前分类下的所有元素。

用例管理

管理页面

场景管理:用例的分类用树形结构管理,选中节点后展示其下面的用例列表。
用例列表:管理当前分类下的所有用例。

新建/编辑页面

点击新建或编辑会跳转到该页面,展示详细信息。
用例名称:用例的标识名称。
所属分类:用例库下的分类名称。
用例等级:用例的等级。
用例描述:用例的详细信息。
性能模式:性能模式能减少内存和 cpu 的占用,启用后程序在后台运行,不调起浏览器。
出现异常截图:执行后异常的步骤会截图保存,在报告内可以查看。
结束关闭浏览器:执行结束会关闭浏览器。
忽略异常并继续执行:步骤出现异常不会暂停执行,会一直执行下面的步骤。
数据驱动:用例用数据驱动的方式执行。上传 EXECL 文件后,文件内容的行数=执行的次数,行名称=步骤变量名,每次执行都会按每行内容替换步骤中的变量值。

新建/编辑步骤

步骤名称:自定义输入步骤的概要信息。
操作类型:浏览器操作、元素操作、鼠标操作、输入操作、断言操作。
操作对象:元素库选择或者直接输入定位表达式。
启用状态:启用的会执行,不启用的会跳过。
行背景色:选择后列表行会显示该颜色。

用例引用

可以引用当前项目下所有的用例,比如我们常需要用到前置操作的登录,或后置操作的登出,可以用过它来引用。
引用完成后会关闭引用对话框且该引用在列表最后一行显示,可以通过行拖拽功能自由调整位置,用例步骤的执行顺序是从上到下的。
注意:用例 A 引用了用例 B,如果用例 B 步骤变了,需要在用例 A 删除用例 B,再重新引用用例 B。

场景变量

管理当前用例下所用到的变量。
字符串类型的变量,引用的方式为 ${变量名};定义为全局的变量后,则在当前项目任何用例下都能使用。当前项目下变量名不能重名。
例:当前有个 变量名称为 group 在步骤中使用 ${group},在后续执行中会替换变量值 “测试部”。

立即执行

立即执行后,前端页面会进入 loading 状态来等待用例的执行,执行完成会打开全屏测试报告对话框。

执行计划

新建/编辑页面

点击新建或编辑会跳转到该页面,展示详细信息。
计划名称:计划的标识名称。
计划描述:用例的详细信息。
性能模式:性能模式能减少内存和 cpu 的占用,启用后程序在后台运行,不调起浏览器。
出现异常截图:执行后异常的步骤会截图保存,在报告内可以查看。
结束关闭浏览器:执行结束会关闭浏览器。
忽略异常并继续执行:步骤出现异常不会暂停执行,会一直执行下面的步骤。
异常告警:开启告警后可选择钉钉群发送告警消息,选择 @ 联系人后,输入手机号码用英文逗号隔开。

用例引用

与用例新建编辑页的引用一致,区别在于用例的新建编辑不光能引用其他用例,也能新建步骤,而计划内只能引用用例。

立即执行

立即执行后,前端页面会进入 loading 状态来等待用例的执行,执行完成会打开全屏测试报告对话框。

调度执行

依赖 xxl-job 任务调度中心去运行计划,xxl-job 的具体功能请参阅它的官网介绍,官方文档地址:https://www.xuxueli.com/xxl-job/
调度执行:点击调度执行后,浏览器会打开新标签页,并打开调度平台登录页,并复制当前计划的 id(在任务参数输入框粘贴)。

任务调度中心账号/密码 :admin/123456
操作步骤:登录任务调度中心 --> 任务管理 --> 新建或更新任务 --> 任务参数输入框粘贴计划 id。启用任务会根据 cron 调度,执行一次则立马执行。执行完成后,可在测试报告列表页处查看执行人为 xxl-job 的记录。

测试报告

用例执行、计划执行、调度计划执行后会生成相应的测试报告,点击报告名称可以查看报告详情。

总结

也算初步完成了该工具,目前还是自己在测试使用,边使用边改问题也相对稳定了,之后也会持续更新。稳定了,把代码整理好会开源。
欢迎大家在使用后提出宝贵意见,其他工具的介绍 https://testerhome.com/topics/36147

共收到 28 条回复 时间 点赞

感谢大佬分享!

仅楼主可见
25楼 已删除

点个赞,系统设计跟我前年整的差不多,甚至连部分页面都一样...

一些建议:

  1. “注意:用例 A 引用了用例 B,如果用例 B 步骤变了,需要在用例 A 删除用例 B,再重新引用用例 B。” --这个要改下,不是真 “引用”, 假设以后 1000 个测试用例引用了 “登录” 这个用例,还要他们手动更新 1000 个用例么? 会被喷的。
  2. 测试步骤支持动态执行代码 单靠有限的封装好的方法,可能没法完全满足使用需求。
  3. 其他一些小点:图像定位元素的能力,元素库批量导入、测试报告支持基线设置,自动截图比对等等
hippo #24 · 2023年04月17日 Author
kane 回复

现在还没开源,等完善些会开源。

非常感谢你的建议,你说的三点确实都需要。第一点我现在想到了解决方法,这两天会更新,后面的两个建议需要琢磨一下。

别随便公布公网 ip,会被打的😂

hippo 回复

还有一些点,我也说下吧,仅供参考:

  1. 我平台的分布式任务调度是自己实现的,在测试任务(对应你的 “测试计划”)里就能完成定时执行、通知等相关的配置,你目前的方案,用户使用的时候可能会有些割裂感。
  2. 我的平台没有 “测试报告” 这种页面, 见过很多平台有这种单独测试报告页面,但不是很理解这种设计,各种任务的报告杂糅在一起,找起来真的方便么。 我的设计是:测试任务 1:N 执行记录 1:1 测试报告, 根据测试任务就能顺着看到任务的执行记录以及对应的测试报告。
  3. 使用量上来后,我默认筛选当前登录用户创建的数据(可以手动清除这个筛选项), 大部分人大部分情况他们只关注自己的 case.
  4. 如果重新写个平台,我可能会选择基于 playwright,而不是 selenium(不知道你选的是哪个?)

请问下,看用例编辑页面,有立即执行功能,在调试单条用例,在当前页面没看到其他配置,怎么绕过登陆的呢?

hippo #11 · 2023年04月18日 Author
ZYH 回复

现在没有做绕过的策略,还是需要先登录。调试单条的时候,先引用登录的。

hippo #18 · 2023年04月18日 Author
lazyBoy 回复

再次感谢大佬分享。
1.一开始我也是在计划里面,有个 cron 的控件和日期的控件,选完后端用 quartz 调度,在写的过程遇到了问题一时没解决,就改用了 xxl-job,导致你说的这种割裂感,这个后期也再想想。
2.测试报告页面几乎就是简单写了个列表页,报告的数据直接拿的操作记录表的数据,看到你的理解或许更佳。
3.可以做到,查询用例的时候加上按创建人的参数,这改起来不麻烦。
4.用的 selenide,本质上也是 selenium。你说的这个 playwright 有优势吗。
大佬私发个你邮箱么,你的经验值得学习。

hippo 回复

不敢称大佬, 当 “喷子”“指指点点” 比较容易罢了 hhh,我的平台也还有一堆问题😅

playwright 的亮点很多,比如 Trace Viewer、支持录屏、更快更稳定等等, 可以了解一下。

仅楼主可见

跟 sonic 很相似啊

hippo #14 · 2023年04月18日 Author
tester999 回复

sonic 没用过 相似挺巧的 😅

hippo 回复

测试的平台都大同小异

仅楼主可见

这个样子怎么像重新再做一个 metersphere

vx 15158989710

simonpatrick 回复

有参考它的

这个统计图表看着眼熟...

hippo #23 · 2023年04月19日 Author
Chras 回复

😂 不光图表眼熟吧,操作步骤形式我照着你的交互。

感谢分享,期待开源

tangoliver 回复

开源了。

项目已开源,在本站的开源项目里上传了

大佬 前后端技术栈用啥

lazyBoy 回复

playwright 平台开发的如何拉,求分享

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