利用 Rational Quality Manager 进行数据驱动测试
数据驱动测试介绍
在数据驱动测试中,测试过程会使用变量代替真实的数据,测试数据会通过变量传入测试过程,以达到同一个脚本利用不同的输入数据迭代执行的目的,并且这样不同的数据组合也可以产生不同的测试用例,同时测试数据可以被多个测试用例共享。测试人员可以在不用修改测试过程的情况下增加测试的覆盖率,并且完成对测试用例的维护。然而,数据驱动测试对测试人员有很高要求。也就是说测试人员必须具备很好的测试设计能力,否则维护测试过程与测试数据将消耗测试团队很多资源。
并不是所有测试用例都适合用数据驱动测试。如果是只需要执行一次的测试用例或者是检查界面、日志等的测试用例就不合适数据驱动测试。在设计数据驱动测试用例时,测试人员要考虑怎样在测试过程中插入合适的变量以及设计怎样的测试数据以便达到更高的测试覆盖率。在设计中,测试人员也要考虑数据驱动测试用例的可维护性和可复用性。
利用 RQM 进行数据驱动测试
在 RQM 中,测试数据(Test Data)是相关数据记录(Data Records)的集合。测试数据提供实际的数据值给手动测试脚本(Test Script)中的变量。在 RQM 中测试人员可以通过以下几步在 RQM 中完成数据驱动测试:
- 创建 Test Data,选择 CSV (comma separated values) 文件作为数据来源。
- 创建测试用例(Test Case)和 Test Script。
- 在 Test Script 中关联 Test Data。
- 在 Test Script 中插入变量代替所需要替换的数据。
- 执行 Test Script(在此步骤中,RQM 将从 Test Data 中读取数据并迭代执行 Test Script)。
此外测试人员还可以利用 Test Data 定义测试数据的选择条件并将特定的选择条件与测试脚本进行关联。
下面来详细介绍在 RQM 中完成数据驱动测试的具体步骤:包括利用 RQM 管理 Test Case、管理 Test Data、管理实现数据驱动测试以及利用 RQM 执行并记录数据驱动测试结果。
如何利用 RQM 管理测试用例
测试用例是测试团队非常重要的资产。如何以及选择什么样的工具维护测试用例对测试工作会产生很大影响。利用 RQM,测试团队可以轻松地管理好测试用例(Test Case)。在 RQM 中,打开 Test Plan,在导航条中点击 Test Cases,如图 1 所示。在图 1 中,测试人员可以管理 Test Case。
图 1. 管理测试用例

如何利用 RQM 管理测试数据
测试数据(Test Data)是测试用例不可或缺的组成部分。测试用例在执行时,通过不同的 Test Data 可以保证测试的覆盖率并提高所测系统的质量。在 RQM 中,点击 Construction->Create Test Data 创建测试所需要的 Test Data,测试人员可以添加一个 CSV 格式的数据文件,Test Data 的来源就是此文件。文件需使用 UTF-8 编码,并且第一行是数据字段名的信息,如图 2 所示:
图 2. 创建测试数据

在图 2 中定义了一个名字叫"Users"的 Test Data,并选择了"UserName.csv"作为数据文件(Data File)。此文件包含了测试所需的测试用户,包括用户名(Username)和密码(Password)。如在数据记录(Data Records)中所示部分,文件的第一行被识别为变量信息(Variable Information),从第二行开始则是测试数据。
为了方便地组织 Test Data,测试人员可以创建测试数据类别(Test Data Categories)并使用 Category 来对 Test Data 进行分组,如图 3 所示:
图 3. 创建管理测试数据类别

如何利用 RQM 实现数据驱动测试
在 Test Script 中可以使用 Test Data 实现数据驱动测试。点击 Test Case 的名字,进入 Test Case 相关页面。点击 Test Script,进入 Test
Script 页面,点击创建一个新的 Test Script,输入 Test Script 的 名字(Name),保存 Test Case,如图 4 所示:
图 4. 创建测试脚本

点击 Test Script 的 Name,进入 Test Script 页面。点击变更关联的测试数据(Change Associated Test Data
)关联 Test Data,如图 5 所示:
图 5. 变更关联的测试数据

在图 5 中选择 Test Data "Users",点击确定(OK)完成 Test Data 的关联,如图 6 所示:
图 6. Test Script 中关联 Test Data

在一个 Test Data 中,也许有很多条数据并不适用于所有的测试用例,如果测试人员用这些数据执行 Test
Script 就会出现失败的情况。RQM 提供了解决方案。测试人员可以通过测试数据用途(Test Data Usage)来过滤 Test Data 。点击从测试数据选择记录(Select Records from Test Data)
图 7. 创建记录选择条件

在图 7 中,如果选择 Column Name 为 "Username",填写 Value 为 "admin",那么在执行 Test Script 时,RQM 只会读取"admin"这条数据,如图 8 所示为设置好的 Test Data Usage。
图 8. 设置 Test Data Usage

当 Test Script 关联好 Test Data 之后,就可以在测试步骤(Test Step)中插入 Test Data 中的变量。首先编写 Test
Step,填写过程描述(Description)和期望结果(Expected Result),之后点击插入数据列(Insert Test Data
Column),在 Test Step 中添加 Test Data,如图 9 所示选择 Test Data Columns,
图 9. 选择测试数据列

选择好相应的 Test Data Columns(如"Username"和"Password")之后,Test Data 与 Test Step 关联完成,如图 10 所示:
图 10. 在测试脚本中关联测试数据

如何利用 RQM 执行并记录数据驱动测试结果
在 Test Case 页面中,选择要执行的用例,点击进入测试用例执行界面,如图 11 所示:
图 11. 执行 Test Case

如图 11 所示,勾选从测试数据选择记录(Select Records from Test Data),点击下一步(Next),进入从测试数据选择记录(Select Records from Test Data)页面,选择执行 Test Case 所需要的 Test Data,如图 12 所示:
图 12. 从测试数据选择记录

点击 Finish 开始 Test Case 的执行。如图 13 所示,在 Test Script 中的变量 Username 和 Password 已经变成真实的测试数据。
图 13. 从 Test Data 中选择记录

点击执行 Test Step,执行完 Test Step 后,RQM 会读取测试数据文件中的下一行记录开始迭代执行直至最后一行,如图 14 所示,测试数据已经发生变化。
图 14. 从 Test Data 中选择下一个记录

Test Case 执行完成后,点击显示结果(Show Result)进入测试结果页面,如图 15 所示,所有的 Test Data 都已经被迭代的执行。
图 15. 测试执行结果

如何利用 RQM 与 Rational Functional Tester(RFT)的集成提高数据驱动测试的效率
RQM 中的 Test Data 可以给手动的 Test Script 提供数据,在实际的测试过程中,测试人员会开发相应的自动化测试脚本,那么该如何利用 RQM 与 RFT 进行数据驱动测试的开发与管理哪?
测试人员可以利用 RFT 编写自动化测试脚本,利用 RFT 的数据池 Datapool 实现数据驱动。利用 RQM 管理 RFT 的测试脚本,在 RQM 中可以执行 RFT 的测试脚本,记录测试执行结果。
如何利用 RFT 的 Datapool 实现数据驱动
在 RFT 中,可以使用创建一个测试数据池对话框(Create a Test Datapool dialog box)来完成数据池的创建,如图 16 所示创建数据池,填写数据池的名字(Users),点击下一步(Next)。
图 16. 创建数据池

在图 17 所示页面中,选择导入测试数据的 CSV 文件(C:\UserName.csv),勾选第一行记录是变量信息(First Record is Variable Information),点击 Finish。
图 17. 导入数据池

创建好的 Datapool 如图 18 所示。在图 18 中,数据文件的第一行被识别为变量信息并且 RFT 会自动识别出数据的类型为字符串(java.lang.String)。
图 18. 创建好的数据池

创建好 Datapool 之后就可以在 RFT 的 Test Script 中读取测试数据。新建 Test Script,选择建好的 Datapool,如图 19 所示。在图 19 中,选择 Users.rftdp 为 Test Datapool,并且选择数据记录选择顺序(Datapool Record Selection Order)为顺序读取(Sequential)。
图 19. 选择数据池

在图 19 中,点击 Finish 开始 Test Script 的录制。在这个过程中,选择要插入的数据驱动命令,如图 20 所示。在图 20 中,测试对象(Test Object)是 username,插入的命令(Command)是 setText,读取的数据文件的变量(Variable)是 username。
图 20. 插入数据驱动命令

当插入数据驱动命令完成后,RFT 会生成相应的 Test Script,如清单 1 所示:
清单 1. 从数据池中读取测试数据
public class TestLogin extends TestLoginHelper { public void testMain(Object[] args) { // HTML Browser // Document: Login Page: http://192.168.1.100:80/login // 从数据池中的 username 中读取数据 text_username().setText(dpString("username")); //从数据池中的 password 中读取数据 text_password().setText(dpString("password")); } }
当插入数据驱动命令完成后,需要设置 Test Script 执行时的迭代次数(Iteration Count),如图 21 所示:
图 21. 设置迭代次数

如何利用 RQM 管理 RFT 的数据驱动测试脚本
在 RFT 中创建好数据驱动的测试脚本后,可以利用 RQM 管理并执行测试脚本。首先在 RFT 端配置需要连接的 RQM Server,如图 22 所示:
图 22. 配置 RQM Server

配置完成后在 RQM 中选择并管理自动化测试脚本,如图 23 所示:
图 23. 在 RQM 中管理 RFT 测试脚本

当 RFT 的 Test Script 导入到 RQM 后,就可以在 RQM 运行这些 Test Script 来完成数据驱动测试。
总结
本文详细地介绍了如何利用 RQM 进行数据驱动测试,如何在 RQM 中管理测试用例、测试数据以及执行基于数据驱动的测试用例并管理测试结果。此外还介绍了如何利用 RQM 与 RFT 的集成提高数据驱动测试的效率。
相关主题
- 访问 developerWorks 中国网站的 Jazz 技术概览 专题,您可以通过这里了解更多关于 Jazz 平台的技术信息。
- 访问 IBM developerWorks 中国网站 Rational 专区,获得关于 IBM Rational 软件交付平台(Rational Software Delivery Platform)产品的技术资源和最佳实践。
- 访问 Rational 学院主页,了解学习更多 Rational Quality Manager 的相关课程。
- 查看文章"使用 Rational Quality Manager 对软件测试生命周期进行管理的最佳实践",了解更多关于如何使用 RQM 管理软件测试生命周期。
- 查看文章"将软件测试管理迁移到 Rational Quality Manager 的最佳实践",了解更多关于如何将软件测试管理迁移到 RQM。
- 访问 Rational Functional Tester 主页,了解更多关于 RFT 的信息。