性能测试概述
性能测试也是软件测试的一种,它的主要方向时测试系统在一定的负荷压力下,系统的响应时间,吞吐量,稳定性,系统的可扩展性等性能指标。
从不同角度看性能测试:
性能测试与项目:
-
性能测试做的成功与否,与测试方法和测试自身所关联的项目背景都有关系。
-
若不理解项目背景,测试人员仅仅靠直觉来猜想哪些是重要的,这样很容易造成背离重要的测试点,浪费大量的时间和精力在其它方面上,从而导致项目失败。
-
性能指标
-
响应时间:对请求作出响应所需要的时间,是用户感知软件性能的主要指标。
N:传输时间,A:处理时间,N和A加+客户端里呈现的时间起来等于响应时间。
响应时间包括:(用户角度)
1.用户客户端的呈现时间
2.请求/响应数据网络传输时间
3.应用服务器处理时间
4.数据库系统处理时间
响应时间多少合理?
对于一个web系统,普遍接受的响应时间标准为2/5/8秒。
2秒钟之内响应客户是非常好的,5秒钟之内响应客户是可以接受的,8秒时客户能接受的响应的上限。 -
并发用户数
并发:用于从业务的角度模拟真实用户同时访问并发数:同时访问系统的用户数
在C/S或B/S结构的应用,系统性能主要由服务器决定,服务器在大量用户同时访问时,压力最大。并发分为:
1.严格并发—同一个请求
2.广义并发—不是同一个请求
吞吐量
系统性能计数器
思考时间
为什么使用Jmeter?
- 1、多线程框架-支持多并发操作
- 2、由于服务器模拟负载
- 3、支持web、数据库、FTP服务器系统的性能测试
- 4、开源、纯JAVA,可二次定制化开发
线程组中各项说明
在取样器错误后要执行的动作:
**a.继续:**某请求遇到错误后,其他请求继续执行。(在大量用户并发的时候,某个请求失败属正常现象)
b.启动下一进程循环:如遇到错误,后面的请求将不再执行,等下一轮再开始执行。例如线程组中包含登录和发帖2个请求,若登录请求失败,发帖请求将不再执行,等下一次重新迭代,从登录开始执行。
**c.停止线程:**遇到错误就停止线程再也不执行了。例如线程组中有50个线程,其中某一个线程的某个请求遇到错误即停止线程不再执行,剩下49个线程继续执行。若线程错误的比较多,剩余的线程就较少,此时负载数量就不足了,测试结果不满足测试要求,因此一般不会勾选此项。
**d.停止测试:**某个线程某个请求遇到错误,停止所有线程,也就是停止整个测试,但是线程中的余下的请求还是会执行完再停止。例如线程1中包含登录和发帖2个请求,其他线程遇到错误,现在要全部停下来,线程1发帖请求还是会执行,然后再停止测试。
**e.立即停止测试:**遇到错误立即停止所有线程,即整个测试。
线程属性:
a.线程数:一个线程相当于一个虚拟用户
**b.Ramp-Up时间(秒):**线程启动开始运行的时间间隔,单位秒。即所有线程在多长时间内全部启动。例如线程60个,Ramp-Up Period设置为20s,那么每秒启动60/20=3个线程,不填写默认设置为0,即所有线程在开启场景后立即启动,并发。
c.循环次数:勾选forever,将一直执行,除非手动停止或崩溃。
(此处设置的3个线程属性与并发相关。线程数与循环次数的积也就是总共并发的请求次数,而Ramp-Up是分配线程的时间。比如线程数10,时间是5秒,循环2次,也就是说,一秒会执行2个线程*2次循环,一秒并发4次请求。)
**延迟创建线程直到需要:**默认不勾选,测试开始的时候,所有线程就被创建完。勾选了此选项,那么线程只会在合适的需要用到的时候创建。
调度器:
a.持续时间:测试计划持续多长时间。
b.启动延时:点击启动按钮后,仅初始化场景,不运行线程,等待延时时间到才运行。
Jmeter脚本
通俗:用户操作被测软件系统某场景的动作流程
Jmeter:用户操作被测软件系统某场景的请求
录制过程:
- 首先将浏览器设置代理,代理服务器为本机地址。
- 此时浏览器无法访问网站
- 设置http代理
- 添加线程组,并保存线程组
-代理服务器中选择线程组,然后点击启动,即可代理访问,可以抓到包,录制到的脚本放在上一步线程组文件保存的地方,若无法访问https 可以在证书中添加jmeter证书。
导入这个证书:
-设置过滤器