软件测试项目实训(第2版)课件 第五章性能测试JMeter_第1页
软件测试项目实训(第2版)课件 第五章性能测试JMeter_第2页
软件测试项目实训(第2版)课件 第五章性能测试JMeter_第3页
软件测试项目实训(第2版)课件 第五章性能测试JMeter_第4页
软件测试项目实训(第2版)课件 第五章性能测试JMeter_第5页
已阅读5页,还剩73页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第6章性能测试-JMeter掌握性能测试利器,提升系统性能质量于艳华长春职业技术大学6.1JMeter简介ApacheJMeter是一款开源的性能测试工具,广泛用于负载测试和性能测量。它最初被设计来测试Web应用,但随着时间的发展,JMeter已经扩展了其功能,能够支持多种协议的测试,包括但不限于HTTP,FTP,JDBC,LDAP,JMS等。JMeter能够模拟多种用户行为,对服务器、网络或对象进行压力测试和性能测试,以评估其在不同负载下的表现。以下是JMeter中的一些基本组件简介:测试计划(TestPlan):这是JMeter中最顶层的容器,所有其他组件都包含在测试计划中。线程组(ThreadGroup):模拟用户或客户端的集合。线程组定义了性能测试中的虚拟用户数(线程数),以及这些用户执行测试的速率。6.1JMeter简介取样器(Sampler):用于向目标服务器发送请求。常见的取样器包括HTTP请求、JDBC请求、FTP请求等。取样器是实际执行测试操作的组件。监听器(Listener):用于收集取样器执行结果,并以图形或表格的形式展示。例如:查看结果树、聚合报告、图形结果等。定时器(Timer):控制请求之间的延迟,模拟真实用户操作的随机性。例如,固定延迟、随机延迟、泊松分布等。断言(Assertion):用于验证响应结果是否符合预期。如果响应不符合断言条件,可以认为测试失败。6.1JMeter简介配置元件(ConfigurationElement):提供额外的配置信息给取样器,例如数据库连接信息、HTTP请求默认值等。前置处理器(Pre-Processors):在取样器执行之前运行,用于修改或添加取样器的请求数据。后置处理器(Post-Processors):在取样器执行之后运行,用于处理取样器的响应数据。控制器(Controllers):控制一组取样器的执行流程,例如循环控制器、如果控制器、事务控制器等。测试片段(TestFragment):一种不包含线程组的测试计划片段,可以被其他测试计划引用。非测试片段(Non-TestFragment):与测试片段类似,但不包含任何可以实际执行的测试逻辑。属性(Properties):JMeter测试计划中的所有元素都有属性,这些属性定义了元素的行为。6.2JMeter安装注意事项:JMeter在使用时需要安装相应版本或以上的JDK才能使用。在浏览器地址栏输入网址:,进入到jmeter官网。1.进入到JMeter官网后点击左侧Download下的Download

Releases。图6-1JMEter官网(1)2.在点击Download

Releases后进入到DownloadApacheJMete页面,点击ApacheJMeter5.6.3(RequiresJava8+)下的zip格式结尾的Jmeter压缩包进行下载。

图6-2

JMEter官网(2)6.2JMeter安装6.2JMeter安装3.出现下面这个界面就是成功下载了。

图6-3

JMEter下载6.2JMeter安装4.出现下面这个界面就是成功下载了。

5.下载完成后点击这个按钮进入到下载位置。6.在本地文件夹中找到下载完成的JMeter压缩包,右键点击解压到当前文件夹。

图6-5

JMeter安装包

图6-6

JMeter解压图6-4

JMEter下载图6-3

JMEter下载6.2JMeter安装7.解压完成后Jmeter就安装成功了。

8.打开解压好的文件后进入文件夹,打开bin文件夹进入到bin目录下。打开资源管理器中的查看文件扩展名。9.在bin目录下找到jmeter.bat文件打开即可进入jmeter中。

图6-9

JMeter启动文件图6-7

JMeter文件夹图6-8

显示文件扩展名在点击Download

Releases后进入到DownloadApacheJMete页面,点击ApacheJMeter5.6.3(RequiresJava8+)下的zip格式结尾的Jmeter压缩包进行下载。

图6-2

JMEter官网(2)6.2JMeter安装在点击Download

Releases后进入到DownloadApacheJMete页面,点击ApacheJMeter5.6.3(RequiresJava8+)下的zip格式结尾的Jmeter压缩包进行下载。

图6-2

JMEter官网(2)6.2JMeter安装脚本录制以课程管理系统新增专业名称功能点进行讲解,需求说明如下:录制:登录系统,输入教务管理员的用户名和密码,点击登录,点击专业管理,点击新增按钮,输入专业名称和选择所属系,点击保存。录制脚本需要用抓包工具进行抓包,这里我们选择浏览器自带的抓包工具。首先在浏览器进入到想要录制的页面,在任意位置右键单击,点击检查,进入浏览器开发者工具。也可在此界面单击键盘上的F12键进入开发者模式。6.3抓包工具的使用6.3抓包工具的使用1.首先在浏览器进入到想要录制的页面,在任意位置右键单击,点击检查,进入浏览器开发者工具。也可在此界面单击键盘上的F12键进入开发者模式。

图6-10

进入浏览器开发者工具6.3抓包工具的使用2.进入开发者工具后,依次点击上方的Network——Fetch/XHR进入抓包工具。

图6-11

进入浏览器抓包工具6.3抓包工具的使用3.接下来进入到系统页面,进行要抓包的操作,这里要对登录操作进行抓包,打开抓包工具后,输入账号密码,点击登录按钮进行登录。这时浏览器的抓包工具会抓到需要的数据,login这一条数据便是登录,其中的Headers中的数据是头部数据,URL后面的数据是地址,Method后面的数据是请求方式,Code后面的数据是状态码,Response

Headers是这条数据的响应头,Request

Headers后面的数据是请求头。

图6-12

抓到的数据的介绍(1)6.3抓包工具的使用4.点击Headers右侧的Payload进入到请求数据页面,这里是请求所提交的参数,点击【view

source】转换成代码的样式可以更方便使用,如图6-14。

图6-13

抓到的数据的介绍(2)6.3抓包工具的使用到这里一个简单的登录脚本就录制好了,接下来进行脚本的编写。图6-14

抓到的数据的介绍(3)6.4脚本添加jmeter在第一次进入时是默认为英文页面,为了更好的操作,按以下步骤调整为中文。首先点击上方的【Options】弹出选项页面,然后点击【ChooseLanguage】选择语言,最后点击【Chinese(Simplified)】更改语言为中文。图6-15

调整语言为简体中文6.4脚本添加选择语言后右键单击测试计划,选择【添加】,选择【线程(用户)】,选择【线程组】来新建一个线程组来进行测试。

图6-16新建一个线程组6.4脚本添加接下来再按照上述的过程添加【点击班级管理】和【新增专业】的HTTP请求。

图6-19

编写点击管理HTTP请求6.4脚本添加图6-20

编写新增专业HTTP请求6.4脚本添加进行到这里脚本中的HTTP就请求编写完成了,接下来添加测试过程中需要用到的一些配置元件。配置原件概述:Cookie管理器、信息头管理器、CSV数据文件设置(CSVDataSetConfig)、请求默认值。Cookie管理器:管理Cookie,维持会话状态。图6-21

添加HTTP

Cookie管理器6.4脚本添加信息头管理器:用于添加和管理HTTP请求头。因为本系统发送的是json数据,所以需要去抓包工具查看响应头数据,其中的Content-Type:application/json的作用是指定发送JSON格式数据。将此数据复制以后在信息头管理器中点击【从剪贴板添加】即可添加成功,如图6-23。图6-22添加HTTP信息头管理器6.4脚本添加图6-23

编写信息头管理器6.4脚本添加CSV数据文件设置用于从CSV文件中读取测试数据,实现测试参数化。这个组件用于参数化数据,等到后面参数化的部分再进行编写。图6-24添加CSV数据文件设置6.4脚本添加HTTP请求默认值:设置HTTP请求的通用参数,如服务器和端口,简化每个请求的配置。在本系统中默认为00,HTTP请求默认值应如图6-26所示,如图编写完HTTP请求默认值后在HTTP请求中可只编写路径于其他数据。图6-25添加请求默认值6.4脚本添加CSV数据文件设置用于从CSV文件中读取测试数据,实现测试参数化。这个组件用于参数化数据,等到后面参数化的部分再进行编写。图6-26编写请求默认值上述是脚本执行需要用到的一些元件,接下来添加监听器用于收集和展示JMeter测试结果。6.4脚本添加监听器有很多种类,这里我们选择添加一个查看结果树来查看响应数据,右击【线程组】,选择【添加】、【监听器】、【查看结果树】。如图6-27.。图6-27添加查看结果树在JMeter中,关联是指从一个请求的响应中提取数据,并将其用于后续请求的过程。这在处理动态数据,如会话令牌(token)、用户ID等场景中尤为重要,本任务以登录关联为例。进行登录关联需要用到后置处理器,这里我们分别介绍使用正则表达式提取器、json提取器、边界提取器三种方法。添加提取器首先右击【登录】,点击【添加】,选择【后置处理器】,选择需要用到的提取器。如图6-35.6.5关联添加提取器首先右击【登录】,点击【添加】,选择【后置处理器】,选择需要用到的提取器。如图6-35.6.5关联图6-28

添加提取器进行关联正则表达式提取器中组件简介:Applyto:正则表达式提取器的应用范围。Mainsampleandsub-samples:匹配范围包括当前父取样器并覆盖子取样器。Mainsampleonly:匹配范围是当前父取样器。Sub-samplesonly:仅匹配当前子取样器。JMeterVariableNametouse对JMeter变量值进行匹配。要检查的响应字段:对响应字段的不同部分进行匹配。引用名称:将匹配信息存放到变量中,使用${变量}。正则表达式:正则表达式提取器使用此名称进行匹配。模板:正则表达式可以设置多个模板进行匹配。例:$1$是第一个模板。匹配数字(0代表随机):出现多个值匹配是使用。6.5关联对登录进行关联首先要找到他的token,先将脚本运行一遍,打开查看结果树,打开登录,这里可以看到除了登录都报红了,这是因为没有进行登录关联导致后续操作失败,如图6-37找到登录的tooken。6.5关联图6-29复制登录请求tooken(1)6.5关联图6-30复制登录请求tooken(2)正则表达式的使用:将图6-31的token部分复制到正则表达式中,将token数据部分替换成(.*?)用来匹配值,模板编写为$1$。如图6-31。6.5关联图6-31编写正则表达式提取器边界提取器组件简介:Applyto与引用名称同正则表达式提取器。左边界:需要匹配的值的左边界。右边界:需要匹配的值的右边界。边界提取器的使用:将图6-31的token部分复制到边界提取器中,将左边界“token”:“放在左边界中,将右边界”}放在右边界中,如图6-32。6.5关联图6-32编写边界提取器json提取器组件简介:Namesofcreatedvariables:输入储存提取的json的变量名称,与正则表达式与边界提取器的引用名称相同。JSONPathexpressions:用于匹配结果返回值的JSONPath表达式。MatchNo.:同模板,1第一个匹配项。Computeconcatenationvar(suffix_ALL):如果不需要所有匹配项的列表,可以不勾选这个选项。DefaultValues:如果匹配值不存在,可以设置一个默认值,例如""(空字符串)。json提取器的使用:在图6-31找到token值,根据返回值确定token的位置,在JSONPath中填写$.data.token,在匹配值中填写1表示使用第一个数据。6.5关联6.5关联图6-33编写JSON提取器使用JSON提取器、正则表达式提取器、边界值提取器提取token后,需要在信息头管理器中把提取的token加到信息头中,在浏览器抓包工具的请求头中可以看到token前的信息头为authorization,在信息头管理器中点击【添加】,将authorization放到名称下,将提取的token放在值中以${token}的形式引用。如图6-34。6.5关联图6-34

将token引入到信息头中这时再次运行脚本可以看到脚本正常运行。如图6-35。6.5关联图6-35脚本运行结果定时器的添加首先在需要添加定时器的位置右击,点击【添加】、【定时器】,选择需要用到的定时器添加。6.6思考时间图6-36

添加定时器在JMeter中,检查点(Checkpoints)主要用于验证测试结果是否符合预期。它们通过断言(Assertions)来实现,断言会根据断言规则去匹配响应数据,如果匹配成功就代表断言通过不会有提示,匹配失败代表断言不通过,此时在查看结果树中查看结果会有相应的位置报红。检查点的添加首先在需要添加检查点的位置右击,点击【添加】、【断言】,选择需要用到的断言进行添加。6.7检查点图6-37

添加断言参数化是JMeter中用于模拟不同用户行为和测试不同输入数据的重要技术。它允许在测试脚本中使用变量代替静态值,使得同一个测试计划能够适应多种测试场景。参数化一般分为两种方式,使用CSV数据文件设置和使用函数助手对话框。使用CSV数据文件设置需要编写一个后缀为.dat的CSV数据文件。里面的数据在编写时参数值应按列排列,每列的值之间用半角英文逗号(,)隔开。这里对登录时的账号密码进行参数化。如图6-38编写.dat文件。6.8参数化图6-38

编写.dat参数化文件在编写好.dat文件之后打开CSV数据文件设置,点击文件名后的【浏览】,这时会弹出一个窗口,按照刚才创建文件的目录选择.dat文件,点击【Open】。如图6-39。6.8参数化图6-39

在CSV数据文件设置中使用.dat文件在编写好CSV数据文件设置后去找到需要进行参数化的HTTP请求,将要进行参数化的数据替换成CSV数据文件设置中的变量名,用${变量名}的形式引入。如图6-41。6.8参数化图6-41使用CSV参数化数据在JMeter中,函数助手对话框(FunctionHelperDialog)提供了一些预定义的函数,这些函数可以帮助用户生成测试数据、进行计算等。常用的函数有:__Random():

生成一个随机数。可以指定范围,例如__Random(1,100)会生成一个1到100之间的随机整数。__RandomInt():

生成一个指定范围内的随机整数。例如__RandomInt(1,100)会生成一个1到100之间的随机整数。__RandomString():

生成一个随机字符串。可以指定长度,例如__RandomString(10)会生成一个长度为10的随机字符串。6.8参数化使用函数助手对话框首先点击上方的【工具】,选择【函数助手对话框】这时会弹出一个对话框,在上方有一个下拉框,在里面可以选择需要用到的函数,选择用到的函数后需要填写函数的各项数据,填写完成后点击【生成】即可将需要参数化的数据替换成函数。如图6-42。6.8参数化图6-42

使用函数助手对话框使用函数助手对话框首先点击上方的【工具】,选择【函数助手对话框】这时会弹出一个对话框,在上方有一个下拉框,在里面可以选择需要用到的函数,选择用到的函数后需要填写函数的各项数据,填写完成后点击【生成】即可将需要参数化的数据替换成函数。如图6-42。6.8参数化图6-42

使用函数助手对话框选择RandomString函数对专业名称进行参数化,函数长度选择4,字符随机填写,如图6-43。6.8参数化图6-43编写函数

编写完成后在新增专业名称中找到新增的专业名称,将生成的函数替换原专业名称。6.8参数化图6-44编写函数

设置完数据后,点击线程组,将循环次数设置为5次。点击运行,这时可以看到结果中每个请求中的参数都不同。6.8参数化图6-45参数化结果

集合点在JMeter中的作用是同步多个线程组,确保它们在执行下一步之前同时到达这一点,常用于模拟并发负载。JMeter中的集合点是通过同步定时器(SynchronizingTimer)来实现的。在要添加集合点的位置右击,选择【定时器】,选择【SynchronizingTimer】,添加成功。如图6-46。6.9集合点图6-46添加同步定时器集合点在JMeter中的作用是同步多个线程组,确保它们在执行下一步之前同时到达这一点,常用于模拟并发负载。JMeter中的集合点是通过同步定时器(SynchronizingTimer)来实现的。在要添加集合点的位置右击,选择【定时器】,选择【SynchronizingTimer】,添加成功。如图6-46。6.9集合点图6-46添加同步定时器添加成功后在同步定时器中就可以根据不同的需求设计集合点了。模拟用户组的数量表示集合达到多少人后再执行请求。超时时间表示指定人数多少秒没集合算超时。如图6-47。6.9集合点图6-47同步定时器JMeter中场景设计是用来模拟真实用户行为和业务场景,确保测试结果的准确性和实际应用的一致性。通过模拟不同的使用场景,识别系统的性能瓶颈和潜在问题。为系统建立性能基准,帮助评估系统是否满足性能要求。评估系统在不同负载下的风险,为系统优化和扩展提供依据。提供数据支持,帮助开发和运维团队做出更合理的优化决策。帮助预测系统资源需求,进行合理的资源规划和分配。记录测试场景和结果,便于团队共享和后续的测试跟踪。确保测试覆盖所有重要的业务流程和用户路径,提高测试的全面性。存在多个线程组时可以独立运行每个线程组,在测试计划中设置。线程组中各个元件的简述:线程数(用户数):指定模拟的并发用户数。Ramp-UpPeriod(斜坡时间):控制所有线程启动的时间间隔,用于逐步增加负载。循环次数:指定每个线程执行测试计划的次数。调度器:允许你设置测试计划的开始时间和持续时间。6.11场景设计6.11场景设计图6-49

设置运行场景6.12场景执行图6-50GUI执行测试JMeter场景执行有两种形式,一种是GUI模式(在JMeter中),一种是非GUI模式(在命令窗口中)运行。JMeter在性能测试中,通常会模拟大量并发用户,这在图形界面下可能会造成资源消耗过大,影响测试结果的准确性。非GUI模式可以减少资源占用,提高测试效率,特别是在服务器或CI/CD环境中自动化运行测试时更为适用。GUI运行在JMeter中点击【运行】可执行,点击【停止】或【强制停止】可中断操作。如图6-50。6.12场景执行图6-50GUI执行测试JMeter场景执行有两种形式,一种是GUI模式(在JMeter中),一种是非GUI模式(在命令窗口中)运行。JMeter在性能测试中,通常会模拟大量并发用户,这在图形界面下可能会造成资源消耗过大,影响测试结果的准确性。非GUI模式可以减少资源占用,提高测试效率,特别是在服务器或CI/CD环境中自动化运行测试时更为适用。GUI运行在JMeter中点击【运行】可执行,点击【停止】或【强制停止】可中断操作。如图6-50。6.12场景执行图6-51非GUI执行测试非GUI模式的使用:首先点击键盘上的【windows】和【R】键,输入cmd单击回车进入到命令窗口。然后找到JMetet所在的位置,在命令窗口输入cd+空格+Jmeter的bin目录所在的路径。成功在命令窗口进入到jmeter的bin目录下之后输入jmeter-n-t+测试计划日志的路径(在jmeterbin目录下可只写文件名)+-l+测试计划结果的保存地址+-e-o+测试报告的生成路径。如图6-51。6.12场景执行图6-52测试结果示例测试完成后在测试报告文件夹生成的路径下生成测试报告,如图6-49。1.脚本添加:脚本文件名称:Addstu。测试计划名称:Addstu。测试计划下添加一个线程组:线程组名称:Addstu。线程组内容:教务管理员登录、点击学生管理,新增学生操作。具体要求如下:学号为2350xxxxx,姓名任意选择,所属班级任意选择,密码任意选择8位由字符和数字组合的密码,邮箱任意输入以@结尾的邮箱,生日、性别任性选择。在新增操作前添加事务,取名为Add,设置检查点,使用新增操作成功服务器的响应正文内容作为检查点,检查点名称Reg_Add。6.13项目实战脚本添加实战训练:将需要用到的操作步骤如图6-10~图6-14进行抓包,在测试计划中先新建一个线程组,后新增三个HTTP请求用来实现登录、点击页面、新增学生的操作,在线程组中添加需要用到的HTTPCookie管理器、HTTP请求默认值、HTTP信息头管理器。如图6-53。将项目添加好后在JMeter的bin目录中保存脚本文件为Addstu.jmx。6.13项目实战图6-53项目实战-添加脚本将项目默认IP复制到HTTP请求默认值中。如图6-54。6.13项目实战图6-54

项目实战-编写HTTP请求默认值将抓包工具中抓到的数据写进HTTP请求中。如图6-55。6.13项目实战图6-55项目实战-编写HTTP请求按照项目要求为脚本添加事务、设置检查点。6.13项目实战图6-56项目实战-添加事务、检查点1.脚本添加:脚本文件名称:Addstu。测试计划名称:Addstu。测试计划下添加一个线程组:线程组名称:Addstu。线程组内容:教务管理员登录、点击学生管理,新增学生操作。具体要求如下:学号为2350xxxxx,姓名任意选择,所属班级任意选择,密码任意选择8位由字符和数字组合的密码,邮箱任意输入以@结尾的邮箱,生日、性别任性选择。在新增操作前添加事务,取名为Add,设置检查点,使用新增操作成功服务器的响应正文内容作为检查点,检查点名称Reg_Add。6.13项目实战1.脚本添加:脚本文件名称:Addstu。测试计划名称:Addstu。测试计划下添加一个线程组:线程组名称:Addstu。线程组内容:教务管理员登录、点击学生管理,新增学生操作。具体要求如下:学号为2350xxxxx,姓名任意选择,所属班级任意选择,密码任意选择8位由字符和数字组合的密码,邮箱任意输入以@结尾的邮箱,生日、性别任性选择。在新增操作前添加事务,取名为Add,设置检查点,使用新增操作成功服务器的响应正文内容作为检查点,检查点名称Reg_Add。6.13项目实战2.脚本回放:使用回放功能对脚本的正确性进行校验。运行脚本,查看回放结果,要求脚本回放功能实现添加学生功能,登录需要关联可任意选择一种方式进行关联。注:学号与邮箱不可重复,回访前修改学号与邮箱。脚本回放实战训练:点击运行脚本,这时会发现脚本运行全失败了,这是因为现在的脚本存在两个问题:第一个问题是浏览器与客户端发送的都是json格式的数据,需要Content-Type:application/json这个请求头来实现请求。第二个问题是没有对登录请求进行关联导致后续的操作失败。6.13项目实战首先将Content-Type:application/json

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论