目录
一、前期准备与信息收集
二、使用抓包工具分析接口
三、逆向工程构造测试用例
四、安全测试
五、 模糊测试(Fuzz Testing)
六、记录并维护发现的接口信息
七、 推动团队规范流程
其它注意事项
在我们进行接口测试时,总会遇到各种各样的问题,比如有的时候会遇到接口文档没有或者关键信息缺失等情况,领导安排了要进行接口测试或进行接口文档梳理等工作。遇到这样情况作为测试从业者应该尝试获取接口信息,比如询问开发团队或者查看代码库。如果实在没有文档,可能需要用一些工具来辅助分析接口的结构和数据。
比如使用抓包工具,比如Fiddler、Charles或者Wireshark,来捕获接口请求和响应,分析请求方法、参数、URL等。然后通过逆向工程,构造测试用例,尝试不同的参数组合,观察返回结果,验证接口的行为是否符合预期。
同时,在测试过程中保持与开发人员的沟通,及时确认接口的正确性,避免误解。如果接口有认证机制,比如OAuth、JWT,测试时需要处理token的获取和管理,这也是需要注意的地方。
一、前期准备与信息收集
与开发团队沟通
直接询问:向开发人员了解接口的基本信息(如URL、请求方法、参数、返回值等),即使他们无法提供完整文档,也可能提供关键线索。
获取代码或注释:查看接口代码或相关注释,分析接口逻辑和参数规则(需具备一定的代码阅读能力)。
参与需求讨论:了解接口设计的业务逻辑和预期功能,辅助推测接口行为。
利用现有资源
查看历史测试记录:检查之前测试用例或自动化脚本,提取已知接口的调用方式。
参考前端代码:前端页面或移动端App的代码中可能包含接口调用的URL和参数(如JavaScript中的API请求)。
查看数据库结构:通过数据库表结构推测接口可能涉及的字段和操作(如增删改查)。
二、使用抓包工具分析接口
通过工具捕获请求和响应,逆向推导接口逻辑:
工具推荐:
Fiddler/Charles:抓取 HTTP/HTTPS 请求,分析请求头、参数、响应数据。
Wireshark:捕获更底层的网络流量(适用于非 HTTP 协议)。
Postman/Insomnia:直接导入浏览器的请求(通过 Copy as cURL 功能)。
关键分析点:
URL 结构:路径参数(如 /users/{id})和资源层级。
HTTP 方法:GET、POST、PUT、DELETE 等。
请求参数:Query 参数、Body 参数(JSON/FormData)、Headers(如认证 Token)。
响应格式:JSON/XML 结构、状态码(200/404/500 等)。
三、逆向工程构造测试用例
基于抓包结果,手动构造测试场景:
正向测试:模拟合法参数,验证接口是否返回预期结果。
异常测试:
参数缺失:移除必填参数,观察错误提示。
非法参数:输入超长字符串、特殊字符、错误类型(如字符串代替数字)。
边界值测试:数值型参数的极值(如最大/最小值)。
依赖接口测试:如果接口依赖其他服务(如数据库、第三方 API),模拟依赖异常场景(如超时、错误响应)。
四、安全测试
即使无文档,仍需检查常见漏洞:
SQL 注入:在参数中插入 ' OR 1=1 -- 等语句。
XSS 攻击:输入 <script>alert(1)</script> 测试返回是否被转义。
越权访问:修改 URL 中的用户 ID,尝试访问他人数据。
敏感信息泄露:检查响应中是否暴露内部路径、密钥等。
五、 模糊测试(Fuzz Testing)
通过工具自动化生成随机参数,探测接口的容错能力:
工具推荐:
Postman Runner:批量发送不同参数组合。
Burp Suite Intruder:自动化参数爆破。
Restler:基于语法生成测试用例(微软开源工具)。
六、记录并维护发现的接口信息
创建临时文档:在测试过程中,逐步整理接口的请求/响应格式、参数规则,形成文档。
工具辅助:
Swagger/OpenAPI:根据测试结果手动编写 API 描述文件。
Postman Collections:将测试用例保存为集合,方便团队共享。
七、 推动团队规范流程
建议补充文档:向团队反馈无文档的测试成本,推动使用工具(如 Swagger)自动生成文档。
结合代码管理:将接口文档纳入版本控制系统(如 Git),与代码同步更新。
其它注意事项
谨慎操作生产环境:避免因测试异常请求导致生产数据污染。
与开发协作:定期同步测试中发现的问题,确认是否为预期行为。
优先级排序:先测试核心业务接口(如用户登录、支付),再扩展到非核心功能。
回归测试:在接口变更后,及时更新测试用例。
阅读后若有收获,不吝关注,分享等操作!