作为一个很“不专业”的dev,接到一个任务,做性能测试,在50k--300k 数据的系统上测试某些功能并发5个线程能否成功?
所以,到底能否成功?
1.jmeter 是什么
官方文档:https://jmeter.apache.org/
简言之:基于java 的压测工具
2.修改语言:
3.明确测试需要哪些步骤:
1)连接到环境,获取token
创建一个线程组(Thread Group )
在线程组的基础上添加http 信息头管理器
信息头里面添加一些信息:
添加一个用户定义的变量存放http rest 中涉及到的变量的信息。host 名,登录名,密码都可以在这里设置成变量,供之后使用
2)连接到db 获取各个 entity id 备用
创建数据库的连接,填写各种配置信息
3)从数据库中获取entity id 序列。
创建 JDBC request
db1 是上一步创建db connection 的时候填写的变量的名字。这里连接db 的时候用到了。这里填写SQL,获取500 个entity 的id
类型是SystemElement ,
${__Random(1,500,SystemElementIndex)} 这个表达式用来获取1-500中间任何一个数并把这个随机数的值给SystemElementIndex 这个变量供之后使用。中间的下划线需要注意一下,不要自己手动输入,要用jemeter 里面的函数去自动生成。选项--》函数助手对话框
执行之后获取到的数据(可以通过 添加--》监听器--》查看结果树 去查看下面结果):
4)更新entity
新建HTTP 请求
设置http 请求去更新entity 内容,此时就用到了最初设置的hostname 这个变量。
${__V(SystemElementId_${SystemElementIndex},)} 这里用到了内嵌函数。
函数中的下划线也要用函数助手里面去自动生成,否则自己手动打入,会出错。
上一个步骤设置了从数据库中获取500个entity 的id 值。这些值如果要被引用需要用SystemElementId_1 、SystemElementId_2 类似这种方式才能真正获取到对应的id 的值。所以在上一步骤设置了一个变量 SystemElementIndex 去随机获取某个id。
5)设置线程数,当然中间过程update entity 的时候可以自己添加一个循环,添加循环次数之类的。
最后还可以通过 添加--》监听器--》图形结果,去查看执行之后的结果图。以上便是初识jmeter~~~