一、你对接口测试是怎么理解的?
我理解的接口是功能数据传递的通道,是实现某个功能的一个函数。接口参数就是函数的参数,接口的响应数据就是函数的返回值。接口有分内部接口,即同一个系统项目包含的接口;还有外部接口,跨系统跨平台的接口,涉及第三方,例如支付接口。接口测试就是绕过前端直接对接口调用,查看接口功能实现是否正常。
二、你们什么时候做接口测试?接口测试用例怎么设计的?
一般是后端接口开发出来,我们就可以开始接口测试了。
首先必要的了解接口需求,弄懂功能及业务实现逻辑。
1)先保证这个接口功能是好的,也就是输入正常的参数,是否可以返回正确的结果;
2)然后考虑接口异常验证,包括必填项验证、长度、类型异常等,比如说手机号11位,输入非11位,10位、12位的来验证;
3)还有需要考虑接口的业务逻辑,比如说必须执行了回款计划,才能修改标的状态到还款中;
4)一些必要的接口安全验证要考虑到,例如注册接口中传入的密码是需要加密的,还有就是权限这块;
5)如果有接口性能测试要求,还需考虑性能测试部分的用例设计。
三、HTTP协议常见的返回状态码有哪些?
200(正常):表示一切正常,到了服务器,并且服务器正常的响应了你的请求
404(找不到):服务器上不存在客户机所请求的资源
500(内部服务错误):服务器的CGI、ASP、JSP等程序发生错误
504:超时
四、除了jmeter,你还了解哪些其他做接口测试的工具
postman、soapui、loadrunner;
目前主流一点做接口测试工具的是jmeter、postman;
soapui测试soap协议会比较好用;
loadrunner做性能测试比较多。
五、get和post请求方法的区别?
get请求方式的请求数据拼接在URL地址后,为明文,数据长度有限(浏览器对url长度有限制),安全性不如post,但执行速度高于post,一般应用在数据查询场景中;
post请求方式,请求数据位置在http正文body体中,可明可密,长度不受限,数据安全性高,一般应用在修改数据场景中。
六、如何使用jmeter做接口测试?用到哪些测试元件?
第一种,比如测试注册接口,先在测试计划下面添加线程组,添加HTTP请求,进行相对应的接口请求地址、请求方式、传入参数的设置;
添加请求头,设置数据传递格式json,然后添加察看结果树,用来查看接口测试过程中,请求及响应信息;
点击运行,关注察看结果树中的响应结果中的status、code、msg信息是否跟预期一致,同步关注数据库变化,像注册会在数据库项目表中插入一条用户信息,要确保插入表的各个字段数据的正确性;
碰到报错的时候,需要通过日志来排查问题
第二种,比如测试加标接口,先在测试计划下面添加线程组,添加http请求,进行相对应的接口请求地址、请求方式、传入参数的设置;然后添加察看结果树;点击运行,关注察看结果树中的响应结果中的status、code、msg信息是否跟预期一致,同步关注数据库变化,像这里会在数据库项目表中插入一条标信息,要确保插入表的各个字段数据的正确性;碰到报错的时候,需要通过日志排查问题。大致就是这样
七、比如说有两个请求,上一个请求的结果作为下一个请求的参数传入,怎么来实现呢?
用关联,jmeter中可以用正则表达式提取器或者json提取器来实现。例如登录、加标两个请求,若加标需运行成功,必须从登录的响应结果中获取到token再传递到加标的请求头,因为返回结果数据格式是json的,所以用json提取器,输入json表达式提取到token值,再做变量引用。
八、如何保证接口测试是通过的?
1)如果返回结果是正确的:查看数据库以及日志是否有问题,无问题,则测试通过;有问题例如数据库数据增删改有问题就提交bug到bug管理系统;
2)如果返回结果是异常的:a、先确认地址、参数名、参数传值等是否正确,有问题对应修改;b、如果这些请求设置,传值都没问题,查看数据库以及日志是否有问题,有问题,则提交bug到bug管理系统,并且附上有问题的数据以及日志。
九、你认为接口测试的重点是什么?
我认为首先得确保自己接口请求地址、参数传参正确性,然后测试过程中需要关注服务器返回的status、code、msg信息,数据库表信息更改,日志信息;特别是有报错的时候,需要通过日志帮助排查问题
接口测试的重点需要关注一下接口的地址以及我们传的参数都是正确的,还要关注一下接口的返回值,包括status、msg还有 code等值是正确的,当然我们还需要去查看数据库 里面的数据,确保数据的一个正确性,特别是有错误的时候,我们需要通过排查日志以及去数据库里查看数据来排查问题。
十、你工作用过自动化测试么?一般是在项目的哪个阶段做自动化测试?
1.我工作中做过自动化;我们的自动化实现的覆盖率还没有那么全,所以只在冒烟测试阶段用自动化脚本来跑冒烟测试用例;
2.我工作中做过自动化;我们的自动化主要是在回归测试阶段,因为回归测试工作特别繁琐而且重复,用自动化实现会节约很多时间和人力。
十一、你们做的是什么自动化?接口,UI,还是APP?为什么?
我们公司实现的是接口自动化,因为UI和APP自动化设计到界面,可变性太大了,自动化的维护成本太高了;接口相对来说稳定很多,所以实现自动化的性价比相对来说最高
十二、你理解的接口测试是什么?接口测试的原理?
接口测试理解:我所知道的接口测试包括内部接口测试和外部接口测试;内部接口主要的是功能与功能模块之间接口,前端与后端间的接口。 我主要做的是前端与后端接口测试,这种接口是后端开发与前端/移动端页面进行数据交互的。在还没有前端界面的时候,进行接口测试,会提前发现一些bug。
接口测试的原理:模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做处理并向客户端返回应答,客户端接收应答的一个过程
十三、如果需要在jmeter中引入已经打包好的jar包中的功能,请说明一下操作步骤
1、把jar包放到jmeter目录\apache-jmeter-x.x\lib\ext下
2、在Test Plan的右侧面板最下方直接添加需要引用的jar包
十四、常见的HTTP服务器返回状态码有哪些,其含义是什么?
200(正常):表示一切正常,到了服务器,并且服务器正常的响应了你的请求。
302(临时重定向):指出被请求的文档已被临时移动到别处,此文档的新的URL在Location响应头中给出。
304(未修改):表示客户机缓存的版本是最新的,客户机应该继续使用它,比如说前端js
403(禁止):服务器理解客户端请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置所致。
404(找不到)服务器上不存在客户机所请求的资源。
500(内部服务器错误):服务器端的CGI、ASP、JSP等程序发生错误。
504: 超时。
十五、接口测试中content-type最常见的类型有哪些?
第一种是application/json,像这种就特别适合去提交一些复杂结构的数据,然后适合那种Restful风格的接口;
第二种是application form格式的一种数据,它是浏览器的一个原生表单的一种形式;
第三种是text/xml的这种格式,它是一种以http协议为传输协议,以xml为编码方式的一种远程调用规范,一般来说,它在webservice这种结构比较常见;
第四种是multipart form-data需要在表单格式中上传文件的就会使用到该格式
十六、进程有哪几种状态?
1.就绪状态:进程已4获得了除处理机之外的所有资源,然后等待分配处理机资源
2.运行状态:占用处理机资源运行,此状态的进程数应该是小于等于cpu数的
3.阻塞状态:进程等待某种条件运行,在满足该条件之前进程是无法被执行的
十七、进程和线程的区别是什么?
进程是资源分配的最小单位,而线程是程序执行的最小单位,进程有自己独立的地址空间,我们每启动一个进程系统 ,就会为它分配 一个地址空间,这种操作非常的昂贵,而线程它是共享进程的数据,使用的是同一个地址空间,所以线程的开销要比进程要小很多;
第二点:线程之间的通信会更方便,同一进程下面的一个线程,他们可以共享数据。
十八、并发和并行有什么 区别?
并发的关键是你有轮流处理多个任务的能力,而并行的关键是你有同时处理多个任务的能力。例子:比如你在打游戏,此时你的女朋友打了个电话过来,然后你没有去接女朋友电话,你是一直把游戏打完了才去接这个电话的话,那么你就不具备并行也不具备并发;还有一个就是你正在打游戏,然后你女朋友也打了个电话过来,那么你此时停下了手上的游戏接了电话,接完之后你又继续打游戏,那此时是一个并发的状态;你正在打游戏,电话来了,你一边打游戏一边接电话,那么此时就说明你具备有并行的能力。
十九、同步接口和异步接口的区别?
同步接口是指发送完一个请求之后需要等待它的响应,然后才能再发送下一个请求,中间有一个等待的过程,而异步接口是指发送完一个请求之后不需要等待它的响应,即可立即发送下一个请求,中间没有一个等待的过程。异步接口会有一个回调地址,当你发完一个请求之后,服务器会进行处理,处理完成之后,就会去调用这个回调地址,所以我们再测异步接口的时候:1.需要关注一下服务器对这个请求的处理是不是正确的;2.还需要关注一下处理完请求之后对这个回调结果的一个处理是不是正确的
二十、发送一个请求,接口测试怎么看是否正常?
1.查看响应消息,重点关注code值和msg值跟预期结果去做对比
2.查看数据库当中的数据,确认数据是否正确
3.查看后台的日志
二十一、如何去判断一个接口是否有bug?
1.首先我们要去检查一下做接口测试过程中传的这些接口的地址、参数、头部信息还有请求头信息等等是不是正确的;
2.然后再去看一下你的响应消息有没有问题,响应消息是不是跟我们的接口文档是一致的;
3.再去同步的检查一下我们的数据库里的数据是不是正确的;
4.如果以上三步都没有问题的话,一般来说我们的接口测试就是OK的,如果你的接口返回值跟我们的接口需求文档是不一样的或者是说我们的数据库里面的数据存储是有问题的,那么这个时候你的接口可能就会有Bug了