来源:BonoyQa(Bonoy.com)
概述
本指南将阐述Jmeter的新的JUnit取样器的基本设计、功能和用法。取样器目前在Jmeter的CVS中,并不是Jmeter2.1发布的一部分。它将包含在下一个Jmeter发布中。
设计
当前的实现支持标准的JUnit规则和扩展,例如oneTimeSetUp和oneTimeTearDown。其他特性可以根据需要添加。它基本上如Java取样器一样工作,有些区别:
1. 它扫描jar文件来获得继承了junit的TestCase的类,而不是使用Jmeter的测试接口。这意味着任何类和子类。
2. Junit测试jar文件被复制到jmeter/lib/junit目录,而不是jmeter/lib目录。
3. Junit取样器不使用名称/值对来配置。它假定setUp和tearDown会正确配置测试。
4. 它仅测量测试方法花费的时间,而不包括setUp和tearDown。
5. 每次测试方法被调用,Jmeter会传递结果给监听器(listener)。
6. 对oneTimeSetUp和oneTimeTearDown的支持是将他们作为一个方法(method)。由于Jmeter是多线程的,我们不能像maven那样调用oneTimeSetUp/oneTimeTearDown。
7. 它意外的(unexpected)异常(Exception)报告为错误(errors)。
功能 下面是关于功能的描述: 名字(Name) - 样本名称。这与所有的jmeter取样器一样。 包过滤器(Package Filter)- 支持以包名来过滤类的方式。 类名(Classname)- 要测试的类的名称。它将扫描jmeter/lib/ext和jmeter/lib/junit中的jar文件来取得继承了junit的TestCase的类。 构造字符串(Constructor String) – 传递给测试类构造方法的字符串。 测试方法(Test Method)- 在取样器中要测试的方法的名称。 成功信息(Success Message)- 用于指示成功是什么意思的描述信息。 成功代码(Success Code)- 一个用于说明测试是成功的唯一代码。 失败信息(Failure Message) - 用于指示失败是什么意思的描述信息。 失败代码(Failure Code) - 一个用于说明测试失败的唯一代码。 错误信息(Error Message) - 关于错误的描述。 错误代码(Error Code) - 错误的代码。不需要唯一。 不要调用setUp和tearDown – 设置取样器不要调用setUp和tearDown。默认情况下,setUp和tearDown应该被调用。不调用那两个方法会影响测试,并使测试不准确。此选项应该小心使用。如果被选择的方法是oneTimeSetUp和oneTimeTearDown,这个选项要被选中。
Junit取样器当前的实现会首先尝试使用字符串构造方法创建实例。如果测试类没有声明一个字符串构造方法,它会查找一个空构造方法。事例如下:
空构造方法:
| 引用: | public class myTestCase{ public myTestCase(){ } } |
字符串构造方法:
| 引用: | public class myTestCase{ public myTestCase(String text){ super(text); } } |
|
JUnit取样器配置:
默认情况下,Jmeter提供了缺省的成功/失败代码和信息。用户应该定义一组唯一的成功和失败代码并在所有的测试中一致地使用他们。
用法 下面是一个分布介绍如何使用Junit取样器: 1. 编写你的junit测试并将它打包成jar文件。 2. 复制并粘贴jar文件到jmeter/lib/junit目录中。 3. 启动jmeter。 4. 选择“测试计划”。 5. 右键点击“添加->线程组”。 6. 选择“线程组”。 7. 右键点击“添加->取样器->junit请求”。 8. 输入“我的单元测试”。 9. 输入你的junit测试包名。 10.选择你要测试的类。 11.选择要测试的方法。 12. 在成功信息中输入“测试成功”。 13.在成功代码中输入“1000”。 14.在失败信息中输入“测试失败”。 15.在失败代码中输入“0001”。 16.选择线程组。 17.右键单击“添加->监听器->察看结果树”。
Junit取样器的一个优势就是它允许用户在多个单元测试中选择任何方法来创建测试计划。它能够减少用户来创建各种各样的测试场景(scenario)的代码量。从一组基本的测试方法,使用Jmeter的图形用户界面能够创建不同的序列(sequence)和测试
示例
Test Plan1 • TestCase1.testImportCustomer • TestCase2.testUpdateRandomCustomer • TestCase1.testSelect100 • TestCase2.testUpdateOrder • TestCase1.testSelect1000 TestPlan2 • TestCase1.testImportCustomer • TestCase1.testSelect100 • TestCase1.testSelect1000 • TestCase2.testAdd100Customers |
常用规则 这是一些常用的编写Junit测试的规则,根据这些规则编写的测试能够更好的在Jmeter中工作。由于Jmeter是多线程运行的,所以某些规则是很重要的。
1. 编写setUp和tearDown方法,确保他们是线程安全的。这一般意味着不要使用静态成员变量。 2. 使测试方法是离散的工作单元,而不是长的动作序列。通过维护测试方法为离散的操作,有利于组建测试方法为新的测试计划。 3. 避免使测试方法互相依赖。由于Jmeter允许测试方法以任何序列组织在一起,运行时行为与默认的Junit行为不一致。 4. 如果一个测试方法是可配置的,小心防止属性(Properties)文件的存储位置。建议从jar文件读取属性文件。 5. 每个取样器创建一个测试类的实例,因此编写你的测试使配置(setup)发生在oneTimeSetUp和oneTimeTearDown中。 |