您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > JMeter基础培训-Alex
JMeter知识分享•JMeter介绍•JMeter主要组件介绍•正则表达式介绍•简单规范说明•JMeter实例JMeter知识分享JMeter介绍ApacheJMeter是100%纯java桌面应用程序,被设计用来测试客户端/服务器结构的软件(例如web应用程序)。它可以用来测试包括基于静态和动态资源程序的性能,例如静态文件,JavaServlets,Java对象,数据库,FTP服务器等等。JMeter可以用来在一个服务器、网络或者对象上模拟重负载来测试它的强度或者分析在不同的负载类型下的全面性能。另外,JMeter能够通过让你们用断言创建测试脚本来验证我们的应用程序是否返回了我们期望的结果,从而帮助我们回归测试我们的程序。为了最大的灵活性,JMeter允许我们使用正则表达式创建断言。JMeter主要组件介绍•测试计划(TestPlan)是使用JMeter进行测试的起点,它是其它JMeter测试元件的容器。•线程组(ThreadGroup)代表一定数量的并发用户,它可以用来模拟并发用户发送请求。•取样器(sampler)定义实际的请求内容,被线程组包含,我们主要用HTTP请求。•监听器(Listener)•逻辑控制器(LogicController)•断言(Assertions)•配置元件(ConfigElement)•前置处理器(PreProcessors)和后置处理器(PostProcessors)•定时器(Timer)JMeter主要组件介绍-测试计划•测试计划(TestPlan)是使用JMeter进行测试的起点,它是其它JMeter测试元件的容器。•名称:你可以为你的测试计划取一个有意义的名字。•注释:对测试计划的注释。•用户定义的变量:用户可以自己定义变量,在用到此变量的时候直接用${变量名}引用即可。例:变量名=url,值=,在需要时直接用${url}即可。•Adddirectoryorjartoclasspath:向类路径即%JMeter-HOME%\lib中添加目录及jar包。JMeter主要组件介绍-线程组•名称:为线程组起名字。•线程属性-线程数:设置发送请求的用户数目,即并发数。•线程属性-Ramp-UpPeriod(insecond):线程间的时间间隔,单位是秒。即所有线程在多少时间内启动。•线程属性-循环次数:请求的重复次数,如果选择后面的forever(默认),那么请求将一直继续,如果不选择forever,而在输入框中输入数字,那么请求将重复指定的次数,如果输入1,那么请求将执行一次,如果是0,会出现问题。•调度器配置-启动时间:测试计划什么时候启动,启动延迟会覆盖它。•调度器配置-结束时间:测试计划什么时候结束,持续时间会覆盖它。•调度器配置-持续时间:测试计划持续多长时间,会覆盖结束时间。•调度器配置-启动延迟:测试计划延迟多长时间启动,会覆盖启动时间。JMeter主要组件介绍-取样器(HTTP请求)•名称:HTTP请求的名字。•Web服务器-服务器名称或IP、端口号,脚本录制时自动添加,也可以使用“用户自定义变量”。•HTTP请求:用默认值即可。•同请求一起发送参数:请求中的参数、值可以在此设置,需要用到参数化及动态数据关联,我们在后面专门介绍。•同请求一起发送文件:我可以制定同请求一起发送哪个文件。•其他任务包括:从HTML文件中获取所有内含的资源、用作监视器、EmbeddedURLsmustmatchJMeter主要组件介绍-监听器监听器(Listener)负责收集测试结果,同时也被告知了结果显示的方式。我们常用的包括:聚合报告、查看结果树、用表格查看结果,都支持将结果数据写入文件。其他的添加上去看看就行。聚合报告前面我们介绍过,后面是查看结果树和用表格查看结果的截图。JMeter主要组件介绍-监听器(查看结果树)JMeter主要组件介绍-逻辑控制器逻辑控制器(LogicController)可以自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的请求序列。JMeter主要组件介绍-逻辑控制器•循环控制器可以设置请求的循环次数或永远循环(如果选中永远的话)。•事务控制器可以将多个请求放在同一个事务中。如果选中Gegerateparentsample,则聚合报告中只显示事务控制器的数据,而不会显示其中的各个请求的数据,反之则全部显示。JMeter主要组件介绍-断言断言(Assertions)可以用来判断请求响应的结果是否如用户所期望的。它可以用来隔离问题域,即在确保功能正确的前提下执行压力测试。这个限制对于有效的测试是非常有用的。JMeter主要组件介绍-配置元件配置元件(ConfigElement)维护Sampler需要的配置信息,并根据实际的需要会修改请求的内容。JMeter主要组件介绍-前置处理器和后置处理器•前置处理器(PreProcessors)和后置处理器(PostProcessors)负责在生成请求之前和之后完成工作。前置处理器常常用来修改请求的设置,后置处理器则常常用来处理响应的数据。我们主要在动态关联中用到后置处理器的正则表达式提取器。JMeter主要组件介绍-定时器定时器(Timer)负责定义请求之间的延迟间隔。正则表达式正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。给定一个正则表达式和另一个字符串,我们可以达到如下的目的:1.给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);2.可以通过正则表达式,从字符串中获取我们想要的特定部分。正则表达式的特点是:1.灵活性、逻辑性和功能性非常的强;2.可以迅速地用极简单的方式达到字符串的复杂控制。3.对于刚接触的人来说,比较晦涩难懂。由于正则表达式主要应用对象是文本,因此它在各种文本编辑器场合都有应用,小到著名编辑器EditPlus,大到MicrosoftWord、VisualStudio等大型编辑器,都可以使用正则表达式来处理文本内容。动态数据关联在HTTP请求的参数中经常会遇到一些参数的值是从服务器相应的动态数据,这些数据需要进行关联才能使得每一次请求都能成功得被服务器接受,在JMeter中采用正则表达式提取器来获取这些动态的数据。正则表达式允许用户从服务器响应中获取数据,作为一个后置处理器,正则表达式提取器会在每一个请求执行后再执行,正则表达式提取请求的参数值,产生模板字符串,并将结果保存到给出的变量中。下面简单介绍一下JMeter正则表达式提取器的使用方法。1、添加JMeter正则表达式提取器:在具体的Request下添加JMeter正则表达式提取器(JMeter正则表达式在“后置处理器”下面)2、JMeter正则表达式提取器控制面板,截图如下:正则表达式提取器位置1:名称及注释位置2:正则表达式提取内容的范围。(关于各字段的详细说明请查阅协议的相关说明)位置3:正则表达式提取的相关设置1.引用名称:其他地方引用提取值的变量名称,如填写的是:str,具体的引用方式是${str}2.正则表达式:提取内容的正则表达式:稍注意一下:()表示提取,对于你要提前的内容需要用小括号括起来3.模板:用$$引用起来,如果在正则表达式中有多个提取表达式(多个括号括起来的东东),则可以是$1$,$2$等等,表示解析到的第几个值给str,正则表达式的提取模式,值从1开始,值0对应的是整个匹配的表达式如对于表达式s(.*)值0对应str,值1对应tr4.匹配数字(0代表随机):0代表随机,-1代表所有,其余正整数代表将在已提取的内容中,第几个匹配的内容。5.缺省值:正则匹配失败时,取的值实例介绍实例如何写JMeter测试计划:①打开API接口文件,Interface_api_AppAdmin服务器.xlsx②打开JMeter工具具体C:\Users\Alex\Documents\work\apache-JMeter-2.9\bin③根据接口文件,定义变量、设置服务器地址和端口、编码方式(utf-8)和Http请求默认方式等④添加一个线程组⑤Login(http请求、响应断言、正则表达式提取器)⑥添加HTTP信息头管理器⑦添加正确入参的case⑧添加错误入参的case⑨添加无参情况的case⑩DebugSampler和ResultsJMeter规范介绍列举了一些自己整理的规范介绍(有待补充和纠正):①变量的定义和引用:统一定义,方便修改,使用${}引用②线程组和http请求等的名字和描述要写的简介清晰正确入参的case之前要冠名正确入参字样③响应断言的填写要符合规则:\“code\”:“99000“,不允许出现类似\”code\”:“9900[02]“这种模棱两可的情况因为我们这里99000代表正确99002代表failed,这样子写等于没写④所有case的情况必须考虑全面,比如用户名的错误入参,要考虑长度少于下限大于上限,数据类型不正确,包含特殊字符等情况;⑤保存JMeter时要记得把自动化环境参数激活,本地环境参数变量禁用Thanks!
本文标题:JMeter基础培训-Alex
链接地址:https://www.777doc.com/doc-6493669 .html