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

cczhang · May 15, 2018 · Last by cczhang replied at May 22, 2018 · 2017 hits

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

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

共收到 48 条回复 时间 点赞

就是 mock 吗

charles 有个 locate 功能

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

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

easy mock 了解一下

cczhang #6 · May 15, 2018 Author
arrow 回复

太感谢了,我到时候看看

cczhang #7 · May 15, 2018 Author
CC 回复

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

cczhang #8 · May 15, 2018 Author
Jerry li 回复

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

cczhang #9 · May 15, 2018 Author
hellohell 回复

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

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

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

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

基本方案就俩

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

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

cczhang #12 · May 15, 2018 Author
无为 回复

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

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

cczhang #14 · May 15, 2018 Author
文字 回复

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

cczhang 回复

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

cczhang #16 · May 15, 2018 Author
文字 回复

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

cczhang #17 · May 15, 2018 Author
hellohell 回复

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

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

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

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

cczhang #21 · May 15, 2018 Author
慕酱 回复

实现了哪些功能呢?

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

cczhang #23 · May 15, 2018 Author
慕酱 回复

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

cczhang 回复

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

cczhang 回复

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

cczhang 回复

Android 和 iOS 都有实现

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

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

cczhang #29 · May 15, 2018 Author
cloudwind 回复

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

cczhang #30 · May 15, 2018 Author
jacexh 回复

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

cczhang #31 · May 15, 2018 Author
慕酱 回复

好厉害

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

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

cczhang #34 · May 15, 2018 Author
cloudwind 回复

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

cczhang 回复

可以一起交流下

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

cczhang #37 · May 15, 2018 Author
猪头君 回复

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

码代码吧,虽然很辛苦。

cczhang 回复

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

cczhang #40 · May 16, 2018 Author
jacexh 回复

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

cczhang #41 · May 16, 2018 Author
cloudwind 回复

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

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

cczhang #43 · May 16, 2018 Author
独缺 回复

是的是的

独缺 回复

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

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

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

cczhang #45 · May 16, 2018 Author
jacexh 回复

你那边完成的怎么样了呢

慕酱 回复

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

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

cczhang #48 · May 22, 2018 Author
Elegantwind 回复

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

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up