1、为什么会选择Proxyman?

Proxyman比较适合 QA、前端、iOS、Android 开发人员、安全开发人员。基础功能可以免费使用,支持完整的调试功能。如果需要使用具有完整调试功能的包分析器的开发人员,可以考虑使用 Charles Proxy。如果需要一套完整的代理工具来深入研究网络底层,可以尝试Wireshark 或者 Fiddler 。

如何针对不同的设备进行安装和抓包,软件中的引导非常完善
image.png


2、Proxyman支持的功能

  • 截取 Http 和 Https 网络封包。
  • 共享 HTTP(s) 请求和响应。
  • 支持重发网络请求,方便调试。
  • 支持修改网络请求参数。
  • 内置工具轻松操作 HTTP(s) 请求和响应,例如 Map Local、Map Remote、Breakpoint、Scripting…



    3、测试时,哪些场景可以用到Proxyman?

    3.1 通过Map Local,Mock数据

    3.1.1 原理:

    image.png
    From:https://proxyman.io/posts/2019-08-03-map-local-feature

3.1.2 Map Local 编辑接口

(注:Proxyman 中填写数据后,工具实时自动保存填写的信息)
image.png

3.1.3 Map Local中的匹配规则:

•(多个被勾选enabled的接口时)自上而下匹配:传入请求将按自上而下优先级进行匹配。列表顶部的规则会是尝试匹配的第一个规则。
image.png
• 星号( ) :匹配任意字符零次或多次。例如,“api.proxyman.io/v1/”匹配以“api.proxyman.io/v1/”开头的任何内容,“api.proxyman.io/v1/login”、“api.proxyman.io/” v1/data” 和 “api.proxyman.io/v1/“等也能被匹配到。
• 问号 ( ? ):匹配单个字符一次。例如,“api.proxyman.io/v?/login”, api.proxyman.io/v1/login 、 api.proxyman.io/v2/login等都会被匹配到
• 包括子目录:所有子目录会自动匹配。例如:以“api.proxyman.io”为域的URL,“api.proxyman.io”、“api.proxyman.io” /v1/data”, “api.proxyman.io/login”, “api.proxyman.io/user?name=nghia”等都会被匹配到
image.png
• HTTP / HTTPS :默认情况下,“api.proxyman.io”匹配所有请求,可以是HTTP 或HTTPS请求协议。然而,“http://api.proxyman.io”仅会匹配 HTTP请求协议,而“https://api.proxyman.io”仅匹配 HTTPS请求协议。

其他示例:
api.proxyman.io 勾选“include subdirectories” 可以匹配的URLs示例:api.proxyman.io, http://api.proxyman.io, https://api.proxyman.io,api.proxyman.io/v1/data, https://api.proxyman.io/v2/login, …

api.proxyman.io/v1/* 可以匹配的URLs示例:api.proxyman.io/v1/data, https://api.proxyman.io/v1/login, …

/v1/ 可以匹配的URLs示例: api.proxyman.io/v1/data, https://producthunt.io/v1/login, …

api.proxyman.io/v?/login 可以匹配的URLs示例:api.proxyman.io/v1/login, api.proxyman.io/v2/login, … | |
https://api.proxyman.io/v1/login?username=nghia 仅可匹配: https://api.proxyman.io/v1/login?username=nghia | |

3.2 测试前端接受到响应中的不同参数后的行为

基础的功能测试,会考虑预期会出现的响应结果,再根据预期构建具体的数据进行验证,手动构建数据往往还要切换不同的账号,结合Proxyman工具的使用会节省很多时间。

3.2.1 截获接口,通过BreakPoint功能对请求或响应内容进行编辑

image.png

image.png
image.png

image.png

可以使用到的场景示例

  • 通过更改状态码,前端如何根据不同的状态码展示不同的内容
  • 修改返回的内容,为空和不为空时,前端UI的展示
  • 更改内容的长度,查看前端UI的展示
  • ··············

3.3 可以直接导出请求和响应的参数,方便重现

可以直接将Bug中,相关的请求响应直接导出附在Bug管理工具中,其他开发时可直接导入复现Bug。Bug被修复后,测试人员也可以直接导入该数据,直接在Proxyman中执行接口,进行验收
image.png

3.4 进行接口测试

点击“Edit and Repeat ”可以捕获相关的接口,更改参数,查看接口返回的内容是否正常;也可点击“Repeat”,重复请求接口(相同的请求参数),查看Server的处理是否正常
image.png
image.png

3.5 Map Remote,更改请求的终点

image.png

3.6 其他

  • proxyman目前也支持拦截来自 WatchOS 网络通信(官网有详细的说明
  • Proxyman 提供了一个脚本功能,开发人员可以编写 JS 代码以灵活的方式操作请求/响应。

image.png

参考:
https://proxyman.io/posts/2019-08-03-map-local-feature
https://proxyman.io/posts/2019-09-15-Use-Breakpoint-to-intercept-and-edit-request-response-on-iOS-app
https://proxyman.io/posts/2020-02-25-Change-HTTP-status-codes-for-UI-testing
https://proxyman.io/posts/2019-07-06-How-I-use-Proxyman-to-report-bugs-more-effectively
https://proxyman.io/posts/2021-09-02-intercept-https-traffic-from-watch-os-simulator
https://docs.proxyman.io/