分享一个小工具 Boast:如何从服务端跟踪所有 HTTP 请求,并方便回放?

2017-03-31 16:22:58 +08:00
 bobchengbin

客户端工程师:“ xxx 接口坏了,我的程序都没动过”,后端经常会收到这样的质问,但是我们现在如何重现这个问题?有以下几种情况:

一、后端测试了一下发现没有问题

“我这里测试了是好的啊”,就只能让客户端工程师再操作一遍,亲眼看到错误之后就肯定是有问题了,就得去找问题,这时候这台手机,以及这台手机里面的数据都非常重要,因为这些数据可以让 Bug 重现。

二、测试了也有问题

这时候后端就去修改程序了,但是每一次的测试是否有问题都需要在客户端中操作,有时候的操作非常的复杂,在这上面花的时间会比较多。最后使了各种神通才终于找到问题,原来是这个用户的某某数据有异常才会出现这种情况。

以上这种情况屡见不鲜,最麻烦的点就在于,每次都要以出现 Bug 的相同参数去请求,有时候你知道这些请求的参数,可以把它们放到 Postman 这种工具里面,但大部分时候你并不知道它对应的参数 (token)

如果我们可以在服务端跟踪所有的请求:接口地址, Header , Body ,后端返回的 Header 、 Body ,这样我们就能查到对应的请求参数和返回值,可以直接填到 Postman 里面,要是还能一键重新请求就好了,因为我们不想修改请求的参数,只是想再以相同的参数请求一遍,这样我们来调试对应的程序。

正好以前用过 ngrok ,发现它有一个非常好的 debug 界面,可以达到以上的要求,但现在不需要它的内网穿透功能,于是只能自己写一个程序,只包含以下功能:

基本工作原理

HTTP 客户端                   Boast                       Web 服务器
| GET http://localhost:8080/   | 记录请求并进行反向代理      | Response 200 OK
| ---------------------------> | --------------------------> | ------┐
|                              |                             |       |
|                              | 记录返回信息并转发给客户端       |  <----┘
| <--------------------------- | <-------------------------- |

┌----------------------------------------------------------------------------┐
| url: http://localhost:8081                                                 |
| ---------------------------------------------------------------------------|
| All Transactions         ┌ - - - - - - - - - - - - - - - - - - - - - - - ┐ |
| ----------------------   | time: 10 hours ago  Client: 127.0.0.1         | |
| |GET / 200 OK 100 ms |   |                                               | |
| ----------------------   | Request                      [ Replay ]       | |
|                          | -   -   -   -   -   -   -   -   -   -   -   - | |
|                          | GET http://localhost/ HTTP/1.1                | |
|                          | User-Agent: curl/7.51.0                       | |
|                          | Accept: */*                                   | |
|                          |                                               | |
|                          | Response                                      | |
|                          | -   -   -   -   -   -   -   -   -   -   -   - | |
|                          | HTTP/1.1 200 OK                               | |
|                          | X-Server: HTTPLab                             | |
|                          | Date: Thu, 02 Mar 2017 02:25:27 GMT           | |
|                          | Content-Length: 13                            | |
|                          | Content-Type: text/plain; charset=utf-8       | |
|                          |                                               | |
|                          | Hello, World                                  | |
|                          └ - - - - - - - - - - - - - - - - - - - - - - - ┘ |
|                                                                            |
└----------------------------------------------------------------------------┘

最近正在学习 Go ,正好拿它来完成这个小程序,取名为 Boast 为了让我们在重现 Bug 上更为主动和方便,以及更快地修复,好多花点时间来造轮子!

Boast 项目地址

Go 和前端都是现学现卖,欢迎大家拍砖。

2581 次点击
所在节点    分享创造
7 条回复
cai314494687
2017-03-31 18:13:03 +08:00
点赞
lj61785636
2017-03-31 19:16:16 +08:00
支持一下
bobchengbin
2017-03-31 19:33:45 +08:00
@cai314494687 @lj61785636 灰常感谢, :)
mingyun
2017-03-31 23:11:42 +08:00
star + 1
fhefh
2017-04-03 10:26:43 +08:00
nice mark
nnfish
2017-04-04 19:47:58 +08:00
star
bobchengbin
2017-04-04 20:45:46 +08:00
@mingyun @fhefh @nnfish 感谢支持

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/351778

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX