6.5 取样器
1 JDBC Request
通过右键点击菜单,选择“添加->取样器->JDBC Request”。如图47所示。
图47 JDBC Request
- Variable name Bound to pool:这里写入数据库连接池的名字,必须与JDBC Connection
Configuration名字保持一致。
- Query Type:SQL语句类型,包含以下10个。
Ø Select statement。这是一个查询语句类型。如果JDBC Request中的Query内容为一条查询语句,则选择这种类型。只执行第一条select语句。如果需要多个查询语句(不使用参数的情况下)可以放在一起顺序执行,需要设置Query Type为:Callable
Statement。
Ø Update statement。这是一个更新语句类型(包含insert和update)。如果JDBC
Request中的Query内容为一条更新语句,则选择这种类型。如果该类型下写入多条update语句,依然只执行第一条。
Ø Callable Statement。这是一个可调用语句类型,Callable Statement 为所有的 DBMS
提供了一种以标准形式调用已储存过程的方法。
Ø Prepared Select Statement。Statement用于为一条SQL语句生成执行计划,如果只执行一次SQL语句,statement是最好的类型。Prepared Statement用于绑定变量重用执行计划,对于多次执行的SQL语句,Prepared Statement是最好的类型。生成执行计划极为消耗资源,两种实现速度差距可能成百倍的。
Ø Prepared Update Statement。Prepared Update Statement和Prepared Select
Statement的用法是一样的。
Ø Commit。Commit的意思是,将未存储的SQL语句结果写入数据库表。
Ø Rollback。Rollback指的是:撤销指定SQL语句的过程。
Ø AutoCommit(false)。MySQL默认操作模式就是AutoCommit自动提交模式。表示除非显式地开始一个事务,否则每条SQL语句都被当做一个单独的事务来自动执行。AutoCommit(false),即将用户操作一直处于某个事务中,直到执行一条commit提交或rollback语句才会结束当前事务重新开始一个新的事务。
Ø AutoCommit(true)。这个选项的作用和上面一项作用相反,即:无论何种情况,都自动提交将结果写入,结束当前事务开始下一个事务。
Ø 编辑。JMeter中的JDBC请求中的SQL语句是无法使用参数的,比如:SELECT *
FROM {table_name} 是无效的。如果需实现同时多个不同用户使用不同的SQL,可以通过把整条SQL语句参数化来实现。(把SQL语句放在csv文件中,然后在JDBC Request的Query 中使用参数代替 {SQL_Statement})。
- Query:里面填入查询数据库数据的SQL语句。
- Parameter values:数据的参数值,与Parameter types中的类型要一一对应。
- Parameter types:数据的参数类型。对于Java sql数据类型请参见https://docs.oracle.com/javase/6/docs/api/java/sql/Types.html。
- Variable names:保存SQL语句返回结果的变量名,如果查询结果有多列,可以设置多个变量,以逗号分隔。
- Result variable name:创建一个对象变量,保存所有返回结果。
- Query timeout(s):查询超时时间。
- Handle ResultSet:定义如何处理由callable statements语句返回的结果。
6.6线程组
1 SetUp线程组
SetUp线程组用于测试之前的初始化操作。通过右键点击菜单,选择“添加->线程组(用户)->SetUp线程组”而获得。如图49所示。
图49 SetUp线程组
图50 teatDown线程组
界面与设置和线程组完全一致。
2 teatDown线程组
teatDown线程组用于测试之后的收尾操作。通过右键点击菜单,选择“添加->线程组(用户)->teatDown线程组”而获得。如图50所示。
界面与设置和线程组完全一致。
7 总结
本章我们利用函数助手mdash;mdash;散列函数处理了对密码的散列;了解了什么是CSRF攻击以及CSRF token的防范原理,并且学习了如何处理CSRF token;接下来我们介绍了几种断言,确保测试的结果与预期的结果一致;我们学习了如何使用“CSV Data Set Config”或“JDBC”对用户名和密码进行参数化。最后我们对。
- 函数助手:散列函数。
- 后置处理器/提取器:正则表达式提取器和边界提取器。
- 断言:响应断言、BeanShell断言、断言持续时间、XML断言、XPath断言和XPath2
Assertion。
- 配置元件:CSV Data Set Config 、JDBC 连接设置
- 取样器:JDBC Request。
- 线程组:SetUp线程组和teatDown线程组
共14个元件进行了学习。