如何编写接口测试用例?测试工程师必备技能!

news2025/2/24 18:15:20

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

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

目录

1、接口测试

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

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

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

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

6、总结

1、接口测试

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

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

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

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

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

分析接口文档,提取测试点:
1)输入: 接受哪些参数、参数的类型、可选参数和必选参数等;根据输入参数采用等价类、边界值分析法等进行设计;
2)业务逻辑:对于一个接口,不同的输入参数或组合,流程或状态的转移是不同,可以根据业务逻辑画出流程图或状态转移图,确保每种状态至少被访问了一次;
3)输出:根据文档规定的输出,反向设计测试数据,使所有的输出状态都被包含了;

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

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

在没有特殊要求的情况下,至少需要考虑以下内容:
1)业务功能覆盖是否完整
2)业务规则覆盖是否完整
3)参数验证是否达到要求(边界、业务规则)
4)接口异常场景覆盖是否完整

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

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

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

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

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

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

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

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

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

创建接口测试用例:

/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的,其实可以用这个工具。

END配套学习资源分享

最后: 为了回馈铁杆粉丝们,我给大家整理了完整的软件测试视频学习教程,朋友们如果需要可以自行免费领取 【保证100%免费】

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

全套资料获取方式:

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

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

相关文章

基于SpringBoot实现的分页查询(分分钟钟上手)

这里是使用的hibernate(不需要写sql)和springboot 也可使用 MyBatis&#xff08;推荐使用&#xff09; 下面是使用Spring Boot实现分页查询的示例&#xff1a; 在pom.xml文件中添加依赖项&#xff1a; <dependency><groupId>org.projectlombok</groupId>&l…

阿里面经最新分享:Java 面试指南 / 成长笔记(程序员面试必备)

写在前面 又到了收割 Offer 的季节&#xff0c;你准备好了吗&#xff1f;曾经的我&#xff0c;横扫各个大厂的 Offer。还是那句话&#xff1a;进大厂临时抱佛脚是肯定不行的&#xff0c;一定要注重平时的总结和积累&#xff0c;多思考&#xff0c;多积累&#xff0c;多总结&am…

2023年牛客网互联网高级架构师Java面试八股汇总(附答案整理)

此文包含 Java 面试的各个方面&#xff0c;史上最全&#xff0c;苦心整理最全 Java 面试题目整理包括基础JVM算法数据库优化算法数据结构分布式并发编程缓存等&#xff0c;使用层面广&#xff0c;知识量大&#xff0c;涉及你的知识盲点。要想在面试者中出类拔萃就要比人付出更多…

【动态规划】-最小路径和(java)

最小路劲和--动态规划和内存压缩 最小路径和题目描述 动态规划解题思路&#xff1a;代码演示动态规划的内存压缩动态规划专题 最小路径和 题目描述 给定一个二维数组matrix&#xff0c;一个人必须从左上角出发&#xff0c;最后到达右下角 沿途只可以向下或者向右走&#xff0c…

用了7年的 source insight 3.5 背景色及字体配置(提升code效率)

文章目录 背景目的背景护眼色配置字体与编辑选项配置全局配置的保存与加载 背景 今天突然source insight3.5抽风&#xff0c;配置重置了&#xff0c;默认配置很难看。 找了一会儿才找到之前的备份配置&#xff0c;load后舒服了。 目的 在此记录并share用了7年的 source insi…

300页幻灯片图解数据安全风险评估(附下载)

为指导网络数据安全风险评估工作&#xff0c;发现数据安全隐患&#xff0c;防范数据安全风险,依据《中华人民共和国网络安全法》《中华人民共和国数据安全法》《中华人民共和国个人信息保护法》等法律法规&#xff0c;参照数据安全相关国家标准&#xff0c;全国信息安全标准化技…

ChatGPT与VBA:Excel操作一键搞定的全能助手

摘要 Excel是一款广泛应用于数据处理和分析的工具&#xff0c;而VBA&#xff08;Visual Basic for Applications&#xff09;是一种用于编程自动化Excel操作的语言。然而&#xff0c;对于非专业的Excel用户来说&#xff0c;VBA编程可能具有一定的难度。本文将探讨如何利用Chat…

不同规格的磁场线圈适用领域

磁场线圈基于毕奥-萨法尔定律&#xff0c;以绕组中通电流的形式复现磁场的线圈&#xff0c;用于复现标准磁场&#xff0c;是弱磁场计量测试领域最主要的标准器具之一。按所复现的磁场类型可分为恒定磁场线圈、交变磁场线圈、梯度磁场线圈、脉冲磁场线圈等&#xff0c;按结构可分…

AIX5.3安装Python3遇到的坑

最近在折腾AIX5.3&#xff0c;这是一款非常古老的power架构的服务器&#xff0c;目前IBM官方已经不维护&#xff0c;但是仍然在很多银行里跑着比较核心的业务&#xff0c;由于我们的客户大部分是面向银行&#xff0c;少不了要做AIX5.3上的应用软件适配。本文记录在AIX5.3上编译…

51单片机——DS18B20 温度传感器实验,小白讲解,相互学习

DS18B20 介绍 DS18B20 是由 DALLAS 半导体公司推出的一种的“一线总线&#xff08;单总线&#xff09;”接 口的温度传感器。与传统的热敏电阻等测温元件相比&#xff0c;它是一种新型的体积小、 适用电压宽、与微处理器接口简单的数字化温度传感器。 DS18B20 温度传感器具有如…

linuxOPS基础_linux常用自有服务(ntp,firewalld,crond)

linux常用自有服务 服务名含义ntpd用于同步计算机的系统时间的服务firewalld防火墙服务crond计划任务服务 ntp时间同步服务 NTP是网络时间协议(Network Time Protocol)&#xff0c;它是用来同步网络中各个计算机的时间的协议。 工作场景&#xff1a; ​ 公司开发了一个电商…

Jmeter教程 —— 简单的压力测试

Jmeter是一个非常好用的压力测试工具&#xff0c;可以用来做轻量级的压力测试&#xff0c;非常合适&#xff0c;只需要十几分钟&#xff0c;就能把压力测试需要的脚本写好。 什么是压力测试 顾名思义&#xff1a;压力测试&#xff0c;就是 被测试的系统&#xff0c;在一定的…

Android Studio查看第三方库依赖树

在Android开发过程中&#xff0c;我们或多或少都会引入第三方库&#xff0c;引入的库越多&#xff0c;越容易产生库之间的依赖冲突&#xff0c;所以我们今天一起来了解Android Studio查看第三方库依赖树。 下面就拿我遇到的问题还原一下&#xff1a; 之前接人容联客服系统的时候…

工作小技巧,封装if和Exception

在我们的工作中&#xff0c;经常会有这样的逻辑&#xff0c;就是判断一个参数是否合法&#xff0c;不合法就抛出异常&#xff0c;再由全局异常捕获后返回。 本文使用我编写的springboot日记本系统作为蓝本&#xff0c;&#xff0c;在已有项目的基础上改&#xff0c;源码下载地…

思科小型网络配置实例

一、配置思路 1.交换机上配置端口连接描述&#xff0c;在实际工作中很有用 2.外网配置&#xff0c;模拟外网&#xff1a;PC的IP地址200.200.200.2&#xff0c;Server的IP地址是200.200.200.3&#xff0c;网关都是200.200.200.1。SW-ISP的连接PC和Server-ISP的口属于vlan 3,&…

【vue】二:核心处理---vue的生命周期

文章目录 1.Vue生命周期的四个阶段&#xff0c;八个钩子2.vue的生命周期图例3. 初始阶段&#xff1a;虚拟DOM生成4. 挂载阶段&#xff1a;真实DOM生成5. 更新阶段&#xff1a;data变化重新渲染6. 销毁阶段&#xff1a;卸载所有&#xff0c;销毁vm 1.Vue生命周期的四个阶段&…

Appium利用xpath查找同级节点兄弟节点方法

当页面存在两个文件夹&#xff0c;结构相同&#xff0c;只有文件夹名称不同时&#xff0c;想要点击某一个文件夹上的某个控件。这个时候需要使用xpath定位。 1.由父节点定位子节点 driver.findElementByXPath(//XCUIElementTypeCell/XCUIElementTypeStaticText[name"标签…

Java网络开发(Tomcat)—— 用Jsp语法 到 实现数据的分页展示 到 只看自己的数据 + 模糊查询 迭代升级

目录 引出0.jsp的使用和语法 & 报错和解决&#xff08;1&#xff09;后端共享&#xff0c;前端获取 ${pageInfo}&#xff08;2&#xff09;如果想获取pageInfo这个对象的某个属性值&#xff0c;用 点 属性 ${pageInfo.pages}&#xff08;3&#xff09;如果想回传&#xff…

前端性能测试必备测试工具

我们在使用网站过程中&#xff0c;经常会遇到慢的问题&#xff0c;为了找到原因&#xff0c;一般需要借助工具进行检测&#xff0c;通过工具&#xff0c;可以检测出前端站点加载资源的相关详细情况。 今天&#xff0c;就给大家介绍几款前端性能测试分析工具&#xff0c;结合性能…

为什么性能测试PR单机版要升级到P-One一站式性能测试平台

目前市面上常用的性能测试工具均为单机版&#xff0c;导致了一些问题&#xff1a; 1.脚本无法进行共享&#xff1b; 2.执行管理无法进行统一化、协同化管理&#xff1b; 3.项目经理只能通过日报或者线下沟通获取当前项目进度&#xff1b; 4.对测试结果只能通过文件传输的方式进…