当前位置:网站首页>如何实现接口异常场景测试?测试方法探索与测试工具实现
如何实现接口异常场景测试?测试方法探索与测试工具实现
2022-06-22 12:50:00 【软件测试小仙女】
背景:随着前后端分离、微服务等技术的广泛应用,接口测试在整个测试过程中扮演的角色越来越重要,如何更加高效地把接口测好、测得更加充分就成了一个亟待解决的难题。
当前在对具体的某一接口进行测试时,普遍采取的方法是测试人员按照接口文档中的字段取值规则使用接口测试工具(例如Postman等)手工来回修改接口报文中的某一个字段值来进行测试。

这种方法对于单个或者是简单接口相对比较友好,然而往往一个系统中会包含有大量的接口、接口逻辑复杂、接口里边包含有非常多的字段,这就给接口测试的开展带来了很多问题,比如费时费力、工作量大、漏测某些测试场景等。
同时还由于项目工期紧张等原因,在接口测试过程中一般更多的是关注正常场景是否有实现,相较于异常场景的重视程度就不够,从而极易由此引发相关测试问题。
因此,为了减少此类情况发生,针对这一问题进行了探索和实践,总结了相关方法,并将其应用到了多个项目,起到了很好的效果。
方法探索
异常场景分析归纳
在对当前接口测试中异常场景测试的相关情形进行分析并总结归纳后,发现可以大致将其分为基本异常场景和特殊异常场景两大类,其中基本异常场景对具体接口中每个字段均适用,特殊异常场景只适用于特定的接口字段。
具体分类和示例如下图所示:

方法探索
结合上述异常场景的分析归纳以及当前测试接口测试的实际开展情形,对于接口异常场景的测试可以将相关的重复工作通过工具流程固化下来,通过工具自动对其进行测试以减少重复劳动,进一步提升测试效率。
接口异常场景测试工具技术实现

接口异常场景测试工具流程图
如以上流程图所示,技术实现整体思路为:首先是将待测接口的接口配置等相关信息作为输入,然后对其进行解析并匹配相关异常场景,其次是对匹配到的异常场景生成对应的接口测试用例以及测试脚本,最后是脚本执行生成相对应的测试结果。
应用实践
工具界面

实践示例
XX信息查询接口:

应用实践情况
目前该方法和工具已推广应用到多个项目多个接口,累计生成千余条异常场景测试用例,发现多个测试缺陷,平均将工作量缩短至原来人工测试时的三分之一,测试效率和测试质量提升效果明显。
总结
虽然目前已经在多个项目得到了应用,也取得了一定的效果,但是在应用实践过程中,也遇到了诸多问题,例如:目前支持的异常场景相对有限、接口文档的形式不统一(excel、word等)、各系统的接口格式多种多样,但目前仅支持http-json类型的接口测试等,后续将对这些问题逐一分析解决。
此外,在特殊异常场景方面还需要进行更加深入的探索,可以通过该方式将更多的测试经验和特殊异常场景固化下来纳入到工具流程中,再通过自动化生成和执行对应用例,从而节省时间、精力,减少测试人员在这方面的投入,将更多的精力投入到其他相对更加重要的测试中,进一步提升测试质量和效率。
最后:
可以到我的个人号:atstudy-js,可以免费领取一份10G软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!其中包括了有基础知识、Linux必备、Mysql数据库、抓包工具、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试等。
这些测试资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
边栏推荐
- 别再用 System.currentTimeMillis() 统计耗时了,太 Low,StopWatch 好用到爆!
- leetcode-子序列/子串問題
- 哈希索引设计发展史
- 技术实践 | 场景导向的音视频通话体验优化
- SQL functions -- converting a one to many relationship to a one to one relationship
- JSP based library management system, including source code, database script, video tutorial for project operation, and video tutorial for thesis writing
- Seven cattle cloud upload picture
- Policy deployment of firewall Foundation
- After several years of writing at CSDN, I published "the first book". Thank you!
- Rongyun: let the bank go to the "cloud" easily
猜你喜欢
Redis+Caffeine两级缓存的实现

Leetcode subsequence / substring problem

别再用 System.currentTimeMillis() 统计耗时了,太 Low,StopWatch 好用到爆!

VCIP2021:利用解码信息进行超分辨率

CVE-2022-22965複現

如何理解fold change?倍数分析?

Stop using system Currenttimemillis() takes too long to count. It's too low. Stopwatch is easy to use!

3dMax建模笔记(一):介绍3dMax和创建第一个模型Hello world

Rigid demand of robot direction → personal thinking ←

Leetcode math problems
随机推荐
聊一聊数据库的行存与列存
Acwing game 55
如何保护WordPress网站免受网络攻击?采取安全措施至关重要
3dMax建模笔记(一):介绍3dMax和创建第一个模型Hello world
Oceanbase database helps the ideal automobile intelligent production line to realize automatic recovery within 30 seconds
力扣每日一练之双指针2Day9
openGauss内核分析之查询重写
安装和使用protobuf-c
php两个时间戳相隔多少天
Talk about row storage and column storage of database
"N'osez pas douter du Code, vous devez douter du Code" notez une analyse de délai de demande réseau
《Kubernetes监控篇:Grafana通过自动化方式添加datasource和dashboard》
散户开户哪个证券公司好?手机开户安全么?
Stored procedures in MySQL
Stop using system Currenttimemillis() takes too long to count. It's too low. Stopwatch is easy to use!
In 5g era, how to create an amazing live VR activity?
What is the difference between Z-score and deltf/f?
uniapp app 端截屏且保存到本地
能让Jellyfin直接挂载阿里云盘的aliyundrive-fuse
SQL functions -- converting a one to many relationship to a one to one relationship