自动化工具 接口自动化测试平台

阿森 · 2018年11月06日 · 最后由 回复于 2021年03月01日 · 8230 次阅读

前言

又回到接口自动化测试上了,不用多说,接口测试的重要性,之前发布过一个工具,但是随着公司接口的增加,项目的增加,所有接口写在一起太难维护了,为了解决这问题,开发新的前端界面,来更好的维护接口自动化用例。

平台功能

1、接口管理,添加和维护功能。
2、支持接口的用例添加、维护、调试功能。
3、更丰富的断言类型。
4、支持定时任务,在任务管理中集成执行我想要执行的所有接口用例,这些接口用例是在用例管理中加入进去的。
5、更漂亮的报告展示,快速发现失败接口用例。
6、一些接口参数很难获取的,可以在参数管理中,通过查数据库、调其他接口、java 反射(动态调用 java 方法)等获取。
7、新增业务测试功能 - 多接口实现一个业务流程。

整体架构

整个平台后端使用 java 开发,前端使用 vue 框架,采用前后端分离,完全脱离我们自动化测试中 jenkins、testNG 工具

应用 工具
服务端 springmvc + mybatis + mysql
前端 vue+vuex+axios+vue-router+element
发送请求及断言 rest-assured
报告 reportNG 改版

界面功能展示

1、整个界面功能 分为项目管理 - 接口管理 - 用例管理 - 参数管理 - 任务管理 - 日志管理,先添加项目,在项目基础上添加接口,在接口上面添加用例,然后就是在任务管理里边执行我查询的所有用例,最后生成报告

接口管理

首页

项目管理页

接口管理页,通过选择项目跳转到接口管理,这些接口都是通过业务分组管理的。

接口详情、编辑页

接口调试页,根据公司内部接口特点,能够接口更方面的接口调试,免去各种加密方式,让开发和测试人员都能使用

用例管理

用例管理页,和以前其实没区别的,只是样式修改,能够同事执行单条或者多条用例,能够做前后置处理操作

用例管理编辑、调试、添加页,他能够调试用例,成功之后再添加,能够通过前置处理生成想要的参数,保证用例是动态值,能够像 jmeter 那样,正则表达式提取器那样,提取想要的参数,保存到参数管理里边,其他用例如果需要该参数可以直接获取,还有更丰富的断言类型。

参数管理

参数管理目的就是动态获取接口参数值,保证用例每次执行时都能成功,这里参数的取值方式总共分为:1、直接赋值,2、通过调用接口,3、数据库查询,4、通过 java 反射调用 java 方法 5、执行其他用例

任务管理

最终通过执行任务管理中的任务执行测试用例

日志管理

日志中,支持查看每个任务执行详情,发送邮件报告

执行报告页

最好,我想说,接口自动化,难点还是在数据准备上,想要每次用例都通过,就得要每次数据是动态生成的,通过各种前后置处理生成我们想要的数据。

共收到 35 条回复 时间 点赞

code 是否可以开源?

期待开源😀

我就想请教一点,通过你这样一个自己造的轮子,做数据维护不会增加成本? 我举个例子,我要测试一个电商用户 Coupon 的查询接口 getCoupon,并且测试查询 “已使用 Coupon 的情况”。那么我需要的条件如下 -

#1 新建一个用户
#2 为新建用户领取一个 coupon
#3 下一个订单,并且使用这个 Coupon
接下来才可以来到 target 本身执行测试逻辑

那么通过你这个平台,如何实现 No coding 的测试数据准备?

阿森 #33 · 2018年11月07日 Author
lyu 回复

如果依赖不复杂,我们可以通过前后置处理就能解决,前置可以查数据库、调接口、查缓存、执行别的用例把数据保存到参数管理里边,别的用例用的话直接去拿就行, jmeter 怎么用我们就能怎么用,也许会问为啥不用 jmeter,因为他不好维护,不好管理,不好二次开发
如果依赖复杂,我们有业务测试功能,多接口实现一个业务功能,接口与接口的关联还是通过前后置来关联上的。

阿森 回复

意思就是你们这个平台还从 Web 端提供了前后置方法的入口? 比如创建一个 Case 的时候,有提供一个前置条件的表单,可以傻瓜式的选择 “执行 SQL” 或者 “调用用例 id=15” 这样的操作?

只是想交流一下,因为我之前也捣鼓过类似的平台,只是在资源(特别是人力资源)有限的情况下,我深深体会到这样还不如纯 coding 来基于 jenkins 做持续集成。 因为一旦项目有新的诉求,如果我采用自建轮子的模式,需要从后端开始将新的 feature implement 到前端,而且有可能会遇到很折腾的问题; 如果是以 jenkins 为中心的构建模式,要省去很多维护时间,从而把精力集中到测试用例本身。

再次强调,没有贬低的意思,只是交流。

楼主说的对,像 JMeter 那样~

lyu 回复

你用 jenkins 就不需要造数据了,jenkins 跟数据准备有毛关系啊,我不明白集个成有那么难吗

阿森 回复

我说 jenkins 是说一种模式,并不强调 jenkins 本身。因为一般基于 jenkins 构建体系,所有的东西都在代码里,所以要做数据准备也就是几个类的封装,起码不需要做前端的开发。 好吧,既然您的态度是这样,那交流可以停止了。

阿森 #28 · 2018年11月07日 Author
lyu 回复

你如果自动化只是你自个用的话,你可以写代码,一个接口写个类,相同的代码写无数遍,我们要的是所有测试人员都能够使用

阿森 回复

他可能也是所有测试人员都用,然而可能你们有几十几百人,他们只有 2、3 个人,这就是对平台作用的理解不同的原因了

仅楼主可见
阿森 #25 · 2018年11月07日 Author
Eward 回复

暂时不能开源的

不开源的话可以写下思路和一些使用到的工具啥。
不然也只能看看

阿森 #23 · 2018年11月08日 Author
徐汪成 回复

当你了解 rest-assured 后,可能你也迫切想开发个工具,来代替天天写那些相同的脚本,除了数据不一样而已

lyu 回复

我来说说吧,之前我也想过捣鼓一个类似这样的平台,但后面想想,其实还是要看项目和公司规模,人力有限情况下,我也是觉得没必要搞平台,当时想着就算弄出来了,维护成本先不说,做的事情也就都那样~ 与其自已造轮子不如把现有框架和工具玩熟,提升产品质量和效率,所以我还是蛮赞同你的观点。

能做出这种平台,也是能力的一种体现,楼主加油v^

是这样。 我上面也再三说了,不是在说这东西不好。我只是在请教问题,想看一下别人是怎么解决我当初遇到的一些问题。
好的代码结构,好的封装同样可以避免所谓的重复劳作。目前我的那一套框架虽然没有一个 WEB UI,但是也只是维护数据和用例本身,不需要又去写什么重复的类,都是封装好的。这么说吧,我如果加一个 DB 把我的数据文件存起来,加个前端支持填写用例并把我们的数据和用例展示出来,那也和楼主这个平台差不多。不过这时候就会无端的多出很多开发成本。 正和你说的一样,人力有限的时候。这是灾难性的。楼主的团队规模大,所以上面是想请教我之前遇到的一些问题,看他们是否有解决方案吧。

阿森 #18 · 2018年11月08日 Author
lyu 回复

👍 👍 👍

lyu 回复

嗯,大家多多交流,彼此互相学习

槽神 回复

https://docs.asura.pro/ 这个是开源的,了解一下

欧几里喵 回复

谢谢,设计思路我清楚
我是看楼主这个技术栈跟我的平台一模一样,想着直接集成

阿森 #22 · 2018年11月12日 Author
槽神 回复

一样,咱们可以共同交流,开源的话暂时不会的

阿森 如何提高接口测试的稳定性和容错性 中提及了此贴 11月12日 21:07
匿名 #13 · 2018年11月13日

楼主 P7 吗?

阿森 #12 · 2018年11月13日 Author

担当不起,我只是想和大家分享交流,不谈这个,(o)/~

可以视为简化版的爬虫平台.
对于可进入接口自动化测试的阶段的项目/产品来说,测试结果的累计/对比的价值更高.
将版本的稳定性可视化对于开发和测试团队都有很大的激励作用.

阿森 #27 · 2018年11月15日 Author
one.way 回复

提高整个测试团队的效率这是最重要的,方法有很多,一味的追求自动化有时会死的很惨

仅楼主可见
Eward 回复

15712862196

谢谢分享

仅楼主可见
lyu 回复

也遇到这样的问题了, 想问下您现在有解决办法了吗, 我们目前是 rf 做的接口自动化, 大部分的接口为了造数据,以及对结果的正确性校验 需要调很多接口,目前用 RF 来维护想对比较稳定, 但是大佬们想找 postman 这种工具来替代,理由门槛低,但是我觉得 postman 对单个接口调试是很方便 的, 但是对业务流实现起来 受平台本身的一些限制 ,用例不能复用,那每次用到都要新写一个,这样后面维护起来应该会很麻烦,

看过不少接口自动化测试平台,但是都没能满足目前的需求
1、不支持针复杂逻辑的校验,比如对应答报文所有字段的校验,包括字段是否必须、类型校验、非空校验、格式校验,而且应答报文层次深,最多可达到 8 层
2、测试报告太简单,要么 pass 要么 fail,而且 fail 原因描述太简单。
3、项目多,各种各样的接口也多,请求参数如何准备,有些接口之间有依赖

liya678 回复

我现在就遇到这个问题,难道就的换其他工具,postman 不行吗。忧伤😔

作者有开源打算,让社区共同维护更强大

这个开源了吗

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