你一个项目做过哪些接口?举例说一下你的接口测试是怎么做的?
参考答案:
1)、每个版本都会新增一些功能,对应的接口也要进行测试,一个项目的所有接口都要进行测试,比如,查询,下单,登陆,修改信息等等,开发写好一个接口后,给到我们接口文档我们就会去测试。
2)、我以下单这个接口说下是怎么测试的吧:下单这个接口用的是http协议,使用post请求方式,发送给服务器的参数有token,产品ID,购买数量,收货人地址等等,这些参数都是必传的参数。我们是使用Jmeter来做接口测试的,首先,要新建一个线程组,在线程组下面添加一个http的请求,然后填写好服务器地址,接口路径,请求方式,请求参数,因为token值是用来标识用户是否合法并且是动态变化的,这个值从登陆接口中返回来的,所以,我们要在下单这个接口的前面增加一个登陆的接口,在登陆接口中使用正则表达式把token值关联出来,然后在下单接口中使用${参数名}的方式引用;接下来还要对其他参数进行参数化,构造各种正常和异常的数据,我们先在本地创建一个txt文档,把参数填写到文档里面,在Jmeter中添加一个csv文件,填写好txt文档的路径,然后在请求参数中使用${字段名}的方式引用;接下来添加断言,检查服务器返回的结果和预期结果是不是一致的,如果断言的内容会根据发给服务器参数变化而变化,就要把断言的内容也参数化;为了遍历所有的参数,我们接下来还要添加一个循环控制器,把下单接加入到这个循环控制器里面,并设定循环次数;最后,添加查看结果树查看测试结果。
面:那你们是怎么验证接口是通过的?
我:首先会去看服务器返回给客户端的信息是不是和预期结果一致;向系统提交的数据是否正确写进数据库
面:接口返回的数据格式有哪些?
我:一般是json格式和文本格式,常见的是json格式
面:你觉得为什么要做接口测试
我:接口测试是在程序的开发阶段进行的,越早进行测试就能越早发现系统的底层缺陷,降低修复的成本,随着系统的越来越复杂,单纯的UI层面的功能测试无法覆盖所有的参数,存在安全隐患
面:那常见的头部信息有哪些?
我:user-agent和accept encoding
面:在进行接口测试时,如果接口报错怎么处理?
我:(首先,我会先检查一下请求参数啊,还有其他的填入的数据是否有问题,如果这些都没问题,我会ping一下网络,看网络通不通(面试官点了点头),如果网络也没问题的话,我会去看看系统服务器有没有启动,如果服务器也没问题的话,那可能就要发给开发定位一下了。)
检查网络是否有问题
Ping 服务器,与服务器的网络是否有问题
检查接口的参数是否有误
检查接口是否做了ip的限制
检查是单单这个接口挂掉了,还是所有接口挂掉了
如果是接口本身的bug,就获取日志提单给开发修改
面:写过多少个接口,接口测试负责什么模块
我:基本上所有模块的功能都做接口测试,我们都是根据开发给到的接口文档,熟悉接口文档后小组再进行分工,拿到自己的接口就根据文档编写接口的测试用例,然后再用jmeter工具进行测试,我大概做过五十多个接口
面:什么样的接口是好的接口
我:功能准确无误的,响应速度快的,安全性好的,支持多用户并发操作
面:那不同版本的系统,接口怎么调用
我:在头部信息里,传入版本或者系统类型
面:在做接口的时候有没有遇到什么问题?
我:遇到比较多的就是接口的互相依赖,存在数据的交互,比如说有一个a接口的数据需要从b接口获取,那我们会把b接口放到a接口前面,然后再b接口添加一个css提取器或者是json提取器,然后把a接口要用到的数据关联出来,保存到参数中。然后在a接口中使用${字段名} 的方式引用参数
面:接口的自动化怎么做的?
我:我们再jmeter做好接口之后呢,会使用Jenkins这个持续集成工具定时去跑脚本
1、用到哪些工具做接口测试?
参考答案:jmeter
2、接口测试怎么测试的。
参考答案:
1、拿到接口文档熟悉:(服务端开发人员把接口文档写出来,我们就可以拿过来熟悉):
1)每个接口对应要实现的功能是什么
2)服务器的地址、端口、接口地址(确定访问哪个接口)
3)请求方式,请求参数有哪些,参数的约束是什么(工作当中了解请求参数的各种约束)
4)熟悉响应数据:
<1>响应的字段个数是否足够(可以看需求文档中对应的功能需要显示的个数,只能多不能少)
<2>正确和错误的响应码(errcode)有哪些,对应的响应信息(message)是什么。例如 :errcode:4403 message:错误的请求信息
2、编写接口测试用例(接口测试用跟功能类似,只多了一个请求报文,响应报文)
1)考虑正常异常的请求参数的请求报文
2)考虑正常和异常请求后的响应报文(例如 :异常的错误码是什么,对应的错误信息是否正确)
3、执行测试用例:
我们是用jmeter执行测试用例,先建立一个线程组,再添加http请求,填写好请求地址,端口,和请求参数,设置参数化,添加断言等,最后添加查看结果树再运行。运行完后,检查接口是否通过,如果不通过,先定位下原因,如果是请求的参数有问题,修改后再进行测试,如果是接口本身存在bug,就把服务器上的日志取下来,提单给开发修改。
3、JMeter测试环境怎么搭建
1)、因为JMeter是JAVA程序开发的,所以要先安装JDK;
2)、配置JAVA环境变量,包括:JAVA_HOME,PATH,CLASSPATH;
3)、双击jmeter的bin目录里面的jmeter.bat文件,就可以启动Jmeter。
4、什么时候会用到使用Fiddler
1)、做安全测试,检测敏感信息是否加密,拦截篡改数据;
2)、当测试时发现缺陷,用fiddler抓包,定位该问题是前端还是后台的问题;
3)、模拟弱网环境。
5、Fiddler怎么拦截篡改数据
参考答案:
可以在请求之前,或响应之后拦截篡改数据,比如登录,在用户发出登录请求前,拦截下用户的数据,可以修改用户名或者密码,用户就会登录失败,或者在用户发出登录请求后,在数据库返回数据给用户前,拦截下数据库返回的数据,可以修改返回的数据,比如把返回的用户名改成别人,用户收到的数据会变成改后的。
6、Fiddler怎么模拟弱网测试
参考答案:结合实际案例和使用步骤来讲
首先手机和电脑连接同一个路由器,手动设置电脑IP为服务器,添加端口,用fiddler把延时加大
7、问:用jmeter做接口可以通过,但在手机上用到这接口时用不了,什么原因:
参考答案:抓包,查看从手机发出去的数据有没有问题。
8、问:接口测试的关注点(怎么验证接口是通过的)
1、接口返回的数据是否正确;
2、向系统提交的数据是否正确写入了数据库。
9、在进行接口的自动化测试,如果遇到token校验,你是怎么处理的?
首先需要获取token,获取token的整个思路为:
A.先进行登录
B.登录成功后
C.获取token
D.把获取的token当作下一个接口的请求参数
10、Jmeter的断言怎么做?
首先查看正确异常的响应码是多少,将响应码参数化,写在记事本中,然后在jmeter中用CSV DATA导入记事本,添加响应断言,在响应断言中添加参数${}。如果是断言多条,就要添加循环控制器。
11、接口自动化做了多久呢
开发写好接口,我们拿到接口文档之后,我们就开始做着。
12、jenkins怎么做接口自动化?
设置定时任务去跑脚本
1、接口测试在什么时候做:
服务端开发实现接口功能,联调之前完成
为什么在联调之前执行:很多开发不懂,经常说等我跟前端联调完成之后再测试。
联调之后执行的问题:前端跟后端联调时由于这个接口还有很多问题没有测试过,所以经常得帮端发现bug而且还要等待后端解决,白白的耽误时间,如果在两条之前就测试完那就联调会很流畅
2、接口测试的好处:
1、测试尽早的执行(因为 服务端刚把接口实现,整个项目都还没做完)
2、节省联调的时间
3、一个接口问题,可以导致界面多个问题
3、接口流程需要上台讲出来的(做完项目二需要切入项目中):
2、接口测试怎么测试的。
参考答案:
1、拿到接口文档熟悉:(服务端开发人员把接口文档写出来,我们就可以拿过来熟悉):
1)接口功能对应的需求
2)服务端地址、端口、接口地址(确定访问哪个接口)
3)熟悉请求方式,请求参数有哪些(工作当中了解请求参数的各种约束)
4)熟悉响应数据:
<1>响应数的字段个数是否足够(可以看需求文档中对应的功能需要显示的个数,只能多不能少)
<2>错误码(errcode)有哪些,对应的错误信息(message)。例如 :errcode:4403 message:错误的请求信息
2、编写接口测试用例(接口测试用跟功能类似,只多了一个请求报文,响应报文)
1)考虑正常异常的请求参数的请求报文
2)考虑正常和异常请求后的响应报文(例如 :异常的错误码是什么,对应的错误信息是否正确)
3、执行测试用例(项目二中要切入的项目中):
我们是用jmeter执行测试用例,先建立一个线程组,再添加http请求,填写好请求地址,端口,和请求参数,设置参数化,添加断言等,最后添加查看结果树再运行。运行完后,检查接口是否通过,如果不通过,先定位下原因,查看接口返回的数据为什么不正确,然后,把服务器上的日志取下来,提单给开发修改。
注意:别的公司使用其他工具我们不管,我们就使用这个,常用的接口测试工具有:jmeter postman soapui(web service) python编写脚本测试。