开源测试工具 seldom-platform 结束平台框架之争

干饭狂人 · 2022年12月20日 · 最后由 suda23 回复于 2023年06月12日 · 8655 次阅读

1.问题引言

目前大大小小的公司都在做自己的自动化测试平台,尤其是接口自动化测试平台,因为接口格式比较固定,所以比较容易实现。当然,大体思路就是在线(web)版的 postman,或者是在线版的 HttpRunner(通过内嵌编辑器只支持 yaml/json)。 这些方案的思路就是告诉你不用写代码。 创建一条接口用例就是填写个 url ,选个请求方法(GET/POST),然后再填写一些参数,保存!看一条用例就完成了。

简单的接口确实如此,当我们真的拿这些平台开始大规模管理接口项目用例的时候,情况可能并不是特别美好!

  1. 接口依赖,A 接口的依赖 B 接口的返回值,B 接口又依赖 C 接口的返回值。
  2. 需要查询数据库,查询数据库验证结果,查询数据库初始化数据。
  3. 数据驱动问题,单接口或场景(多)接口流程都一样,数据不一样。
  4. 接口加密,生成随机数据。
  5. ....

别急,你说的这些问题平台都有方案的,你看!我们有前置脚本前置接口前置SQL后置..,我们还提供了 hook,你只要这样 {{n}} 就可以引用变量了,是不是很强大!? 你还可以在这里 写 py 脚本,是不是很厉害!?

我一度怀疑,都要这些多操作配置步骤了,还是平台宣称简单易用吗?都要在平台上写 py 脚本了,还是平台宣称的不用写代码,降低使用门槛吗?

我一开始是框架派的,就是 unittest/pytest + requests 来写接口自动化;后来,大家都在玩平台,于是我们也开始转向平台,可是我自己做的平台,最满意的是领导和我了,领导说这平台好,用例统计方便,执行结果在线查看... 我也觉得好,毕竟,谁能说自己孩子丑呢? 可以,使用平台的业务测试他们觉得不太好-- 这种场景暂不支持啊;这个功能还没做,这里怎么又出 bug 了;配置这么麻烦,还不如写代码方便。

于是,出现了 平台派 和 框架派。

平台派观点:

  • 门槛更低:通过 UI 交互就可以完成用例的创建、编辑、执行。
  • 任务管理:例如:定时任务,可以更好的管理任务的执行。
  • 监控统计:例如:比较方便统计历史数据,用例/任务数量,每天/月/年执行情况等。
  • ..

框架派优势:

  • 功能强大:通过代码的方式维护自然是更强大的,可以随意使用编程语言的特性完成工作,例如 封装、继承、if 判断,for 循环 等。
  • 方便扩展:扩展用例的功能非常方便,例如,实现数据库操作,只需要安装 pymysql 库即可。
  • ...

2.seldom-platform 平台

seldom-platform 是不一样的测试平台,他基于 seldom 框架提供一种新的方案。充分的发挥了平台和框架各自的优势。用一句说明:

seldom-platform 测试平台基于 seldom 框架实现自动化测试管理,结束平台与框架之争。

seldom-platform /seldom 充分利用平台和框架各自的优势,来完成自动化测试工作。

通过下面两张图更快的认识 seldom-platform/seldom:

seldom 自动化测试框架

seldom-platform 自动化测试平台

通过 seldom 框架编写的用例,可以通过 seldom-platform 进行解析展示、执行、查看结果、创建任务等。

seldomQA 开源项目目标:

seldomQA 相关项目:

3.功能介绍

接下来介绍 seldom-platform 平台的使用。

3.1 项目管理

项目是整个平台的开始,平台提供的大部分功能都是围绕着项目展开的。

创建/编辑项目:

seldom-platfrom 创建项目的核心拉取一个 git 项目到本地。

选项说明:

  • 名称: 随便起一个项目名字。
  • git 地址:一个用 git 管理的自动化项目的地址。
  • 测试目录:自动化项目的 测试用例目录。

参考自动化项目:https://github.com/defnngj/seldom-api-testing

  • 如果是新创建的项目,你可以选择 克隆(git clone )
  • 如果是已克隆的项目,你可以选择 拉取(git pull)

3.2 环境管理

环境管理 与 seldom 框架的参数有关。

参数说明:

  • 名称:给环境起个名字
  • base_url: 接口自动化参数,指定 接口的基本地址。
  • browser: Web UI 自动化参数,指定运行的浏览器。
  • env: 数据驱动使用参数,指定读取哪个环境的数据驱动文件。

3.3 团队管理

创建任务时需要指定团队,功能简单,不做解释。

3.4 用例管理

用例管理主要用来同步用例,运行、查看结果等。

3.4.1 同步用例

点击 “同步” 按钮,同步用例。

同步用例步骤说明:

  1. 拉取代码:相当于执行 git pull 命令。(如果没有项目,执行克隆 git clone)
  2. 查找用例:通过 seldom 提供 API 检索自动化项目中的用例,写入一张临时表。
  3. 同步结果:对比临时表与用例表中的用例,找出差异:新增/删除的用例。
  4. 合并:把临时表中的结果写入用例表。

说明:

  1. 自动化项目中包含许多代码(数据驱动文件、报告、封装、page 层),同步只解析自动化项目中的用例。
  2. 数据驱动的用例可以解析为多条用例,也可以解析为一条用例。seldom 提供两种模式。
  3. 如果某用例无法解析,可能缺少依赖库。

3.4.2 用例展示

执行完同步就可以解析出用例了。

左侧树: 与测试化项目的测试用例目录一致,没有任何要求,目录如何创建,这里都可解析。

右侧表格:

  • 测试类:.py 文件中的测试类。
  • 测试类描述:测试类的注解。
  • 测试方法:.py 文件中的测试方法(默认数据驱动被解析成多条用例)。
  • 测试方法描述:测试方法的注解。
  • 状态:用例的执行状态。未执行/执行中/已执行
  • 执行:执行按钮

3.4.3 运行&结果

平台除了解析展示用例,当然是可以运行和展示结果。

点击 “执行” 按钮,完成后,点击表格行,弹出执行结果:

3.5 任务管理

任务管理主要是管理多条用例的执行和结果展示。

3.5.1 创建&任务

点击 “创建” 或 “编辑” 按钮看到下面的列表。

选项说明:

  • 任务名称:随便输入一个名称。
  • 运行环境:任务添加用例的执行环境。
  • 团队:任务关联的团队。
  • 选择用例:
    • 目录树:通过目录树点击文件。
    • 穿梭框:穿梭框显示添加的用例。

3.5.1 运行&报告&详情

  1. 点击 “运行” 按钮运行任务。

  2. 点击 “任务名称” 查看报告。

  1. 点击报告列表的数字按钮查看详情

  1. 查看报告详情

4.平台规划

这只是平台的第一个版本的功能,未来将会加入更多功能。

  • 定时任务
  • 统计面板
  • 更多...

同时,这也是一篇招募帖,如果这个项目解决了你的痛点,看到了这个项目的价值,欢迎以任何方式参与进来~!

共收到 14 条回复 时间 点赞

首先,感谢 @taylortaurus 发帖:

我来补充几点说明:

  1. 虽然图中的截图是 接口自动化项目。但理论上通过 seldom 编写的各种类型的测试都是支持的, Web/App UI 自动化测试也可以; 不过 App 测试环境相对复杂,比如 后端需要 启动 appium server 。

  2. 图中解析用例 不是单纯的 把目录下的文件/类/方法 解析出来,一个项目中 有各种.py 文件,比如 common/utils 放的公共模块, 甚至在测试类中也有 普通的 不以 test 开头的方法, seldom 可以做到只解析测试用例

  3. 用例解析不依赖 seldom-platform ,这是 seldom 框架的能力; 比如,我们公司 后端用 go 调用 seldom 命令来解析和执行用例。

  4. seldom-platform 是开源项目,有些人参与了走了,有些人贡献了想法,有些人贡献了代码,非常希望更多人参与贡献想法和代码; 你看不上 UI 可以自己 fork 分支,重写 前端/ 后端都是可以的。

6666666666666666666😍

4楼 已删除

那些前置处理脚本放在 case 层吗?比如鉴权、加密、各个项目不同规范的 header 组装等。

自己搞的不稳定是一个很大问题。无法推广到整个研发团队。然后放弃了,跟领导说用鹅的 Apifox,配合 Jenkins,实在是润。然后整个研发团队用起来很爽,没有什么学习成本的东西才是好东西

jinglebell 回复

你只看我抛出的问题,没看看 seldom-platform/seldom 方案? 你说提到的问题是 seldom 框架中实现的,怎么实现取决于你的业务和方案; seldom-platform 只是用于展示、解析、和执行用例,并不限制你用例如何写。

适合自己团队的就是最好的。

另外再说一下:
seldom-platform/seldom 解决的不不单纯是接口自动化问题;可能文章大量提到了接口案例,误以为就是为了解决接口问题的;seldom 支持 web/app UI、接口,写什么用例都可以;多复杂的场景都可以;这个框架的优势; 并不影响 seldom-platform 对用例的解析和展示。 --- 这是一整套 自动化的解决方案。

买的他们的服务,私有化部署的?

现在基本都是这种方式的组合了吧

客观来讲,看不出它的优势在哪里?省了哪方面的时间?谁是你的目标用户?懂代码的还是不懂代码的?

看完之后,应该是这样子的:

  1. 使用 seldom 来编写用例,在这个框架中来处理用例之间的依赖、接口之间的依赖等等; 2.然后使用这个 platform 将写好的用例解析出来,并在页面上进行展示、执行、查询执行结果、查看报告等;

那么实际上:

  1. 测试人员还是需要用 python 脚本去写用例 2.接口测试的核心问题之一,如何 debug 问题还是没解决

感觉上,没有特别吸引人的地方?具体的优势在哪里?目标群体在哪里?

Just4life 回复

我来简单介绍一下背景:
接口测试平台我们做了三版,文章有介绍过:https://testerhome.com/topics/20084

对于我们公司的业务测试来说都不算好用,虽然第三版比较强大,但编写复杂的场景测试,需要借助辅助功能写很多 py 函数(类似 httprunner 的 debugtalk.py 文件里实现函数)

那既然用平台还不是要写代码,为什么不全部写代码? 于是,全部业务测试开始使用 seldom 框架编写用例。使用 gitlab 管理 接口自动化项目。 我们公司的业务测试是乐于接受这个方案的,面试的时候就考察了编程能力。 --- 你本地使用 pytest/unittest 写自动化,难道不会 debug 吗?

业务测试人员用 seldom 框架写自己负责模块的用例, 不受制于平台的功能限制(代码可以随意安装扩展库)--- 这对我们来说就是优势。 这也是框架 本来的优势。

你们可能又想,我们写好了代码 集成 jenkins 上面不一样可以 自动/定时触发执行,生成结果。

那 seldom-platform 平台的优势可以自动解析和展示每一条用例。统计历史执行结果; 我们公司基于 seldom-platform 的思路做了 产线拨测 系统; 那用例需要审核, 创建任务的时候可以选择 test_a.py 文件的一条用例 和 test_b.py 文件的一条用例... 这种管理用例的粒度,jenkins 估计做不到吧? --- 这不是刚好发挥出了 平台 应该的优势吗?

保卫战 回复

看不出它的优势在哪里?

结合了框架和平台各自的优势: 用框架写用例,我认为是优势; 用平台 展示用例,执行用例是优势。(相反,尝试用平台写用例,解决复杂的用例更复杂,我不认为是优势。)

省了哪方面的时间?

这套方案,相比其他自动化方案 可能没有什么节省时间上的优势;

谁是你的目标用户?

需要做自动化的测试团队。

懂代码的还是不懂代码的?

必须懂代码啊~!不懂代码咋写用例?

有没有一键部署?

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