1、你在持续集成的搭建中碰到了什么问题,是怎么解决的
答:
1)gitlab 出现502 解决办法是重启服务器
解决办法 杀死不用的进程,如果还是502 那就重启服务 git-ctl restart
2)本地文件push到远程仓库出现问题了 ,解决办法是安装.net.framework 的执行文件
双击安装成功后 然后就再执行
2、介绍下你知道的数据传输格式,具体都有什么规范和要求
答:
1、我们常用的数据传输格式为:xml、 json;
2、xml、json数据传输格式的规范和要求
2-1、xml的规范:
a、xml是一种可扩展性标记语言;
b、xml被设计用来传输和存储数据;
c、可以自定义标签;
d、具有层级结构;
e、具有自我描述性。
2-3、json的规范:
a、json是一种轻量级的数据文本交换格式;
b、json独立于编程语言;
c、具有层级结构;
d、具有自我描述性。
2-4、json的要求:
a、json对象要在{}中编写,多个对象以“逗号”分隔,组成一个json数组,在[]中编写;
b、json对象属性:
对象属性,由键值对组成(属性名称和属性值);
属性名称添加双引号;
属性名称和属性值,以“冒号”分隔;
多个属性以“逗号”分隔;
属性值可以是“数字”、“字符串”、“逻辑值”、“数组”。
3、说说json数据格式的具体规范
对象属性由属性名称和值组成
属性名称用双引号引起来
值与名称使用冒号分隔
多个属性使用逗号分隔
属性值类型:数字;字符串;逻辑值;数值;对象
6、jmeter如何看并发测试结果的?
看并发测试结果,有两种方式
第一种,运行脚本之前,在线程组添加一个聚合报告,然后开始运行脚本这样并发测试的结果会聚合在聚合报告中
第二种,是调试好脚本之后,用非GUI方式的,生成测试报告,非GUI方式运行生成测试报告的命令如下
无.jtl文件生成测试报告 一气呵成 生成日志文件同时生成测试报告
jmeter -n -t xxx.jmx -r -l xxx. jtl -e -o /path
-n:以非GUI形式运行Jmeter
-t:source.jmx 脚本路径
-l:result.jtl 运行结果保存路径(.jtl),此文件必须不存在
-e:在脚本运行结束后生成html报告
-o:用于存放html报告的目录
8、你们公司做jmeter,入参是怎么处理的
1,实现测试数据多样性
1,用户参数参数化
2,CSV文件参数化
3,函数参数化
4,用户变量参数化
1,用户参数参数化
针对请求来说的前置处理器,必须在发出请求之前得到这个参数,或者是将这个参数替换了。
用户参数参数化的要求:能确定几个用户,几个变量
用户少的情况下 ,基于用户进行替换参数的,
参数不够循环取
Csv文件参数化
CSV数据文件设置 -----配置原件的作用域 :-基于测试计划添加的,管所有线程组的所有线程
基于线程组添加的----本线程组线程
步骤
(1)创建csv数据文件 wps中的excel 另存为 .csv
csv文件的注意事项:
用英文逗号分隔数据,中间不能有英文逗号
前后中不能有空行
空列代表数据为空
3,函数参数化 :
时间函数参数化time,
随机参数化rander ,
线程号:counter
CSVRead参数化(重点),
4,用户变量参数化
用户定义的变量是一个全局变量,尽量用常亮给变量赋值,只赋值一次,为了实现把常用的数据放在一个变量中,做到一改全改
10、如果在接口测试中,用到了第三方接口,你们公司一般会如何处理?
首先,第三方接口是指加入了第三方的接口服务,通过发送第三方请求,即可调用第三方服务提供的服务
在处理第三接口时:需要先获取到接口信息,如接口涉及的接口地址,请求信息参数列表,返回信息参数列表,接口头部特殊要求等信息。
其次需要获得一些接口测试数据,如果天气这样的接口,涉及经纬度可以百度查找,但是如果是登录,支付时就需要一些样本测试数据,与第三方沟通。
然后采用postman、fiddler这样的工具,对接口返回数据进行验证。
最后,如果第三接口还有准备好,我们也不会影响测试进度,会对第三方的接口进行模拟返回,可以使用fiddler的自动响应器来模拟接口
11、jenkins是如何拉gitlab的代码的,原理是什么?
jenkins是通过配置系统配置和任务配置,来获得gitlab上的代码,其中在系统配置中添加gitlab的url和信任凭证,信任凭证在gitlab服务器上生成,在settings中选择ACCess Tkens生成16位口令,再在jenkins系统配置中添加,添加完之后需要测试连接,看是否可以成功连接,如失败则需要重新添加,成功则保存,在任务配置中是添加具体项目文件的url和gitlab授权访问该项目的用户和密码,添加完保存。
原理就是授权,通过授权口令的对比,通过则可以执行相关操作,失败则拒绝。
13、你搭建过测试框架么,是用什么搭建,简单介绍下
搭建过简单的接口测试框架,用python里的unittest包,requests库进行搭建,用pycharm新建项目,在项目上新建common常用工具包,用于存放python文件,建立data目录,用来存放测试数据,建立report目录,存放测试报告,建立test_cases工具包存放测试用例,在项目下直接建立run_test文件,负责批量执行用例,生成测试报告
14、你们公司做过分布式测试么?如何设计分布式测试的,用什么软件做分布式测试的?具体怎么完成的?
我们一般使用jmeter做分布式测试的,分布式测试的原理是由主控制机发送脚本给执行机,执行机再发送请求给服务器,最后把执行结果返回给主控制机
最好做到主控制机和执行机的java和jmeter版本和安装路径一致
首先配置主控制机,修改bin目录下的配置文件jmeter.properties,将ssl秘钥形式的远程调用禁用
然后在执行机中安装jmeter,同样在bin目录下的jmeter.properties内配置ip和端口号,再将执行机的ip和端口号添加到主控制机的jmeter.properties配置文件里
然后启动控制机,在执行机bin目录下找到jmeter-server.bat,以管理员方式打开将执行机启动。在控制机里编写脚本,保存,使用非图形用户界面运行分布式测试,并生成测试报告
生成测试报告有两种方式:
第一种可以直接利用已有的日志文件生成测试报告
第二种可以在没有日志文件的情况下,同时生成日志文件和测试报告
15、什么是持续集成?
持续集成指的是,在提交新版本的时候,会自动进行代码的构建、部署和测试,在代码交付时需要开发手动发送git push命令提交。
和持续集成相关的还有持续交付和持续部署
持续交付指的是频繁的将软件的新版本交付给团队或者用户进行评审,通过的话,代码就可以进入生产阶段,它强调的是不管软件怎么更新,都可以随时交付。
持续部署指的是代码通过评审后,自动部署到生产环境。它的目标是,不管代码在什么时候都是可以部署的,可以进入生产阶段的。
16、jenkins的持续集成的过程中,是如何设置拉取gitlab的代码的?
首先在系统管理中,找到系统配置,设置一个真实的邮箱和jenkins的url,在配置gitlab的url和信任凭证token,token可以在gitlab的settings里获取,配置完成后测试一下,如果成功的话就可以添加保存。
然后在jenkins的项目任务中,找到项目配置的设置,在源码管理配置gitlab项目的网址,gitlab的网址可以在gitlab里直接克隆为http的网址,然后在添加一个gitlab的已授权用户,然后在增加构建步骤,执行shell命令,python+执行用例集合的.py文件,最后保存。
17、fiddler如何抓https和手机的包
fiddler抓https的包的步骤:先点击fiddler里的Options下的HTTPS,勾选Decrypt HTTPS traffic选项,弹出接受证书提示框,一路点yes,最后点确定,然后点ok。如果不小心拒绝了证书的弥补,那么点击Actions下的Reset All Certificates,重置所有证书,再按前面的步骤来,如果浏览器不信任fiddler,那么先导出fiddler的证书,点击Actions下的Export Root Certificate Desktop,然后在桌面上右击fiddler的证书,点击安装,如果是FireFox,它有自己的证书管理器,可以自己导入。进入网页,在fiddler看抓到的包。
fiddler抓手机包的步骤:前提:fiddler和手机在一个局域网中,点击Options下的Connections,端口号填8888,勾选Allow remote computers to connect选项,点击ok。鼠标放在Online上,记住上面显示的fiddler的ip地址,打开夜神模拟器,浏览器输入fiddler的ip地址,点击FiddlerRoot certificate,下拉点击安装完成,设置用户名和锁屏手势,选择设置里的无线网,点击修改网络,点击手动设置代理,输入端口号和fiddler的ip地址,点击保存,打开一个app,去fiddler里看抓到的包,如果process里看到了noxvmhandle,则说明抓包成功。
18、你们公司是怎么做接口测试的?
答:首先我们公司做接口测试主要是测试产品的功能、性能及简单的安全性。
那么在做接口测试时,首先根据接口文档编写测试用例,再进行用例评审,用例评审之后选择一个接口测试工具执行用例,我们公司选择的是jmeter,最后对bug进行追踪管理。我还可以使用python中的requests库,在unittest框架中编写接口测试用例的代码,通过执行python脚本来对接口进行测试。
20、你们公司是如何模拟弱网环境的
对于弱网测试的模拟我们通常是根据业务类型的不同去选择进行低带宽的模拟,还是高延迟的模拟,或则是高丢包的模拟。
低带宽的模拟我们可以使用硬件方面的一些措施,比如使用2G卡或者采用路由器之类的限速来进行弱网模拟,也会使用fiddler,我们可以在fiddlerscript脚本里面去进行修改,模拟低带宽
高延迟的模拟我们主要是使用fiddler断点的方式进行模拟
高丢包的模拟一般常用于一些视频网址或则软件,我们通常使用network Emulator Toolkit来进行高丢包的模拟
21、你们公司都用fiddler抓包工作做什么?fiddler抓包工具的原理是什么?
fiddler抓包工作做什么:记录客户端和服务器之间的所有 HTTP请求,
可以针对特定的HTTP请求,分析请求数据,调试web应用、修改请求的数据
没有接口文档的公司可以使用fiddler抓接口信息,定位bug
fiddler抓包工具的原理:fiddler抓包工具的原理是客服端与服务器需要经过fiddler的代理服务器代为转发请求与响应
22、介绍下敏捷开发的概念
答:敏捷开发是一种开发流程,是一种快速迭代的开发流程,每个开发流程非常短,长到一个月,短到两个星期,就是一个周期,在这个周期中,每天都要开会同步,每天都要集成。
敏捷开发对于公司的要求比较高,它最大的特点就是极早的进入到了我们软件测试开发阶段,正常的是软件出来之后,我们再进行测试,敏捷开发是在需求阶段,测试就已经进入到我们的流程里面了。
敏捷开发的方法和实践:scrum--管理工作的框架;任务看板--可视化;燃尽图--可视化。
23、对于对数据库会进行更改的,比如新增操作,删除操作,你们公司是怎么测的?
使用jmeter通过数据库直连进行数据对比测试
确定数据库驱动程序:jdbc的jar包 下载
配置jmeter直连
在测试计划上导入下载的驱动程序
在测试计划添加配置元件JDBC Connection Configuration
配置数据库连接池,数据库路径和JDBC Driver class
在线程组中添加JDBC请求 添加连接池名 通过SQL语句查询
在响应数据中查看是否新增或删除或修改
有必要的时候还要保持测试之前和测试之后数据库中的数据不变:使用脚本删除新增的数据或者测试之前把数据库备份测试之后恢复数据库。
24、请简述get和post方法的区别
get ,请求方法是查询,请求数据全部在url内,相对来说速度快,不安全,需要考虑浏览器对url长度限制,需要考虑服务器对请求数据大小的限制
post ,请求方法是新增,请求数据都在请求体内,相对来说速度慢,安全,需要考虑服务器对请求数据请求数据大小的限制
25、app某一页面元素数据展示错误,正确的是A,目前显示的是B,该如何定位这个问题?
用jmeter绕过前台,发一个查询页面元素数据的接口请求给后台,看后台的返回数据,
若后台返回数据显示是A的话,那这个bug就是前台的,
若后台返回数据显示为B的话,则需要判断是数据库的问题,还是属于后台业务逻辑的问题,用jmeter通过直连数据库,查看数据库的返回结果,若数据库返回数据显示为A,则是后台业务逻辑的问题,否则是数据库的问题
26、如果你在工作中测试添加购物车功能,发现明明添加了购物车,但是购物车显示是空的,该如何定位这个bug
查看数据库订单表里面有没有商品信息
还要定位bug是前端请求错误还是后台服务器错误
后台还要定位到底是DBA的问题还是业务逻辑的问题
可以用fiddler抓包分析bug到底是前端的还是后台的
先抓包看请求报文,对着接口文档,看请求报文有没问题,有问题就是前端发的数据不对
请求报文没问题,那就看返回报文,返回的数据不对,那就是后端开发的问题
如果是后台的错误可以通过jmeter数据库直连看下数据库的内容,看看是否是开发处理数据库的错误
27、说下https和http协议的不同之处
①安全性:http是明文传输而https是加密传输,所以https比http安全
②经济:由于https需要加密所以需要申请ca证书(ca证书免费证书很少,需要交费),
ca证书是收费的。http协议免费申请,所以http免费而https收费
③由于https在传输中需要来回的加密解密所以https对资源的消耗比http大一些,https对资源的
消耗主要体现在电能和缓存方面
④url的不同
⑤端口:http是80端口,而https是443端口
⑥连接方式:数据传输时http直接与tcp建立连接,是无状态的。而http需要先建立SSL连接再建立tcp连接,是可进行加密传输、身份认证的网络协议,建立SSL连接就是对加密方式的一个处理
- 除了用工具,你还用过什么方式来测试接口,具体介绍下
在接口测试的时候,如果不用工具的话,可以采用自己使用python编写接口测试框架来实现编写脚本的方式来进行接口测试,能根据自己的需求来进行编写,比较方便。在编写代码之前先使用pip来安装一个第三方库requests,安装完成后就可以进行代码的编写,编写代码之前要先导入requests包,之后就能进行接口测试的具体操作了,还可以用python里的unittest包,requests库进行搭建,用pycharm新建项目,在项目上新建common常用工具包,用于存放python文件,建立data目录,用来存放测试数据,建立report目录,存放测试报告,建立test_cases工具包存放测试用例,在项目下直接建立run_test文件,负责批量执行用例,生成测试报告
29、在接口测试过程中,遇到过什么让你印象深刻的BUG
答:这个灵活选择,要根据以后简历的项目来编排
当时做的是一个人事管理的项目,遇到的情况是:当我在前台选择添加一个新的员工后,再查询时无法找到该员工。当时我是首先自查了一遍,确认了不是因为自己的误操作导致的BUG,之后我首先是通过jmeter绕过前台向后台直接发包,发现还是添加不上,确认是该BUG是由后台产生的,而后使用jmeter对数据库进行直连,直接发送sql请求,发现还是添加不上,以此确定了该BUG是由数据库产生后,将该BUG提交给了DBA。
对该BUG影响深刻是因为,我在对DBA提交了BUG后,还对前台提交了一个没有进行数据库进行数据查询对比的BUG,这是我第一次因为某一个错误而提出多个BUG,所以我对它印象深刻。
31、介绍下你用过的关联方式,都有什么特点,有什么区别
(1)数据库直连是越过业务逻辑直接向数据库发送sql语句
为什么要进行数据库直连
- 生成测试数据 发送接口请求 数据库直接添加 自动化脚本测试数据
- 定位bug
- 数据对比测试
(2)xpath关联
用途:获得返回数据格式是html时候,用xpath
需要添加xpath提取器
(3)正则表达式关联
按照某种规则(正则)去字符串中取出你想要的内容
需要添加正则表达式提取器
有元字符. 匹配所有字符除了 转义字符
限定符 * 匹配任意数目的字符
?匹配0次或者一次
正则表达式提取器的设置
32、说说你公司是如何做接口测试的?
通过接口文档进行接口需求分析----编写测试用例---用例评审,然后用工具执行用例,对产生的bug进行追踪。
如果面试官问是怎么用例评审的,(大公司)把相关的人叫一块开会评审,(小公司)自己和开发讨论。
33、你们公司的测试数据都怎么保存的?或者问你们公司测试数据的驱动方式是什么?
答:
如果是一次性使用的数据,就直接用随机函数生成即可。
如果是需要反复使用的数据,放在数据库中,每次使用之后还原数据库
如果是多个数据同时使用的话,就放在CSV文件里
一个原则是数据和脚本是分离的
34、为什么要做数据库直连?详细阐述下
(1)生成测试数据:
在数据库直连的前提下可以通过(insert)编写自动化测试脚本,或者通过jdbc发送接口请求来生成测试数据;
(2)定位bug:
在确定bug属于后端的时候还需要进一步的确定bug属于业务逻辑还是属于数据库本身的错误,通过数据库直连可以准确定位;
(3)数据对比测试:通过数据库直连可以更准、更快、更高效率的得到响应数据,更加快捷的方便我们与预期结果进行数据对比测试。
37、gitlab是什么?怎么用?如果gitlab服务器连接不上报502错误,该怎么处理?
gitlab就是远程仓库,是一种版本控制工具。
具体操作:
在本地建一个本地仓库,文件可以通过git add添加到本地暂存,git commit -m 提交到本地仓库,git push提交到远程仓库 git clone 仓库地址 可以克隆一个仓库
gitlab服务器连接不上报502错误可以一种方式,扩大机器内存,
另一种方式重启gitlab服务 systemctl gitlab restart
38、你们公司的弱网标准是什么?举个例子说明你在在弱网测试中发现的bug
首先弱网是指网络环境不好,信号不稳定,比如在地铁、电梯、山区中就会可能出现弱网的情况。
那么我们公司定义弱网的标准是从两方面进行的:
一方面是:业务类型,比如在浏览文本、图
片时会将3g网络算作弱网,那在进行视频的上传或者下载时4g网络会被算作弱网。
另外一
方面是:业务场景,也就是地区,像在网络比较的地区比如说韩国可能4g会被定义为弱网
的标准,那像非洲地区2g会被定义为弱网的标准
bug:
在弱网环境下,用户第一次输入搜索关键字没有得到响应后,再次输入全新关键字并发送请
求,等待搜索结果返回后,当前结果页会被之前的关键字搜索结果刷新覆盖。
弱网环境银行转账,未及时到账,银行账户同时也会减额
某app页面加载不全时,点击已加载出的按钮会闪退
39、http协议的工作流程是什么样的?
http的工作流程有:
(1)地址栏输入url
(2)浏览器地址解析:首先作为测试人员要确定当前的测试环境,域名转换成IP,和测试环境的IP要一一对应
(3)封装成TCP包,建立TCP连接——TCP的三次握手
(4)发送http请求
http请求的消息格式:
①请求行:请求方法+空格+url+空格+协议版本 请求方法有:get(查询)、post(新增)、put(修改)、delete(删除)
②请求体:由一系列键值对组成,说明请求的属性。包含Connection、Content-Length、Content-Type等。
③空行:分隔请求体和请求体
④请求消息(请求体,请求数据):包含表单格式; xml/json格式
(5)响应http请求
响应消息格式:
①响应状态行:协议+空格+状态码+状态码描述
②响应头:由一系列键值对组成,说明响应数据的属性
③空行:标识响应头结束,分隔响应头和响应体
④响应体:常见的格式包括:xml、json、html、文本text:js css等
(6)断开TCP连接——TCP的四次挥手
(7)浏览器显示http的响应数据
常用的数据格式有:xml——可扩展标记语言;json——轻量级的文本数据交换格式。
40.删除好友请求,删除了好友,但仍然显示在好友列表中,你该如何定位这个bug
用fiddler抓包工具来定位下,看看bug是前台还是后台的,如果看返回结果,后台确实删除成功,则bug是前台的,如果后台数据确实没有删除,则bug是后台的,
这是我们可以用jemter发一个数据数据库直连请求,看一下数据库中是否还有这个好友,如果数据库已经没有该好友了,则证明后端的返回数据的业务逻辑有问题,如果数据库中还有好友,证明数据库的操作有问题,
42、jmeter中的断言都有几种方式,分别用在什么环境中,具体如何设置
用过3种响应断言、大小断言、持续时间断言
响应断言对于响应体响应头响应代码响应文本响应信息请求头url等是不是包含存在匹配是字符串还有忽略状态
设置:选择添加响应断言然后选择测试字段选择模式匹配规则选择测试模式定义失败消息
大小断言:实际运行结果大小的断言 设置响应字段大小选择完整响应响应头响应信息代码消息体在选择比较类型输入你的预期结果
持续时间断言:只有小于等于预期结果就可以通过设置 跟大小断言差不多把预期结果输入到输入框就可以了
43、jenkins的工作路径通过什么方式可以看到,并找到拉下来的代码
首先在Jenkins里设置好系统配置和项目配置,就可以获取到gitlib上面的代码
查看代码的话,打开xshell,连接到Jenkins服务器,然后cd到etc下面的sysconfig,输入cat jenkins,找到Jenkins_home对应的路径,然后cd到Jenkins_home对应的路径,ls,找到workspace,然后cd workspace,ls展开,找到所创建的项目,然后cd项目名,并ls打开项目,就可以看到对应的代码
44、请阐述接口测试和ui测试在测试活动中是如何协同测试的?
1.接口测试会在ui测试之前进行,测试接口的功能性能和安全
2,接口测试更注重bug的定位 ui测试不好定位的bug可以通过接口测试来解决
3,ui测试更注重前端界面的显示和功能的实现
4.UI的操作实际上就是用另一种方式调用接口,那么接口有多少种参数组合就要求UI用例要构造多少种操作进行调用。
5.UI操作所需要的数据可以用接口来生成。
6.接口测试可以保证数据和逻辑的准确性,UI测试需要考虑交互和界面展示的逻辑正确性。7.UI测试需要重视接口调用不成功或者接口异常情况下UI的呈现方式和用户体验。
8.UI中可能会有一些状态的缓存信息这样就不需要每次频繁调用接口去获取了,比如鉴权信息等,需要重点关注这些缓存的更新策略。
45、你们公司是用什么方式实现持续集成的,具体说下
我们公司是用gitlab和Jenkins来实现持续集成的
首先就是在两个云服务器上分别搭建gitlab和jenkins服务器,设置网络连接
,然后启动服务器,登录gitlab和jenkins;
然后在gitlab上新建一个项目,接着在计算机上克隆下这个项目,然后把我们编写的代码push到gitlab上。接下来配置jenkins的系统管理器进行全局系统设置,然后对自己创建
的项目进行配置让jenkins和gitlab有所关联。立即构建看是否关联成功。。
流水线 开发做完,自动测试,自动上线
47,说下接口的组成,详细点
一般的接口包括接口名称,方法,请求参数和返回值,对于应用在很多web应用上的http协议他的组成包括 协议,请求方法,请求url,请求参数,返回参数 其中请求方法常见的包括get post put delete
url的格式如下 协议+主机+端口号+路径+?参数 多个参数用&符号分隔
请求参数 包括请求头和请求行和请求消息体
具体见笔记
返回参数 包括响应信息头和响应行具体见笔记
48,持续集成中的流水线是做什么用,你用过什么流水线,用的什么插件
对于一个项目的完整的实施,我们需要在Jenkins上创建各种任务
例如:开发任务---测试任务----他们都是独立存在的,我们可以通过流水线视图来直观的查看整个项目的执行流程和执行状态,
我用过ci/cd流水线使用的build pipline插件
49、你们公司弱网测试都测什么,详细说明下
第一个是做弱网功能测试,测试在弱网环境下,基本是否能够实现,响应时间是否合适,长时间没有响应是否有提示
第二个是做无网络状态测试,看在无网络状态下,本地的数据,功能能否正确实现,还要看无网络切换到有网络时会不会因为缓存过大而产生闪退等现象
第三个是做网路切换测试,包括高网速切换到低网速,低网速切换到高网速时功能能否实现,还要看切换网络时有没有给用户提示
第四个看用户体验好不好
50、你们公司在持续集成的过程中,代码是如何管理的
我们公司在做持续集成时用的代码管理工具是gitlab,开发和测试会把代码push到gitlab上,每当开发修改代码并push到gitlab上时,jenkins就会去拉gitlab上的开发代码并进行编译部署,交付完毕之后就会触发测试,jenkins就会去拉gitlab上的测试代码,去执行代码,运行测试脚本,生成测试报告
- 你们公司有接口测试文档吗?有哪些内容,没有的话你们是怎么做的
有,接口文档包含:接口名称,请求的url,请求方式,请求参数,返回示例
其中请求参数请求参数(参数名、是否必选、参数类型、默认值和参数说明)
返回示例需要我们在其中找到接口测试预期结果
没有的话,我们可以通过fidder 进行抓包然后分析,如果有一些不确定的地方我们就需要找发开问一下确定一下。
- 介绍下你用过的接口测试工具,都有什么特点和主要功能
postman 是google开发的一款功能强大的网页调试与发送HTTP请求的chrome插件,并能运行测试用例的的Chrome插件.
Jmeter:是Apche公司使用Java平台开发的一款测试工具。
优点:1、开源免费2、支持多协议3、小巧4、功能强大
主要功能:线程组,发送请求,对数据库进行增删改查,断言,多用户并发,还可以进行jmeter录制,用户变量,函数参数化,csv文件批量添加
53、postman是如何实现请求的多次运行的?
1.在Collections里新建一个集合(比如:查询学院所有);
2.点击此集合右下的角三个点找到Add Request新建一个请求并保存;
3.点击此集合右上的角的箭头找到Run点击进入Run页面;
4.在Iterations输入要运行的次数;
5.点击“Run查询学院所有”。
54,说说http协议请求消息的格式
请求行
请求方法+空格+url+空格+协议版本
url格式:协议,主机,端口号,路径,参数,多个参数用&分隔
请求头
一系列的键值对说明请求的属性
例如:content-length请球体长度
content-type 请球体类型
host主机
connection连接属性
空行:分隔请求头和请球体
请求体:数据格式包括xml和json,表单格式
55,如何用fiddler去定位bug
1、用fiddler对产品进行抓包
2、检查接口地址是否正确
3、检查响应状态是否存在异常
4、检查接口传递参数
5、检查接口返回数据
如果接口传递参数有误,一般都是前台bug
而一般接口返回数据有误,则往往都是后台bug
56,接口测试工具的选用该如何选用?
两个力:公司的实力 自己的能力
免费:jmeter fiddler wireshark apipost
半免费的 postmen
收费的 loadrunner charles soapui
自己的能力:
1、分辨当前测试任务是 发包:jmeter postmen apipost lr 抓包: fiddler charles wireshark
2、分辨协议:
soap协议:soapUI lr charles
http协议:jmeter postmen apipost charles loadrunner
socket协议:lr
3、编码能力强:自己搭建接口测试框架 python requests unittest 实现持续继承
58,做接口性能测试的时候,如果设置1000个用户的并发,你该怎么实现?
对于1000个用户的并发,我们看采用的是绝对并发,还是相对并发,
绝对并发,我们可以通过jmeter设置线程组的启动时间来设置,但这种绝对并发,可能会导致测试机器跑不动,跑不动的话,我们就采用jemter的分布式测试来实现,找几个执行机,一起来跑脚本
也可以采用相对并发的方式,可以利用jmeter中的启动时间和同步定时器配合来实现相对并发
59,说出请求接口中常见的返回状态码
2** 请求发送成功
200 查询成功: 201新建成功 204删除成功
3**需要进一步处理
4** 客户端的请求有误:415 请求体格式有误 404服务器找不到相应的资源
5** 服务器端响应有误:500 服务器内部错误
60,restful风格是什么 有什么特点
名称 | 值 | |
01 | 定义 | 一种软件架构风格、设计风格,而不是标准 |
02 | RESTful风格 | 资源:互联网所有的事物都可以被抽象为资源 资源操作:使用POST、DELETE、PUT、GET,使用不同方法对资源进行操作。 分别对应 添加、 删除、修改、查询。 ** ** |
03 | 请求方法 | GET(获取资源);POST(新增资源);PUT(更新资源);DELETE(删除资源) |
04 | 状态码 | GET:200;POST:200/201;PUT:200/202;DELETE:204 |
05 | [JSON] | 是一种轻量级的数据交换格式 |
06 | 分页显示 | 只返回1页的内容 |
61,你平常做接口测试的过程中发现过哪些Bug
cookie超长权限未处理,导致一般用户可以通过接口获取管理员权限可以输入一些前端限制过的值,比如提取积分接口,通过修改积分为负数,这个在前端无法测试,因为前端会限制你的输入值不能为负,而接口没做相关限制,导致你的积分越提取越多。
关键业务证据链缺失
模拟限速的时候发现异步加载的错误
密码明文传输
后台没有对输入的数据进行有效性验证
63,fiddler的断点有几种,都能有什么场景
1,按照位置分
请求前断点
响应后断点
2,按照断点管辖的范围分
全局断点
局部断点
场景:拦截请求,修改请求
拦截请求,修改响应
拦截响应,修改响应
请求响应都拦截,都修改
64,fiddler断点测试的意义
主要做极端测试
改前端所不能改之请求 ,改后端所不能响应之响应
65,你平时判定请求执行结果的时候多使用什么断言?
我们在使用断言的时候,不能仅仅依靠一种断言就断定请求通过,换言之,仅仅靠一种断言,比如仅仅靠状态码断言是不够的,因为有时候查询请求返回的状态码正确是200,但返回body的内容太也是必须要验证的,所以我们可以给一个请求设置多种断言
比如查询请求,我们多用响应代码断言和响应文本断言配合
比如新增,更新和删除这类涉及数据库更新的请求,我们多用响应代码断言和数据库对比测试的方式联合使用
66,接口测试用例是如何编写的
接口测试用例的编写是根据业务规则和参数覆盖的原则进行编写,
业务规则:我们一般考虑业务流程,正向流程,逆向流程,业务的边界,
参数覆盖:主要考虑参数的类型,边界值,个数,必填,可选,及默认值等覆盖,还有一些参数的唯一性和存在性覆盖,参数中的特殊字符等等
还要考虑安全用例和性能用例