JMeter(1) 介绍+环境+安装+使用

开发接口测试案例的整体方案:

  1. 分析出测试需求,并拿到开发提供的接口说明文档;
  2. 从接口说明文档中整理出接口测试案例(包括详细的入参和出参数据以及明确的格式和检查点)。
  3. 和开发一起对评审接口测试案例
  4. 结合开发库,准备接口测试案例中的入参数据和出参数据,并整理成csv格式的文件。
  5. 结合接口测试案例文档和csv格式的数据文档,做接口测试案例的自动化案例开发。

接口自动化适用场景:

目前设计的自动化接口测试案例有两个运行场景:

  1. 测试前置、开发自测:一个新的自动化接口测试案例开发完成后,直接发给接口对应的开发,安排在开发本地环境执行,一旦开发确认完成接口开发,就开始执行接口测试案例,基本上可以实时拿到测试结果,方便开发快速做出判断。【开发本地运行的方式就是打开JMeter工具,导入JMX文件,开始执行可。】
  2. 回归测试:开发本地测试通过后,或整个需求手工测试通过后,把自动化的接口测试案例做分类整理,挑选出需要纳入到回归测试中的案例,在持续集成环境重新准备测试数据,并把案例纳入到持续集成的job中来,这些用于回归的接口测试案例需要配置到持续集成平台自动运行。
  3. JMeter用途
    负载测试:模拟多用户并发
    压力测试:测试max负载能力

安装JMeter

Jdk1.6或以上:
[http://www.oracle.com/technetwork/java/javase/downloads/index.html]
Jmeter,下载址址:[http://jmeter.apache.org/download_jmeter.cgi]
插件的下载安装地址:[http://www.jmeter-plugins.org/]
打开解压目录下的bin文件,运行ApacheJMeter,即可看到运行界面

JMeter使用

  1. 添加线程组,设置
    Test->Add -> Threads (Users) -> Thread Group
    a. Number of Threads: 100 (连接目标网站的用户数量)
    b. Loop Count: 10 (执行测试的次数)
    c. Ramp-Up Period: 100(告诉 JMeter 延迟多少秒才开始下一个user,设置为0的话意味着同时并发请求)


  2. 添加HTTP request Default
    填写主机名或者IP地址,端口号

protocal:发送测试请求时使用的协议
server name or ip:被测试服务器的ip地址或者名字
path: 默认的起始位置。比如将path设置为/jmeter,那么所有的http请求的url中都将增加/jmeter路径。
port number: 服务器提供服务的端口号

  1. 添加 HTTP Request
    Add ->Sampler->HTTP Request.
  2. 添加信息头


  3. 监听器Listener
    为了记录测试信息并且可以使用Jmeter提供的可视化界面查看测试结果
  4. Run->测试报表参数
    Aggregate Report聚合报告
  • Latency:系统响应单个任务所需要的时间,即平均响应时间。
  • Label :各个模拟测试的名称
  • Samples :各个测试的样本总数
  • Average :每个请求的平均响应时间
  • Median :中值,即50%请求的平均响应时间
  • 90%Line :90%请求的响应时间
  • Min :最小响应时间
  • Max :最大的响应时间Error% :错误响应的概率。即无法响应的概率。
  • ThroughPut :吞吐量 -- 默认情况下表示每秒完成的请求数(Request per Second)。
  • KB/Sec :每秒从服务器端接收到的数据量

View Results Tree

查看每个请求的详细内容,可选中error只记录报错的信息


  1. 加载已存在的元素
    TestPlan->Merge,选中已存在的XX.jmx,导入即可。节省时间
  2. 关于保存
    保存element:只保存一个
    保存test plan:会保存所有的组件
  3. 合并多个测试计划
    已建测试计划的条件下,marge另一个计划会变成多测试计划

Timer定时器

设置1个user,重复100次,constantTimer里线程延迟5000ms,运行,观察表格结果



sample1 的开始时间:18:38:55.276
sampleTime:175ms
延迟时间:5000ms,
以上相加=18:39:45,所以sample2的开始时间是18:39:46

Assertion断言

  1. Response Assertion:响应断言
    • ApplyTo适应范围:一般选“main sample only”
      只当请求触发多个服务器的时候,或者勾选自动重定向且接口302重定向时,有main sample(最后的请求)和sub sample(之前的请求)之分

    • 响应文本:


    • 响应header:

    • 响应代码:


      !当要验证404、501等http相应代码,需勾选“ignore status”

  2. Duration Assertion:相应持续时间断言(断言响应时间不大于XX)
  3. Size Assertion:比较响应的字节大小
  4. XML Assertion:

Controller

  1. Recording Controller
    录制测试步骤???
  2. Simple Controller
    user请求的容器
  3. Loop Controller
    控制循环次数
  4. random Controller
    随机发送请求,假设线程组(user1,LoopCount1),循环控制器(LoopCount50)-->结果发送请求数=100
  5. Module Controller
    多个功能存储在一个模块里面,模块选择器选择特定模块进行运行


处理器

  1. 前置处理器:在sample请求之前执行
  2. 后置处理器:在请求之后执行
    设置线程10,重复10次,后置处理器->Result Status Action Handler->取样器错误之后“立即停止”->运行
    请求( “www.google/abc” ),结果表格查看- > 只发送了10个请求

正则表达式提取器

  1. 提取出变量


  2. 在文件头管理器可以引用该变量


  3. 正则表达式写法
    (1)引用名称:下一个请求要引用的参数名称,如填access_token,下个请求用${access_token}引用
    (2)正则表达式:
        ():括起来的部分就是要提取的。
        . :匹配任何字符串。
        +:一次或多次。
        ?:在找到第一个匹配项后停止。
    (3)模板:用$$引用起来,如果在正则表达式中有多个正则表达式,则可以是$2$$3$等等,表示解析到的第几个值给token。如:$1$表示解析到的第1个值
    (4)匹配数字:0代表随机取值,1代表全部取值,通常情况下填0
    (5)缺省值:如果参数没有取得到值,那默认给一个值。

连接数据库

http://jmeter.apache.org/usermanual/build-db-test-plan.html
~~之后再补充吧

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271

推荐阅读更多精彩内容

  • 在使用Jmeter进行接口的性能测试时,由于Jmeter 是JAVA应用,对于CPU和内存的消耗比较大,所以,当需...
    燕京博士阅读 4,086评论 0 16
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,100评论 18 139
  • 一、基本概念 1.测试计划是使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器。 2.线程...
    Leo_0626阅读 2,203评论 0 10
  • 互联网压力性能Badboy.Jmeterhttp://itopic.org/jmeter-http-tcp.htm...
    燕京博士阅读 2,821评论 0 20
  • 1 Jmeter安装配置 使用Jmeter前首先要安装JDK,配置JDK环境变量。Jmeter不需要安装,下载后...
    茶小汐阅读 2,889评论 0 8