1、业务级脚本开发

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

 

步骤如下:

1) 访问登录页

2) 提交登录数据的HTTP

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

2、接口级脚本开发

1) 单接口测试方法

启动Jmeter

新建线程组

在线程组下新建一个HTTP请求

在HTTP请求中填入接口信息,包括地址、参数、请求方法(GET)等

新建一个查看结果数监听器

运行脚本验证结果,优化脚本(比如可以对参数进行参数化)

2) 接口依赖的测试方法

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

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

具体步骤:

新建一个HTTP请求,命名为点击书名

新建一个HTTP请求,命名为原创列表页随机选择一个书名

提取点击书名接口中的响应数据good_id字段的值,在点击书名下面建立正则表达式来完成。其中正则表达式,通过取出书名ID的值,后续用这个值在需要的时候填入${good_id}即可使用。

在原创列表页随机选择一个书名接口的showid入参出替换为变量${good_id}即可。

我们可以来看查看结果数,看出请求成。

3、JDBC脚本开发

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

复制mysql-connector-java.jar包到JMeter安装目录下的lib子目录中。

在线程组下新建一个配置元件中的JDBC Connection Configuration,并填入必要的信息。

新增一个取样器-JDBC请求,用于JDBC连接。

建议一个监控器-查看结果数。

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

测试计划中新增一个用户定义的变量,取名为user_name,值为pro_test

在JDBC请求中,修改Query Type为Prepared Select Statement

修改查询条件中的条件为?,用于占位符

Parameter value添加用户自定义的变量,变量为测试计划中变量的值

Parameter types中的参数类型,取决于测试计划->用户定义的变量类型。

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

在Database Connection Configuration中的Database URL字段末尾加上 ?allowMultiQueries=true。

在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工作模式中的部分解释如下:

ActiveMQ客户端使用Connection Factory 对象创建一个连接,向消息服务发送消息以及从消息服务接收消息均是通过此连接来进行。

Connection是客户端与消息服务的活动连接。大多数客户端均使用一个链接来进行所有的消息传送

Session 是一个用于生成和使用消息的单线程上下文。它用于创建发送消息的生产者和接收消息的消费者 ,并为所发送的消息定义发送顺序。

客户端使用Message Producer向指定的物理目标发送消息。

客户端使用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来设置运行时的具体配置

View Code

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的java测试框架_性能测试学习之路 (四)jmeter 脚本开发实战(JDBC JMS 接口脚本 轻量级接口自动化测试框架)...相关推荐

  1. metasploit学习之路(四)记一次实战--永恒之蓝(MS017-010)

    在我的metasploit的学习博客中,也算是实操的一篇,可以对使用流程和一些必要的命令进行学习. 永恒之蓝这个漏洞我没有复现过,但是这一次偶然的机会玩了一把. 大佬在讲台上面传授经验,用的是wind ...

  2. apachejmeter_java源码_自定义编写jmeter的Java测试代码

    我们在做性能测试时,有时需要自己编写测试脚本,很多测试工具都支持自定义编写测试脚本,比如LoadRunner就有很多自定义脚本的协议,比如"C Vuser","JavaV ...

  3. Java多线程学习之路(四)---死锁(DeadLock)

    Java多线程学习之路(四)-死锁(DeadLock) 1.定义 死锁就是多个线程在竞争共享资源的时候,相互阻塞,不能脱身的状态(个人理解).其实死锁一定程度上可以看成一个死循环. 举个现实生活中的例 ...

  4. Python从无到有搭建接口(API)自动化测试框架

    目录 1.前言 2.思路 3.正文 一.路径模块-initPath.py 二.配置文件模块-getConfig.py 三.读取用例模块-getCase.py 四.数据库操作模块-operatorDB. ...

  5. typescript学习之路(四) —— ts类的继承(包含es5以及es6的类继承)

    上一文已经写了es5,es6等类的定义,所以本章主要写es5和es6的继承,由于es6的继承和ts的继承如出一辙,只是加了类型定义而已,所以ts的继承稍微写下,不会太详细. 文章目录 es5继承 原型 ...

  6. java编程学习方法_在线学习Java编程的最佳方法

    java编程学习方法 1.简介 Java是使用最广泛的编程语言之一. 根据Github的最新报告 ,Java被列为仅次于JavaScript的第二大最常用的编程语言. 掌握Java的人有很多话题. 好 ...

  7. 并发测试工具_性能测试工具基本工作原理及基本操作流程

    性能测试的基本概念 性能测试:是指在特定情况下测试系统如何执行的.资源的使用.可扩展性和可靠性也是性能测试的范畴.性能测试是性能工程的一个子集,主要发现软件架构以及设计导致的性能问题. 性能测试的目标 ...

  8. 服务器压力测试_性能测试新手误区(四):一切来自录制

    :新书 速递 吴老的java版<selenium webdriver 实战宝典>和python版<selenium Webdriver 3.0 自动化测试框架实战指南>出版了, ...

  9. python模型训练框架_深度学习三大框架(对比)

    人工智能的浪潮正席卷全球,诸多词汇时刻萦绕在我们的耳边,如人工智能,机器学习,深度学习等."人工智能"的概念早在1956年就被提出,顾名思义用计算机来构造复杂的,拥有与人类智慧同样 ...

最新文章

  1. 走过19年,每年千万下载量,科学计算开源库SciPy的前世今生
  2. STM32 基础系列教程 39 - Lwip_tftp
  3. 虚拟机打不开,提示“此主机不支持虚拟化实际模式”的解决方法。
  4. jmeter 配置master控制器压测机
  5. HTML简介及常用标签介绍
  6. 如何获取Android移动终端设备唯一ID
  7. 硬盘助手写入文件的正确提取
  8. MAC docker 使用阿里加速器
  9. astah——UML类图画法
  10. A1008. 数列特征
  11. 精通CSS(5.6.3-end)PixyFairypureCSSToolHintscale
  12. mysql修改游戏,第十二讲 战神引擎游戏列表和公告修改
  13. 最简单的Document解析xml文件
  14. 手机访问电脑文件ftp服务器,怎么用手机直接访问电脑上的视频文件图片等?
  15. PAT10321032 挖掘机技术哪家强 (20 分)
  16. jieba对红楼梦进行分词(一)
  17. Python Folium地理信息可视化案例
  18. 顶级程序员的成长之路2
  19. jQuery入门jQuery API-1
  20. LMS Virtual.Lab二次开发:声学仿真理论基础准备(Python)

热门文章

  1. Windows下Lua安装环境配置教程
  2. Linux内存管理 brk(),mmap()系统调用源码分析1:基础部分
  3. Tun/Tap接口教材-[翻译:Tun/Tap interface tutorial]
  4. linux空间支持伪静态,[转载]Linux下nginx支持.htaccess文件实现伪静态的方法
  5. VUE3(setup响应式函数系统API)
  6. python之集合操作
  7. 网页粒子背景插件 -Canvas-nest.js
  8. 6 频率_6年了 AMD二代推土机CPU频率再次冲击8.2GHz
  9. python esp8266_浅谈MircoPython---ESP8266
  10. python怎么背景实现循环_在Python的一段程序中如何使用多次事件循环详解