14-测试工具与框架
14-测试工具与框架
001-接口自动化使用了unittest是吧,都用它做了什么?
参考:
一、TestCase 用户自定义的测试case的基类,调用run()方法,会依次调用setUp方法、执行用例的方法、tearDown方法。
二、TestSuite
1、测试套件,多个测试用例test case集合就是TestSuite
2、TestSuite可以嵌套TestSuite,可以通过addTest()方法手动增加Test Case,也可以通过TestLoader自动添加Test Case,TestLoader在添加用例时,会没有顺序。
三、TestRunner 运行测试用例的驱动类,可以执行TestCase,也可以执行TestSuite,执行后TestCase和TestSuite会自动管理TESTResult
四、TestFixture 测试脚手,测试代码的运行环境,指测试准备前和执行后要做的工作
002-JMeter分布式环境怎么搭建?
首先,准备多台机器,并安装配置好jdk,和在防火墙上开发1099或特定的端口
然后,在所有机器上放置jmeter软件,并在准备作为助攻机的机器中修改jmeter的配置文件jmeter.properties
助攻机的jmeter.properties文件,主要修改 server.rmi.ssl.disable=true 其他的可改可不改
然后启动jmeter-server服务,指定助攻机的真实ip地址
接下来修改主控机器中的jmeter.properties配置文件,也主要修改server.rmi.ssl.disable=true。如果想要用图形界面运行控制分布式的助攻机,再配置remote_hosts,和mode,如果不想,可以不配置。
003-jmeter和postman有哪方面的区别
- 用例组织方式
Jmeter的组织方式相对比较扁平,它首先没有WorkSpace的概念,直接是TestPlan,TestPlan下创建的Threads Group就相当于TestCase,并没有TestSuite的层级。
Postman功能上更简单,组织方式也更轻量级,它主要针对的就是单个的HTTP请求。Collection就相当于是Project,而Collection中可以创建不定层级的Folders,可以自己组织TestSuite。
- 支持的接口类型与测试类型
从功能上Jmeter最为强大,可以测试各种类型的接口,不支持的也可以通过网上或自己编写的插件进行扩展。
Postman更是轻量级,定位也不同,可用来测试Rest接口。
- 配置不同接口类型
Jmeter可以在线程组里添加HTTP、TCP或WebSocket的Sampler。
Postman仅支持Rest接口。
- 自定义变量以及变量的作用域
除以下表格中所列的变量之外,每个工具都有系统变量,未列在内。
- 流程控制
Jmeter:由Switch控制器、If控制器、随机控制器等一系列控制器实现流程控制,以及Beanshell脚本
Postman:通过JavaScript脚本控制
- 断言
Jmeter:TestPlan、Threads Group、Sampler均可添加断言
Postman:请求的Tests中可添加断言
- 脚本扩展能力
Jmeter:Bean shell(Java)
Postman:JavaScript
- 团队协作
Jmeter:一个TestPlan也是一个jmx(xml)文件,无法分割,但Jmeter有一个合并的功能,允许将多个文件合并在一起。只能每个团队成员自己建立一个TestPlan,分功能块进行测试。最后整理合并。
Postman:有团队协作的功能,需要付费。
004-使用过postman吗
主要用jmeter来做接口测试,其实jmeter和postman都是接口测试工具,他们流程都是一样的。如果公司用的是postman工具的话,我会尽快学习这个工具,尽快上手。
005-如何自定义一个JMeter函数?
- 添加POM依赖ApacheJMeter_java、ApacheJMeter_core,注意与使用的JMeter版本保持一致
- 添加自定义函数,继承AbstractFunction类
- 在execute方法中添加插件逻辑
- 在getReferenceKey方法中返回自定义名称函数
- 如果函数有参数,在setParameters方法获取传递过来的参数
- 将插件打包成.jar文件,在项目下的target目录中
- 将.jar文件拷贝到JMeter安装目录的lib/ext目录中
- 重新打开JMeter,此时就可以JMeter中使用.jar包中自定义的函数
006-jmeter参数化的意义是什么?你常用的参数化方式有?
1.参数化之一“用户参数”,可以将项目中多次用到的数据进行参数化,比如用户名、密码。也可以将经常变动的信息参数化,比如ip地址等。这些信息每次有调整,直接改变量值就可以了,不用到http请求的配置中修改。2. 参数化之二“CSV Data Set Config”,数据量较大的参数,可以对服务器进行压力测试,或者提供不同条件的测试数据,用于接口的功能测试。
007-jmeter怎么解决上下游有依赖性的问题?
通过设置后置处理器来解决。比如json提取器或者是正则表达式。 把需要的值,通过处理器取出来。然后给到需要用到接口去调用就好了。 自己去记一个列子。比如完善信息接口,需要用到用户id。那我们就在登录请求的下方设置json提取器,把id取出来,然后完善信息接口去调用这个变量。
008-jmeter做性能测试的工作原理?
使用线程数,模拟大量用户调用接口,向服务器发起请求,然后,监控大量请求时的各项关键数据,并对这些数据进行分析,发现数据后面隐藏的问题。
009-简述JMeter在接口测试中的优点?
1、应用广泛 2、支持各类接口协议 3、有丰富的插件和第三方插件支持 4、能转性能测试 5、支持面向Java语言的二次开发
010-使用jmeter如何做接口之间的数据关联?
接口数据关联指的是上一个接口的某个返回值,作为下一个接口的请求参数。 如果上一个接口返回的是json格式的,可以用json提取器把数据保存到一个变量里,如果是其他格式 的,可以使用正则提取器保存数据。 那么在下一个接口中,直接使用${变量名}就能使用这个数据。
011-postman 参数化有哪几种方式
内建变量、pre-scripts 编写 js 脚本、批量运行时导入 csv 或 json 格式的文件
012-抓包软件fiddler,怎么修改请求
(1)打开Fiddler-> Rules-> Automatic Breakpoints,点击【Before Responses】。
(2)在左侧列表中选中请求(拦截的请求会出现向上箭头标志),点击右侧Inspectors–>WebForms,可以看到请求携带的参数,此时可以修改参数值,或添加携带参数。 (3)修改完请求参数后,点击下方【Run to Completion】,则进行消息发送。
013-Jmeter测试对于整个测试覆盖了多少?
根据自己对项目的测试来回答
JMeter 可以做接口测试、接口自动化测试、性能测试
单纯只做接口测试,也需要看你测试了多少接口,按照接口数来估摸大概的占比
014-fiddler抓包过程?设置断点过程?如何模拟界面返回404?
1、fiddler抓包我们可以用来抓手机端的包,也可以用来抓web端的包;就是设置一个系统代理,让手机/web的流量走fiddler所在的电脑和端口,然后就可以捕获数据包了。
2、抓到这个请求后,在这个请求前或者响应后打一个断点,请求前做断点可以修改它请求发送之前修改他的数据来进行发送,响应后断点可以修改服务器返回的响应结果进行修改,然后再发送到客户端,察看客户端的显示。
3、设置Rules—>Automatic Breakpoints—>Before Requests
- 然后在界面点击提交订单,看到请求前有红色禁行标识,说明设置了断点,请求被拦截了- 页面发起请求,看见对应的请求图标有红色禁行标识,表示响应过程已设置断点,此时页面返回的就是404状态
015-jmeter实现多接口关联测试?怎么做关联?
多接口测试主要考虑参数之间的传递,实现关联主要需要把接口中动态变化的数据获取到并保存为参数,提供给后面需要用到的地方使用,通过关联可以实现多接口之间参数的传递。
Jmeter通过添加相应的后置处理器可以解析到请求的返回结果,并且存储为参数供后续接口使用,通过这种方式实现多请求的参数传递,从而实现接口的串联测试。
jmeter常用的关联组件:
正则表达式提取器,JSONPath提取器,XPath提取器 ,CSS/JQuery提取器,JDBC提取器
正则表达式提取器提取过程: 首先,右键http请求添加后置处理器,在后置处理器中选择正则表达式提取器,设置要提取的数据的引用名称,然后设置正则表达式规则 ,后续接口中引用变量即可。
016-jmeter一般用到哪些组件?
主要用到的组建有:1)取样器-如http请求,jdbc请求等、2)后置处理器-json提取器、正则表达式提取器、3)断言-响应断言,json断言,断言持续时间、4)监听器-查看结果树,聚合报告等。
017-jmeter工具的原理是什么?
jmeter中参数化的方式有哪些?
Jmeter工具的原理:
jmeter可以作为web服务器与浏览器直接的代理网关,以便捕获浏览器的请求和web服务器的响应,如此就可以很容易地生成性能测试脚本。有了性能测试脚本,jmeter就可以通过线程来模拟真实用户对web服务器的访问压力。
参数化方式:
第一种是添加http请求,直接输入请求参数;
第二种是添加配置元件csv data set config从本地txt文档中取数据;
第三种使用函数助手randomstring:产生随机数
018-你觉得python做自动化测试和用jmeter有什么区别?
Jmeter工具界面很多功能控件是固定的,必须按照工具规定的来完成自动化,而且主要是完成接口自动化,不够灵活; python有很多可调用的库,可以依据自己业务情况来灵活编写脚本完成自动化测试,不单单接口自动化,也可以UI自动化
019-工作用fiddler来做什么?
a) 当测试出bug时,可以通过fiddler抓包,分析bug是客户端还是服务端的问题
b) 当做接口测试时,通过抓包获取接口的入参和返回值,包括接口之间的数据关联
c) 当对客户端做弱网测试,可以修改fiddler的网络模拟参数,模拟出不同的网络速度
d) 当需要对客户端测试一下特殊场景,可以使用fiddler设置响应断点(bpu、bpafter),修改服务端响 应的数据,测试客户端对应的逻辑处理,比如修改服务端返回的状态为500
020-JMeter 参数化在性能测试中有哪些适用场景
1,造数据
2,用户差异性随机行为模拟
3,禁止重复数据情况
4、sign 签名校验字段
5、身份校验(后面讲 cookie、session、token)
021-pytest和unittest区别有哪些
unittest是python的官方库,由python团队开发,兼容性好,但是只有通用的核心功能
pytest是第三方库,支持第三方插件多,但是和python版本可能存在不兼容问题
编写用例方式不用:
unittest用例,必须用类,类必须继承TestCase,方法名和模块名必须test开头
pytest编写用例,可以用类,也可以用函数,且不需要继承,方法名称和模块名称都可以支持pytest.ini自定义,默认的
是test开头
加载用例方式不同:
unittest加载用例得通过TestSuite,TestRunner去加载用例到套件
pytest不需要加载用例,会自动查找
前后置处理方式不同:
unittest前置:setUpClass, tearDownClass, setUp, tearDown
pytest前后置: setup_class, teardown_class, setup, teardown, @pytest,fixture(scope=“
class”或者function)修饰
的,通过yeild区分前后置
断言方式不同:
unittest可以调用封装的assertEqual,和assert, pytest只能用assert
执行用例的顺序不同:
unittest是根据ascii码执行
pytest是从上到下执行
022-Jmeter常用的断言方式?
1、Json断言,可以通过Json路径表达式判断接口返回的Json字符串中某些字段是否符合预期
2、响应断言,可以判断响应头/响应体中是否包含预期的字符串 区别:Json断言只能判断Json格式的;响应断言只要是文本格式都可以判断,应用范围更广
023-如何将jmeter测试的结果导出成缺陷报告?
二次开发
024-postman 支持什么类型的协议测试?
http 和 https 协议
025-Jmeter参数化的方式?
我会的主要三种,1)用户自定义实现参数化 2)csv文档配置完成参数化 3)随机函数实现参数化
026-用fiddler断点测试怎么做?
做一些数据的篡改,比如说在请求前做一个断点,在响应后做断点,请求前做断点可以修改它请求发送之前修改他的数据来进行发送,响应后断点的话服务器还没有将请求返回到客户端的时候做一些数据的串改,还有看前端的界面是怎么显示的
027-JMeter中vars与props的差异?
主要差异:vars只在当前线程组中能使用;props则可以跨线程组使用;另外vars只能是String或Object类型
028-你接口用的什么做的呀?Jmeter上家公司那有用过吗?
上家公司就是用jmeter来做的接口测试,先根据开发提供的接口文档,编写接口测试用例,然后选取Jmeter这个工具进行接口测试。单接口一个个的验证,输入请求地址,请求方式,请求头,和请求体,检查返回信息结果;然后也会用Jmeter实现一些接口测冒烟自动化测试,就是整个流程串联起来,验证核心业务功能。对于接口的批量运行会用到参数化和断言等,也会用到后置处理器来进行接口的关联等操作
029-工作常用的jmeter自带函数有哪些?
random随机数函数
randomString随机字符串函数
time获取当前时间戳函数
md5加密函数
030-fiddler怎么抓安卓的请求
- 保证安装手机跟电脑端同一个网络
2)fiddler-options里面要设置代理端口及开启远程访问
3)手机端设置代理,输入电脑端ip、及端口号
031-Jmeter除了json格式还有哪些?
就我用过的 除了json,还有xml格式
032-用的什么抓包?fiddler抓包的原理?
web端可以用F12/fiddler。app就用的fiddler
原理:在客户端与服务器之间建立一个代理服务器,请求是先经过代理,再从代理转发到服务器,这样就能够捕获通过请求。
033-JMeter中常用的组件有哪些?
线程组、前置处理器、后置处理器、取样器、配置元件、监听器、逻辑控制器等
034-jmeter怎么做性能测试
1、先调试好脚本
2、然后对脚本进行增强和性能转换
3、根据性能需求,设计性能测试场景
4、使用CLI执行性能测试
5、查看聚合报告和服务监控
035-jmeter 参数化的方式有哪几种可以实现
- 配置元件---用户定义的变量元件可以设置全局变量
- 函数助手对话框中可以选择比如随机字符串、随机日期、随机数字作为参数化
- 可以使用 csv 文件作为参数化,通过配置元件中的 csv data set config 元件进行设置即可
036-如何判断是前台还是后台的bug,可以使用fiddler抓取请求信息?
页面显示,js问题--前端的bug; 用fiddler抓包前后端交互的报文并进行分析 1、前端没有发出请求,就是前端的问题。 2、前端发出了请求,但是请求的参数有错误,就是前端的问题 3、前端发出了请求,参数没有问题,后端返回数据有问题,就是后端的问题。 4、前端发出了请求,参数没有问题,后端没有响应,就是后端的问题。 5、后端返回了 也是正确的;前端没有正确显示的 就是前端问题 数据库检查同步
037-简述jmeter分布式原理?
1、Jmeter分布式测试时,选择其中一台作为调度机(master),其它机器做为执行机(slave)。
2、执行时,master会把脚本发送到每台slave上,slave 拿到脚本后就开始执行,slave执行时不需要启动GUI,我理解它应该是通过命令行模式执行的。
3、执行完成后,slave会把结果回传给master,master会收集所有slave的信息并汇总。
038-除了fiddler你还会什么测试工具?
比如接口测试工具Jmeter postman, app测试工具adb和monkey,还有Linux,mysql数据库这些等;(说出来的工具一定是自己会的,因为可能会有后续的问题)
039-工作中fiddler可以用来干什么?
1)抓包修改数据再次发送
2)生产环境出现问题,重定向到本地
3)断点测试,模拟网络中断
4)弱网测试
040-jmeter做性能测试,本地压和服务器压,有什么区别?
首先,两种方式不一样,本地大多是window系统,一般习惯用图形界面,这种方式,jmeter的资源要分一部分给图形界面,所以用于发起请求的资源少了,能产生的压力就少了,而服务器压,一般采用CLI无图形界面模式,这种方式,jmeter的所有资源,都用于发起请求,所以,能对被测服务器产生更大的压力;然后,就是机器的操作系统不一样,能用的资源也不一样,本地,windows,受操作系统的限制,资源分配、端口数量、能打开的文件数量、网络等等,都会比服务器要差,所以,对被测系统产生的压力也小,而服务器一般是linux系统,这种系统资源分配、端口范围、文件数量、网络等等,都比windows要高,能产生更高的并发压力。所以,这两种方式,做性能测试,结果会有差异。一般,建议,真正的性能测试,采用linux服务器+cli模式发起请求
041-JMeter中能写Java语言代码吗?一般在什么地方写?
可以,一般在BeanShell取样器、前置BeanShell、后置BeanShell中写Java代码
042-平时项目里用的什么抓包?fiddler抓包的原理?怎么实现?
平时项目里用的F12,Fiddler抓包; 抓包原理:Fiddler在浏览器/客户端与服务器之间充当一个代理服务器,能够捕获客户端发的http(s)请求消息和服务器回应的http(s)响应消息
043-fiddler如何断点拦截伪造数据?
看这篇文章http://testingpai.com/article/1598685272123
另外结合fiddler视频,要跟着实操
面试才有印象怎么回答
044-性能测试loadrunner、jmeter以及locust各自的优缺点
loadrunner,是传统的性能测试软件的标杆,它可以使用线程或进程两种方式模拟并发用户数,他支持C语言、java语言、以及.net语言编写脚本,它是商业软件,免费版本,只支持50个并发用户数,超过了就需要付高额费用购买,并发用户数
jmeter,是现在企业中流行的性能测试工具,他用线程来模拟并发用户数,他可以不用任何程序语言编写脚本,也支持java、python、groovy、jyphon、js语言编写脚,它是免费开源的,理论上可以支持无限量并发用户数
locust,是python语言中的一个性能测试库,它使用协作程方式模拟并发用户数,它只能使用python语言编写脚本,没有语言基础,无法使用该库,它是免费开源的,理论上也可以支持无限量并发用户数
045-unittest框架包括哪几个模块?
unittest.TestCase:
用例类,用例类中一个test开头的方法,就是一个测试用例
unittest.TestSuite:
测试套件用来收集测试用例,可以使用`TestLoader来加载测试用例到测试套件中
unittest.TextTestRunner:
测试用例执行类,通过该类下面的`run()方法来运行`suite`所组装的测试用例,入参为 suite测试套件
测试固件(setUp、tearDown:
测试夹具,用于测试用例环境的搭建和销毁。主要包括测试用例的前置、后置方法。
046-简述JMeter在接口测试中的不足?
1、函数不够丰富,不能满足所有场景需要 2、插件不够丰富,不能满足一些特别的请求,如私有协议 3、碎片化严重,每次需求调整,脚本都需要进行调整再测试 4、过程不可管理,尤其是测试人、回归对比等管理者关心的数据 5、报表过于简单
047-jmeter怎么连接数据库
1、加载mysql数据库驱动:将驱动mysql-connector-java-8.0.25.jar 放在jmeter的安装目录下的lib下面,然后在测试计划下进行驱动的加载
2、添加数据库配置原件 JDBC Connection Configuration,写好变量名和数据库配置信息
3、添加取样器--JDBC Request ,配置好变量名后就可以写sql语句
4、添加查看结果树,运行脚本后就可以看到sql查看结果。
048-jmeter的长链接、短链接、原件执行原理?
短连接的操作步骤是:建立连接——数据传输——关闭连接...建立连接——数据传输——关闭连接。
长连接的操作步骤是:建立连接——数据传输...(保持连接)...数据传输——关闭连接。
长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况,。每个TCP连接都需要三步握手,这需要时间,如果每个操作都是先连接,再操作的话那么处理速度会降低很多,所以每个操作完后都不断开,次处理时直接发送数据包就OK了,不用建立TCP连接。例如:数据库的连接用长连接, 如果用短连接频繁的通信会造成socket错误,而且频繁的socket 创建也是对资源的浪费。
而像WEB网站的http服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源,而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源,如果用长连接,而且同时有成千上万的用户,如果每个用户都占用一个连接的话,那可想而知吧。所以并发量大,但每个用户无需频繁操作情况下需用短连好。
Jmeter使用的原理?------模拟客户端发送请求到服务器,服务器处理请求并返回响应结果,jmeter接收响应结果
049-Fiddler抓包用来篡改/修改过数据吗?
有用过这个,比如说一个注册的,我会先在前端页面填好相应数据后,然后在fiddler打开设置请求前断点开关,然后在前端点击注册,然后在fiddler修改注册的账号,再点击run,然后去数据库查看注册的账号是前端注册的账号还是我在fiddler修改的账号。
050-请使用python的包管理工具安装第三方包 requests
pip install requests
051-工作中JMeter是怎么实现参数化的?
1、配置元件 :用户定义的变量
2、配置元件: CSV Data Set Config
3、函数助手中的函数获取参数值 _Random函数 _RandomString函数
052-用fiddler做什么?说下具体过程?
工作中主要是抓包、弱网测试应用。 1)抓包,分析定位 系统问题。 2)模拟弱网测试场景 2)利用fiddler可以将测试环境 资源重定向到本地,快速验证一些bug。 3)利用fiddler可以完成做一些简单的接口测试。 4)利用fiddler的断点可以完成一些特殊场景下的测试,比如安全测试。
053-Fiddler 手机 app 抓包设置
(1)手机与电脑连接同一网段(比如同一个 WIFI)
(2)设置代理服务器与网络连接起来
(3)在手机上设置服务器与端口(ipconfig 查看电脑 IP 或通过 Fiddler 的 Online 查 看 IP)
054-多接口关联,如何使用jmeter测试
1、正则表达式提取器,填写提取器相关参数,从响应中获取数据
2、下一个接口填写需要的参数
055-jmeter工具发送请求后服务器端返回有乱码如何处理?
首先,通过抓包工具,抓取用其他方式请求获得的响应信息,确认是否有乱码,如果都出现乱码,那么说明数据在服务器中存储或处理就是乱码了,需要找开发人员解决。
如果,抓包没有乱码,确认自己脚本请求的编码是否有问题,做urlencoded或utf8检查。
056-利用fiddler怎么进行抓包操作的?
fiddler抓包我们可以用来抓手机端的包,也可以用来抓web端的包;就是设置一个系统代理,让手机/web的流量走fiddler所在的电脑和端口,然后就可以捕获数据包了。
057-手机是如何用Fiddler抓请求的?(跟网页用法一样吗?)
前提:保证安装手机跟电脑端同一个网络 1、对fiddler进行简单配置: 打开fiddler,Tools->Fiddler Options---勾选“Decrpt HTTPS traffic”,选中后Fiddler可以截获HTTPS请求---勾选“Allow remote computers to connect”,选中后允许别的机器把HTTP/HTTPS请求发送到Fiddler上---配置完成后,重新启动Fiddler 2、获取Fiddler所在机器的IP地址(运行cmd-->ipconfig,即可获得IP地址) 3、在手机中设置网络代理 打开手机设置 —> WLAN —> 选择手动代理--》代理服务器主机名:填写Fiddler所在机器的IP地址---》代理服务器端口:填写Fiddler设置的代理端口 4、上面配置好后就可以在Fiddler就可以抓取到移动端App应用的请求了 5、如果要抓取HTTPS的请求,那么要在Android手机安装Fiddler证书 打开手机中的浏览器,输入192.168.3.104:8888,这是你上面在手机中设置网络代理Fiddler的服务地址。如果出现响应页面说明访问代理服务Fiddler成功,就可以安装证书了。证书安装成功后就可以在fiddler上抓取HTTPS的请求了
058-简述下fiddler的工作原理?
fiddler其实就是在客户端和服务端之间起到了一个代理的作用,它可以监听客户端和服务端的HTTP通 信,把请求和响应的数据都抓下来,另外还可以做请求/响应拦截,修改报文,以及弱网测试等。
059-jmeter做性能测试,一台电脑大概能支持多少并发用户数
http协议,一般,一台电脑大概能支持1500左右并发用户数,超过了就要用分布式
060-requests模块的post请求有几种参数类型?
requests模块的post请求有data,json,file这三个用来传递请求体参数的字段 如果请求的content-type是x-www-form-urlencoded,则使用data参数,传字典类型。
如果请求的content-type是application/json,则使用json参数,传字典类型。 当然也可以使用data参数,但是参数值应当为序列化后的json字符串。 如果请求为上传文件,则要使用file字段。
如果请求的content-type是multipart/form-data,则需要额外使用requests_toolbelt 模块来处理请求数据,在post请求当中使用data参数,并带上请求头content-type。
061-你平时工作中用的什么抓包?fiddler抓包的原理?怎么实现?
我们用f12,fiddler抓包比较多; Fiddler抓包的原理:在浏览器/客户端与服务器之间充当一个代理服务器,能够捕获客户端发的http(s)请求消息和服务器回应的http(s)响应消息;
只要安装好,默认勾选启动成为系统的代理就可以直接抓包了;如果没配置自动成为系统代理就需要去浏览器里配置一下fiddler的代理。
062-Fiddler怎么抓取移动端的数据??
1、确保手机和Fiddler所在主机在同一个局域网中
2、设置【Tool】-【Fiddler Option】的【Connections】端口,默认8888,勾选【Allow remote computers to connect】允许远程连接
3、在电脑端查询电脑ip,在手机wifi设置代理,输入电脑ip及端口
4、如果是抓取https请求,还需要配置https中勾选解密HTTPS通信 Decrypt HTTPS traffic,且在手机端输入电脑ip+端口,下载证书并安装 通过以上就可以抓取移动端数据了
063-Jmeter工具怎么做多线程的接口关联?
将上一个线程组中需要获取的值,通过例如正则表达式提取器获取后,通过__setProperty()函数,将提取出的值设置为全局变量,写入到Beanshell 后置处理器中。 然后在下一个线程组中,使用—property,将全局变量填入。生成函数并复制到下一个线程组的接口使用就可以了
064-Jmeter都有那些参数化方式?
1、使用函数,比如随机数函数、随机字符串函数,uuid等
2、使用csv文件,可以将动态的数据写到csv文件中,CSV数据文件设置组件就可以读取文件中的动态数据
3、用户定义的变量,定义一个变量,可以全局带用这个变量使用
065-列出几个JMeter监听器?
一些JMeter监听器是: 集合报告 汇总报告 查看结果树 用表格查看结果 图形结果 BeanShell Listener 摘要报告等
066-Jmeter怎么获取动态时间?
使用__timeShift函数:
在JMeter中,你可以使用__timeShift函数来获取当前时间,并进行时间偏移。该函数的语法如下:
${__timeShift(yyyy-MM-dd HH:mm:ss,${__time(,)},-600)}- $
- format:日期时间格式,比如yyyy-MM-dd HH:mm:ss。- time:参考时间,一般使用${__time(,)}来表示当前时间。- shift:时间偏移量,以秒为单位。可以使用正数表示未来时间,使用负数表示过去时间。
例如,如果你想获取当前时间的前10分钟,可以使用以下表达式:
${__timeShift(yyyy-MM-dd HH:mm:ss,${__time(,)},-600)}
067-fiddler抓包怎么设置对app进行抓包?
前提:保证安装手机跟电脑端同一个网络 1、首先需安装fiddler抓包工具 2、安装成功后对fiddler进行简单配置: 打开fiddler,Tools->Fiddler Options---勾选“Decrpt HTTPS traffic”,选中后Fiddler可以截获HTTPS请求---勾选“Allow remote computers to connect”,选中后允许别的机器把HTTP/HTTPS请求发送到Fiddler上---配置完成后,重新启动Fiddler 3、获取Fiddler所在机器的IP地址(运行cmd-->ipconfig,即可获得IP地址) 4、在手机中设置网络代理 打开手机设置 —> WLAN —> 选择手动代理--》代理服务器主机名:填写Fiddler所在机器的IP地址---》代理服务器端口:填写Fiddler设置的代理端口 5、上面配置好后就可以在Fiddler就可以抓取到移动端App应用的请求了 6、如果要抓取HTTPS的请求,那么要在Android手机安装Fiddler证书 打开手机中的浏览器,输入192.168.3.104:8888,这是你上面在手机中设置网络代理Fiddler的服务地址。如果出现响应页面说明访问代理服务Fiddler成功,就可以安装证书了。证书安装成功后就可以在fiddler上抓取HTTPS的请求了****
068-使用Jmeter做接口测试的流程?
1、通过接口文档,或者抓包,获取接口的url和参数
2、创建线程组、HTTP请求,根据接口地址设置相关的信息
3、根据测试用例情况,修改接口参数,调用接口
4、对接口返回值做判断(断言)
069-如何通过 Fiddler 确定是前端还是后端 BUG?
(1)测试遇到 bug,首先 Fiddler 开启抓包后看是否能抓到接口,如果不能抓到接 口,说明是前端 BUG
(2)如果抓到接口,但是接口请求参数或者参数值错误,说明是前端 BUG
(3)如果是接口应答信息错误,说明是后端 BUG
070-聊一下这个fiddler是什么机制呢?
fiddler的机制就是 就是充当客户端和服务器之间的代理, 截取客户端和服务器之间的交互报文,可以做分析和断点测试等这些。
071-postman用的多吗,怎么用?
在公司的接口项目中主要用的是jmeter,但是postman我也用过,在postman的请求中输入接口地址、请求头、请求参数后去进行发送,在对接口进行参数化操作,比如接口地址中公用的部分用环境变量去替换,对于请求体的参数会用csv格式数据来做批量处理,然后针对响应结果回去做断言代码的设置,预期结果有多个值时也会做csv参数化。然后创建一个测试集,添加csv数据,设置迭代次数候就可以批量执行,执行后可以生成HTML报告。
072-使用jmeter做过性能测试吗
主要用jmeter来做接口测试,性能测试在项目中没有接触过,但是我自己在学习有关性能的知识。一是考虑到多点技术运用到工作中,可以提高效率,可以从更多的角度来保证质量,二是在测试领域,我也希望积累更多的专业技术。
073-工作中常用的 jmeter 自带函数有哪些
digest 特定哈希算法的加密函数
urlencode、urldecode 分别是 URL 编码、解码函数
time 获取当前各种格式时间的函数
Random 获取指定范围数值的随机数函数
StringToFile 指定字符串写入文件的函数
074-如何将jmeter响应结果保存到本地?
---保存成文件 --xml ; beanshell --- Java代码; 教程
075-如何使用 JMeter 测试 HTTP/HTTPS 接口?
(1)在 Jmeter 里添加线程组、Http 请求、头文件管理器、查看结果树、聚合报告。
(2)在线程组里配置线程数和运行时间。
(3)在 Http 请求里配置协议、IP、端口号、请求方式、URL、参数(化)、关联、断言。
(4)在查看结果树里查看接口的请求数据、响应数据。
(5)在聚合报告中查看接口响应时间。
076-JMeter 连接数据库测试,用到什么元件?
JDBC Connection Configuration
077-jmeter压测有压出过什么问题么
使用gui会对系统本身的资源占用有影响
078-使用什么命令可以让jmeter在Linux后台执行
jmeter-server
jmeter.sh -n xxxxxxx &
079-工作中常用的 JMeter 参数化哪些
1、函数,例如 digest、intSum、longSum、counter、Random、RandomString、time
2、csv 配置元件
3、测试计划、用户定义的变量
4、beanshell 内置变量 vars、props
5、关联:后置处理器、例如 正则提取、json 提取
080-fiddler你怎么抓包的?
1、fiddler抓包我们可以用来抓手机端的包,也可以用来抓web端的包;就是设置一个系统代理,让手机/web的流量走fiddler所在的电脑和端口,然后就可以捕获数据包了。
2、APP和web测试都会用的
081-使用 jmeter 如何做接口之间的关联
接口关联指的就是一个接口要使用另一个接口的返回值作为参数,在 jmeter 中针对 不同的响应数据格式都有不同的处理组件,json 格式的采用 json 提取器,xml 或者 html 格式的采用 xpath 提取器,其他格式的可以采用正则表达式提取器,BeanShell 后置处理 器也可以从响应结果中提取响应内容,通过这些组件提取所需内容后,在需要关联的接 口中引用变量即可完成关联
082-unittest和pytest区别
1、pytest是第三方库,基于unittest的扩展框架,比unittest更简洁,高效
2、pytest 有丰富的插件系统
3、pytest 的夹具使用更加灵活
4、pytest 可以很方便的过滤用例
083-JMeter接口测试,关联用到什么元件?
后置处理器正则表达式以及json提取器
084-断言这里你除了用unittest自带的断言之外,有没有自己封装过断言?
1、使用python的 assert方法
2、封装对比字段的方法,然后手动抛出异常给unittest框架
085-fiddler 的工作原理是什么?
工作原理:fiddler 主要是在客户端和服务端之间起到了一个代理的作用,启动 fiddler 后,所有的请求和响应都会经过 fiddler。
应用场景:
(1)判断前后端 bug
(2)抓包进行数据分析
(3)请求断点:主要是测试服务端对客户端提交的非法数据是否进行校验,比如购票 数量为 0,无效的活动时间等
(4)响应断点:主要测试服务端返回异常数据后,客户端的处理方式,比如服务端返 回 500,或者某些其他异常业务数据
(5)弱网测试,可以修改 fiddler 中内置的网络延迟时间,默认是上传 300ms 和下载 150ms,这两个值越大,网络速率越低
086-如何使用jmeter进行接口测试?
1、先分析接口需求,搞清楚接口请求、响应信息,以及业务关联。 2、Jmeter对应接口业务设计对应脚本: 2.1 不涉及关联的单接口执行,右键测试计划添加线程组,然后线程组下面添加HTTP请求,将接口的请求地址、请求方式,传参配置好;请求头在HTTP信息头管理器设置;最后添加监听器-查看结果树,用来记录测试结果 2.2 涉及关联的接口,例某个接口需要依赖到登录状态,在请求头需传递登录成功返回的token值,那么需用到后置处理器提取数据,像返回格式是json的可使用json提取器提取token值 2.3 涉及数据库获取数据,需添加jdbc连接配置,以及jdbc request进行数据库通过sql语句提取到数据后,在需要的接口进行引用,例如短信验证码的获取 2.4 脚本设计可能还需要用到参数化、断言实现;还有文件上传接口、参数加密等业务的处理;总之要依据实际业务场景设计脚本执行测试 3、执行中,通过断言判断是否符合预期;没那么好断言处理的,可以手动通过查看结果树的响应结果,数据库结果进行校验接口是否通过;出现bug及时提交缺陷管理平台并跟踪 以上就是如何做接口测试的大致过程。
087-Jmeter怎么做接口测试?怎么并发?
Jmeter做接口测试先添加一个线程组,然后添加一个http请求,配置上url地址+端口,以及接口地址,和参数以及头部信息,配置好了之后,添加一个查看结果树,点击运行,在查看结果树里查看运行结果。把运行结果和预期结果进行对比,如果一致就通过,不一致就测试不通过。 Jmeter可以用来做性能测试,我们做并发测试就是在Jmeter里添加多个线程组来模拟虚拟用户,一般我们的产品用户数量比较少,所以基本虚拟用户数达到300~500就可以了。
088-JMeter二次开发主要包含哪些内容或组件的开发?
主要是下面几个方向: 1、自定义函数;2、自定义组件(如取样器、配置元件等);3、基于引擎;4、完整的开发
089-unittest 和 pytest 的区别
一、用例编写规则
1.unittest 提供了 test cases、test suites、test fixtures、test runner 相关的类,让测试更 加明确、方便、可控。使用 unittest 编写用例,必须遵守以下规则: (1)测试文件必须先 import unittest (2)测试类必须继承 unittest.TestCase (3)测试方法必须以“test_”开头 (4)测试类必须要有 unittest.main()方法
2.pytest 是 python 的第三方测试框架,是基于 unittest 的扩展框架,比 unittest 更简洁, 更高效。使用 pytest 编写用例,必须遵守以下规则: (1)测试文件名必须以“test_”开头或者"test"结尾(如:test_ab.py) (2)测试方法必须以“test”开头。 (3)测试类命名以"Test"开头。
二、用例前置和后置
1.unittest 提供了 setUp/tearDown,每个用例运行前、结束后运行一次。setUpClass 和 tearDownClass,用例执行前、结束后,只运行一次
2.pytest 提供了模块级、函数级、类级、方法级的 setup/teardown,比 unittest 的 setUp/tearDown 更灵活。
三、断言
1.unittest 提供了 assertEqual、assertIn、assertTrue、assertFalse。 2.pytest 直接使用 assert 表达式。
四、报告
1.unittest 使用 HTMLTestRunnerNew 库。 2.pytest 有 pytest-HTML、allure 插件。
五、失败重跑 1.unittest 无此功能。 2.pytest 支持用例执行失败重跑,pytest-rerunfailures 插件。
六、参数化 1.unittest 需依赖 ddt 库, 2.pytest 直接使用@pytest.mark.parametrize 装饰器。
七、用例分类执行 1、unittest 默认执行全部用例,也可以通过加载 testsuit,执行部分用例。 2、pytest 可以通过@pytest.mark 来标记类和方法,pytest.main 加入参数("-m")可以 只运行标记的类和方法。
090-Jmeter如何判断返回数据的是正确的?
使用断言,可以使用响应断言进行结果比对
091-用jmeter发接口请求需要配置哪些参数
1、服务器域名 2、接口地址 3、请求头 4、请求参数
092-如何用jmeter测并发?
最简单直接的一个并发就是线程组里加线程数就好了。
093-jmeter的3种参数化方式
用户定义的变量。CSV 数据文件设置。函数助手
