超详细的接口测试用例编写

news2025/7/15 8:52:51

自动化始终只是辅助测试工作的一个手段,对于测试人员而言,测试基础和测试用例的设计才是核心。如果测试用例的覆盖率或者质量不高,那将这部分用例实现为自动化用例的意义也就不大了。

那么,接口测试用例应该怎么编写呢?

1、接口测试

接口: 主要是子模块或者子系统间交互并相互作用的部分。

这里说的接口是广义的,客户端与后台服务间的协议;插件间通信的接口;模块间的接口;再小到一个类提供的方法;都可以理解为接口。因此,可以分析,系统间的接口包含三部分:输入、处理逻辑、输出。

接口测试: 是指针对模块或系统间接口进行的测试。

同时,我也准备了一份软件测试视频教程(含接口、自动化、性能等),需要的可以直接在下方观看,或者直接关注VX公众号:互联网杂货铺,免费领取

软件测试视频教程观看处:

自动化测试篇—什么样的人适合robotframework框架

2、应该怎么分析一个接口?

获取接口文档: 和黑盒测试一样,我们是从需求文档中去挖掘测试点,设计测试用例。对于接口测试,同样是有对应的接口文档的。

分析接口文档,提取测试点:

1)输入: 接受哪些参数、参数的类型、可选参数和必选参数等;根据输入参数采用等价类、边界值分析法等进行设计;

2)业务逻辑:对于一个接口,不同的输入参数或组合,流程或状态的转移是不同,可以根据业务逻辑画出流程图或状态转移图,确保每种状态至少被访问了一次;

3)输出:根据文档规定的输出,反向设计测试数据,使所有的输出状态都被包含了;

测试用例: 同时对输入、业务逻辑、输出进行考虑时,肯定会存在用例的冗余,在最大限度覆盖业务功能和规则下,选取最优用例集合。同时,需要考虑异常数据和场景。

3、怎么确定用例的覆盖率?

在没有特殊要求的情况下,至少需要考虑以下内容:

1)业务功能覆盖是否完整

2)业务规则覆盖是否完整

3)参数验证是否达到要求(边界、业务规则)

4)接口异常场景覆盖是否完整

如果接口需求还包含性能或者安全要求,还要对接口进行性能测试和安全测试,就需要考虑:性能指标是否满足要求、安全指标是否满足要求。

4、接口测试发现的典型问题

接口测试经常遇到的bug和问题,如下:

(1)传入参数处理不当,导致程序crash;

(2)类型溢出,导致数据读出和写入不一致;

(3)因对象权限未进行校验,可以访问其他用户敏感信息;

(4)状态处理不当,导致逻辑出现错乱;

(5)逻辑校验不完善,可利用漏洞获取非正当利益等。

5、如何编写接口测试用例?

创建接口测试用例:

http:///home/csg/pyrequest-master/interface/add_event_test.py

对上述代码进行分析:

1、在接口测试之前,调用test_data.py文件中的init_data()方法,初始化数据库中的测试数据;

2、创建AddEventTest测试类,继承unittest.TestCase类;

3、创建测试用例,调用添加发布会接口,并验证接口返回的数据;

注意:

1、把JSON格式的结果转化为字典赋值给self.result变量,加self的目的是在tearDown()方法中打印self.result变量,打印的结果可以在测试报告中显示,即将接口返回数据打印出来;

2、如果不使用self,又想在报告中显示每个接口返回数据,就只能是在每个用例中print出result,相比来说,还是第一种方法比较方便。

集成测试报告

当用例数量较多,就需要分类管理和执行,为解决这个问题,unittest单元测试框架提供了discover()方法,然后再适用HTMLTestRunner生成HTML格式的测试报告。

创建/home/csg/pyrequest-master/interface/run_tests.py文件:

对上述代码进行分析:

1、还是先调用test_data.py文件中的init_data()函数来初始化测试数据;

2、unittest框架提供的discover()方法查找interface目录下,匹配到文件名*_test.py结尾的测试文件;

3、now按一定格式生成当前时间;

4、将文件名命名为now当前时间_result.html并且保存report目录下;

5、HTMLTestRunner为unittest单元测试框架的扩展,利用它提供的HTMLTestRunner()类来代替unittest单元测试框架的TextTestRunner()类,运行discover中匹配到的测试用例,生成HTML格式的测试报告;

运行测试脚本:python run_tests.py:

1、可能需要安装configparser库,pip install configparser;

2、在运行过程中,出现了错误:

应该是数据表里create_time字段需要一个默认值,于是修改test_data.py文件,给每个测试数据都增加create_time默认值为当前时间,再次运行就没有这个错误了;

3、但是继续执行又出现了错误:

问了下度娘,应该是读取文件的时候使用的是ASCII编码,而不是utf-8,自己多余,在每个测试用例的开头都增加了-*- coding:utf-8 -*-,画蛇添足了,去掉后再次运行就没这个错误了;

4、但是运行结果全部是failed的,查看具体的error信息:

原来还是要在每个测试数据前加上utf-8编码的声明,但是每个用例的注释信息不能是中文,奇怪了,没深入研究,反正都修改为英文后,再次运行成功了。

完整的自动化测试报告如下图所示:

6、总结

其实,我自己完全的封装了一个类似Robot的工具,这个好处是抛开了框架的束缚,可以自由的编写测试用例的内容,只要是python的代码,就可以采用这个工具,自由发挥测试内容,并且结果的展示也比较丰富和友好,如果不打算研究Robot的,其实可以用这个工具。

PS:这里分享一套软件测试的自学教程合集。对于在测试行业发展的小伙伴们来说应该会很有帮助。除了基础入门的资源,博主也收集不少进阶自动化的资源,从理论到实战,知行合一才能真正的掌握。全套内容已经打包到网盘,内容总量接近500个G。如需要软件测试学习资料,关注公众号(互联网杂货铺),后台回复1,整理不易,给个关注点个赞吧,谢谢各位大佬!

☑ 240集-零基础到精通全套视频课程
☑ [课件+源码]-完整配套的教程
☑ 18套-测试实战项目源码
☑ 37套-测试工具软件包
☑ 268道-真实面试题
☑ 200个模板-面试简历模板、测试方案模板、软件测试报告模板、测试分析模版、测试计划模板、性能测试报告、性能测试报告、性能测试脚本用例模板(信息完整)

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1157830.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Powercli批量修改分布式交换机端口组

背景 需求&#xff1a; 批量修改虚拟机的分布式端口组 解决&#xff1a; 三条命令解决&#xff1a;先获取目标虚拟机、获取目标端口组、修改虚拟机端口组、检查虚拟机状态。 $vm Get-VM -Name <虚拟机名称> $portGroup Get-VirtualPortGroup -Name <端口组名称…

数据出境安全评估:重要性和实施策略

数据出境安全评估是确保数据安全和合规的重要环节。随着全球化的加速和信息技术的快速发展&#xff0c;企业和个人需要处理大量的数据&#xff0c;其中许多数据涉及个人隐私和企业机密。因此&#xff0c;数据出境安全评估对于保护数据安全和隐私权至关重要。 一、数据出境安全评…

深度学习_3 数据操作之线代,微分

线代基础 标量 只有一个元素的张量。可以通过 x torch.tensor(3.0) 方式创建。 向量 由多个标量组成的列表&#xff08;一维张量&#xff09;。比如 x torch.arange(4) 就是创建了一个1*4的向量。可以通过下标获取特定元素&#xff08;x[3]&#xff09;&#xff0c;可以通…

什么是Webpack的热模块替换(Hot Module Replacement)?它的作用是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

springboot医院绩效考核系统源码

医院绩效考核系统是一种以人力资源管理为基础&#xff0c;选用适合医院组织机构属性的绩效理论和方法&#xff0c;基于医院战略目标&#xff0c;构建全方位的绩效考评体系&#xff0c;在科学、合理的绩效管理体系基础上&#xff0c;采用科学管理的方法&#xff0c;如平衡计分卡…

CS224W4.2——计算PageRank

在介绍了PageRank及其公式之后&#xff0c;我们讨论了求解PageRank的方法。我们提出了求解图的随机邻接矩阵(即PageRank)的主特征向量的幂次迭代方法。此外&#xff0c;我们在之前的PageRank实现中引入了两个问题:死角&#xff08;dead ends&#xff09;(没有外部链接的节点)和…

HWebkit库的程序示例

HWebkit库的爬虫程序&#xff0c;并且能够使用指定的服务器。以下是代码的每一行的中文解释&#xff1a; import HWebkit import Network.HTTP.Client import Network.HTTP.Client.TLS import Data.Text.Encoding ​ -- 创建服务器的连接&#xff0c;使用的端口和主机是 proxy…

(免费领源码)Java#springboot#Mysql智慧图书馆系统34117-计算机毕业设计项目选题推荐

摘 要 大数据时代下&#xff0c;数据呈爆炸式地增长。为了迎合信息化时代的潮流和信息化安全的要求&#xff0c;利用互联网服务于其他行业&#xff0c;促进生产&#xff0c;已经是成为一种势不可挡的趋势。在图书馆管理的要求下&#xff0c;开发一款整体式结构的智慧图书馆系统…

经营抖音小店的新手需要遵守的规则和注意事项

作为新手开抖音小店&#xff0c;四川不若与众帮你整了需要注意以下规则&#xff1a; 1. 注重产品质量&#xff1a;提供高质量的产品是吸引用户的关键。确保商品的质量可靠&#xff0c;符合标准&#xff0c;避免虚假宣传或低劣产品的问题。 2. 诚信经营&#xff1a;尽量遵循交易…

【JavaEE初阶】 文件内容的读写 —— 数据流

文章目录 &#x1f334;数据流的概念&#x1f6a9;数据流分类 &#x1f333;字节流的读写&#x1f6eb;InputStream&#xff08;从文件中读取字节内容)&#x1f6a9;实例一&#x1f6a9;实例二&#x1f6a9;利用 Scanner 进行字符读取 &#x1f6ec;OutputStream(向文件中写内容…

数据持久化的利器,Python中的pickle模块详解

Python数据序列化和反序列化时&#xff0c;pickle模块是一个非常有用的工具。它允许将Python对象转换为字节流&#xff0c;以便存储在文件中或通过网络传输&#xff0c;然后将这些字节流重新转换回Python对象。 什么是Pickle&#xff1f; pickle是Python标准库中的一个模块&a…

2023最新最全【Android studio】安装入门教程(非常详细)手把手教你安装使用!【附安装包】

软件下载 软件&#xff1a;Android Studio版本&#xff1a;2022语言&#xff1a;英文大小&#xff1a;1G安装环境&#xff1a;Win11/Win10/Win8/Win7硬件要求&#xff1a;CPU2.0GHz 内存4G(或更高&#xff09;下载通道①百度网盘丨下载链接&#xff1a;https://pan.baidu.com/…

go中“哨兵错误”的由来及使用建议

“哨兵错误&#xff08;sentinel error&#xff09;”这个词的出处。之前我也只是在一些书籍和资料中见到过&#xff0c;也没深究。当这个网友问了我之后&#xff0c;就深入的翻了翻资料&#xff0c;在golang的官方博客中找到了这个词的提法&#xff0c;也算是比较官方的了吧。…

公众号快速配置AI智能问答,在公众号集成类似ChatGPT的AI聊天机器人

目录 前言 一、使用步骤 1、助手体验 2、助手训练 2、公众号集成 前言 今天无意间发现一个名为“天书AI”的产品&#xff0c;是一款AI知识库产品&#xff0c;可以集成在微信公众号消息接口中。可以将公众号基于自己的知识内容升级为智能问答工具&#xff0c;提供类似ChatGPT的…

苹果相机怎么磨皮 苹果手机怎么磨皮

相信使用苹果相机的小伙伴都有这样的疑惑&#xff0c;苹果相机怎么磨皮&#xff1f;其实可以通过相机的参数进行设置从而达到磨皮的效果&#xff0c;如果觉得相机自带的设置磨皮效果不够好&#xff0c;可以下载磨皮软件来对照片磨皮。今天的文章就来给大家介绍苹果相机怎么磨皮…

MetaAI提出全新验证链框架CoVE,大模型也可以通过“三省吾身”来缓解幻觉现象

​ 论文名称&#xff1a; Chain-of-Verification Reduces Hallucination in Large Language Models 论文链接&#xff1a; https://arxiv.org/abs/2309.11495 曾子曰&#xff1a;“吾日三省吾身” --出自《论语学而》 时至今日&#xff0c;生成幻觉&#xff08;hallucination&…

LeetCode刷题---合并两个有序数组

该题用到了归并排序&#xff0c;正常的归并排序算法是两个数组依次比对元素大小&#xff0c;最后按照要求将比对结果放入新的数组中&#xff0c;但是此题题目中要求将结果放入第一个数组中。 解题思路:可以定义两个指针&#xff0c;分别指向两个数组中的有效元素的最后一个元素…

什么是TCP三次握手和四次挥手?

三次握手是建立TCP连接时使用的一种协议。它确保了通信双方可以建立可靠的连接。大致流程如下&#xff1a; 第一次握手&#xff08;SYN&#xff09;&#xff1a;客户端发送一个带有SYN标志的请求连接&#xff08;SYN包&#xff09;给服务器&#xff0c;并指明客户端的初始序列号…

跨境电商大作战:2023黑色星期五准备指南

黑色星期五&#xff0c;作为全球购物狂欢的象征&#xff0c;已经成为了电商业务的一年一度的重要节点。尤其对于跨境电商来说&#xff0c;这一天意味着巨大的商机和挑战。为了在这个竞争激烈的时刻脱颖而出&#xff0c;跨境电商必须做好充分的准备。Nox聚星在这里给大家分享几个…

电平信号、脉冲信号

简单来说&#xff0c;电平信号是表示某种特定状态的信号&#xff0c;而脉冲信号则是用来进行状态转移或者激发操作的信号 一、电平&#xff1a;数字电路的输入输出端某一时刻电压的高低&#xff0c;高低电平是相对的、人为的&#xff0c;例如可以规定低电平为0V&#xff0c;相…