08-接口测试&接口自动化
08-接口测试&接口自动化
001-接口用的鉴权方式以及怎么测试?
我们是token的接口鉴权,如果后面接口需要用到接口的token,我们会去先得到登录接口的token,用后置处理器json提取器进行数据的提取,复制一个变量,再把变量传给需要的接口去做使用
002-接口怎么做的,关注哪些点?
1、先对开发提供的接口文档做好需求分析,进行用例编写及评审,然后就是选择jmeter做接口预测,确保接口功能能正常调用,然后才进行详细的测试。具体测试是用jmeter来完成的,比如测试加标接口,先在测试计划下面添加线程组,添加http请求,页面进行相对应的接口请求地址、请求方式、传入参数的设置;然后添加查看结果树;点击运行,关注查看结果树中的响应结果中的status、code、msg信息是否跟预期一致,同步关注数据库变化
2、接口测试结果应关注接口返回信息中的响应正文,响应码等,对于响应正文会具体看里面的内容是否正确。
003-接口测试的流程
1、需求分析 2、接口文档分析与评审 3、测试计划编写 4、用例设计与评审 5、环境搭建(工具) 6、执行用例 7、缺陷管理 8、提交测试报告
004-你测试的功能有多少个接口,写了多少测试用例?
1、接口多少个,没有具体算,大概是100200多个(可以根据项目大小去说);我只负责了部分接口,大概2050多个接口的测试
2、我们一般一个接口写个30~50条的样子,主要覆盖接口正常、异常和业务逻辑来进行覆盖
005-接口数据依赖(登录接口的依赖,依赖上一个接口)
将前一个接口的对应响应字段取出来(jsonPath or正则表达式),作为下一个接口的入参
006-接口自动化过程中的接口依赖是怎么处理的?
上一个接口请求完后,把后面接口需要用到的依赖数据,提取出来保存为全局变量,在后面的接口把前面的提取出来的数据替换进去即可。
007-接口自动化怎么搭建的?
参考:
1、我们的接口自动化测试框架是自己搭建的。在最开始的时候只是使用 unittest 进行了一些单接口的设计,搭配数据驱动,由excel表格维护用例,再通过 ddt 模块读取到代码中。
2、后来加入了动态参数替换,数据提取,邮件发送等功能。
008-接口测试中的参数化是什么意思?
使用指定的数据源来替换脚本固定的数据源数据
我们在测试过程中需要考虑不同的输入组合,来覆盖不同的测试范围;除此之外,系统中往往存在一些有唯一性校验的接口,不允许重复录入关键字段(eg: 用户名,身份证…),针对这些有唯一性校验的接口,需要在每次运行时动态输入不同的数据。
009-说说你对接口的理解
参考:
接口是服务,是功能点实现,是数据传递的通道,也是服务器端的一个实现了某种协议(比如http协议..)和映射机制(当访问一个url时就会通过服务器端的映射处理机制解析后,落到对应的处理函数)的函数,接口参数就是函数的参数,接口的响应数据就是函数的返回值。
010-接口测试你有没有测试出什么问题?
接口测试中发现的bug,大多都是参数校验、代码逻辑、边界条件、数据错误方面的问题。
比如,新增促销活动接口,满减金额为空也能保存成功,原因是后端代码没有对满减金额参数做空值判 断
比如,活动列表接口,查询出来的活动数据少了第一条,原因是SQL中limit条件传入起始序号是1而不是0
比如,更新活动接口,接口提示更新成功,但是数据库中的update_time字段没有更新成最新时间,原因是开发忘记更新这个字段
011-接口自动化中遇到了问题可能有哪些种?
1、比如接口文档不规范完善,可以通过抓包获取接口定义 2、接口响应字段很多,如何断言?挑选业务核心字段断言 3、被测接口不可用/不稳定,可以采用接口Mock模拟被测接口返回
012-你的接口自动化测试有哪些可以优化的地方?
1,目前对数据库断言的处理还不够灵活,可读性也比较差
2,excel 中的测试数据管理不够方便,需要额外的参数解析
3,缺乏可视化操作,需要一定的理解成本。
013-做过接口测试吗,有哪些熟悉的工具。
做过(即时你之前没有用过可视化工具做过接口测试,但你现在学了接口自动化测试就算有经验了)。
熟悉的工具: 可视化工具比如:jmeter,postman,soapui等(用过哪些说哪些) 代码:httpclient发包技术来实现接口测试。
014-说说接口测试如何做的?
主要是根据开发提供的接口文档,编写接口测试用例,然后选取Jmeter这个工具进行接口测试。单接口一个个的验证,输入请求地址,请求方式,请求头,和请求体,检查返回信息结果;然后也会用Jmeter实现一些接口测冒烟自动化测试,就是整个流程串联起来,验证核心业务功能。对于接口的批量运行会用到参数化和断言等,也会用到后置处理器来进行接口的关联等操作
015-接口怎么做的关联?
接口要产生关联肯定是上一个接口的数据要拿出来给到下个接口进行使用 那么就需要在上一个请求的地方添加一个后置处理器,比如json提取器来提取我们需要的关联数据,然后再把这个变量传给下一个接口使用即可
016-接口测试的加密参数如何处理?
1> 先了解接口使用的加密方式(md5、rsa…)
2> 检查接口测试工具是否支持这种加密方式,如果支持的话,直接使用对应功能就行了(比如Jmeter支 持md5); 如果加密方式是公司内部特有的算法,可以在接口测试工具中调用公司的加密算法代码来实现加密。
017-你可以简单说一下get和post的区别吗?
get和post的表象区分: 1、get获取资源 post提交数据 2、get参数是在url传输,post 请求体传输 3、get一般比post更不安全 4、get传参的长度限制 post没有
最根本区分: get产生一个TCP数据包;post产生两个TCP数据包。 对于get方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
018-接口测试结果关注哪些内容?
1、响应的数据必须与API文档的定义的须一致
2、响应的结果集须与表数据一致
3、 服务日志
4、响应时间
019-你的理解程序内部接口是什么?
就是指程序中具体负责在不同模块之间传输或接受数据的并做处理的类或者函数
020-做接口测试注意哪些方面?
1、地址、参数和头部信息的传递
2、响应消息
3、数据库的数据检查
4、接口串联起来的时候关联的参数提取和传递
021-接口自动化的接口依赖处理方法?
将接口依赖的参数提取出来作为全局变量,然后在发起请求的时候去全局变量获取对应的参数,替换掉请求参数再发起请求。
022-接口自动化的优缺点?
优点: 1> 提高回归测试效率 2> 开发提测时,先跑下接口自动化脚本,提前发现功能bug
缺点: 1> 需要提前写脚本,有一定的维护成本 2> 不能覆盖所有的测试用例和所有场景
023-你的自动化测试脚本如何进行维护的?
- 使用模块化和可重用的测试脚本设计,以提高代码的可维护性和复用性。- 2. 使用合适的命名和注释,使测试脚本易于理解和维护。- 3. 定期检查和更新测试脚本,以适应应用程序的变化和新需求。- 4. 使用版本控制系统来管理和跟踪测试脚本的变化。- 5. 监控测试脚本的执行结果,及时发现和修复脚本中的问题。- 6. 定期进行回归测试,以确保修改和更新不会破坏现有的自动化测试脚本。
024-接口测试框架RestAssured的优点是什么
基于BDD语法风格,三段式结构清晰 支持RESTful风格API测试 基于httpclient二次封装,语法简洁易上手 自带断言机制
025-接口测试如果某个接口没成功,是如何判断错误的?
先确认自己传参时的接口地址,请求方式,请求头和请求体是否是正确的,如果是正确的,那么就查看返回结果,和接口文档做对比,一致则继续判断数据库中的数据是有问题。都没有那么就说明接口是OK的 如果接口返回是结果和文档不一致,就是有bug。并且数据库存储如果也有问题,那也是bug
026-接口自动化测试框架的搭建的具体思路和内容
1、封装一些公共的 api
2、把一些业务逻辑从测试用例中分离,方便维护
3、通过数据驱动等思想维护数据表格
4、通过数据抽取解决接口依赖问题
5、通过钩子函数解决前置后置问题。
027-接口测试和 web 页面测试有什么区别?
Web 页面测试是通过界面操作来进行测试的,输入不同的数据来测试不同的场景。
接口测试是使用工具直接像服务器发送 HTTP 请求去测试,输入不同的参数来测试不同 的场景。
通常 web 页面会限制某些输入数据,比如必填项、数据的格式等。而接口测试是可以 输入任何数据的,可以测试更多的异常数据场景。
Web 测试需要考虑浏览器的兼容,接口测试不需要
Web 测试需要将前端,服务端全部开发好后 才可以进行测试,接口测试只要服务端开 发完成,就可以开始测试
028-怎么做接口联调的?
接口联调开发做的---前端开发, 后台开发一起联调; 可以提问面试官是不是指接口关联实现,如果是可讲通过jmeter中的后置处理器来解决。比如json提取器或者是正则表达式。把需要的值,通过处理器取出来。然后给到需要用到接口去调用。 同时以项目来举例。比如完善信息接口,需要用到用户id。那我们就在登录请求的下方设置json提取器,把id取出来,然后完善信息接口去调用这个变量。
029-怎么设计接口测试用例?
通常,设计接口测试用例需要考虑以下几个方面:
①是否满足前提条件 有些接口需要满足前提,才可成功获取数据。常见的,需要登录Token 逆向用例:针对是否满足前置条件(假设为n个条件),设计0~n条用例
②是否携带默认值参数 正向用例:带默认值的参数都不填写、不传参,必填参数都填写正确且存在的“常规”值,其他不填写,设计1条用例
③业务规则、功能需求 这里根据时间情况,结合接口参数说明,可能需要设计N条正向用例和逆向用例
④参数是否必填 逆向用例:针对每个必填参数,都设计1条参数值为空的逆向用例
⑤参数之间是否存在关联 有些参数彼此之间存在相互制约的关系
⑥参数数据类型限制 逆向用例:针对每个参数都设计1条参数值类型不符的逆向用例
⑦参数数据类型自身的数据范围值限制 正向用例:针对所有参数,设计1条每个参数的参数值在数据范围内为最大值的正向用例
030-接口测试完成后不用的数据如何清理
1.通过API调用清理
2.通过数据库清理
031-你的接口服务数据被人截包了,你如何防止数据恶意提交?
我们可以在接口传输参数里面设置一个业务编号,这个编号用来区分是否重复提交。这样即使数据被抓包了,对方也无法区分每个字段你的含义,这时,这个业务编号的作用就来了
032-接口产生的垃圾数据如何清理?
- 在tearDown 做数据清理- 找相应的删除接口来进行数据清理,或者用 python 连数据库,通过数据库操作进行数据清理。-
033-接口自动化分了哪些层,每个层分别是用来做什么的
接口自动化框架分层设计:
(1)、base层:该层主要放用例的公共方法,比如操作Excel、参数化替换、数据库断言、响应断言、日志处理等
(2)、data层:该层主要是存放数据,比如全局的共享数据:项目URL地址,文件路径等,以及还有全局环境变量存在这里
(3)、pojo层:该层是Java的PoJo类,该设计的目的是为了方便通过easyPoi技术读取Excel
(4)、testcases层:这层就是放我们的接口自动化测试用例的地方
(5)、util层:这层主要是工具类存放的地方,比如随机数生成、数据库操作工具类
034-怎么理解序列化和反序列化?
把对象转换为字节序列的过程称为对象的序列化; 把字节序列恢复为对象的过程称为对象的反序列化。
035-你的请求是用什么格式发送到对面的,是html还是json格式?
我们的接口请求都是用json格式的。
036-你理解的接口测试是什么?接口测试的原理?
1、接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查接口参数传递的正确性,接口功能实现的正确性,输出结果的正确性,以及对各种异常情况的容错处理的完整性和合理性。
2、接口测试的原理:通过测试程序模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做出处理然后再把应答报文发送给客户端,客户端接收应答报文这一个过程。
037-接口测试用的什么工具?
用的Jmeter工具
038-怎么判断一个接口是否有 bug??
第一步:我们要去检查一下,你做接口测试时上传的这些接口的地址、参数、头部信息、还有请求体信息等等是不是正确的。
第二步:去看一下你的响应消息有没有问题,响应消息是不是跟你的接口文档是一致的。
第三步:再去同步的检查一下你的数据库里的数据是不是正确的,如果这三个都没有问题的话,一般来说我们的接口测试是OK的。
如果你的接口返回值跟我们的接口文档是不一样的,或者说我们的数据库里的数据存储是有问题的,那么这个接口可能会有bug了。
039-怎么判断一个接口是否有 bug?
先确认自己传参时的接口地址,请求方式,请求头和请求体是否是正确的,如果是正确的,那么就查看返回结果,和接口文档做对比,一致则继续判断数据库中的数据是有问题。都没有那么就说明接口是OK的 如果接口返回是结果和文档不一致,就是有bug。并且数据库存储如果也有问题,那也是bug
040-怎么抓app 的包?
前提:保证安装手机跟电脑端同一个网络 1、首先需安装fiddler抓包工具 2、安装成功后对fiddler进行简单配置: 打开fiddler,Tools->Fiddler Options---勾选“Decrpt HTTPS traffic”,选中后Fiddler可以截获HTTPS请求---勾选“Allow remote computers to connect”,选中后允许别的机器把HTTP/HTTPS请求发送到Fiddler上---配置完成后,重新启动Fiddler 3、获取Fiddler所在机器的IP地址(运行cmd-->ipconfig,即可获得IP地址) 4、在手机中设置网络代理 打开手机设置 —> WLAN —> 选择手动代理--》代理服务器主机名:填写Fiddler所在机器的IP地址---》代理服务器端口:填写Fiddler设置的代理端口 5、上面配置好后就可以在Fiddler就可以抓取到移动端App应用的请求了 6、如果要抓取HTTPS的请求,那么要在Android手机安装Fiddler证书 打开手机中的浏览器,输入192.168.3.104:8888,这是你上面在手机中设置网络代理Fiddler的服务地址。如果出现响应页面说明访问代理服务Fiddler成功,就可以安装证书了。证书安装成功后就可以在fiddler上抓取HTTPS的请求了****
041-怎么校验这个接口返回的结果是对的?
通过jsonpath 或其它方式,解析响应结果的数据,提取需要进行判断的值,和预期结果进行断言。
042-接口常见的bug,举例5个。
结合自己项目做过的项目来说,大致方向可以是:
1、接口参数长度未限制、类型未限制
2、返回的msg信息不对、code不对
3、数据库数据存在错误的情况
4、输入错误的参数名、多一个参数、少一个参数,接口没有做校验处理,依旧能返回响应
5、传入或返回对敏感数据没有加密显示,如:密码是否加密传输,身份证信息、完整的用户银行账号信息等
6、接口是否对传入的数据做安全校验,如用户鉴权token校验
043-接口自动化怎么实施的
1、发送请求
2、解析结果
3、验证结果
4、添加日志
5、生成报告
044-接口测试的关注点有哪些?
1)入参,包括参数合法性,参数校验,参数边界、参数为空、缺少参数等
2)返回值,包括各种情况下的响应内容是否正常
3)接口业务逻辑和功能是否正常
4)数据库校验
5)性能测试(接口 tps、响应时间等)
6)安全性,敏感信息加密,权限控制等
7)幂等性
045-接口自动化中你怎么验证你的数据库?涉及到了哪些表?
在Java中提供了JDBC技术,可以JDBC的QueryRunner类可以执行查询操作,比如我要查询订单的价格,会涉及到订单order表,要查询商品库存,会涉及到商品product表及商品库存sku表
046-接口自动化中的关联怎么处理?
把上一个请求返回的结果中的某个字段值传入到下一个请求的参数中,其中字段值的获取可以使用REST-assured的Gpath语法
047-接口数据依赖怎么做
参考: 1.通过绑定到用例类属性中,在其他用例中获取对应的类属性来获取
2.通过设置全局变量,在其他用例中来获取
048-接口测试中的加密参数如何处理?
首先了解参数的加解密方式,常见的有md5、aes、rsa等等,如果是aes的需要找开发要私钥,如果是rsa需要找开发要公钥和私钥,然后在接口测试工具中引用加解密的代码实现参数的加解密过程,实现参数加解密的处理;
如果公司有自定义的加密算法则需要找开发要加解密的代码实现,然后在测试工具中使用。
049-接口测试的价值
1、测试投入比单元测试少,而且技术难度也比单元测试小
2、可以更早介入测试,暴露问题,降低修复问题的成本
3、接口相比UI稳定性高,更容易实现持续集成
050-接口测试的话,最终的测试结果的确认都会检查哪些?
首先会检查接口的响应消息是否跟开发文档的要求一致;
其次会查数据库的数据,进行测试结果的确认;
以及会查看日志确认测试结果和定位问题。
051-你们公司为什么要做接口测试?
A、 在公司里,客户端和服务端通常是由不同的团队开发的,在项目开发过程中,客户端和服务端开发 的进度不一致,比如服务端先开发完了,这个时候可以先对服务端进行接口测试,确保服务端逻辑和返 回数据是正确的,然后再测试客户端。另外某些测试部门,专门测试服务端开发团队,因此,他们的测 试对象就是接口。
B、在测试某些业务时,不能仅仅通过前端来测试,比如用户注册,前端限制了用户名不能为空,但是 有些人可能通过工具绕过前端直接调用服务端接口,如果服务端没有做相关的逻辑判断,就会造成数据 错误。包括接口数据传输过程中是否对关键信息加密等。所以必须针对服务端接口单独做测试。
C、 在开发提测后,可以先通过工具把服务端的接口测试跑一遍,确保接口测试用例都是通过的,快速 判断服务端接口是否符合预期。然后再通过UI界面进行测试。否则接口有bug,前端页面必定有bug。
052-怎么做接口自动化测试的,框架是怎么设计的?
参考:
使用 Python语言,会用到 requests, unittest 这样的类库,框架采用分层设计和抽象封装,分为通用层,用例层,业务层等等。
053-接口自动化和ui自动化哪个比例要重些?
一般情况下接口自动化肯定要占的比重高些,因为接口稳定性更高。
当然也有项目更加注重用户使用体验,那么UI自动化占比也会很高。
所以,要根据项目来回答,更加注重用户体验那么UI高,否则接口高。
054-你的接口测试在什么阶段做的?
在集成测试阶段,开发就会给我们接口文档,我们就开始进行接口测试了。
055-你们公司为什么要做接口测试呢?
A、在公司里,客户端和服务端通常是由不同的团队开发的,在项目开发过程中,客户 端和服务端开发的进度不一致,比如服务端先开发完了,这个时候可以先对服务端进行 接口测试,确保服务端逻辑和返回数据是正确的,然后再测试客户端。另外某些测试部 门,专门测试服务端开发团队,因此,他们的测试对象就是接口。
B、在测试某些业务时,不能仅仅通过前端来测试,比如用户注册,前端限制了用户名 不能为空,但是有些人可能通过工具绕过前端直接调用服务端接口,如果服务端没有做 相关的逻辑判断,就会造成数据错误。包括接口数据传输过程中是否对关键信息加密等。 所以必须针对服务端接口单独做测试。
C、 在开发提测后,可以先通过工具把服务端的接口测试跑一遍,确保接口测试用例都 是通过的,快速判断服务端接口是否符合预期。然后再通过 UI 界面进行测试。否则接 口有 bug,前端页面必定有 bug。
056-怎么对含有验证码的功能进行自动化测试
- 图像识别,技术难度大,效果不佳,不推荐- 屏蔽验证码,邀请开发处理,但在预生产环境或者生产环境不推荐- 万能验证码,使用一个复杂的其他人无法猜到的验证码
057-你的自动化框架包含哪些模块?
参考:
1、log 日志处理模块; 2、excel 处理模块; 3、配置文件解析模块; 4、用例管理模块; 5、用例运行模块
058-接口的数据传输是怎么做的?
比如依赖登录的接口,需要用到token,就使用后置处理器,json提取器和正则表达式提取器,把token值提取出来,赋值给变量,在下一个接口进行变量引用。
json提取器是通过写jsonpath表达式,$..token;
正则表达式提起器,找到token的左右边界,写正则表达式.*?提取。
059-接口自动化失败重试怎么做处理
实现重试接口IRetryAnalyzer,配置重试次数
060-你的接口是怎么测试的?
先对开发提供的接口文档做好需求分析,进行用例编写及评审,然后就是选择jmeter做接口预测,确保接口功能能正常调用,然后才进行详细的测试。 具体测试是用jmeter来完成的,比如测试加标接口,先在测试计划下面添加线程组,添加http请求,页面进行相对应的接口请求地址、请求方式、传入参数的设置;然后添加查看结果树;点击运行,关注查看结果树中的响应结果中的status、code、msg信息是否跟预期一致,同步关注数据库变化,像这里会在数据库项目表中插入一条标信息,要确保插入表的各个字段数据的正确性;碰到报错的时候,需要通过日志排查下问题。大致就是这样
061-接口的原理是什么?
模拟客户端向服务器发送请求,服务器接收请求后对相应的请求做处理并向客户端返回响应结果,客户端接收结果的一个过程
062-接口测试的目的
1、更早发现问题&缩短产品研发周期
接口测试可以在功能界面未开发出来之前对系统的接口进行测试,可以更早的介入测试,从而更早的发现并以更低的成本修复问题。
使得留到后期功能测试阶段的 bug 数量减少,最终缩短整个项目的上线时间,
2、发现更底层的问题
系统中的有些 bug 如果想通过 UI 层功能测试会比较困难,或者构造测试数据和测试条件非常复杂,而通过接口测试可以更简单、更全面的覆盖到底层的代码逻辑,从而发现一些隐藏 bug。尤其是一些异常的、极端的情况,可以用接口测试很容易的验证。
063-怎么保证接口自动化测试的稳定性?
从以下几个方面浅谈接口自动化的稳定性:
代码的健壮性 如果未构建出能够稳定运行的健壮性的脚本,就可能出现运行脚本时不稳定的问题,所以,我们在编写脚本时首先要保证的是代码的健壮性
使用装饰器与出错重试机制保证稳定性
1.通过pytest的pytest- rerunfailures插件可实现
2.通过重写unitetest的run源码的方式实现
3.通过自定义装饰器实现,这种方法无法运行前后置方法
064-接口测试怎么做的,什么时候做,有多少个接口?
1、接口测试使用JMeter工具测试
2、在集成测试阶段开始测试 (1)项目开发完成了,但是前端页面还没有开发出来,我们一般都会先把接口测一遍,保证后面接口没有问题 (2)后期版本迭代的时候要增加新接口,新接口我们都需要进行测一遍的 (3)还有就是说版本迭代改了某些功能,某些功能发生了改变,接口逻辑发生了变化,这个时候我们也需要去测的
3、项目中接口多少个,没有具体算,大概是100200多个(可以根据项目大小去说);我只负责了部分接口,大概2050多个接口的测试
065-接口测试什么时候介入?
集成测试阶段,当服务端接口开发完成,开发提测后,就可以开始介入接口测试了,根据接口测试用例编写脚本,然后 执行测试就行
066-你接口写过多少个用例
我们一般一个接口写个30~50条的样子,主要覆盖接口正常、异常和业务逻辑来进行覆盖****
067-接口的请求头详细设置?
根据接口文档来添加请求头信息,在jmeter工具中是通过HTTP信息头管理器来添加请求头和请求参数的
068-接口自动化的断言怎么做
不管是自动化接口测试还是手工接口测试,接口测试的断言标准是一致的,一般需要做响应状态码断言,响应结果断言,数据库断言
069-你的接口自动化测试怎么做的?用例是怎么写的?
1)拿到API接口说明文档
2)结合需求分析接口自动化的可行性分析(是否前后端分离,是否迭代频繁)用jmeter或者postman先跑一遍接口冒烟,看能否通过;
3)然后先设计接口用例,考虑参数的正常,异常:边界值,参数个数不对应,参数交叉,参数互斥,数据类型,是否必填等设计好用例,准备测试数据;
4)再写代码实现自动化:我们用的Python语言实现的自动化框架的搭建,用pytest测试框架编写测试用例和执行测试用例,然后实现参数化和数据驱动;用allure生成测试报告;requests库发送接口测试,还有一些其他的库比如pymysql处理数据库,jsonpath实现接口关联数据提取等。再做接口的断言,看是否符合接口文档描述;
5)最终记录日志,并输出测试报告。
发现问题,保留截图,确认BUG是脚本问题还是真的是BUG,如果是BUG,就提BUG
070-接口测试流程?
先对开发提供的接口文档做好需求分析,进行用例编写及评审,然后就是选择jmeter做接口预测,确保接口功能能正常调用,然后才进行详细的测试。 具体测试是用jmeter来完成的,比如测试加标接口,先在测试计划下面添加线程组,添加http请求,页面进行相对应的接口请求地址、请求方式、传入参数的设置;然后添加查看结果树;点击运行,关注查看结果树中的响应结果中的status、code、msg信息是否跟预期一致,同步关注数据库变化,像这里会在数据库项目表中插入一条标信息,要确保插入表的各个字段数据的正确性;碰到报错的时候,需要通过日志排查下问题。大致就是这样
071-接口测试的常用工具有哪些?
我知道有Jmeter、postman、SOAPUI等,不过我们工作中主要用的是Jmeter。
072-你觉得自动化测试最大的缺陷是什么?
1.不稳定 2.可靠性 3.不易维护 4.成本与收益
073-接口请求的返回值怎么获取?
1、json提取器 提取
2、正则表达式提取
074-接口自动化测试过程中遇到的问题
1、接口断言的准确性
2、跨系统断言验证的阻碍
3、数据加解密
4、测试数据的更新与维护
5、测试用例的维护与更新
075-接口测试的难点在哪?
1、会分析接口文档。(重点)
2、对前、后台的数据交互过程、后端业务处理逻辑非常清楚。(难点)
3、对关联接口,要清楚接口之间的数据依赖关系。(难点)
4、工具的灵活使用。(重点)
076-接口测试用例怎么设计?
1、先考虑接口的正常调用 按照接口定义,传递正确的接口信息,包括地址、方法、传输数据,然后查看返回的响应结果是否正确、数据库数据是否正确; 1)传递的请求数据覆盖有效类、边界值 2)返回的响应结果的每个字段都需检查,例如code、msg信息 3)调用接口对数据库中数据的测试,增删改业务接口调用需确保到表字段的正确性验证
2、考虑请求参数的错误、异常情况 1)请求数据输入异常值,例如空值、长度类型异常等,接口能否正确处理且返回响应是否合理; 2)考虑业务约束,例如订单状态必须确认收货后才能评价,调用非该状态的订单,进行评价 3)输入错误的参数名、多一个参数、少一个参数,接口能否正确处理且返回响应是否合理;
3、关注接口的安全性测试: 1)敏感数据,例如密码是否加密传输; 2)返回数据是否含有敏感数据,如身份证信息、完整的用户银行账号信息等; 3)接口是否对传入的数据做安全校验,如用户鉴权token校验;
077-你们的自动化用例的执行策略是什么?
自动化测试用例的执行策略是要看自动化测试的目的,有如下几种策略: 1、线上巡检和监控。设置成定时任务,定时执行。 2、回归测试。把测试用例设置成触发式执行,在jenkins上将我们的自动化测试任务绑定到开发的build任务上。当开发人员在测试环境上部署代码后,自动化测试用例就会被触发执行。 3、不需要经常执行的测试用例。设置成人为触发执行。
078-你们持续集成是怎么做的?
一般使用jenkins实现持续集成,跟部署结合一起使用,比如测试环境更新后,自动触发用例执行。另外,可以设置每晚定时自动构建。
079-接口自动化中你用到了哪些设计模式?
1、数据驱动模式 2、单例模式 3、工厂模式
080-接口测试数据过多时如何进行测试?
可以用参数化,把他保存成一个csv的文件导入进去,然后进行测试,如果对测试数据的真实性要求不高的话可以用函数,random string函数去进行参数化
081-接口权限校验用的什么授权?
1、我们用的token做的鉴权;
2、执行完上一个接口--用后置处理器- json提取器/正则提取器 提取数据,比如token,提取完后 赋值给一个变量-- 然后在下一个接口里调用
3、拿到的token是传给后面的接口使用的,我们的项目token是放在头部信息里传输的,用的是authorization这个头部,值里放token;其他的参数就是接口正常的参数。
082-接口测试都要做什么?
1、基本功能测试:
由于是针对基本业务功能进行测试,所以这部分是两种测试重合度最高的一块,开发同学通常所指的也主要是这部分的内容。 2、边界分析测试:
在基本功能测试的基础上考虑输入输出的边界条件,这部分内容也会有重复的部分(比如业务规则的边界)。但是,前端的输入输出很多时候都是提供固守的值让用户选择(如下拉框),在这种情况下测试的边界范围就非常有限,但接口测试就不存在这方面的限制,相对来说接口可以覆盖的范围更广,同样的,接口出现问题的概率也更高。
3、性能测试:
这个比较容易区分,虽然都需要做性能测试,但关注点确大不相同。App端性能主要关注与手机相关的特性,如手机cpu、内存、流量、fps等。而接口性能主要关注接口响应时间、并发、服务端资源的使用情况等。两种测试时的策略和方法都有很大区别,所以这部分内容是需要分开单独进行测试的,理论上来说这也是不同的部分。
083-说说接口测试的流程,介绍一下 request 有哪些内容?
参考: 1)接口测试流程: 获取接口文档,依据文档设计接口参数,获取响应,解析响应,校验结果,判断测试是否通过。 2)request 内容:
① 封装了各种请求类型,get、post 等; ② 以关键字参数的方式,封装了各种请求参数,params、data、headers、token 等;
③ 封装了响应内容,status_code、json()、cookies、url 等;
④ Session 会话对象,可以跨请求。
084-说说接口自动化代码中,用到了哪些设计模式?
自动化代码用到过的设计模式: 单例设计模式 数据驱动模式 面向接口编程设计模式
085-接口自动化上传下载文件用的什么库?
可以使用 requests 库完成上传和下载操作, 通过 files 参数直接上传文件, 可以通过响应对象 respose.content 获取文件数据
086-接口测试用例的编写要点有哪些?
1)入参,包括参数合法性,参数校验,参数边界、参数为空、缺少参数等
2)返回值,包括各种情况下的响应内容是否正常
3)接口业务逻辑和功能是否正常
4)数据库校验
5)性能测试(接口tps、响应时间等)
6)安全性,敏感信息加密,权限控制等
087-接口测试中,依赖登录状态的接口如何测试?
先分析接口使用token鉴权还是cookie+sesssion鉴权,在登录之后提权鉴权所需要的token或cookie信息保存,请求需要登录的接口时 加上对应的信息即可。
088-接口测试需要关注的点?
一、接口返回的节点、返回节点对应的值是不是对的;
二、接口入参的默认值、异常类型、非空校验;
三、接口新旧版本兼容;
四、入参支持多个值时,要考虑传的值的个数多的情况下,接口会不会报错;
五、接口之间的依赖 六、接口性能测试
089-接口执行到1000条的时候,token过期了怎么办
根据token过期时间定期更新token
090-你接口用的什么做的呀?Jmeter上家公司那有用过吗?
上家公司就是用jmeter来做的接口测试,先根据开发提供的接口文档,编写接口测试用例,然后选取Jmeter这个工具进行接口测试。单接口一个个的验证,输入请求地址,请求方式,请求头,和请求体,检查返回信息结果;然后也会用Jmeter实现一些接口测冒烟自动化测试,就是整个流程串联起来,验证核心业务功能。对于接口的批量运行会用到参数化和断言等,也会用到后置处理器来进行接口的关联等操作
091-接口测试用例设计?
1、先考虑接口的正常调用 按照接口定义,传递正确的接口信息,包括地址、方法、传输数据,然后查看返回的响应结果是否正确、数据库数据是否正确; 1)传递的请求数据覆盖有效类、边界值 2)返回的响应结果的每个字段都需检查,例如code、msg信息 3)调用接口对数据库中数据的测试,增删改业务接口调用需确保到表字段的正确性验证 2、考虑请求参数的错误、异常情况 1)请求数据输入异常值,例如空值、长度类型异常等,接口能否正确处理且返回响应是否合理; 2)考虑业务约束,例如订单状态必须确认收货后才能评价,调用非该状态的订单,进行评价 3)输入错误的参数名、多一个参数、少一个参数,接口能否正确处理且返回响应是否合理;; 3、关注接口的安全性测试: 1)敏感数据,例如密码是否加密传输; 2)返回数据是否含有敏感数据,如身份证信息、完整的用户银行账号信息等; 3)接口是否对传入的数据做安全校验,如用户鉴权token校验; 4)接口是否防止恶意请求,例如大量伪造请求接口致使服务器崩溃
092-接口测试一般会更侧重于哪方面的验证呢?
1、接口测试首先会侧重于接口的功能测试,正常的参数和头部等传输,检查接口的响应结果,验证接口是否可以正常工作;
2、也会关注接口的安全性和健壮性测试,比如参数的一些异常数据,以及用户的鉴权这些;
3、还会关注接口的性能,用Jmeter做写简单的性能测试,关注接口的性能的瓶颈。
093-接口自动化会用在什么环境?
测试环境及预发布环境和线上都可以
094-为什么要做接口测试?
开发代码初期,UI和web页面设计还没有到位,提前介入测试更早发现问题,否则底层的一个bug可能会引起外面的8个bug 出于接口安全层面考虑,前端进行限制容易绕过,需要同样测试后端的限制;另外测试接口验证数据的加密传输,例如用户密码
095-你不是做了UI功能测试,怎么要做接口测试呢
接口测试主要测试是后台的处理逻辑,容错机制/能力,也就是后台对于前端传递过来的正确数据以及错误的数据都能响应处理。
UI功能测试,跟多关注的是功能的本身是否实现,是否有问题,它更多的是站在用户的角度去检查功能本身问题。
除了后台,前端都会检查, 有些可能前端做了校验规则,其实没办法测到后台的。
举例:用户名要求是3-15个字符之间,一般前端都会校验规则。当你输入少于3个或者大于15个场景数据的时候,前端就已经拦截。 通过抓包,拦截数据,打断点,篡改数据,绕过前端的校验去测后台的逻辑,容错能力。
096-接口测试你做过吗,接口断言你是怎么做的?
我用的是JMeter做的接口测试,断言一般是用的响应断言,在每个请求下添加断言->响应断言即可
097-接口测试测试哪方面?
一、接口返回的节点、返回节点对应的值是不是对的;
二、接口入参的默认值、异常类型、非空校验;
三、接口新旧版本兼容;
四、入参支持多个值时,要考虑传的值的个数多的情况下,接口会不会报错;
五、接口之间的依赖 ;
六、接口性能测试。
098-接口怎么鉴权
我在公司里面一般见过两种 web功能的话一般是cookie,session,这个一般是在请求头里面的用cookie管理器来管理的 APP的话是用token,sign这个鉴权的有些在请求头里面,有些在请求body里面
099-接口测试测哪些内容,哪些点?
从接口测试用例执行去考虑以下测试点,综合自己目前做过的项目去讲
1、先考虑接口的正常调用 按照接口定义,传递正确的接口信息,包括地址、方法、传输数据,然后查看返回的响应结果是否正确、数据库数据是否正确; 1)传递的请求数据覆盖有效类、边界值 2)返回的响应结果的每个字段都需检查,例如code、msg信息 3)调用接口对数据库中数据的测试,增删改业务接口调用需确保到表字段的正确性验证
2、考虑请求参数的错误、异常情况 1)请求数据输入异常值,例如空值、长度类型异常等,接口能否正确处理且返回响应是否合理; 2)考虑业务约束,例如订单状态必须确认收货后才能评价,调用非该状态的订单,进行评价 3)输入错误的参数名、多一个参数、少一个参数,接口能否正确处理且返回响应是否合理;
3、关注接口的安全性测试: 1)敏感数据,例如密码是否加密传输; 2)返回数据是否含有敏感数据,如身份证信息、完整的用户银行账号信息等; 3)接口是否对传入的数据做安全校验,如用户鉴权token校验;
100-你觉得自动化测试用例哪些缺陷?
- 成本比较大,而承销可能并不高- 适合自动化测试的功能有限- 某些功能操作相对复杂,比如验证码- 维护成本高,一旦项目需求变更,自动化测试脚本和用例就需要改进
101-你觉得自动化测试的价值在哪里?
引用自动化测试之后,能代替大量繁琐的回归测试工作,把业务测试人员解放出来,既而让业务测试人员把精力集中在复杂的业务功能模块上,自动化测试一般是对稳定下来的功能进行自动化,保证不会因为产品的更新导致之前稳定下来的功能出现BUG
102-接口自动化使用了unittest是吧,都用它做了什么?
参考:
一、TestCase 用户自定义的测试case的基类,调用run()方法,会依次调用setUp方法、执行用例的方法、tearDown方法。
二、TestSuite
1、测试套件,多个测试用例test case集合就是TestSuite
2、TestSuite可以嵌套TestSuite,可以通过addTest()方法手动增加Test Case,也可以通过TestLoader自动添加Test Case,TestLoader在添加用例时,会没有顺序。
三、TestRunner 运行测试用例的驱动类,可以执行TestCase,也可以执行TestSuite,执行后TestCase和TestSuite会自动管理TESTResult
四、TestFixture 测试脚手,测试代码的运行环境,指测试准备前和执行后要做的工作
103-怎么构造前置测试数据
1、通过UI
2、通过调用后端提供的接口
3、通过数据库
