接口测试 公司需要做一个接口容错自动化测试寻求想法

cczhang · 2018年05月15日 · 最后由 cczhang 回复于 2018年05月22日 · 10821 次阅读

需要达到的效果:1、可以在管理后台设置接口配置信息,比如接口返回 502、404 等
2、前端请求接口,第一次请求该接口返回 502,第二次请求该接口返回 404,依次类推

说真的,我觉得好难啊,目前想到的方案就是二次开发 fiddler,然后结合 ui 自动化

共收到 48 条回复 时间 点赞

就是 mock 吗

charles 有个 locate 功能

用 mitmdump 写个脚本,自定义 mock response header 或者 body。。然后再用 flask 做个简单的页面去调 mitmdump 的脚本。

看过社区一位童鞋说的,写的再多,还不如直接自己写代码测试,看开发源码逻辑。搞这种平台实话说,虚大于实

easy mock 了解一下

对 arrow 回复

太感谢了,我到时候看看

对 CC 回复

九四九四,我都好想去搞别的,正好有空了,大佬就叫我搞这玩意儿,我这边的方案就是二次开发 fiddler,然后结合 UI 自动化,但是想想这难度,可怕

对 Jerry li 回复

是 Mock,但是要实现自动化,单纯的 Mock 达不到大佬想要的

对 hellohell 回复

这个类似 fiddler 来修改返回了,我们需要的是自动化,每次运行的时候,什么配置都不要

奇奇怪怪的要求。做这个东西的意义在哪里?

他不放弃让他出个方案啊;竟是这样的领导,没方案,没脑子,就要结果,你去解决, 放 kpi 里;

filder 的脚本能会写的人就不多, 我这本子安装太费劲,放弃.

基本方案就俩

在客户端那 mock,这个难度真的比较大,要能搞定基本可以当开发去改 bug;
做个假的服务器
- 各种语言可以实现,相当于开发了一个后台
- 然后我说的 charles locate,是直接返回结果,不是在中间修改后返回,只修改的话还是需要真的 server

然后感谢楼下说的mitmdump,最近客户端有 bug,用 charles 修改请求后定位,但手要快;
filder 安装麻烦,还要学新的脚本.
找到了相关的一个文,https://juejin.im/post/5ac9ea6d518825364001b5b9,喜欢的人可以去看

对 无为 回复

我也想知道😂 我就想做些实实在在的工具,这种浪费时间,效率又低

还是有用的,主要是 mock 一些异常 http 或者异常 key,value 值用来检测 APP 是否有处理,出异常可以,但不能导致 crash 等

对 文字 回复

目的是这样,但是很多种方式其实都可以做到这个效果,但是目前的难度就是自动化

对 cczhang 回复

可以实现啊,看这个 mitmdump 的 python 脚本的引用。对 response 类,写个随机产生异常的方法,并记录产生了那些异常。

对 文字 回复

哈哈,太感谢你了,刚刚研究了一下,你这个方案最佳方案,我把之前的方案彻底放弃了

对 hellohell 回复

看到了看到了,谢谢,突然感觉世界都光明了

  1. 可以通过类似相关工具 Fiddler, Anyproxy ,Nginx 代理 定义一些 rule 把接口 url rewite 到你自己的 mock 服务
  2. 你的 mock 服务对应接口读取一个配置标志位参数(可以数据库,redis 配置)返回不同状态数据
  3. ui 脚本执行前在访问接口前更新 mock 的接口配置参数
对 dig下 回复

mock 的方式试过了,然后需要前端写入代码,我们想要的效果是完全与前端开发隔离,所以方案还是被 pass 了,而且好复杂啊😂

我们公司团队做了一个接口容错自动化,用到了 anyproxy,可以了解下

对 慕酱 回复

实现了哪些功能呢?

我们做的是用 anyproxy mock 数据,然后再结合 UI 自动化。

对 慕酱 回复

是实现了 APP 的接口容错自动化吗

对 cczhang 回复

😀 不客气。我个人觉得你们领导还是挺有想法的哦。。另外,坐等你的分享。

对 cczhang 回复

恩 是的 实现了 APP 的接口容错自动化。

对 cczhang 回复

Android 和 iOS 都有实现

我们实现了这样的工具,不仅仅只是修改 status_code,还包括了 response 字段的修改
能够接入自动化框架

用 fiddler 的 AutoResponder 就好了,或者参考大神写的这个。https://testerhome.com/topics/6383

对 cloudwind 回复

如果只是单纯的修改返回值,就可以用你那种方式了,但是要实现自动化

对 jacexh 回复

好厉害啊,能提供实现方式吗

对 慕酱 回复

好厉害

测试接口对所有情况是否都做了异常处理?

https://testerhome.com/topics/6257 这个帖子我感觉已经包含了各种异常情况了,你只是在它的基础上扩展就好了

对 cloudwind 回复

这个方案我有看过,代码能力差啊,看的好蒙蔽

对 cczhang 回复

可以一起交流下

Postman,Charles 都有 mock 功能能做到这点

对 猪头君 回复

要的效果是不需要每次手动去改返回,而是自动化,如果你这种当时,都不会来问了😂

码代码吧,虽然很辛苦。

对 cczhang 回复

实现方式楼上某些人提到过,基于 mitmproxy,而不是 fiddler/charles 这种
之后再完善下,考虑会开源出来

对 jacexh 回复

好人一生平安,哈哈,昨晚大神又给了我一套方案,到时候成功也分享出来

对 cloudwind 回复

代码肯定要的,主要是方案,哈哈

看你这个需求,测的是前端处理后端各类返回的测试?mock.js?

对 独缺 回复

是的是的

对 独缺 回复

没错,我们的工具也是基于这个出发点来设计的:

  1. 接口层负责完整业务逻辑的验证
  2. 前端(web、移动端)负责对不同 response 的展示、联动等测试

这样做的好处还可以解决前端对测试数据业务性的依赖

对 jacexh 回复

你那边完成的怎么样了呢

对 慕酱 回复

请问具体的思路是怎么样的?方便分享一下吗

mitmproxy 很好用的好好弄弄 没问题的

对 Elegantwind 回复

哈哈,已经完成的差不多了

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