|
最近改用Jmeter了,记录点东西
#和LoadRunner的区别
##编写脚本
LR提供.net,java,c三种语言的支持,Jmeter只支持Java一种语言的开发,直接提供api的只是其中一种叫JavaRrequest的Sampler
只要继承他的AbstractJavaSamplerClient类,打个包丢lib下面,就可以了,有点像Junit
不过开源项目嘛,各种Processer,Listener之类的东西都是可以自定义开发的,就是麻烦一点
##接口
LR里面有个transcation的概念,主要有三个属性:name,duration,status.
通过它提供的api,可以在业务开始的时候调用lr.start_transcation(name)开始一个事件,在结束的时候lr.end_transcation(name,passOrNot)来完成一个事件,这样就自动计算了处理花费的时间,并记录了最终状态
,在contorller上就会体现出name业务的一次执行,TPS或者RPS图标上可以观察到相应的曲线
Jmeter里也有这么个东西,不过因为Jmeter里的业务处理部分叫Sampler,所以叫SampleResult.
每个Sampler每次执行,都需要return一个SampleResult.这个Result包含的内容很多,不光上面的包含name,duration,status,还可以保存request和respones,而且还能嵌套,一个Result可以包很很多SubResult.
最终这些结果都被"Listener"接收到(Sampler,Listener的概念不说了,网上google一下一堆)
主要接口
- ampleStart()
- sampleEnd()
- setSuccessful()
- setSampleLabel()
- setRequestHeaders()
- setResponseData()
复制代码 ##监控,结果展示和分布式
这方面Jmeter相比来说太弱,不说了
推荐个插件jmeter-plugin
Transactions per Second
Response Times Over Time
PerMon Metrics Collector
##多线程
LR里面有个叫Vuser的东西,一个Vuser可以认为是一个独立的线程,也可以设置让他是一个独立的进程,不设置默认50个Vuser一个进程.每个Vuser是一个测试脚本的完整实例.
顺便说一句,LR的api只有从主线程里调用才起作用,别的现成调用都不干活,不过这都不是事
Jmeter么...... 一个测试计划下面可以有多个线程池,线程池是用来执行各种Sampler的,可以设置线程的数量,执行次数
每个线程会都会把线程池下面的东西(sampler,controller之类的)顺序执行一遍
##上下文
LR没有
Jmeter通过JMeterContextService.getContext()可以获得一个JMeterContext,这里面能包含一个工作线程中的大部分有用的信息,比如:
getPreviousResult()获取上一个sampler的结果
getVariables()获得一个JMeterVariables,这个东西就是个Map,Value是个Object,这样可以在线程里任何地方存取你需要的任何类型,很灵活也很好用
未完待续...
目前,个人感觉性能测试还是LR好用,可惜收费,还很贵,而且只能Windows
Jmeter怎么看怎么像个自动化接口测试的东西
|
评分
-
查看全部评分
|