大家一般用什么工具测试HTTP和json接口?
具体选择什么样的框架或者工具,取决于我们的测试复杂度,或者说取决于我们的测试需求(测试策略、深度、广度)。
常见的接口测试工具及测试自动化测试框架我们先介绍下现在主流的接口测试工具和框架。
接口测试工具
Postman:接口功能
Jmeter:接口性能、功能
Loadrunner:接口性能、功能
SoapUI:接口功能、性能、安全
接口自动化测试框架
测试库构架框架数据驱动的自动化测试框架关键字驱动的自动化测试框架如何选择框架、工具的选择是我们确认开展自动化后首先面临的问题。之前网上有个梗,泡面煮着吃是没有灵魂的,当然这是一种调侃。自动化测试开展一定要结合被测系统的特点进行选择,不顾被测系统(系统框架)特性、场景而盲目选择自动化测试框架(或工具), 它是没有灵魂的,自动化失败概率会相对高很多。
如果我们的测试需求,只是进行接口的功能测试,需要使用一种方便的工具进行接口请求响应的验证。如上介绍的四种接口测试工具,都可以考虑,如果是功能性验证,推荐使用Postman、SoapUI,如果进行接口的性能测试,推荐使用Jmeter、Loadrunner。
如果我们的测试需求是希望对接口进行自动化测试,考虑到具体系统业务的复杂度,比如接口之间的依赖,业务场景的覆盖。单独就某一个接口进行测试,难以覆盖真实的测试场景,因此需要考虑结合接口自动化测试框架来满足我们的测试需求。
首先自动化测试框架更倾向于一种设计思想 ,这种思想指导工具的使用或者自研开发,并且不是只能使用仅仅一种框架,结合被测系统本身特性一般是选择多种测试框架的组合,来满足测试和设计需求(开发、维护角度)。
这里直奔主题,不错多余铺垫,推荐使用Robot Framework关键字驱动的自动化测试框架进行接口自动化,通过自定义关键字的开发实现复杂的测试场景,需注意自定义关键字的易用性和可维护性。有兴趣的可以关注下Httprunner接口自动化测试框架的设计思想,很不错,指的学习和借鉴。
疑问:接口测试用例设计是只针对一个个单接口测试,还是流程场景测试?首先需要区分这里的流程场景指的是业务流程场景,还是操作流程场景。业务流程场景
业务流程场景一般指的是系统业务流程,类似于办公流程,具有强流程性。
针对业务流程场景,接口的自动化用例是需要进行场景化设计的,一般常使用关键字驱动的测试框架+ python request模块。
借鉴关键字驱动测试思想,把接口请求发送、响应校验、响应内容返回(下一个接口依赖上一个接口,需返上一接口响应体),三部分封装成"请求校验"自定义关键字。
同时再封装"内容提取"自定义关键字——提取接口响应体特定数据。这样就可以获取上一个接口返回中的特定数据作为下一个接口的输入参数。
如此。任何业务场景都可以通过"请求校验"自定义关键字 + "内容提取"自定义关键字 + "响应校验"自定义关键字 +…
操作流程场景
操作流程场景一般指的是先使用哪个功能,再使用哪一个,没有强制性的操作步骤规范,比如单一的查询功能。
针对操作流程场景,则可以视情况,开展单一接口的自动化测试。现有的很多自动化框架、工具都适合此场景的自动化测试开发,在此不做扩展。
关于响应体为JSON的校验方式在测试工作中,一般都会接触到期望结果数据与实际结果数据一致性比对的测试场景,对于复杂、庞大数据的比对工作。如果依靠人工执行,其成本相当高,难以保障执行结果的一致性(多次执行可能存在偏差),并且重复性极高。因此,通常我们需要考虑如何通过自动化工具实现数据的比对。JSON的两种数据结构
1.Key-Value对集合,在Python语言中可以理解为字典(Dict),如下图。
2.有序集合,在Python语言中可以理解为列表(List),如下图。
一致性校验核心设计
在测试工作中接触的Json数据校验,大多是请求响应体的校验,设计主要考虑了以下两点:
1.需支持复杂JSON比对,如查询地市编码基本信息接口的响应体中包含,省份编码、省份地市的基本信息(地市编码、地市名称、地市排序),例如 :
2.需支持比对结果的可追溯,比如地市数量(Count)不一致时,不能仅输出期望、实际结果的地市数量,还需要输出整个JSON的哪个节点的值不一致,或者缺失哪个节点,如Detail.Count的值不一致,例如:
[ERROR] ACTUAL-JSON ==> [Detail.Count]的VALUE不同: <actual>: 2 <expect>: 3设计实现
一致性比对的整体设计包含三个模块:递归解析模块,格式转换模块,数据比对模块,具体描述如下。
具体Python实现可以阅读:《Python实现JSON数据的一致性校验》https://www.toutiao.com/i6662316383423955468/
相关推荐阅读:可关注我,阅读《测试之术》专栏,其中对接口自动化测试设计、场景测试框架的介绍及Robot Framework使用都有详细介绍,希望能够对你有所帮助。
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有