📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)
📝 职场经验干货:
1. API测试的原则
芒格说:“钓鱼的第一条原则是,去有鱼的地方钓鱼”。
这句话不仅适用于投资,也适用于测试。测试的目标是发现BUG,BUG可能藏在哪里,我们就要去哪里测试。
身为测试工程师,发现别人无法发现的BUG,尤其是严重的、可能造成重大影响的BUG,方能体现自身的独特价值、赢得团队与用户的尊重。
API 是现代软件系统的核心组件,尤其是在微服务架构和前后端分离的开发模式中,API的质量决定了产品质量和系统稳定性。API测试的重要性不言而喻。
那么,对于API测试,我们应该测试什么?根据“去有鱼的地方钓鱼”这一原则,我们首先要思考API可能产生什么样的重大BUG,然后再去设计API测试用例,将潜在的严重BUG找出来。
需要注意的是,除了功能性测试,API测试需要关注性能、安全性和兼容性。API性能不仅影响用户体验,而且影响系统稳定性;API安全性影响用户数据安全和隐私保护。这些可能出现重大风险的地方,都是API测试要重点关注的。
2. API功能性问题
1)业务逻辑错误问题
问题:API未能正确实现预期的业务逻辑,导致功能异常或错误结果。
示例:1)支付API未正确验证订单状态,导致用户支付成功但订单未更新。2)计算折扣的API返回了错误的金额。
严重性:直接影响用户体验和业务流程,可能导致财务损失或客户投诉。
2)边界条件处理不当问题
问题:API未能正确处理输入数据的边界值或极端情况。
示例:1)输入超长字符串导致API崩溃或返回500错误。2)对于空值或负数输入,API未返回适当的错误提示。
严重性:边界条件处理不当可能导致系统不稳定或数据损坏。
3)幂等性问题
问题:API未能保证某些操作的幂等性(即多次调用应产生相同的结果)。
示例:1)多次调用“创建订单”API导致生成了多个重复订单。2)调用“删除资源”API后再次调用,系统返回错误而非成功。
严重性:幂等性问题可能导致数据冗余、重复操作或系统混乱。
4)错误处理机制缺失问题
问题:API在接收到无效请求或发生内部错误时,未能提供清晰的错误信息或适当的HTTP状态码。
示例:1)发送非法参数时,API返回200状态码而不是400。2)内部服务器错误时,API未返回任何错误信息。
严重性:缺乏清晰的错误处理会增加调试难度,并可能导致客户端错误地处理异常场景。
5)第三方依赖问题
问题:API依赖的第三方服务出现故障或接口变更,导致功能失效。
示例:1)支付网关API不可用,导致支付功能完全中断。2)第三方地图服务返回错误数据,影响位置相关的功能。
严重性:第三方集成问题通常难以快速修复,可能导致长时间的服务中断。
3. API性能问题
6)性能瓶颈问题
问题:API性能结果不及预期
示例:1)系统响应时间显著增加。2)请求失败率上升(如 HTTP 500 错误增多)。3)吞吐量(TPS/QPS)无法达到预期目标。
严重性:1)用户体验下降,可能导致用户流失。2)关键业务流程中断。
7)并发问题
问题:API并发操作出现问题,影响功能
示例:1)在高并发场景下,出现数据不一致或错误结果。2)死锁或线程阻塞。
严重性:1)数据完整性受损,可能导致财务损失或其他严重后果。2)用户体验差,信任度降低。
8)超时和重试机制问题
问题:API出现超时
示例:1) 请求超时未正确处理,导致客户端长时间等待。2) 重试机制设计不合理,引发“雪崩效应”(大量重复请求加重系统负担)。
严重性:1) 系统负载进一步加剧,可能引发全面崩溃。2) 用户无法完成关键操作。
9) 缓存问题
问题:API的缓存机制设计不合理,导致返回过期或错误的数据。
示例:1)用户更新数据后,API仍返回旧的缓存数据。2)缓存未正确刷新,导致不同用户看到不一致的数据。
严重性:缓存问题可能导致数据不一致或用户体验不佳。
10) 资源泄漏问题
问题:API在运行过程中未正确释放资源(如文件句柄、数据库连接),导致系统资源耗尽。
示例:1)上传文件后,API未关闭文件流,导致磁盘空间被占满。2)数据库连接未正确关闭,导致连接池耗尽。
严重性:资源泄漏会导致系统性能下降,甚至完全崩溃。
4. API安全性问题
11) 身份认证和授权失败问题
问题:API未能正确验证用户身份或权限,导致未经授权的访问。
示例:1)用户使用无效Token仍能访问受保护的资源。2)普通用户调用管理员权限的API成功执行操作。
严重性:安全漏洞可能导致敏感数据泄露、恶意攻击或系统被滥用。
12) 信息泄露问题
问题:API返回结果存在信息泄漏
示例:1)API 响应中包含过多的敏感信息(如完整的用户数据、内部系统结构)。2)错误消息中暴露了详细的堆栈信息或配置数据。
严重性:1)攻击者利用泄露的信息发动更有针对性的攻击。2)用户隐私受到威胁。
13) 缺乏速率限制问题
问题:API缺乏限流保护,请求打到很高
示例:1)未对单个 IP 或用户的请求频率进行限制。2)未启用防 DDoS 攻击机制。
严重性:1)攻击者通过大量请求耗尽服务器资源。2)正常用户无法访问服务。
5. API兼容性问题
14) 版本兼容性问题
问题:新版本API与旧版本不兼容,导致现有客户端无法正常使用。
示例:1)修改了API的参数结构或返回值格式,导致旧客户端解析失败。2)删除了旧版本支持的某些字段,导致依赖该字段的功能崩溃。
严重性:版本兼容性问题会影响现有用户的正常使用,需谨慎处理升级过程。
6. 总结
在软件工程中,墨菲定律客观存在:凡是可能出问题的地方,一定会出问题。熟悉API功能性、性能、安全性、兼容性的常见问题,能够指引我们更好开展API测试,提升测试针对性和问题发现效率。
最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】