| 网站首页 | 测试咨讯 | 新手入门 | 专注性能 | 测试技术 | 测试管理 | 测试工具 | 开发社区 | 工具下载 | 资料下载 | 测试论坛 | 

[CNTester联盟群]交流群:34446273/21968356/64461572 白盒群:18400216 自动化群:2706508 性能群:4498858 外包群:59649884 管理群(需有管理经验):64442523

新手入门
 入门指南
 经验之谈
测试咨讯
 行业新闻
 网站动态
 人才就业
 CNTester基金
 标准规范
专注性能
 性能测试知识
 性能测试工具
 程序设计性能
 数据库性能
 Web应用服务器性能
 操作系统性能
 服务器与网络性能
测试技术
 用例设计
 性能测试
 自动化测试
 Web测试
 面向对象测试
 综合技术
 阶段性测试
 行业类测试
测试管理
 项目管理
 项目案例
 质量管理
 软件过程
测试工具
 Mercury系列
 Rational系列
 测试管理工具
 性能测试工具
 功能测试工具
 单元测试工具
 其它测试工具
开发社区
 Java技术
 DotNet技术
 C技术
 数据库技术
 操作系统
 服务器与中间件
工具下载
 测试工具
 开发工具
 企业工程
 网络通信
 媒体桌面
 游戏娱乐
 其他工具
资料下载
 测试资料
 程序设计
 数据库
 操作系统
 应用服务器
 电子期刊
 其他资料
 
 
您现在的位置: 中国测试员网站 >> 专注性能 >> 性能测试工具 >> PerTester >> 文章正文
  [推荐]Rational Performance Tester、性能测试、数据驱动测试       ★★★ 【字体:
Rational Performance Tester、性能测试、数据驱动测试
作者:黄菲    文章来源:IBM EDV    点击数:    更新时间:2007-7-11    
数据驱动测试是一项单个测试脚本能够重复地使用不同的输入和响应数据的技术,这些数据来源于一个预定义的数据集。数据驱动测试技术在自动化测试领域有着非常重要的地位,我们可以通过它来实现更加高效和准确的测试运行。

1.数据驱动测试简介

数据驱动测试是一项单个测试脚本能够重复地使用不同的输入和响应数据的技术,这些数据来源于一个预定义的数据集。数据驱动测试技术在自动化测试领域有着非常重要的地位,我们可以通过它来实现更加高效和准确的测试运行。

当你通过数据来驱动一个测试脚本时,脚本将使用变量作为应用的关键输入。通过使用变量,脚本能够使用来自外部的数据代替应用测试中的文字值。数据驱动测试使用来自数据池的数据作为测试的输入。一个数据池是相关数据记录的集合,在脚本回放时数据池能够为测试脚本提供实际的测试数据。

数据驱动测试在数据与测试脚本之间放置了一个抽象的层次,这样可以消除测试脚本中的常量值。因为数据被从测试脚本中分离出来了,所以你可以:

  • 在不影响测试脚本的情况下,修改测试数据。
  • 通过修改数据而不是测试脚本来添加新的测试用例。
  • 在多个测试脚本之间共享测试数据。

下面的两个图中,上边的图显示了一个使用硬编码的测试脚本,脚本中的测试数据是直接写在代码中的。而下边的图显示的是一个数据驱动的脚本,它的测试数据是来自于一个外部文件 - 数据池的。


图1将测试数据直接写在代码中的测试
图1将测试数据直接写在代码中的测试

图2 使用数据池的数据驱动的测试
图2 使用数据池的数据驱动的测试

下面的例子说明了数据驱动测试能够解决的问题:

问题:在测试录制过程中,你使用员工的唯一社会保险号为一个新的员工创建了一个个人文件。每次测试运行时,都会提示你数据库中已经存在了相同社会保险号的记录。

解决方法: 你能够使用数据驱动的测试来向应用提供不同的员工数据,包括社会保险号。

问题:在你录制测试时,你删除了有一条记录,在测试运行时,测试工具将试图删除相同的记录,系统会提示"记录无法找到"的错误信息。

解决方法: 你可以在测试回放中,使用数据驱动的测试来引用不同于在录制时删除的记录。

本本接下来的内容将具体介绍如何在 IBM Performance Tester 中使用数据驱动的测试。





回页首


2 IBM Rational Performance Test的数据池

数据池是一个测试数据集合,它能够为测试回放提供不同的数据值。你可以使用数据池来提供真实的数据,以便为被测试应用施加具有现实意义的压力。

IBM Rational Performance Tester 中通过数据池来实现数据驱动的测试。在模拟用户执行性能测试时,数据池将为测试提供变量化的数据。

在被测试应用的一个会话期间,测试人员实际上使用了真实用户将使用的特性,从一个被录制的会话中,一个包含了测试人员输入的精确数据的测试被生成。

例如,为了对基于 Web 的购物应用创建一个性能测试,测试人员必须模拟使用应用的各种角色的操作和输入适当的数据。

在测试的回放阶段,测试人员可能需要数百个交易实例同时运行,而对每一个实例可以有不同数量的模拟用户。为了在回放期间模拟上百个分离的用户,测试人员应该创建数据池。

在 Performance Tester 中数据池包含三个结构元素:

  • 等价类。一个包含数据范围的数据池子集,当被提交到一个测试时,产生等价的结果。一个数据池必须至少包含一个等价类。
    等价类对于低级别的测试是很重要的。为了性能测试的目的,你可以将等价类想象成一个被命名的行的索引。
    一个性能测试能够以三种模式之一打开一个数据池,这取决于虚拟用户如何访问数据池:私有的、在一台机器上共享的和一台机器上分段的。在私有和共享模式下,等价类被忽略,但是分段模式下需要数据池仅仅包含一个等价类。由于这个原因,如果你计划使用数据池,推荐大家添加一个单一的等价类到数据池。
  • 记录。.一行数据,行是通过以 0 开始的等价类进行索引的。
  • 变量。一个命名的数据列。数据存在于列中。

如下图所示,数据池编辑器以一个类似电子表格的形式显示数据。右键点击一个单元格打开弹出菜单,这个菜单允许你添加或者维护上面提到的数据池结构元素。你能够通过在单元格中输入来添加数据。


图3
图3

当你创建一个数据池时,你可以选择从外部的电子表格文件(CSV)中将数据导入到数据池中。对于包含大量数据的数据池来说,这个方式是被推荐的。数据池编辑器适合于少量数据的输入和修改单个的数据值。





回页首


3 在IBM Rational Performance Test 中使用数据驱动测试

在 IBM Performance Tester 中使用数据驱动测试的过程主要包括以下的步骤:

1. 创建并编辑数据池:可以创建空的数据池,然后输入数据值,也可以从外部的数据文件将数据导入到数据池。

2. 为测试添加数据池:数据池可以是私有的或者是共享类型的,在你能够在测试脚本中引用数据池之前,你必须为测试添加你想要使用的数据池。

3. 将测试中的变量与数据池中的列进行关联:将测试脚本中的某些变量与数据池中的某些列进行映射。

3.1创建并编辑数据池

使用数据驱动测试的第一步是创建测试脚本能够使用的数据池。本小节将详细介绍创建和编辑数据池的具体操作步骤和方法。

3.1.1 创建数据池

数据池包含当测试运行时所需要的数据。

为了创建一个数据池:

1. 打开测试透视图。

2. 在测试导航器中,右键点击一个项目,选择新建->数据池,新建数据池对话框打开。


图4
图4

3. 在已存在项目的列表中,点击一个你想要存储数据池的项目:项目的名字出现在输入或者选择父文件夹域中。你能将数据池存储在任何种类的项目中。数据池不需要被存储在使用其的测试项目中。


图5
图5

4. 在文件名域输入一个数据池文件的名字,如果你想创建一个空的数据池,直接转到最后一步。如果你想为数据池提供一个描述或者使用已有的包含数据的 CSV 文件对数据池文件进行初始化,继续下一步。


图6
图6

点击下一步。一个对话框打开允许你描述数据池。


图7
图7

5. 点击下一步。一个对话框打开,允许你使用一个已存在的 CSV 文件初始化数据池。


图8
图8

6. 在 CSV 文件域,输入CSV文件的名字,或者点击浏览来找到一个文件。

7. 如果在 CSV 文件中的数据与你的计算机上的编码不一致,从选择导入编码下来框中选择正确的编码。


图9
图9

8. 文件的第一行能够包含变量(列)名。如果是这样的话,你需要选中第一行包含变量名和建议类型选项,如果这个选项没有被选中,列名被命名为变量1… 。你能够通过数据池编辑器很容易的改变列名。


图10
图10

9. 在 CSV 文件的每一行的第一列能够包含一个等价类(行)名。例如,在 CSV文件中的每一行的第一列包含名字 row ,数据池将有一个单一的命名为 row的等价类,数据池记录(行)将通过 row::0、row::1 依此类推索引。

10. 点击 完成。

新的数据池在数据池编辑器的概述标签中打开。


图11
图11

3.1.2 打开数据池

查看或者修改一个数据池的内容。

为了打开一个数据池:

1. 在测试导航器中,展开包含数据池的 Java 项目。


图12
图12

2. 从测试资产列表中双击数据池:数据池在概述标签页中打开。

3. 点击编辑面板上的数据池标签。

3.1.3 编辑数据池

通过和编辑一个电子表格近似的方式,你能够添加、修改或者从数据池删除数据。

当你右键点击数据池的编辑单元格时,你能够看到数据池编辑弹出菜单,如下图所示。


图13
图13

在你向一个数据池添加数据之前,你必须至少包含一个等价类(被命名的行索引)和一个变量(列)。上图显示了数据池包含一个单一的等价类(saleItem),三个变量和很多条记录。为了向数据池添加数据,你可以在一个单元格中输入数据。你也可以很容易的删除、修改数据。同样你也可以删除列、重命名列等操作。

为了向数据池中添加一个结构元素,右键点击数据表单元格并选择下列之一。





3.1.4 插入一个 CVS 文件到一个数据池

如果你需要一个数据池保存大量的数据记录,最快速的方法时使用一个外部的程序(比如 Rational TestManager、你的数据库、电子表格)来创建一个通用的电子表格。

你不能向一个已存在的数据池导入数据,但是你可以在创建一个数据池时,使用 CSV 文件初始化数据池。下面是具体的步骤。

1. 使用一个电子表格或者一个定制的工具或脚本,创建一个包含测试数据的 CSV 文件。以下为可选的步骤,文件内容的第一行能够包含变量的描述性的名字,在每一行的第一列包含一个等价类(行)的名字。例如下图。


图17
图17

如下图所示,这个文件使用了单一的等价类 saleItem 、三个数据列(变量)和 9 条记录 生成了一个数据池,记录是通过saleItem::0到saleItem:8 索引的。


图18
图18

被性能测试使用的数据池应该仅仅包含一个等价类。

2. 在数据池创建对话框的最后一个页面,找到一个 CSV 文件,并将其内容导入到数据池中。

3.2为测试添加数据池

如果一个测试使用数据池,这个测试必须包含一个到数据池的引用。

为了让一个测试使用数据池:

1. 打开测试。

2. 在测试内容区域,右键点击测试的名字,并选择添加->数据池。导入数据池窗口打开,列出所有在你的工作空间中还没有被这个测试使用的数据池。


图19
图19

3. 通过点击包含你想要使用数据的数据池来选择它。

在所在文件夹区域列出了你所选择的数据池所在的项目。数据池的列名被列在右边区域的文本框中,并数据池的名字和描述被列在下面。

4. 打开方式决定了虚拟用户拥有数据池的视图。

选择下面其中一个:



5. 如果你想要在数据池的结束或者数据池的分段到达结尾时使测试失败,清除到达最后一行时回绕选项。如果这个选项被选中,在数据池的结束或者数据池的分段到达结尾时,测试从头开始获取数据。

6. 点击选择。一个对数据池的引用被添加到了测试,并且测试详细信息被更新。


图20
图20

7. 保存测试。

3.3 将测试中的变量与数据池中的列进行关联

从记录过程中,一个精确反映你与应用程序交互的测试被生成。如果你运行一个没有进行修改的被生成的测试,测试使用你录制这个测试时的精确数据。

例如,假设你已经录制了一个对员工数据库搜索"张三"的一个测试。如果你对测试不进行修改,你使用10个虚拟用户运行测试,每一个虚拟用户都在查许"张三"。这也许并不是你想要得到的结果。相反,你想要的测试数据是:每个测试实例应该查许不同的名字。你能通过使用一个数据池来实现这一点。

下图显示了当你启动记录器并输入www.ibm.com/us/ 时产生的测试。


图21
图21

为了帮助你使用数据池,测试编辑器使用带有颜色的代码,并提供了导航助手:

  • 当你点击测试内容下面的测试名时,测试详细信息包括了一个能够被测试使用的数据池的表。你能够通过双击表中适当的行来直接导航到一个数据池。

    图22
    图22
  • 当你点击一个页面时,页面的详细信息包括了一个测试数据的列表,列出了数据池的候选和在页面中的数据池数据。你能够通过双击表中适当的行来直接导航到一个数据池的值或者候选。

    图23
    图23
  • 当你展开一个页面时,一个黄色突出指示出包含了数据池数据或者候选(绿色)或者关联数据(红色)的页面请求。

    图20
    图20
  • 当你点击一个高亮的请求时,数据池候选使用绿色的字母被突出出来。关联数据用红色字母突出出来。

    图24
    图24
  • 如果一个高亮的请求包括你已经和数据池的列进行关联的请求值,这些值被用暗绿色底白字显示。

    图25
    图25
  • 同样,页面的测试数据表也使用数据池信息的来更新(绿色字母)。

    图26
    图26

为了使你的测试使用变量数据代替特定的值,你应该将测试中的值与数据池中的列进行关联。

下面的过程假设你想使用的数据池已经存在,并且你已经添加了一个对数据池的引用到你的测试。

为了将测试中的值与数据池中的列进行关联:

1. 打开测试。

2. 定位并点击一个包含你想要用变量数据代替一个数值的请求。

点击一个测试页面,显示给你一个列有在这个页面中任何数据池候选和关联的数据。(为了在这个表中和数据池候选一样显示关联数据,右键点击测试任何一个测试数据表,并选择显示引用)。引用是以红色字母显示的。


图27
图27

3. 如果你想要的数据池值是已经被分配给一个数据池候选的一个字符串的一部分,你必须删除浅绿色的高亮显示:右键点击,并选择清除引用。例如,如果你在你的测试中对 doe 和john 进行查询,在你的测试中的数据池候选将以 doe%2C+john 格式出现。如果,你想将doe 和 john 分别关联不同的数据池列,你首先必须删除浅绿色的高亮。

4. 高亮显示值:按住鼠标左键,托拽至需要高亮的值的上面。

5. 右键点击高亮值,并选择代替从 > 数据池变量。

选择数据池列对话框打开。


图28
图28

如果你想使用一个没有列出的已有数据池,点击添加数据池按钮。

6. 点击你想要关联到测试值的数据池中列的名字。

7. 点击 使用列。

为了表示关联已经被设定,被选测试值的高亮变为深绿色,并且测试页面的数据池表被更新,如下图所示。


图29
图29

8. 如果你需要的话,可以重复这些步骤多次,并保存测试。

使用场景:创建一个数据池并向数据池添加数据

本试验的目的是回顾如何为测试创建一个数据池,并手工的向数据池中添加数据。

步骤:

1. 打开一个项目,可以使用前一章试验中所创建的项目。



2.鼠标右键点击项目 ProjectTest ,选择新建->数据池。



3.新建数据池对话框打开,在文件名域中输入datapool1 。点击下一步。



4.点击下一步。



5.点击完成。



6.数据池 datapool1出现在测试导航器的ProjectTest 项目中。



7.点击右边数据池的数据表标签,一个表格显示出来。



8.鼠标右键点击表格的任意位置,选择添加等价类选项。



9.添加等价类对话框打开,保持缺省值,点击确定。



10.数据池的第一个等价类被创建。



11.鼠标右键点击表格的任意位置,选择添加变量选项。



12.添加变量对话框打开。在名称域输入密码,在类型域输入string。点击确定。



13.数据池列密码出现。



14.重复上面的操作,添加列用户名。



15.添加一行记录,鼠标点击用户名下的单元格,输入zhang,同样的操作,在密码下面的单元格中输入 zhang 。



16.鼠标右键点击表格的任意位置,选择添加记录选项。



17.添加记录对话框出现,点击确定。



18.在表格中出现了一个新的等价类 EquivalenceClass1::1,重复输入内容的操作,分别输入三条记录。



19.保存测试。



到此为止,我们已经为数据池 datapool1添加了四条记录。

使用场景:将测试中的值与数据池的列进行关联

本试验将会录制一个登陆旅游网站的测试,并将测试中记录的用户名和密码值与试验1中创建的数据池datapool1 的两个列进行关联。

步骤:

0. 打开一个测试项目。我们打开试验1使用的 ProjectTest 项目。选中项目,选择新建->记录性能测试选项。



1. 在记录文件名域输入test1.rec ,点击完成。



2. 录制开始,在打开的浏览器的地址栏输入 http://localhost:9080/ab/main.screen 。网站主页显示出来。



3.点击主页左上角的 Sign On 链接,进入 Sign In 页面。点击 Sign In 按钮。



4. 登陆成功页面出现。关闭浏览器。停止录制。



5. 测试 test1 生成,在测试编辑器区域的测试内容中,显示出三个页面。



6. 点击 Sign On 页面,测试元素详细信息区域的测试数据部分,显示出三个可以进行关联的测试值,这里我们将关联j_username 和 j_password 的值。



7. 鼠标双击 j_username 行,j_username 的表达式数据显示出来,j_username 的值j2ee是高亮的。



8.鼠标右键点击,选择 从以下位置替换->数据池变量。



9.选择数据池列对话框打开。点击添加数据池。



10.选择datapool1.datapool,点击选择。



11.选中用户名列,点击新建列。



12.这是测试数据值j2ee变为了深绿色的高亮,这表明关联已经设置好。



13.以同样的方法设定 j_password 的值 j2ee 与数据池密码列的关联。



14.保存测试。

到此为止,我们已经为录制的测试中的值建立了与数据池列之间的关联。



4.总结

本文对 IBM Rational Performance Tester 的数据驱动特性进行了详细的介绍。在进行大规模性能测试时,将不可避免的使用数据驱动的特性。测试扩展能是你创建出更加符合实际需要的性能测试。


关于作者

黄菲,Rational 爱好者,具有多年的软件自动化测试的工作经验,目前正在某大型IT企业从事测试管理工作。您可以通过 huangfei2019@126.com 与他联系。

文章录入:root    责任编辑:root 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     
    最新热点 最新推荐 相关文章
    · mysql优化基础
    · MySQL服务器安装完之后如何调节性能
    · Mysql数据库管理系统优化方案
    · MySQL Performance Tuning Primer Script
    · MySQL 性能跟踪语句
    · Linux 和对称多处理
    · 应用与数据库性能测试解决方案,QUEST SO
    · 负载、性能测试和容量测试的关系和区别
    · LoadRunner监控Windows和Linux常见问题
    · 31个用来测试网站各项性能的免费工具
    · 应用与数据库性能测试解决方案,QUEST SO
    · 研究项目: JBoss架构分析
    · 如何通过 20% 的工作获得 80% 的性能改善
    · Linux 调度器内幕
    · 在 Linux 上利用数据分区功能提高可伸缩性
    · 降低 Linux 内存开销
    · Linux 和对称多处理 在 SMP 系统上发挥 L
    · 如何提高系统性能指标
    · Java 优化技术 充分挖掘 Java 应用程序性
    · 高速缓存和连接池对访问数据库性能的影响
    31个用来测试网站各项性能的
    研究项目: JBoss架构分析
    Rational LoadTest 性能测试
    loadrunner 负载测试计划
    IBM Rational助您轻松完成基
    如何通过 20% 的工作获得 80
    基于 WebSphere Application
    Linux 调度器内幕
    在 Linux 上利用数据分区功能
    使用异步 I/O 大大提高应用程
     
     
     
    ======> [CNTester联盟群]交流群:34446273/21968356/64461572 白盒群:18400216 自动化群:2706508 性能群:4498858 外包群:59649884 管理群(需有管理经验):64442523
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 管理登录 | 

    Copyright@2007 by CNTester.com 中国测试员网站 桂ICP备07005590

    本站为开源免费网站,非商业赢利性组织。本站文章部分从网络搜索获取,如果您认为某些侵犯了您的权益,麻烦您联系本站,我们会尽快删除相关内容,同时也希望您的谅解,我们的初衷是为了让更多人去学习这方面的知识,让行业有更好的发展。

    联系电话: 15021358905