1、业务级脚本开发

登录脚本->思路:在线程组下新建两个HTTP请求,一个是完成访问登录页,一个是完成登录的数据提交。

  

步骤如下:

1) 访问登录页

2) 提交登录数据的HTTP

PS:对于业务级的脚本建议更加真实地模拟用户的请求操作。

2、接口级脚本开发

1) 单接口测试方法

  1. 启动Jmeter
  2. 新建线程组
  3. 在线程组下新建一个HTTP请求
  4. 在HTTP请求中填入接口信息,包括地址、参数、请求方法(GET)等
  5. 新建一个查看结果数监听器
  6. 运行脚本验证结果,优化脚本(比如可以对参数进行参数化)

2) 接口依赖的测试方法

接口依赖->思路:建立2个接口,把接口1中接口响应的字段传递到接口2的入参中。

比如:列表页获取书名ID,获取的书名ID作为进入书名详情页的入参。

具体步骤:

  1. 新建一个HTTP请求,命名为点击书名
  2. 新建一个HTTP请求,命名为原创列表页随机选择一个书名
  3. 提取点击书名接口中的响应数据good_id字段的值,在点击书名下面建立正则表达式来完成。其中正则表达式,通过取出书名ID的值,后续用这个值在需要的时候填入${good_id}即可使用。
  4. 在原创列表页随机选择一个书名接口的showid入参出替换为变量${good_id}即可。
  5. 我们可以来看查看结果数,看出请求成。 

3、JDBC脚本开发

所谓的单SQL语句是指:一次只运行一条SQL语句。大致实现步骤如下:

  1. 复制mysql-connector-java.jar包到JMeter安装目录下的lib子目录中。
  2. 在线程组下新建一个配置元件中的JDBC Connection Configuration,并填入必要的信息。
  3. 新增一个取样器-JDBC请求,用于JDBC连接。
  4. 建议一个监控器-查看结果数。

SQL查询语句中的条件是固定值,如何设置为变量,步骤:

  1. 测试计划中新增一个用户定义的变量,取名为user_name,值为pro_test
  2. 在JDBC请求中,修改Query Type为Prepared Select Statement
  3. 修改查询条件中的条件为?,用于占位符
  4. Parameter value添加用户自定义的变量,变量为测试计划中变量的值
  5. Parameter types中的参数类型,取决于测试计划->用户定义的变量类型。

多SQL语句测试与单SQL语句的区别:

  1. 在Database Connection Configuration中的Database URL字段末尾加上 ?allowMultiQueries=true。
  2. 在JDBC Request的Query Type选择Update Statement,并在Query里写入两条插入的SQL语句。

4、JMS Point-to-Poibt脚本开发

1、JMS

JMS:Java Message Service,即Java消息服务应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行一步通信。通俗的讲,JMS是一个标准或者是一个协议,用于企业级应用的消息传递。

发送者和接受者。接受者从队列中获取消息,且在成功接收消息之后需向队列应答成功。发送者和接收者之间在时间上没有依赖性,也就是说当发送者发送了消息之后,不管接收者有没有正在运行,都不会影响消息被发送到队列。

消息队列。每个消息都被发送到一个特定的队列。队列保留着消息,直到他们被消费或超时。

每个消息只有一个消费者,一旦被消费,消息就不在消息队列中了。

2、ActiveMQ

ActiveMQ是开源消息队列服务,是面向消息中间件(MOM)的最终实现,是真正的服务提供者。消息生产者将消息发送至消息服务,消息消费者则从消息服务接收这些消息。这些消息的传送操作是使用一组实现了ActiveMQ应用编程接口的对象来执行的。

ActiveMQ工作模式中的部分解释如下:

  1. ActiveMQ客户端使用Connection Factory 对象创建一个连接,向消息服务发送消息以及从消息服务接收消息均是通过此连接来进行。
  2. Connection是客户端与消息服务的活动连接。大多数客户端均使用一个链接来进行所有的消息传送
  3. Session 是一个用于生成和使用消息的单线程上下文。它用于创建发送消息的生产者和接收消息的消费者 ,并为所发送的消息定义发送顺序。
  4. 客户端使用Message Producer向指定的物理目标发送消息。
  5. 客户端使用Message Consumer对象从指定的物理目标接收消息。消费者可以支持同步或异步消息接收。异步使用可通过想消费者注册MessageListener来实现。

3、JMS Point-to-Point脚本开发

场景:对中间件进行性能测试,可以使用工具Jmeter中的JMS。

JMS Point-to-Point脚本开发:

1、找到ActiveMQ官网,下载对应操作系统的ZIP包,解压后进入bin目录,找到activemq.bat,运行即可。

2、ActiveMQ启动完成后,在浏览器地址栏中访问http://127.0.0.1:8161/admin/,默认用户名、密码都是admin。

3、ActiveMQ解压后的文件夹,找到activemq-all-5.15.12.jar,复制到Jmeter目录下的lib子目录中。

4、建立线程组->Sampler->JMS Point-to-Pint,然后填写必要的JMS资源信息。

5、添加一个查看结果数,然后运行JMeter,查看结果请求成功后,返回到对应的ActiveMQ控制台,就可以看到我们发送的消息已经进入了队列。

JMS Point-to-Pint 参数填写内容如下:

名称

描述

QueueConnectionFactory

ConnectionFactory

这是连接 ActiveMQ 的默认 JNDI 入口。

JNDI Name Request Queue

Q.REQ

在 JNDI 属性中定义的 JNDI 名称

JNDI Name Reply Queue

Q.RPL

在 JNDI 属性中定义的 JNDI 名称

Communication Style

Request Response

代表在 JMeter 外部运行的服务并响应请求。 此服务必须监听请求队列并将消息发送到由消息引用的队列.getJMSReplyTo()

Content

test

内容

JMS Properties

ActiveMQ 不需要设置

InitialContextFactory

org.apache.activemq.jndi.ActiveMQInitialContextFactory

ActiveMQ 的标准 InitialContextFactory

queue.Q.REQ

example.A

定义了一个名为 Q.REQ 的 JNDI 队列请求指向了 example.A

queue.Q.RPL

example.B

定义了一个名为 Q.RPL 的 JNDI 队列请求指向了 example.B

Provider URL

tcp://localhost:61616

ActiveMQ 地址和端口

5、Jmeter轻量级接口自动化测试框架

大致思路如下:JMeter完成接口脚本,Ant完成脚本执行并收集结果生成报告,最后利用Jenkins完成整体脚本的自动集成运行。

环境安装:

1.jdk1.7 配置环境变量(参考前面的分页)

2.jmeter解压到本地,ant解压到本地

3.Ant解压到本地,并配置环境变量

  ANT_HOME:D:\jmeter\apache-ant-1.9.6

  Path:%ANT_HOME%\bin;%ANT_HOME%\lib

  CALSSPATH:%ANT_HOME%lib;

4.cmd中验证Ant安装成功

5.将JMeter所在目录下extras子目录里的ant-JMeter-1.1.1.jar复制到Ant所在目录lib子目录下

6、报告模板xls文件,放到jmeter目录中的extras文件夹里

7、创建如下脚本目录结构

 jmeter_test(主目录文件)

    result_log(测试报告及日志)

      html(测试报告生成目录)

      jtl(存放jtl文件的目录)

    script(存放jmeter的jmx文件)

    build.xml(核心配置文件)

8、在jmeter中完成项目的接口脚本,调试成功,保存到上面的script目录。

9.build.xml来设置运行时的具体配置

<?xml version="1.0" encoding="UTF-8"?>
<project name="ant-jmeter-test" default="run" basedir=".">
<tstamp>
<format property="time" pattern="yyyyMMddhhmm" />
</tstamp>
<!-- 需要改成自己本地的 Jmeter 目录-->
<property name="jmeter.home" value="F:\jmeter所存放的本地路径" />
<!-- jmeter生成jtl格式的结果报告的路径-->
<property name="jmeter.result.jtl.dir" value="F:\jmeter-test\result\jtl" />
<!-- jmeter生成html格式的结果报告的路径-->
<property name="jmeter.result.html.dir" value="F:\jmeter-test\result\html" />
<!-- 生成的报告的前缀-->
<property name="ReportName" value="TestReport" />
<property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />
<property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" />
<target name="run">
<antcall target="test" />
<antcall target="report" />
</target>
<target name="test">
<taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
<jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
<!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本-->
<testplans dir="F:\jmeter-test\script" includes="*.jmx" />
<property name="jmeter.save.saveservice.output_format" value="xml"/>
</jmeter>
</target>
<path id="xslt.classpath">
<fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
<fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
</path>
<target name="report">
<tstamp> <format property="report.datestamp" pattern="yyyy/MM/dd HH:mm" /></tstamp>
<xslt
classpathref="xslt.classpath"
force="true"
in="${jmeter.result.jtlName}"
out="${jmeter.result.htmlName}"
style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl">
<param name="dateReport" expression="${report.datestamp}"/>
</xslt>
<!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 -->
<copy todir="${jmeter.result.html.dir}">
<fileset dir="${jmeter.home}/extras">
<include name="collapse.png" />
<include name="expand.png" />
</fileset>
</copy>
</target>
</project>

10.cmd目录下运行切换到D:\jmeter_test,输入命令:ant,执行后等待时间,出现BUILD SUCCESSFUL

11、查看报告

12.集成到Jenkins大概步骤:

  12.1系统管理-系统设置中,配置jdk和ant     

JDK别名:随便自己填,不过最好还是按照实际的写吧

JAVA_HOME:这个是本机JDK的安装路径(路径错误,会有红点提示你),自动安装:不推荐使用

后面Ant与Maven的配置是一样的,JDK去oracle官网下载,Ant与Maven去apache官网下载

Ps:每个文本框后面都有个问号,点击问号就会出现帮助信息

  12.2系统管理-系统设置中,配置邮件通知

  上图,配置发件人地址System Admin e-mail address:Jenkins邮件发送地址,如果你这个没有配置,发邮件的时候,会报错

  配置邮件通知   

这个就非常的简单了,根据的的邮箱提供者的参数配置就行了。

Ps:小技巧:用户默认邮件后缀配置了后,以后你填写邮件地址只需要@之前的就行了

  12.3项目构建

    12.3.1新建自由风格构建任务。在已运行的Jenkins主页中,点击左侧的新建Job进入如下界面

      这时,需要为新的构建任务指定一个名称。(这里输入的任务名称为:接口test)这里有几种的任务类型可供选择,鉴于初步介绍,先选择构建一个自由风格的软件项目。对于其他的类型,经常使用的是拷贝已存在任务;这主要为了能在现有的任务基础上新建任务。点击OK按钮

    12.3.2构建触发器    

Build after other projects are built:在其他项目构建完成后才执行构建:指定的项目完成构建后,触发此项目的构建。

Poll SCM :这是CI 系统中常见的选项。当您选择此选项,您可以指定一个定时作业表达式来定义Jenkins每隔多久检查一下您源代码仓库的变化。如果发现变化,就执行一次构建。例如,表达式中填写0,15,30,45 * * * *将使Jenkins每隔15分钟就检查一次您源码仓库的变化。

Build periodically :此选项仅仅通知Jenkins按指定的频率对项目进行构建,而不管SCM是否有变化。如果想在这个Job中运行一些测试用例的话,它就很有帮助。

      12.3.3增加构建步骤,ant执行命令    

    Ant Version选择你Ant配置的那个名字,注意不要选择default

    如果你的构建脚本build.xml不在workspace根目录、或者说你的构建脚本不叫build.xml。那么需要在高级里设置Build File选项的路径,指明你的脚本。注意:是相对路径

     12.3.4邮件通知设置

选择Add post-build action,然后选择E-mail Notification,在Recipients中输入收件人邮件地址,如果用多个收件人用“,”英文逗号隔开

     12.3.5构建完成后,保存页面信息

  12.4运行

    回到jenkins主界面,点击项目运行

 13.邮件收到的信息

    无异常,构建成功的信息

附录: 

1、linux 下ant+jmeter的使用

 A.安装:离线和在线安装两种,我是选的离线安装。

从http://ant.apache.org下载tar.gz版的ant,复制到usr路径下

进行解压:tar -xzvf apache-ant-1.9.6.tar.gz

vi /etc/profile 编辑ANT_HOME路径:

export ANT_HOME=/usr/apache-ant-1.9.2

export PATH=$PATH:$ANT_HOME/bin

source /etc/profile使配置生效,执行 ant -version,测试ant是否生效。

 B.jmeter 将jmeter文件夹拷贝到linux机器,我放到/opt/soft/jmeter路径,chmod 777 /opt/soft/jmeter/bin/jmeter.sh.   测试jmeter是否linux可用。

 C.su jenkins用户,执行ant,测试能否正确执行和生成对应文件。注意权限

性能测试学习之路 (四)jmeter 脚本开发实战(JDBC &JMS &接口脚本 & 轻量级接口自动化测试框架)的更多相关文章

  1. 性能测试学习之路 (一)认识jmeter(性能测试流程 && 性能测试通过标准 &&jmeter体系结构)

    性能测试是通过自动化的测试工具模拟多种正常.峰值以及异常负载条件来对系统的各项性能指标进行测试. 1 性能测试技能树 性能测试是一项综合性的工作,致力于暴露性能问题,评估系统性能趋势.性能测试工作实质 ...

  2. 性能测试学习之路 (二)jmeter详解(jmeter执行顺序 && 作用域 && 断言 && 事务 &&集合点 )

    1 Jmeter 工作区介绍 jmeter工作区分为3个部分:目录树.测试计划编辑区域.菜单栏. 2 Jmeter 执行顺序规则 Jmeter执行顺序规则如下: 配置元件 前置处理器 定时器 采样器s ...

  3. ReactNative新手学习之路04 组件化开发轮播图swiper支持安卓和IOS

    react native 新手之路04 组件化开发轮播图swiper支持安卓和IOS npm install react-native-carousel --save git 地址Properties ...

  4. Redis——学习之路四(初识主从配置)

    首先我们配置一台master服务器,两台slave服务器.master服务器配置就是默认配置 端口为6379,添加就一个密码CeshiPassword,然后启动master服务器. 两台slave服务 ...

  5. Java学习之路(四):面向对象

    Java中的面向对象 概念:面向对象的原本的意思是“”万物皆对象“” 面向对象思想的特点: 是一种更符合我们思想习惯的思想,将复杂的事情简单化 使我们角色发生了转换,将我们从执行者变成了指挥者 面向对 ...

  6. 《Python3网络爬虫开发实战》PDF+源代码+《精通Python爬虫框架Scrapy》中英文PDF源代码

    下载:https://pan.baidu.com/s/1oejHek3Vmu0ZYvp4w9ZLsw <Python 3网络爬虫开发实战>中文PDF+源代码 下载:https://pan. ...

  7. 性能测试学习第五天-----Jmeter测试脚本&基础元件使用

    JMeter简介:一个100%的纯Java桌面应用,由Apache组织的开放源代码项目,它是功能和性能测试的工具.具有高可扩展性.支持Web(HTTP/HTTPS).SOAP.FTP.JAVA等多种协 ...

  8. 性能测试学习之路 (三)jmeter常见性能指标(相关术语、聚合报告 && 服务器性能监控配置 && 图形结果 && 概要报告)

    1 性能测试目的 性能测试的目的:验证软件系统是否能够达到用户提出的性能指标,同时发现软件系统中存在的性能瓶颈,以优化软件. 最后起到优化系统的目的性能测试包括如下几个方面: 1.评估系统的能力:测试 ...

  9. 性能测试学习第七天-----JMeter之linux环境部署篇

    一.linux获取动态ip或静态ip: 1. virtualbox 加载linux虚拟机镜像文件,加载时重置全部网卡,加载后网络选择“桥接网络”--本机当前使用网卡: 2. ifconfig      ...

随机推荐

  1. 理解js参数

    <!DOCTYPE html><html><head> <meta charset="utf-8" /> <title> ...

  2. Statistical physics approaches to the complex Earth system(相关系统建模理念方法的摘要)

    本文翻译自"Statistical physics approaches to the complex Earth system",其虽然是针对复杂地球系统的统计物理方法的综述,但 ...

  3. 炸了!一口气问了我18个JVM问题!

    前言 GC 对于Java 来说重要性不言而喻,不论是平日里对 JVM 的调优还是面试中的无情轰炸. 这篇文章我会以一问一答的方式来展开有关 GC 的内容. 不过在此之前强烈建议先看这篇文章深度揭秘垃圾 ...

  4. 经典c程序100例==41--50

    [程序41] 题目:学习static定义静态变量的用法 1.程序分析: 2.程序源代码: #include "stdio.h" varfunc() { int var=0; sta ...

  5. 微信告警如何配置?用Cloud Alert快速实现微信告警

    在当下互联网蓬勃发展的时代里,微信已经成为了人们生活中不可分割的一部分.作为苦逼的运维人员,我们自然也得跟得上时代的步伐,将微信添加进告警的通知方式里.如果能够将告警消息第一时间发送到微信中,更清楚地 ...

  6. Git仓库的提交记录乱成一团,怎么办?

    大家好,今天和大家聊聊git当中一个非常好用的功能--区间选择,它可以帮我们处理看起来非常复杂的提交记录.从而帮助我们很快找到我们需要的内容. 如果大家有参与过多人协同的项目开发,比如十几个人甚至更多 ...

  7. python之 栈与队列

    忍不住想报一句粗口"卧槽"这尼玛python的数据结构也太特么方便了吧 想到当初学c语言的数据结构的时候,真的是一笔一划都要自己写出来,这python尼玛直接一个模块就ok 真的是 ...

  8. linux文件cat/tac/more/less/head/tail/find/vimdiff

    ls查看目录文件里的文件: [root@localhost test]# ls a  aa  b  c -d选项查看目录文件自身信息: [root@localhost test]# ll -d drw ...

  9. HotSpot源码分析之C++对象的内存布局

    HotSpot采用了OOP-Klass模型来描述Java类和对象.OOP(Ordinary Object Pointer)指的是普通对象指针,而Klass用来描述对象的具体类型.为了更好理解这个模型, ...

  10. Golang中的OO(面向对象)

    组合 > 继承 Go中的设计,以为继承的被诟病,所以Golang的设计团队在语言的设计时并没有采用经典的OO模式 那Golang中各个部分是怎么联系到一起的呢 type ReadWriter i ...