jmeter中form怎么十六进制转换器在线为raw

HTTP Raw Request
Weak points of original HTTP Request
JMeter's original
is quite convenient to use. But in advanced load testing you may notice several drawbacks:
indirect cookie and headers manipulation, though many Web applications rely on headers and cookies widely
if you know exact HTTP request that you want to feed to your server, you'll spend a lot of time setting it up in HTTP Request
TCP Sampler does not support measuring latency separately from response time
when you send or receive large files, you experience OutOfMemory issues
Your test uses a non standard method like &PURGE& (Varnish)
really full control over request data
option to send file contents directly to network (lower memory usage on big files) ()
option to limit response data stored in results (lower memory consumption)
actually it is raw TCP sampler, so you can try to test non-HTTP servers
Using Raw Request
Together with obvious options like hostname and port you should know that:
all newlines (\r\n, \r and \n) in request data are converted to \r\n sequence to have correct HTTP request
you may not specify data to send, sampler will open connection and wait for data to receive
timeout works both for connection and data receiving, triggers when no packets received from server in timeout period
file contents sent without variables processing
response parsing, if enabled, is very simple for performance reasons, it treats first line as HTTP response line
&keep connection open& setting just keeps TCP connection open after request, each sampler has its own connection for now unlike original JMeter samplers
set JMeter property kg.apc.jmeter.samplers.ResultDataLimit to limit data stored in JMeter results. Response still read from network, but not fully stored in results.
Read Buffer Length
UDP Request reads response using buffer with default length of 4KB.
You may override this value by setting JMeter property kg.apc.jmeter.samplers.ReceiveBufferSize in bytes.
Raw Data Source
If you using Raw Request in non-HTTP communication (which is possible),
or just advanced HTTP requests with custom newlines,
you may need to pass binary data in request. This is impossible directly from GUI,
but you can specify such data with variables, and there's even special pre-processor
to read variable from file: . Attaching this pre-processor
to your test plan gives you fast reading of any data into variable, which may be used in Raw Request.
and project contributors
Licensed under关注51Testing
从Fiddler抓包到Jmeter接口测试(简单的思路)
发表于: 10:55 &作者:白细胞 & 来源:51Testing软件测试网采编
推荐标签:
  Fiddler下载和配置安装  1、从网上下载fiddler的安装包即可,直接默认,一直点击下一步,直至安装完成。  2、  3、安装完成后直接打开Fiddler  在菜单栏Tools-&Fiddler Options-&Connections,勾选Allow remote computers to connect,默认的端口号为8888,这里不需要修改,在修改代理设置时注意与这里一致。  1、查看pc本机ip后,手机设置代理,填入pc本机的ip和端口号8888,之后手机上的请求我们都可以抓包了。  2、因为我们一般在时,都是看的同一域名下的,所以我们可以使用,Filters里面的各种筛选规则,来筛选我们想要的请求,以免被其他的不相干请求影响。  3、在右上方结果框中选 择Inspectors-&Raw即可看到请求的URL、Cookie和Host等有关信息。在右下方结果框中选择JSON就能看到请求返回的 JSON字符串。这里的JSON字符串是我们判断请求是否成功的重要依据。  Fiddler抓包实例  的下载配置和安装  因为Jmeter是依赖jdk的,故需要先安装jdk,  jdk的安装方法和环境变量的配置,可以参照如下链接:  http://jingyan.baidu.com/article/bea41d435bc695b4c41be648.html  Jmeter官网下载,注意根据自己本机的位数下载  http://jmeter.apache.org/  Jmeter不用安装,下载后,直接解压即可  打开jmeter,添加一个线程组  使用Jmeter进行  1、修改名称。线程组名称并不重要,根据自己的需要修改就行,主要是方便自己看。由于我们执行脚本一般在需要的时候执行一次就可以,并不需要其他的配置,所以下方的线程属性就保持默认值即可(在进行的时候就需要进行配置了)。  2、添加HTTP请求。右键线程组选择HTTP请求。  3、因为请求需要的请求头,请求体,请求url  先建一个请求头,直接从fiddler里面拿就可以了,填写到HTTP信息头管理器里面去。  1、现在需要构建请求体  新建一个http请求  接下来我们看看构建一个请求究竟需要填写什么,对应我们fiddler抓取的请求  请求参数的填写方式可以分为以下两种方式,两种方式各有利弊。  · Parameters:录入比较麻烦,但是容易查看和修改  ·&Body Data:录入方便,后期查看修改不直观
搜索风云榜
( 11:22:17)
51Testing官方微信
51Testing官方微博
测试知识全知道一、Jmeter简介
1、轻量级测试工具2、运行的时候必须安装jdk3、免安装,安装包解压即可使用4、跨平台在Linux、windows、macos均可使用&
二、Jmeter Http请求常用操作
参照上篇初学postman中的常用操作示例,在Jmeter中制作脚本&
1、如何创建http接口脚本
& &(1) 添加线程组& &(2) 添加http请求& &(3) 在http请求中写入接口url、路径、请求方式、参数& &(4) 添加查看结果树& &(5) 调用接口、查看返回值
2、get请求
get请求的参数不是直接拼在url里,而是写在Parameters里。
3、post请求
在Parameters中填入参数即可。
4、post请求,json入参
将json串填入Body Data中。
5、文件上传
选择Files Upload来做文件上传,参数名称填file与接口文档保持一致,编码类型选择utf-8避免乱码。
6、文件下载
添加一个http请求:右键线程组,添加-Sampler-HTTP请求写好http请求中的url和路径
添加beanshell,获取到返回的文件内容,保存到一个文件里面。右键线程组,添加-Sampler-BeanShell Sampler
& & & &beanshell是下载脚本,下载的话,有一步是要把文件保存到咱们本地的,这个jmeter没有现成的东西可以用,就得自己写beanshell来实现,把文件保存到本地。
& & & &当然你如果要写beanshell的话,你得会它的语法,它就是java写的。不过也不用愁不会写java咋整,这个保存文件的是死格式就这么写,记住就行了,需要下载的时候复制过去就行。
1 import java.io.*;
4 byte[] result = prev.getResponseData();
//这个是获取到请求返回的数据,prev是获取上个请求的返回
6 String file_name = "C:\\Users\\bjniuhanyang\\Desktop\\BaiDu.jpg"; //代表存放文件的位置和文件名
8 File file = new File(file_name);
10 FileOutputStream out = new FileOutputStream(file);
12 out.write(result);
14 out.close();
7、http接口脚本添加header
右键点击http请求,添加配置元件,选择HTTP信息头管理器,添加header。
8、http接口脚本添加Cookie
右键点击http请求,添加配置元件,选择HTTP Cookie管理器,添加Cookier。
三、Jmeter WebService请求常用操作
1、如何创建webservice脚本
可以百度搜索“天气预报WebService”找到一个天气预报的wsdl地址,做简单的联系
& &(1) 在soapui中新建已经soap项目,导入wsdl地址,获取到请求报文、SOAPAction和请求url(在soapui的raw中能找到)
& &(2) 打开jmeter新建一个线程组& &(3) 新建一个SOAP/XML-RPC Request& &(4) 把url、soapaction和请求报文写到soaprequest中& &(5) 调用接口、查看返回值
2、若导入wsdl文件或者url报错
在project测试中,如果引入wsdl报如下的错误:
Error loading [http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl]: org.apache.xmlbeans.XmlException: java.io.CharConversionException: Characters larger than 4 bytes are not supported: byte 0xb1 implies a length of more than 4 bytes
解决方案:关闭程序并找到SoapUI的安装位置中的SoapUI-4.6.4.vmoptions这个文件,在末尾加入
-Dfile.encoding=UTF8 可解决
四、Jmeter中的乱码问题解决
1、 使用Jmeter进行测试,返回结果乱码
解决方案:
在安装目录/bin/ jmeter.properties中将& &&sampleresult.default.encoding=ISO-8859-1
改为& & &sampleresult.default.encoding=utf-8
2、Jmeter编写post脚本中Body Data输入中文时乱码
这不是乱码,而是因在&3.0 版本对Body Data 进行了优化,导致默认字体(Consolas)不支持汉字显示
解决方案:
修改配置文件{JMETER_HOME}\bin\jmeter.properties 中的默认显示字体& &#jsyntaxtextarea.font.family=Hack
改为系统支持的中文字体(可进入系统目录【控制面板\所有控制面板项\字体】查看)即可。
jsyntaxtextarea.font.family=宋体
阅读(...) 评论()一、Jmeter简介
Jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,不像loadrunner那样体积大,是一个比较轻量级的测试工具,使用起来非常的简单,深受测试人员的喜爱,但是它的测试报告没有loadrunner的那么详细,看起来没有那么的直观。因为它是java开发的,所以运行的时候必须要安装jdk才可以,jmeter是免安装的,拿到安装包之后直接解压就可以使用了,它也是跨平台的在linux、windows、macos上都可以使用。
二、Jmeter-http接口脚本
1、添加线程组
2、添加http请求
3、在http请求中写入接口url、路径、请求方式、参数
4、添加查看结果树
5、调用接口、查看返回值
Jmeter-http接口脚本添加header:
Jmeter-http接口脚本添加cookie:
在这里添加cookie的时候,不要忘了把域这里写上接口的url,否则是不生效的,还有一种方法也是可以添加cookie,那就是在header里面添加一个key是cookie,值为cookie的值就好了,两种方法都可以
三、Jmeter-webservice脚本
1、在soapui中新建已经soap项目,导入wsdl地址,获取到请求报文、SOAPAction和请求url(在soapui的raw中能找到)
2、打开jmeter新建一个线程组
3、新建一个SOAP/XML-RPC Request
4、把url、soapaction和请求报文写到soaprequest中
5、调用接口、查看返回值
四、Jmeter-参数化
参数化是干嘛的呢,咱们在调用接口的时候,有入参,那参数里面的值如果经常变化的话,就得每次去改了,很麻烦,这时候咱们就把需要经常变的值,改成可以变化的或者是咱们提前设置好的一些值,这样的话,调用的时候就不用每次都改它的值了
1、Jmeter参数化的方式有三种
用户定义的变量——这种就是为了方便管理参数,只能有一个值,比如说ip地址不经常变化的
函数生成器——函数生成器可以参照一定的规则生成数据,这样的比如说生成一些随机数
从文件中读取——文件读取就是事先写好一些数据,然后从文件中读取,这样的话,比如说登录接口,账号和密码 & & & & & 都是我们事先注册好的
2、用户定义的变量
value就可以了,key就是这个参数的名称,也就是你在脚本里面取的值,value就是具体值了。在取参数化的值的时候,使用${name}这样去取值,name就是你取的变量名称。
3、函数生成器
函数助手的话,可以按照规则生成一些参数,比如说随机数取当前时间,最常用的就是这两种。
随机数__Random——可以在你指定的一个范围内取随机值
取当前时间__time——如果在有一些需要传时间的情况下可以使用,日期格式是:
& & & & & & & & & & & & & & & & & & & &yyyy-MM-ddHH:mm:ss
& & & & & & & & & & & & & & & & & & & &年-月-日-小时:分钟:秒
取唯一id,__UUID——这个就是每次会生成一个随机的uuid,都是唯一的
4、从文件中读取
从文件中读取的话,三个步骤
& & & & 1)、读取文件
& & & & 2)、取文件内容里面的参数,给它一个名字
& & & & 3)、使用值
从文件读取的话,需要在线程组里面添加一个CSV Data Set&Config,它就是做前面两步的操作的
五、Jmeter断言
断言——它是用来检查返回结果对不对的。
用来验证结果是否正确,如果正确的话,就代表这个请求的返回是正确的,如果没有的话就代表这个请求的结果和我们预期的不一致,这样我们就可以通断言来检查返回结果,测试是否通过。
六、Jmeter关联
我们知道断言是从返回结果中检查有没有预期的值,现在有一个问题,有一个购买商品的接口,必须要先登录才能够购买商品, 那么你调用接口的时候怎么知道是否已经登录了,一般这样的都会在调用的时候传一个token的参数,服务端判断token是否过期或者token是否正确,如果正确的话,那就是登录成功了就可以买东西了。
那么这样的话,你就要先获取到token,token是从呢来的呢,肯定是从登录接口返回的,因为要先登录嘛,那这样就得先调用登录接口, 获取到token,然后把获取到的token传给购买商品的这个接口。
关联就是做这个事的,它就是获取到返回的值,然后保存起来,给别的请求使用,或者做一些其他的处理。
=====Jmeter中的关联是通过正则表达式提取器来完成的。
通过上面的关联就可以把返回中我们想要的值抓到了,给其他请求使用的时候,直接使用${name}即可,name就是你关联的时候设置的变量名。
七、Jmeter操作mysql
1、Jmeter操作mysql步骤:
1)、导入jdbc的jar包,因为jmeter本身不能直接连接mysql,所以需要导入第三方的jar包,来连接mysql
2)、创建数据库连接配置,mysql的url、端口号、账号、密码
3)、写sql,执行sql
4)、查看结果
2、Jmeter数据库驱动列表
com.mysql.jdbc.Driver
jdbc:mysql://host:port/{dbname}?allowMultiQueries=true
org.postgresql.Driver
jdbc:postgresql:{dbname}
PostgreSQL
oracle.jdbc.driver.OracleDriver
jdbc:oracle:thin:user/pass@//host:port/service
com.microsoft.sqlserver.jdbc.SQLServerDriver
net.sourceforge.jtds.jdbc.Driver
jdbc:sqlserver://IP:1433;databaseName=DBname
jdbc:jtds:sqlserver://localhost:1433/"+"library"
3、Jmeter配置mysql连接
1)、添加一个JDBC Connection Configuration
2)、配置mysql连接池的名称,后面发sql请求的时候指定连接哪里
3)、数据库的url:jdbc:mysql://192.168.1.116:3307/bugfree?
allowMultiQueries=true
4)、数据库驱动:这里就是指定连接什么类型的数据库,mysql、oracle、SqlServer等等
5)、账号密码
八、Jmeter操作mongodb
1、Jmeter操作mongodb步骤:
1)、添加一个MongoDB&Source&Config,配置mongodb连接信息,指定ip和数据源
2)、添加一个mongodb的请求脚本,指定数据源
3)、写查询语句
4)、查看结果
、Mongodb操作语句
show&查看所有数据库
use&选择一个数据库
查看所有集合,也就是表
db.collection.find();#查询所有数据
db.collection.find({"name":"mongodb"});#查询指定的条件
db.collection.insert({"name":"mongodb","age":18});#插入数据
db.collection.update({“name”:“mongodb”},{$set:{“createtime”:“”}});#更新数据
db.besttest.remove({“name”:“mongodb”});#删除指定数据
九、Jmeter压力测试
做压力测试也就是多少用户一起去操作,也就是设置多少并发,运行多久。
1、压力测试场景设置
一般我们在做压力测试的时候,分单场景和混合场景,单场景也就是咱们压测单个接口的时候,多场景也就是有业务流程的情况下,比如说一个购物流程,那么这样的场景就是混合场景,就是有多个接口一起来做操作。
1)、单场景,一个请求就可以了
2)、混合场景,多个请求
3)、压测时间,一般场景都是运行10-15分钟,如果是做疲劳测试的话,可以压一天或者一周,根据具体的情况来定
2、压力测试数据准备
在做压测的时候,数据量少和数据量大的情况下,测试的结果是不一样的,所以,我们在设计场景的时候是要考虑到这种情况的,要测试数据库中数据量大和数据量小的情况,如果是要测试数据量大的情况下,就要造数据了,造数据可以使用jmeter,操作数据库来造数据,也可以使用python连接数据库,批量的造数据。
3、压力测试结果查看
查看结果关注的几个指标
1)、tps是每秒钟处理的请求数,也就是指服务器的处理能力,tps越高说明服务器处理能力越好
2)、响应时间,也就是每个请求的处理时间
3)、并发用户数&&也就是多少并发
十、Linux下运行jmeter压力测试
我们在做测试的时候,有时候要运行很久,公司用的测试服务器一般都是linux,就可以运行在linux下面,linux下面不能像windows一样有图形化界面,那怎么运行脚本呢,就先在windows上把脚本做好,然后在linux下运行即可,linux下运行jmeter是在jmeter的bin目录下的jmeter.sh这个shell脚本。
sh&jmeter.sh -n –t&a.jmx&-l&res.jtl
-n & & & &&代表以没有图形化界面启动
-t & & & & &代表后面是测试脚本
a.jmx & &&也就是我们做好的jmeter脚本
-l & & & & &&代表测试结果
res.jtl & &&就是测试结果文件
查看结果的话,在查看结果树视图中导入这个res.jtl就可以查看到测试结果了
1、Jmeter添加负载机
我们在压测的时候,可能并发比较大, 一台机子已经启动不了那么多并发了,这个时候我们就要使用多台机子一起来发压力,就要添加压力机,添加压力机怎么添加呢,首先要在
做压力机的机子上启动jmeter的代理,然后做为控制机的机子上添加上压力机的ip即可。
1)、Jmeter的bin目录下有一个jmeter-server,启动它即可,
windows机子作为压力机的话,运行jmeter-sever.bat,linux作为压力机的话,运行jmeter-server
2)、然后在作为控制机的jmeter配置文件里添加压力机ip即可,
jmeter的配置文件在bin目录下jmeter.properties,
添加压力机的时候
,在配置文件里面找到remote_hosts添加ip,
然后重启jmeter就可以看到远程压力机了后重启jmeter就可
3)、在配置文件里面添加之后,重启jmeter,在运行的时候,就可以看到压力机的ip了,可以选择他来运行这个脚本,全部运行的话,也就是所有压力机上的全部都启动,就选择远程全部启动,就所有的压力机就都运行了。
阅读(...) 评论()一、性能测试的概念
性能测试是通过自动化的测试工具模拟多种正常峰值及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。
通过负载测试,确定在各种工作负载下系统的性能,目标是当负载逐渐增加时,测试系统各项性能指标的变化情况。压力测试时通过确定一个系统的瓶颈或者不能接受的
性能点,来获取系统能提供的最大服务级别的测试。性能测试主要包括负载测试、强度测试、容量测试。
二、性能测试的指标
web服务器:
Avg Rps: 平均每秒的响应次数 = 总请求数 /秒数;
Avg time to last byte per terstion(mstes): 平均每秒业务脚本的迭代次数;
Successful Rounds: 成功的请求;
Failed Rounds: 失败的请求;
Successful Hits: 成功的点击次数;
Failed Hits: 失败的点击次数;
Hits Per Second: 每秒点击次数;
Successful Hits Per Second:每秒成功的点击次数;
Failed Hits Per Second: 每秒失败的点击次数;
Attempted Connections: 尝试连接数;
Throughput: 吞吐率;
数据库服务器:
User Connections: 用户连接数,也就是数据库的连接数量;
Number of Deadlocks: 数据库死锁;
Butter Cache Hit: 数据库Cache 的命中情况;
三、性能测试的流程
1.明确性能测试需求;
2.制定性能测试方案;
2.1.测试范围
2.2.入口标准
2.3.出口标准
2.4.测试策略(测试环境指标、存量数据、业务场景、测试通过标准等)
2.5.测试风险
2.6.测试资源
3.设计性能测试用例;
4.执行性能测试用例;
5.分析性能测试结果;
6.生成性能测试报告;
四、性能测试的工具--JMeter
为什么是JMeter而不是LoadRunner呢
1.更少的投入,针对有限的测试成本;
2.开源工具的可定制性无可比拟;
3.通过社区得到最大程度的支持。
JMeter是Apache组织开发的基于Java的压力测试工具。最初被设计用于web应用的测试,后来扩展到其他测试领域。可用于测试静态和动态资源,如文件、Java服务
程序、Java对象、数据库等。JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证被测程序返回了期望的结果。而且为了保证最大限度的灵活性,
JMeter允许使用正则表达式创建断言。
五、JMeter的特性
1.支持对多种服务类型进行测试;
2.支持通过录制/回访方式获取测试脚本;
3.具备高可移植性,是纯Java 程序;
4.采用多线程框架,允许通过多个线程并发取样及通过独立的线程组对不同的功能同时取样;
5.精心设计的GUI支持高速用户操作和精确计时;
6.支持缓存和离线的方式分析/回放测试结果;
7.高扩展性;
六、JMeter常用测试元件
用来管理执行性能测试所需的JMeter线程。
a.可以设置线程数量
b.设置线程启动周期
c.设置执行测试脚本的循环次数
JMeter有两种类型的控制器:采样器和逻辑控制器。
采样器被用来向服务器发送请求。JMeter采样器包含:FTP Request、HTTP Request、JDBC Request等。
逻辑控制器用来控制JMeter的测试逻辑,特别是何时发送请求。
监听器提供了对JMeter在测试期间收集到的信息的访问方法。
JMeter线程在发送请求之间没有间歇,通过添加定时器,设定请求之间应该间隔的时间。
可以使用断言来检查从服务器获得的响应内容。
6.配置元件
配置元件与采样器紧密关联。虽然配置元件并不发送请求,但可添加或修改请求。
7.前置处理器
会在采样器发出请求之前做一些操作。
8.后置处理器
会在采样器发出请求之后做一些操作。
JMeter执行顺序:配置元件=》前置处理器=》定时器=》采样器=》后置处理器=》断言=》监听器
七、辅助测试工具开发
下面的代码(工具:sqlexec)是一个用来向数据库(目前支持Oracle、Mysql)插入测试数据的工具。支持多线程,可插入千万级别测试数据。在后续压测中会用到该
工具,工具开发尽量简单,一个工具只完成一个任务,同时不要重复制造轮子。
package d706;
public class Test_DB_Insert extends Thread{
public static String SQLTEXT =
// 待处理的sql语句
private InputStream ins =
// 用于读取配置文件
private Properties property = new Properties(); // 读取数据库配置文件
private String databaseType = // 数据库连接类型
private String driver =
// 数据库驱动
private String url =
// 数据库连接
private String uName =
// 数据库登录用户名
private String pwd =
// 数据库登录用户密码
int numOfTestR
// 插入数据条数
Connection con =
// 连接数据库
PreparedStatement statement =
// 获取数据库操作对象
Test_DB_Insert(String sql){
// sql语句以参数的形式,在构造实例的时候传入
private void init(){
// 初始化配置文件
ins = new FileInputStream("./d706/dbconf.properties");
}catch(FileNotFoundException ffe){
ffe.printStackTrace();
property.load(ins);
}catch(IOException ie){
ie.printStackTrace();
}finally{ try{ if(ins != null) ins.close(); }catch(IOException ie){ ie.printStackTrace(); } }
databaseType = property.getProperty("databasetype"); // 获取配置文件中设置的连接数据库类型
if("MYSQL".equals( databaseType.toUpperCase() )){
// 判断连接数据库类型
driver = property.getProperty("driver_mysql");
url = property.getProperty("url_mysql");
uName = property.getProperty("db_userName_mysql"); // 连接数据库的用户信息;
pwd = property.getProperty("db_pwd_mysql");
}else if("ORACLE".equals( databaseType.toUpperCase() )){
driver = property.getProperty("driver_oracle");
url = property.getProperty("url_oracle");
uName = property.getProperty("db_userName_oracle");
pwd = property.getProperty("db_pwd_oracle");
synchronized
void Insert_DB(){
Class.forName( driver );
// 注册驱动;
}catch(ClassNotFoundException cf){
cf.printStackTrace();
con = DriverManager.getConnection(url,uName, pwd); // 获取数据库连接
con.setAutoCommit(false);
// 关闭事务自动提交
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss:SS");
// 记录执行时间
TimeZone t = sdf.getTimeZone();
t.setRawOffset(0);
sdf.setTimeZone(t);
Long startTime = System.currentTimeMillis();
System.out.println("插入数据操作开始...");
statement = con.prepareStatement(SQLTEXT); //创建数据库操作对象
* "INSERT INTO TEST_DB(name,sex,nickname,test1,test2,test3,test4," +
"test5,test6,test7,test8,test9,test10,test11,test12,test13,test14," +
"test15,test16,test17,test18,test19,test20,test21,test22,test23," +
"test24,test25,test26,test27,test28,test29,test30,test31,test32," +
"test33,test34,test35,test36,test37,test38,test39,test40,test41," +
"test42) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?," +
"?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
numOfTestRecords = 1000;
//插入的测试数据量;
for(int i = 0; i&numOfTestR i++) {
statement.setString(i + 1, "DBTest-" + i);
//statement.setString(2, "" + i%2);
//0表示男 1表示女
statement.addBatch();
// 把一个SQL命令加入命令列表
//statement.executeUpdate(); //执行SQL;
statement.executeBatch(); //执行批量更新
con.commit();//语句执行完毕,提交事务
//int[] ref = statement.executeBatch();
//if(ref[numOfTestRecords-1] == 0){System.out.println("插入数据操作完成");} //
System.out.println("插入数据操作完成");
Long endTime = System.currentTimeMillis();
System.out.println("插入"+numOfTestRecords+"条数据,"+"用时(时:分:秒:毫秒)" +
sdf.format(new Date(endTime - startTime))); //
}catch(Exception e) {
System.out.println("异常: " + e.toString());
e.printStackTrace();
if(statement != null){
// 关闭数据库操作对象
statement.close();
}catch(SQLException se){
se.printStackTrace();
if(con != null){
// 关闭数据库连接
if(con.isClosed()){con.close();}
}catch(SQLException se){
se.printStackTrace();
public void run() {
// 类外调用
Test_DB_Insert ti = new Test_DB_Insert(SQLTEXT); // 构造实例
ti.init();
ti.Insert_DB(); // 执行插入数据
// public static void main(String[] args){
Test_DB_Insert ti = new Test_DB_Insert(SQLTEXT);
ti.init();
ti.Insert_DB();
//执行插入数据
// 针对增删查改,可放到一个SQL处理类(Test_DB_crud)中,判断传入的SQL字符串,然后交给对应的方法去执行并在控制台输出结果。 在Test_DB_Control类
中只是new一个Test_DB_crud类,形成了Test_DB_crud对Test_DB_Control的依赖关系。
package d706;
public class Test_DB_gui extends JFrame implements ActionListener{
private static final long serialVersionUID = 1L;
public static String SQLTEXT = // 界面输入的sql文本
private JScrollPane js =
private JPanel jp1 =
private JTextArea ta =
private JButton jb = new JButton();
public Test_DB_gui(){
this.setTitle("sqlExecV1.0");
ta = new JTextArea();
ta.setText("");
js = new JScrollPane(ta);
jp1 = new JPanel();
jp1.setLayout(new BorderLayout());
jp1.add(js,BorderLayout.CENTER);
jb = new JButton();
jb.setText("执行");
jb.addActionListener(this); // 添加监听
jp1.add(jb,BorderLayout.SOUTH);
this.getContentPane().add(jp1);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setBounds(400,200,700,500);
this.setVisible(true);
jb.addActionListener(new ActionListener(){
// 按钮事件
public void
actionPerformed(ActionEvent e) {
// 匿名内部类的形式实现按钮事件
SQLTEXT = ta.getText(); // 将要执行的SQL设置成静态的
Multi_process mp = new Multi_process(SQLTEXT); // 在构造实例时,传入sql
mp.run(); // 运行程序
//System.out.println( mp.SQLTEXT +"***"); // 控制台输出
public void
actionPerformed(ActionEvent e) {
// 实现 ActionListener 接口,需要实现的方法
public void run() {
// 运行方法
Test_DB_gui np =
new Test_DB_gui();
System.out.println( np.getTitle() );
public class Multi_process {
public static String SQLTEXT =
// 待处理的sql语句
public Multi_process(String sql){
// sql语句以参数的形式,在构造实例的时候传入
void run(){
Test_DB_Insert
td1 = new Test_DB_Insert(SQLTEXT); // 创建实例
Test_DB_Insert
td2 = new Test_DB_Insert(SQLTEXT);
Test_DB_Insert
td3 = new Test_DB_Insert(SQLTEXT);
Test_DB_Insert
td4 = new Test_DB_Insert(SQLTEXT);
Thread t1 = td1; // 创建线程
Thread t2 = td2;
Thread t3 = td3;
Thread t4 = td4;
t1.start(); // 启动线程
t2.start();
t3.start();
t4.start();
public class Test_Exec {
* 程序入口
public static void main(String[] args){
Test_DB_gui np = new Test_DB_gui();
在Linux下执行,需打成jar包,通过shell脚本执行。以下是sqlexec的startup.sh执行脚本.
#Author: bruce
#Version: sqlExecv1.0
read -p "please input jar file path:" jarpath
java -jar "$jarpath"
echo "running sqlExec."注:
今天突然想到测试数据的一个问题。即造出来的数据应该更接近真实,而不是都一样。所以想利用配置文件的方式,在配置文件中写好SQL,程序读取执行配置文件
并动态生成SQL,完成插入测试数据。这样就解决了测试数据不够真实,可能影响测试结果的问题。---------日
Jmeter教程 简单的压力测试
JMeter简单的使用(3.0+)-性能测试(压力)
jmeter-性能测试学习笔记1—结果分析
Jmeter 插件说明
没有更多推荐了,

我要回帖

更多关于 rawform 的文章

 

随机推荐