💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# 接口测试篇 [TOC] > ### 接口测试怎么测试的。 1. 当我们拿到接口文档后,会先进行熟悉需求文档,了解每个接口的功能、服务器地址、端口、请求方式、请求参数、参数的约束条件有哪些还有一些响应的字段和响应的状态码 2. 之后就会开始编写测用例的,跟功能测试一样,考虑到正常异常的请求参数,还要考虑到与之对应响应报文是否正确 3. 最后就开始使用Jmeter执行用例了,先建立一个线程组,再添加http请求,填写好请求地址,端口,和请求参数,设置参数化,添加断言等,最后添加查看结果树再运行。运行完后,检查接口是否通过,如果不通过,先定位下原因,如果是请求的参数有问题,修改后再进行测试,如果是接口本身存在bug,就把服务器上的日志取下来,提单给开发修改,一直到接口没问题了,就放到我们搭建好的Jmeter+Jenkins框架上做持续集成测试。 4. 这就是我们接口测试的大概流程。 > ### 举例说一下你的接口测试是怎么做的? 我以下单这个接口说下吧:下单这个接口用的是http协议,使用post请求方式,发送给服务器的参数有token,产品ID,购买数量,收货人地址等等,这些参数都是必传的参数。我们是使用Jmeter来做接口测试的,首先,要新建一个线程组,在线程组下面添加一个http的请求,然后填写好服务器地址,接口路径,请求方式,请求参数。由于下单的接口依赖于等于,所以我们会先调用登录接口,从中获取token值,在下单接口中使用${参数名}的方式引用,接下来还要对其他参数进行参数化,构造各种正常和异常的数据,我们先在本地创建一个txt文档,把参数填写到文档里面,在Jmeter中添加一个csv文件设置,填写好txt文档的路径,然后在请求参数中使用Json提取器把token值关联出来,然后在下单接口中使用${参数名的方式引用;接下来添加断言,检查服务器返回的结果和预期结果是不是一致的。最后,添加查看结果树查看测试结果。 > ### JMeter测试环境怎么搭建 1. 因为JMeter是JAVA程序开发的,所以要先安装JDK; 2. 配置JAVA环境变量,包括:JAVA\_HOME,PATH,CLASSPATH; 3. 双击jmeter的bin目录里面的jmeter.bat文件,就可以启动Jmeter。 > ### 什么时候会用到使用Fiddler 1. 做安全测试,检测敏感信息是否加密,拦截篡改数据; 2. 当测试时发现缺陷,用fiddler抓包,定位该问题是前端还是后台的问题; 3. 模拟弱网环境; 4. 统计单个功能的响应时间。 > ### Fiddler怎么拦截篡改数据 1. 就拿下单来说吧,点击下单之前,先启动Fiddler,按F11打断点,将请求拦截下来, 2. 然后在fiddler中,对拦截下来的请求,修改其中的数据,比如将价格或者商品数量进行修改 3. 修改完成后,关闭拦截,继续请求的发送即可。 > ### Fiddler怎么模拟弱网测试 步骤: 1. 点击规则-->自定义规则,打开fiddler的脚本编辑器,找到simulateModem 2. 设置上传和下载的延时速度 3. 点击规则-->性能,选模拟带宽 > ### Fiddler怎么抓HTTPS的包 步骤: 1. 安装安全证书; 2. 点击fiddler的Tools-->options-->https 3. 勾选上所有选项,更换证书,重启fiddler > ### Fiddler的抓包原理 在客户端和服务器之间建立一个代理,通过监听端口(默认是 8888),监听本机发出的请求和服务器返回的响应结果。 > ### 问:用jmeter做接口可以通过,但在手机上用到这接口时用不了,什么原因: 参考答案:抓包,查看从手机发出去的数据有没有问题。 > ### 问:接口测试的关注点(怎么验证接口是通过的) 1. 发送给服务器的请求数据是否正确; 2. 服务器返回给客户端的信息是否和预期结果一致; 3. 进入数据库,检查接口是否实现的相应的功能; 4. 接口的响应时间是否符合需求。 > ### 在进行接口的自动化测试,如果遇到token校验,你是怎么处理的? 首先需要获取token,获取token的整个思路为: 1. 先进行登录 2. 登录成功后 3. 获取token 4. 把获取的token当作下一个接口的请求参数 * 上面这个题目可以这样延伸:有一个接口A,发送给服务器的数据需要从接口B中获取,怎样对A接口进行测试? 参考答案: 1. 在A接口前面添加接口B,在B接口中添加Json提取器,把A接口需要用到的数据关联出来,保存到参数中; 2. 在A接口中使用${参数名}的方式进行引用。 > ### Jmeter的断言怎么做? 参考答案:选中需要断言的请求,右键,选择响应断言,在响应断言输入框中添加要断言的值;如果这个接口有多个请求数据,针对每个请求数据服务器返回数据都不一样的,这时候,我们就要把断言的值进行参数化,步骤是:现在本地添加一个txt文档,把参数化的值写入文档里面,然后再在jmeter选中需要断言的请求,右键,添加CSV文件设置,把刚才编辑好的txt文档添加进来,在响应断言输入框中使用${字段名}的方式来引用参数的值。 > ### 接口自动化做了多久呢 参考答案:每个版本都会做接口测试,开发写好接口,我们拿到接口文档之后,我们就开始做着。 > ### jenkins怎么做接口自动化? 设置定时任务去跑脚本 > ### 接口返回的数据格式有哪些? JSON格式 和 文本格式,常用的是JSON格式 > ### 什么样的接口,是个好的接口 功能准确无误,响应速度快,支持多用户并发操作,安全性好 > ### 面:接口出错了怎么办? 首先,我会先检查一下请求参数啊,还有其他的填入的数据是否有问题,如果这些都没问题,我会ping一下网络,看网络通不通,如果网络也没问题的话,我会去看看系统服务器有没有启动,如果服务器也没问题的话,那可能就要发给开发定位一下了。 > ### 你一个项目做过哪些接口? 1. 每个版本都会新增一些功能,对应的接口也要进行测试,一个项目的所有接口都要进行测试,比如,查询,下单,登陆,修改信息等等,开发写好一个接口后,给到我们接口文档我们就会去测试。 > ### 接口测试用例怎么写? 我们每个版本都会有四五个接口需求,有的是新增的接口,有的是原来的接口做了一些调整,我们会查看这些接口有哪些参数,每个参数有什么约束条件,加密方式是什么,正常和异常的响应信息有哪些,然后编写测试用例来覆盖这些需求,一个版本下来大概有五六十条接口测试用例。 > ### 接口有哪些参数? 比方说:下单接口,会有token,产品ID,购买数量,收货人地址,收件人电话等等;注册接口,会有手机号,密码,验证码这些参数;我们项目的接口有五六十个,每个接口实现的功能不一样,参数是不一样的。 > ### 接口的状态码有哪些 接口不一样,返回的状态码也不一样,我们接口的状态码是由开发统一定义的,比如,我们xxx这个项目,修改昵称这个接口,成功修改的状态码是0,30001表示token无效,30002表示用户不存在,还有30003等一些其他的状态码,具体意思记不太清楚了。 > ### 接口是一个一个做,还是系统做? 我们是将这个系统的所有接口,都放在Jmeter的一个线程组下一起执行。 > ### 接口测试遇到过什么问题,当时是怎么操作然后出现的问题,后来又是怎么分析处理的? 就比如最近做的这个项目,添加新商品这个接口,当库存量的值为空,接口报错了 原因是开发没有设定当库存量为空时,自动给一个0的默认值,导致后台接收不到数据。 > ### 你支付功能,付款的接口是怎么测试的呢? 付款的接口一般是由开发直接调试的,像支付宝、微信这些第三方支付,开发会直接调试好。 > ### 能说一下第三方支付接口的流程吗 首先用户下订单,网站后台就会生成一个支付请求发送到第三方支付平台;支付平台收到请求后会直接发送响应给用户,展示金额等,并且要求用户输入账号密码,用户输入信息直接发送到第三方平台;付款成功后第三方平台会返回支付结果给到网站后台和用户;后台收到付款成功信息后就会生成付款成功的订单信息发给用户;大概的流程就是这样。 > ### Fiddler怎么抓手机app的包? 1. 手机与fiddler所的电脑连接到同一网络; 2. 在fiddler设置监听端口,并允许远程终端连接; 3. 在手机上填写代理服务器的地址和端口。 > ### 为什么要做接口测试 / 接口测试的目的 1. 尽早介入测试,早发现bug,降低修复成本 2. UI界面测试无法发现底层问题 > ### 接口的加密如何处理 一般来说的话加密都是开发那边会给到加密的文档或者脚本给到我们,我们将参数进行加密后,然后再在Jmeter中填写