接口测试总结及其用例设计方法整理

 接口测试的总结文档

  第一部分:主要从问题出发,引入接口测试的相关内容并与前端测试进行简单对比,总结两者之前的区别与联系。但该部分只交代了怎么做和如何做?并没有解释为什么要做?

  第二部分:主要介绍为什么要做接口测试,并简单总结接口持续集成和接口质量评估相关内容。

第一部分:

首先,在做接口测试的过程中,经常有后端开发会问:

后端接口都测试什么?怎么测的?

后端接口测试一遍 ,前端也测试一遍,是不是重复测试了?

于是,为了向开发解释上述问题,普及基本的测试常识,特意梳理了接口测试的相关内容以及其与前端测试的区别,使开发团队与测试团队在测试这件上达成基本的共识,提高团队协作效率,从而更好的保证产品质量。

然后,我们试着回答上面的问题:

问题1.1、后端接口都测试什么?

--回答这个问题,我们可以从接口测试活动内容的角度下手,看一下面这张图,基本反应了当前我们项目后端接口测试的主要内容:

问题1.2、我们怎么做接口测试?

--由于我们项目前后端调用主要是基于http协议的接口,所以测试接口时主要是通过工具或代码模拟http请求的发送与接收。工具有很多如:postman、jmeter、soupUI、java+httpclient、robotframework+httplibrary等。

问题2、后端接口测试一遍 ,前端也测试一遍,是不是重复测试了?

--回答这个问题,我们可以直接对比接口测试和app端测试活动的内容,如下图为app测试时需要覆盖或考虑内容:

 从上面这两张图对比可以看出,两个测试活动中相同的部分有功能测试、边界分析测试和性能测试,其它部分由于各自特性或关注点不同需要进行特殊的测试,在此不做讨论。接下来我们针对以上三部分相同的内容再进行分析:

1、基本功能测试:

由于是针对基本业务功能进行测试,所以这部分是两种测试重合度最高的一块,开发同学通常所指的也主要是这部分的内容。

2、边界分析测试:

在基本功能测试的基础上考虑输入输出的边界条件,这部分内容也会有重复的部分(比如业务规则的边界)。但是,前端的输入输出很多时候都是提供固守的值让用户选择(如下拉框),在这种情况下测试的边界范围就非常有限,但接口测试就不存在这方面的限制,相对来说接口可以覆盖的范围更广,同样的,接口出现问题的概率也更高。

 3、性能测试:

这个比较容易区分,虽然都需要做性能测试,但关注点确大不相同。App端性能主要关注与手机相关的特性,如手机cpu、内存、流量、fps等。而接口性能主要关注接口响应时间、并发、服务端资源的使用情况等。两种测试时的策略和方法都有很大区别,所以这部分内容是需要分开单独进行测试的,理论上来说这也是不同的部分。

综论:

1、接口测试和app测试的活动有部分重复的内容,主要集中在业务功能测试方面。除此之外,针对各自特性的测试都不一样,需要分别进行有针对性的测试,才能确保整个产品的质量。

2、接口测试可以关注于服务器逻辑验证,而UI测试可以关注于页面展示逻辑及界面前端与服务器集成验证

第二部分:

1、什么是接口测试?

接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。

2、为什么要做接口测试?

a) 如今的系统复杂度不断上升,传统的测试方法成本急剧增加且测试效率大幅下降,接口测试可以提供这种情况下的解决方案。

b)  接口测试相对容易实现自动化持续集成,且相对UI自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,支持后端快速发版需求。接口持续集成是为什么能低成本高收益的根源。

c)   现在很多系统前后端架构是分离的,从安全层面来说:

  1、只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前面实在太容易), 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。

2、前后端传输、日志打印等信息是否加密传输也是需要验证的,特别是涉及到用户的隐私信息,如身份证,银行卡等。

3、接口测试持续集成:

 对接口测试而言,持续集成自动化是核心内容,通过持自动化的手段我们才能做到低成本高收益。目前我们已经实现了接口自动化,主要应用于回归阶段,后续还需要加强自动化的程度,包括但不限于下面的内容:

a) 流程方面:在回归阶段加强接口异常场景的覆盖度,并逐步向系统测试,冒烟测试阶段延伸,最终达到全流程自动化。

b) 结果展示:更加丰富的结果展示、趋势分析,质量统计和分析等

c) 问题定位:报错信息、日志更精准,方便问题复现与定位。

d) 结果校验:加强自动化校验能力,如数据库信息校验。

e) 代码覆盖率:不断尝试由目前的黑盒向白盒下探,提高代码覆盖率。

f) 性能需求:完善性能测试体系,通过自动化的手段监控接口性能指标是否正常。

4、接口测试质量评估标准:

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

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

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

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

  e) 接口覆盖率是否达到要求

  f)  代码覆盖率是否达到要求

  g) 性能指标是否满足要求

  h) 安全指标是否满足要求

 

接口测试用例设计

一、    用例设计过程:

 

罗马不是一天建成的,用例不是一次完成的;书写测试用例本身和完善代码一样,也是一个循序渐进的过程。

首先,必须熟读需求说明书和接口设计文档,了解每个接口具体的使用场景,明白软件的性能指标。

其次,设计接口测试用例:开始在编码阶段,测试人员根据需求说明书和接口设计文档设计接口测试用例。

然后,code review:开发完成编码后,在时间充裕的条件下,要进行 code review,一方面是检查开发的代码功能逻辑是否正确,另一方面通过review开发的代码来补充接口测试用例。

      最后,完成用例后,随着对系统了解的增多,不断提高用例精度,对测试用例需要进行定期review,一旦测试需求发生变化,测试用例必须重新维护。

二、接口测试用例构思结构:

阶段一:开发在编码,测试拿到需求文档和接口设计文档:

1、基本功能测试(业务测试):

根据需求文档和接口设计文档的转译,需要清楚业务流程规则和每个接口的使用场景方式,设计符合业务逻辑和接口使用场景的用例。

2、边界分析测试:

在基本功能的基础上,开始考虑接口输入输出参数的影响。主要采用等价类划分、边界值分析方法等。

l  覆盖所有的必选参数

l   组合可选参数

l  参数有无、或为null

l  参数的顺序、个数、类型

l  参数类型数值大小、输入的数值的范围

l  参数字串长短,Null-max-max+1

l  参数包含特殊字符

3、参数组合测试:

      在边界分析的基础上,考虑输入条件的各种组合、输入条件之间的相互制约关系。主要使用因果图法进行用例设计。

4、异常情况测试:

接口实现是否对异常情况都进行了处理,接口输入参数虽然合法,但是在接口实现中,也会出现异常,因为内部的异常不一定是输入的数据造成的,而有可能是其他逻辑造成的,程序需要对任何异常都进行处理,比如:某个接口需要先登录获取 sesssion,如果直接调用该接口应该给出相应提示。

5、幂等级测试:

     简单说就时针对连续重复提交的情况的进行测试,特别是涉及到交易金额的场景,需要验证软件是如何处理的。

6、并发测试:

   两个以上用户同时操作使用同一场景时,可能引导争夺资源,死锁等现象。

 

7、事务性测试:

 一个业务流程包含多个操作步骤,如果某个操作失败,那么整个操作需要回滚。或者调用前一个步骤的逆向接口进行操作取消。

 

8、大数据量时测试

 数据库里数据量较大时(百万级),测试对DB进行增删改查操作的效率。

9、环境异常测试

  关联系统出现宕机、超时或者无响应的状态时,接口返回提示正确,业务逻辑正确,不可存在事务性不一致的情况

阶段二:开发完成编码,测试时间充裕的条件下,需要对开发的代码进行code review

1、      review开发的代码实际业务逻辑是否正确

2、隐含条件测试:

 进行code review,检查代码中是否有隐含的默认条件。例如:F项目中的getRecommendArticleList接口,代码中默认查询返回4条记录(如下图),但在接口文档中并未提到,如果不review code而开发也不告诉我们的话,这种情况肯定会漏测。

3、SQL测试:

针对需要进行数据库操作的接口,查看相关sql,对sql的正确性进行验证。如下图,一般sql的过滤条件都会比开发告诉我们的要多,所以查看sql进行验证是最保险的方式,特别需要设计组合条件的场景进行验证:

三、测试过程验证点:

1、接口返回数据

a)         返回json数据的层次关系是否与文档一致

b)        数值类型数据: 特别是金额,负数、小数转为json输出是否正确

c)         接口返回数据与接口文档一致

d)        接口返回数据和数据库一致

e)         接口返回数据符合业务逻辑(比如转账功能,从一个账户扣款,另一个要增加相应金额)

f)          对于列表,应该根据请求参数,也应该验证列表的长度是否与期望值一致

g)         负面测试用例,应验证ERROR INFO是否与实际相匹配

2、数据库

a)         接口传入数据与插入DB的数据一致性:

b)        前端某个操作涉及后台DB多张表时,每张表都要检验数据正确性。

3、安全层面:

a)         后端接口返回给前端的数据包含敏感信息(如:姓名、身份证号、卡号、手机号、加密后的密码等)时,不能明文传输,需要加密。

b)        后台打日志要求对于敏感信息不能打出,或者进行加星号脱敏后打出,具体有:

1)          身份证号,用户密码(含加密后),用户手机号码,用户姓名,银行卡号

2)          身份证号码脱敏字段为生日时,生日在日志中不能打出

4、性能层面:

a)         接口响应时间:  接口处理数据的时间也是测试需要关注的一个点。牵扯到内部就是算法与代码的优化

b)        接口数据包大小:接口传递的数据包大小也需要关注,特别是返回给前端的接口,要把不同接口数据包大小需要做限制。

c)         并发承载能力:多用户并发时接口可以承载合同中的并发量。

 

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

A good teacher is patient and consistent(CVPR 2022)论文解读

paper:Knowledge distillation: A good teacher is patient and consistent official implementation:https://github.com/google-research/big_vision 本文的创新点 本文没有提出新的方法,而是提出了一些影响蒸馏性能的关键因素&#xff…

论文润色突显研究亮点 papergpt

大家好,今天来聊聊论文润色突显研究亮点,希望能给大家提供一点参考。 以下是针对论文重复率高的情况,提供一些修改建议和技巧: 标题:论文润色突显研究亮点――提升论文吸引力的关键步骤 一、引言 在学术研究中&#x…

家政服务小程序预约上门,让服务更便捷

随着人们生活节奏的加快,家政服务行业越来越受到人们的欢迎。为了满足市场需求,提高服务质量,家政公司需要开发一款预约上门的家政服务小程序。本文将详细介绍如何制作一个预约上门的家政服务小程序。 一、登录乔拓云网后台 首先&#xff0c…

什么是接口与API接口!

今天有个朋友问我什么接口?你们平时都说在写接口,写的是什么鬼啊?我一开始就想,咦小陈同学怎么突然了解编程接口了,不过听到他后一个提问我知道原来他想的是API接口,不过被我主观意识习惯想成了编程定义上的…

DHCP--自动获取IP地址

目录 一、了解DHCP服务 1、概念 2、使用DHCP的好处 3、DHCP的分配方式 二、DHCP的租约过程 1、客户机请求IP地址 2、服务器响应 3、客户机选择IP地址 4、服务器确定租约 5、服务器租约期限到了之后续期问题 6、总结 三、部署DHCP实验 1、项目要求 2、规划设计 …

Linux服务器配置免密SSH

在当今互联网时代,远程工作和网络安全已成为信息技术领域的热点话题。无论是管理远程服务器、维护网络设备还是简单地从家中连接到办公室,安全始终是首要考虑的因素。这就是为什么 SSH(Secure Shell)成为了网络专业人士的首选工具…

【送书活动五期】Go语言开发规范指南

今天和一个小伙伴偶尔聊了两句,聊到现在工作的开发语言,大学时接触的第一个语言应该是html,系统且简单的学习了前端语言,之后伴随着学校的课程,C、C#、Java都有涉及,然后就一直已Java为主了,也是…

动手学深度学习-注意力机制

10.1注意力提示 自主性注意力机制 有意识的注意力机制。非自主性注意力机制 无意识的注意力机制。 小结: 人类的注意力是有限的,有价值和稀缺的资源。受试者使用非自主性和自主性提示有选择的引导注意力,前者基于突出性,后者则依赖于意识。…

浏览器js中添加日志断点

一、需求 本地调试时,可以直接代码里使用console.log直接调试; 代码已更新到服务器,不想要提交代码,如何通过添加console.log调试呢 二、实现 使用浏览器添加日志断点的方式,当然vue这种打包的不可行哦 设置完成后…

【深度学习】AlexNet网络实现猫狗分类

【深度学习】AlexNet网络实现猫狗分类 AlexNet简介 AlexNet是一种卷积神经网络(Convolutional Neural Network,CNN)模型,它在2012年的ImageNet图像分类挑战赛中取得了重大突破,引发了深度学习在计算机视觉领域的热潮…

严世芸龟法养生经

文章目录 严世芸理念荤素搭配,不偏嗜动静结合心平气和 龟息法 严世芸 严世芸,出生于1940年,现任上海中医药大学的主任医师,教授。他父亲是近代上海有名的中医,他又是著名医家张伯臾的亲传弟子。 从小就在父亲诊室里长…

阿里云国际版CDN网页打不开、页面报错该如何解决?

如果在使用CDN过程中,遇到了网页打不开、页面报错等问题时,您可以通过自助诊断工具来进行诊断。诊断工具会告知本次诊断结果,您可以根据结果来调整CDN配置或提交工单进行咨询。 使用场景 主要支持以下情况: 域名访问异常&#x…

后端idea提交代码到主分支

1.先从本地提交到远程本地orgin:保留一份,避免后面提交出错,无法回退 2.提取主分支代码:更新比人提交的部分;右击项目-》git-》提取 3.把主分支代码合并到本地中:避免最后推送起冲突 4.最后提交代码:推…

JVM第10章-前端编译与优化

Javac编译器 从Javac代码的总体结构来看,编译过程大致可以分为1个准备过程和3个处理过程 1)准备过程:初始化插入式注解处理器。 2)解析与填充符号表过程,包括: 词法、语法分析。将源代码的字符流转变为标记…

云计算与大数据技术应用知识及案列

云计算与大数据技术应用知识及案列 简述什么是云计算? 答:云计算是一种动态扩展的计算模式,通过网络将虚拟化的资源作为服务提供;云计算是一种无处不在的、便捷的通过互联网访问一个可定制的IT资源(IT资源包括网络、服…

c/c++ 文件操作(2)

文件操作读和写 顺序读写 1、fgetc、fputc 函数功能fgetc字符输入函数----->对应打开方式是 “r”fputc字符输出函数-----> 对应打开方式是 “w” 2、fgets、fputs 函数功能fgets文本行输入函数------> 对应打开方式是"r"fputs文本行输出函数------>…

mybatis动态SQL-foreach

1、建库建表 create database mybatis-example; use mybatis-example; create table emp (empNo varchar(40),empName varchar(100),sal int,deptno varchar(10) ); insert into emp values(e001,张三,8000,d001); insert into emp values(e002,李四,9000,d001); insert into…

SD-WAN解决外贸企业网络问题

为了获取全球客户,占领更多的市场,越来越多的外贸企业出现。外贸企业在发展业务的过程中会遇到很多困难,海外网络访问问题就是其中之一。目前该问题主要有三种解决方案:VPN、MPLS专线以及SD-WAN专线。 VPN通过在公网上面建立专用网…

windows 服务器 怎么部署python 程序

一、要在 Windows 服务器上部署 Python 程序,您需要遵循以下步骤: 安装 Python:首先,在 Windows 服务器上安装 Python。您可以从官方网站(https://www.python.org/downloads/windows/)下载最新的 Python 安…

Spring 6(一)【Spring 入门】

前言 好久没有写博客了,最近刚忙完考试,眼下又是英语四六级。Flink 按说应该是大数据学习的主线任务,但是长时间学一门技术还是心累的。正好之前对 Java 注解有了进一步的熟悉,一直想着熟悉巩固。所以,今天开始就来深入…