接口测试相关(API)
1、HTTP的完整请求流程
1.1客户端与服务端建立TCP连接
1.2客户端向服务端发送request请求
1.3服务端返回response响应
1.4客户端与服务端断开TCP连接
2、怎么理解get和post请求
GET:表示客户端向服务端获取已有的资源
POST:客户端向服务端添加新的资源
3、在postman中写断言的地方为
添加新的请求,依据请求信息得到的相应信息,在tests中填写断言,判断是否通过
4、怎么理解postman里面的collections
一般设置动态参数后,不能单独执行index接口,单独执行的话,响应状态码会显示401(无授权),所以需要集合运行
5、动态参数在postman里面的解决思路,请使用步骤的方式描述出来
1)先添加测试用例,通过接口auth登陆成功后,在响应数据内显示登录信息,定义全局变量,具体为:{{变量}}
2)登陆成功后,在响应信息中返回认证授权
3)添加请求头,先执行登录授权接口,再执行index接口,可以获取到变量的值
注意:后续运行中需要集合运行
6、在postman中,怎么调用变量
一般上个接口的输出是下个接口输出的输入(auth与index都需要access token)
1)首先定义一个变量来存储服务端返回的响应数据,然后定义一个变量,来存储access_token的值
2)key为Authorization value为:jwt 获取到的授权的令牌,如Authorization:jwt {{token}}
7、接口断言需要都有哪方面
协议状态码、响应数据、业务状态码
8、怎么理解协议状态码:404
这个是请求的资源不存在,一般是请求地址不存在,所以导致请求资源不存在
9、如果一个接口访问是400,排查思路是什么?
请求错误,需要查看是否是请求参数或请求头不对导致
10、怎么理解同步通信
客户端发送请求给服务端,服务端必须回应客户端的请求
缺点:1)容易超时,客户端发送请求后,服务端迟迟没有回应客户端的请求
2)如果请求时存在大的计算量和逻辑存在问题,就会导致请求堵塞,后面的都挤压
11、怎么理解异步通信
在异步的交互中,客户端和服务端互相不需要关注对方的存在,只需要关注对应的MQ的消息,客户端与服务端的交互主要是会通过MQ的消息中间作为消息的传递来进行交互的
12、怎么理解cookie,session,token
cookie主要是存储用户操作行为的数据,session是把登陆成功后的数据存储在服务端,token本质是cookie的原理,可以理解为一个令牌
13、请按步骤的方式描述session的请求流程
1)客户端输入账户和密码,点击登录
2)登陆成功后,会把服务端把用户登陆成功的信息生成一个sessionID的凭证,并且存储在服务端
3)服务端会通过响应头中的set-cookie把生成的sesson返回给客户端
4)客户端再次查看个人主页,客户端通过请求头中的cookie,把set-cookie返回来的sessionID带上,发送给服务端
5)服务端接收到客户端发送的sessionID,和存储在服务端的sessionID做一个对比
6)如果对比一致,用户可以继续访问系统的任何功能,如果结果不一致,立刻跳转到登录的页面
14、如果发送请求,协议状态码返回500的错误,怎么解决?
首先检查测试用例的请求信息,重新测试,还是错误可以先找程序员排查问题或提交BUG
15、怎么理解协议状态码和业务状态码
协议状态码是已有的11种,业务状态码可以是程序员自己写的
16、按步骤的方式描述token的请求流程
1、客户端输入账户和密码,点击登录
2、登陆成功后,会把服务端把用户登陆成功的信息生成一个Token的凭证,同时存储在服务端
3、服务端会通过响应数据或者响应头中的set-cookie返回给客户端
4、客户端再次向服务端发送请求,会在请求参数或者请求头中的Authuration中带上返回来的token发送给服务端
5、如果对比一致,用户可以继续访问系统的任何功能,如果结果不一致,立刻跳转到登录的页面
17、按步骤的方式描述cookie的请求流程
1)客户端输入账户和密码,点击登录
2)登陆成功后,会把服务端把用户登陆成功的信息生成一个sessionID的凭证,并且存储在本地
3)服务端会通过响应头中的set-cookie把生成的sesson返回给客户端
4)客户端再次查看个人主页,客户端通过请求头中的cookie,把set-cookie返回来的sessionID带上,发送给服务端
5)服务端接收到客户端发送的sessionID,和存储在服务端的sessionID做一个对比
6)如果对比一致,用户可以继续访问系统的任何功能,如果结果不一致,立刻跳转到登录的页面
18、在get请求里面,如果有请求参数,使用的参数是那个的?params http://localhost:5000/login?name=wuya&age=18
在params下的query params里填写,key为name,value为weya;key为age,value为18
19、postman里面在哪里填写请求参数
请求头中的数据格式决定了请求参数的格式
GET:在Headers中填写Authorization
POST:body中选择json、html或xml
测试基础理论
1、bug完整的生命周期
2、怎么理解黑盒测试,白盒测试
黑盒测试就是把测试的程序看作是一个黑色的盒子,看不到里面的结构,对应的是系统测试
白盒测试就是把被测程序看作是一个白色的盒子,可以看到里面的结构,对应的是单元测试
4、测试按阶段划分,主要分为那几个阶段
单元测试:是针对程序最小的离度测试,主要应用于白盒测试,程序是由代码写的,最小单位是方法,所以单元测试是针对方法的测试
集成测试:是把单个模块的程序集成到一起的测试,主要是针对不同模块集成后模块与模块之间的功能性,功能流程性和逻辑兼容性
系统测试:将软件系统看作是一个系统测试,包括对系统功能、性能以及软件所运行的软硬件环境进行测试,大部分在被测系统执行阶段来验证整体性功能
验收测试:是部署软件之前最后一个测试操作,是技术测试最后一个阶段,也被称为交付测试
5、怎么理解等价类和边界值
等价类:是把所有可能的输入数据,及程序的输入域分为若*分(子集),在每个子集中选取少部分具有代表性的数据作为测试用例,该方法是一种重要的常用的黑 盒测试用例设计方法
边界值:边界值分析法是对输入输出的边界值进行测试的一种黑盒测试方法,通常这个是等价类方法的补充,测试用例来自等价类的边界
6、请描述一个完整的测试流程
7、测试用例的要素有哪些?
测试ID,用例名称,测试目的,测试级别,测试环境,前提条件,参考信息,测试步骤,预期结果,设计人员
8、请描述一下你理解的测试流程
评审通过后,查看评审需求描写测试用例,开会讨论测试步骤,参会的人员一般有:产品经理、开发、测试。测试讲述过程中,随时有人提出不合理的部分(没有出现过或是不合理的场景),可以当场记录会后自行补充和修改合理,完成后发送群内@参会人员,一般测试主管会查看修改后的内容
性能测试
1、响应时间你是怎么理解的?
网络时间+应用程序的处理时间
2、怎么区分负载测试和压力测试
负载测试:在被测系统上持续不断的增加压力,直到性能指标(响应时间等)超过预定指标或者某种资源(CPU&内存)使用已达到饱和状态。核心是找到系统的处理极限, 为系统调优提供数据,从而达到了解系统性能的容量
压力测试:该方法是指系统在一定饱和状态下,具体如CPU,内存等饱和使用的情况下,系统能够处理的会话能力,以及系统是否会出现错误,比如TimeOut,OOM, OverStackExpection(堆栈异常)
3、你是怎么做稳定性测试的?
使用Loucts来进行,首先需要编写louctsfile文件,控制台进入保存Loucstfile文件所在的目录下,输入locust -f 文件名,浏览器中进入loucst,并设置虚拟并发用户数、每秒并发多少虚拟用户和服务器地址,持续不间断的向服务器发送请求,验证返回的协议状态码为200,然后在检测数据是否在需求内
4、常用的性能测试工具有哪些?
1)loadruuner——惠普:包含LR/QTP/QC,最高可负载1000
2)JMeter——二次开发:平台
3)locust——协程
4)子集开发工具
5、说出JMeter测试工具中聚合报告中有哪些结果信息
Label、样本、平均值、中位数、90%请求响应时间,95%请求响应时间,99%请求响应时间,min、max、异常、吞吐量
6、在JMeter中,如果需要监控服务器的CPU和内存的资源,你具体是怎么做的
添加测试用例,输入需要验证的信息,线程组中输入运行数量信息,添加jp@gc - PerfMon Metrics Collector,点击Add Row添加查看
7、说下你理解的性能测试流程
测试前期准备,如测试场景的梳理、测试目标的制定、设备的准备;
性能测试计划的制定,如人员分配、时间安排、用什么技术等;
测试设计与开发,如代码如何写、具体的脚本书写、测试目标如何实现思路,配置场景;
测试执行与管理,按照配置的场景进行执行即可;
数据收集,如响应时间、吞吐量等的数据的收集;
测试分析,根据收集的数据进行分析,书写测试报告
8、性能测试结果如果不满足预期的目标,你会怎么办?
如果性能测试结果不满足预期的目标,此时就应该收集数据,然后联系开发,根据数据进行分析,找出问题并进行优化
9、性能测试中性能的目标你是怎么定,说出具体的依据
目标一般由测试主导,根据服务面向的用户群体的需求来制定目标,然后与开发、架构师、测试等相关人员进行讨论,最后决定具体的目标
综合考核
1、HTTP协议的组成部分?
请求:请求头、请求地址、请求方法、请求参数
响应:协议状态码、业务状态码、响应数据
2、postman中断言是在哪里断言?断言哪三部分?
添加新的请求,依据请求信息得到的相应信息,在tests中填写断言,判断是否通过
协议状态码、响应数据、业务状态码
3、postman的请求参数在哪里?
请求头中的数据格式决定了请求参数的格式
GET:路径参数 http://xxx.com/?name=wangpan&age=27 ?
key1=value1&key2=value2(get的请求参数与数据格式没任何关系)
POST:payload中显示了请求的参数
4、一个完整的测试流程?
5、冒烟测试是什么?
目的是确认软件基本功能正常,使用场景:开发转测后,测试要进行冒烟测试,验证被转测的软件基本流程是否正常
6、接口测试需要携带哪些参数?
请求头,请求地址,请求方法,请求参数(可能有,也可能没有)
7、常用的请求方法?get和post方法区别?
常用的请求方法有GET、POST、PUT、DELETE。
GET:客户端从服务端获取资源
POST:客户端向服务段发送请求添加新的资源
PUT:客户端针对服务端已有的数据进行修改
DELETE:客户端删除服务端已有的资源
区别:GET请求的请求参数是在parmas下的query parmas中填写,POST请求需要依据数据格式在body内填写
8、常用的业务状态码
200 请求成功
201 添加成功
204 删除成功
302 临时重定向
400 请求错误(请求参数或请求头不对)
401 无权限访问系统
403 有权限但禁止访问系统
404 请求的资源不存在(请求的地址不存在,所以导致请求资源不存在)
405 不被允许的请求方法
500 服务器内部错误
1)空指针、2)堆栈溢出、3)OOM、4)其他异常
504 网关超时