许多测试人员对他们应用软件的数据库方面的测试很感兴趣。最具代表性的情节是,在您的应用软件中执行一些插入或者删除的行为,然后核查这个数据库是否已经进行了适当的更新。由于测试小组转向了自动化操作,这个数据库测试就变成了一个自然的需求。不幸的是, IBM® Rational® Functional Tester 并不为数据库的工作提供一个本地的方法。
SQuirreL SQL 是满足您数据库测试需求的一个很好的工具。当听到这个消息时,您可能会开发一个 "Yet Another Tool Syndrome" 的快速案例。毕竟,它实际上也是您需要的另一个工具。值得兴奋的是它是一个开源工具。这样您就可以免费下载和使用这个工具。更进一步说,万一您在使用这个工具时遇到一些问题,它还可以提供一定水平的支持。最后,它是用 Java™ 语言编写的。这样就为 Rational Functional Tester 的录制和回放自动操作性能提供了一个理想的选择。
这篇文章描述了一个“启动”指南的改编,这个“启动”指南帮助客户在他们的 Rational Functional Tester 自动操作中接受 SQuirreL SQL 的使用。SQuirreL SQL 为有抱负的数据库大师提供了过剩的功能。尽管如此,这个系列的目的还是使事情保持简单,同时确保它能表达某些关键的概念,比如运行一个查询以及核查这个结果集合。它并不处理众多遗留下的性能,而是留给像您这样有寻根问底精神的人来研究。
您 会发现下面的文章十分有用。对于附加的透明度,如果您熟读这篇文章,那么就可以利用这篇文章中创建的脚本。您可以在这篇文章末尾的表格中下载。
要注意的是,在执行这篇文章中的练习之前您要有 Rational Functional Tester 经验 (至少有录制和回放的经验)。
这个系列的第 1 部分向您展示了如何为这些脚本功能配置 Rational Functional Tester。这篇文章将告诉您如何创建和捆绑脚本。这篇文章假定您已经完成了第 1 部分中详述的那些步骤。
在开始之前,确保您已经安装了 Rational Functional Tester,许可证,做好了开始的准备!这显然非常好,但是对您来说最重要的是成功地完成这篇文章中的任务。
下面的步骤将引导您完成创建脚本的四个步骤。开始的三个步骤重点强调具体的 SQuirreL SQL 任务。最后一个脚本是一个命令脚本,汇聚这三个脚本来依次执行。
录制 SQuirreL SQL 对应的第一个脚本:SQuirreL_SQL_Connect 脚本。
- 点击 Record 按钮。
- 提供这个脚本的名称并点击 Finish 按钮来开始录制:如图 1所示。
图 1. 为这个脚本提供一个位置和名称
- 选择 Start Application 按钮,再选择 squirrel-sql – executable 作为您的应用软件,然后点击 OK按钮,如图 2所示。
图 2. 选择这个应用软件
- 双击这个 Classics Database 小程序 (在 SQuirreL SQL 窗口),如图 3所示。
图 3. 选择一个别名
- 点击 Connect 按钮 (这次也不需要 User 名称或者 Password,如图 4所示)。
图 4. 连接到这个数据库
- 点击 Rational Functional Tester 中的 Stop Recording 按钮。
您现在应该拥有一个看起来跟列表1相似的脚本。
列表 1. Recorded SQL Connect 脚本
import resources.SQuirrel_SQL_ConnectHelper;
/**
* Description : XDE Tester Script
* @author IBM Rational
*/
public class SQuirrel_SQL_Connect extends SQuirrel_SQL_ConnectHelper
{
/**
* Script Name : SQuirrel_SQL_Connect
* Generated : Jun 20, 2007 9:51:08 AM
* Description : XDE Tester Script
* Original Host : WinNT Version 5.1 Build 2600 (S)
*
* @since 2007/06/20
* @author IBM Rational
*/
public void testMain (Object[] args)
{
startApp(“squirrel-sql”);
// Frame : SQuirrel SQL Client Version 2.5
listOfDatabaseAliasesThatCanBe().doubleClick(atText(“Classics Database”));
connect().click();
}
}
|
录制 SQuirreL SQL 对应的第二个脚本:SQuirreL_SQL_Simple_Query脚本。
- 提供这个脚本的名称并点击Finish按钮开始录制它,如图 5所示。
图5. 开始录制您的脚本
- 选择 Session > New SQL Worksheet,如图 6所示。
图 6. 打开一个新的 SQL 工作表
- 在 SQL 编辑区域点击,并键入
SELECT * FROM ORDERS,如图 7所示。
图 7. 键入 SQL 命令
注意:您可能需要最大化您的窗口并重新调整这个 RESULTS 方框。
- 点击 Run SQL按钮
(同样如图 7所示)。 - 创建 Verification Point 和 Action 向导,如图 8所示。
图 8. 选择一个对象
- 利用 Object Finder 工具在 SQuirreL SQL 窗口中选择这个结果集合,如图 9所示。
图 9. 选择这个结果集合
- 选择 Data Value 的 Table Contents,为 Verification Point Name 提供
VerifyOrdersResultSet,然后点击 Next 按钮(如图 10 所示)。
图 10. 插入一个验证点
- 选择首5栏(为数据测试之用),并点击 Finish 按钮,如图 11所示。
图 11. 选择数据来进行测试
注意:确定您已经选择了下拉菜单中的Column Selection。然后您可以选择第一栏(也就算,点击数据的第一个单元),并拖拽到右边。
- 点击 Rational Functional Tester 中的 Stop Recording按钮。
您现在应用拥有一个看起来跟列表 2相似的脚本。
列表 2. 录制的 Simple Query 脚本
public class SQuirrel_SQL_Simple_Query extends SQuirrel_SQL_Simple_QueryHelper
{
/**
* Script Name : SQuirrel_SQL_Simple_Query
* Generated : Jun 20, 2007 9:54:46 AM
* Description : XDE Tester Script
* Original Host : WinNT Version 5.1 Build 2600 (S)
*
* @since 2007/06/20
* @author IBM Rational
*/
public void testMain (Object[] args)
{
// Frame : SQuirrel SQL Client Version 2.5
mainFrameMenuBar().click(atPath(“Session”));
mainFrameMenuBar().click(atPath(“Session->New SQL Worksheet”));
justToMakeGetToolTiptextToBeCa().click(atPoint(30,9));
mainFrame().inputKeys(“{CAPSLOCK}SELECT * FROM ORDERS”);
runSQLControlENTER().click();
VerifyOrdersResultSetVP().performTest();
}
}
|
注意:根据您使用的 Rational Functional Tester 的版本,您的验证点基线看起来应该如下所示:
dataSetViewerTablePanelMyJTabl().performTest(VerifyOrderResultSetVP());
录制 SQuirreL SQL 对应的最后一个脚本 SQuirreL_SQL_Close 脚本。
- 提供这个脚本的位置和名称,然后点击 Finish 按钮来开始录制,如图 12所示。
图 12. 开始录制
- 在 SQuirreL SQL 中,选择 File > Exit,如图 13所示。
图 13. 现存的 SQuirreL SQL
- 点击这个信息对话框中的 Yes 按钮,如图 14 所示。
图 14. 确定您想要关闭这个会话
- 如果您得到一个如图 15所示的 "不要保存变更" 的对话框,只需点击 No 即可。
图 15. 不要保存变更
- 点击 Rational Functional Tester 中的 Stop Recording 按钮。
您现在应该拥有一个看起来与列表 3相似的脚本。
列表 3. 录制的 SQL Close 脚本
public class SQuirrel_SQL_Close extends SQuirrel_SQL_CloseHelper
{
/**
* Script Name : SQuirrel_SQL_Close
* Generated : Jun 20, 2007 10:01:03 AM
* Description : XDE Tester Script
* Original Host : WinNT Version 5.1 Build 2600 (S)
*
* @since 2007/06/20
* @author IBM Rational
*/
public void testMain (Object[] args)
{
// Frame : SQuirrel SQL Client Version 2.5
mainFrameMenuBar().click(atPath(“File”));
mainFrameMenuBar().click(atPath(“File->Exit”));
//
yes().click();
//
no().click();
}
}
|
将它捆绑在一起,创建这个命令脚本:SQuirreL_SQL_Shell。
- 右键点击 Rational Functional Tester 中 Functional Test Project 视图中的项目,然后选择 Add Empty Script,如图 16所示。
图16. 添加一个空白脚本
- 为这个脚本提供一个位置和名称,点然后击 Finish,如图 17所示。
图 17. 开始录制一个空白测试脚本
- 在 // TODO Insert code here // 后面创建一个新的命令行,点击这个空白命令行并将鼠标定位在这里。
- 右键依次点击每个 SQuirreL SQL 脚本,并选择 Insert As callScript 将它们添加到您的新的命令脚本中 ,如图 18所示。
注意:注意要按照顺序添加这些脚本。
图 18. 将脚本插入到您的命令中
注意:注意要按照顺序添加这些脚本。
您现在应该拥有一个看起来与列表 4相似的脚本。
列表 4. 完成的 SQL 命令脚本
import resources.SQuirrel_SQL_ShellHelper;
/**
* Description : XDE Tester Script
* @author IBM Rational
*/
public class SQuirrel_SQL_Shell extends SQuirrel_SQL_ShellHelper
{
/**
* Script Name : SQuirrel_SQL_Shell
* Generated : Jun 20, 2007 10:09:19 AM
* Description : XDE Tester Script
* Original Host : WinNT Version 5.1 Build 2600 (S)
*
* @since 2007/06/20
* @author IBM Rational
*/
public void testMain (Object[] args)
{
callScript(“SQuirrel_SQL_Connect”);
callScript(“SQuirrel_SQL_Simple_Query”);
callScript(“SQuirrel_SQL_Close”);
}
}
|
既然您已经创建了您的 SQuirreL Scripts,回放它们只是小菜一碟。值得注意的有两点:
- 当回放这些脚本时,您应该注意一些时间掌握的问题。只需将
waitForExistence()程序命令添加到某些对象中就可以解决这个问题。例如,在第一个脚本中,将它添加到这个数据库应用程序对象中。我使用的代码行看起来如下所示:
listOfDatabaseAliasesThatCanBe().waitForExistence();
- 您可以将同步化添加到您另两个脚本中。主要是,您要确定第一个脚本是否已将离开了 SQuirreL SQL 处理数据,第二个脚本要等到它完成才可以开始。
研究 SQuirreL SQL 为您提供的广泛将对您有很大的帮助。如果您今天所看到的这些简单的功能能够满足您的需求那就更好了。然而,您或许能发现利用这个工具您还能做出更了不起的事情来。更值得人骄傲的是,您能够利用 Rational Functional Tester 自动化操作这些程序。
作为一个自动化工程师,您不需要创建仅仅为数据库测试利用的测试项目(当然,除非那是您所做的所有事情)。相反,而是您把这种自动化置入到您的应用软件脚本中。这里有几种操作方法。
- 方法之一是使这些脚本变成通用的方法,意思是它们能为各种参数所用(比如 SQL 查询字符串),并能动态核实结果集合。然后您可以创建自定义 Super Helper Classes 并将这些普通的方法置于其中。这样您就可以简单地从您的测试脚本中调用必要的方法(例如在一个表格中查询)。
- 另一种方法,或许更简单,就是将这些保存作为脚本。您仍然需要使它们为普通可用的(例如,接受不同的参数,等等),但是它们是从命令脚本中被调用的(与您在这个练习中创建的命令脚本类似)。
您如何来操作这些事情完全取决于您自己。任何案例的最终结果都是,您现在知道如何利用 Rational Functional Tester 和 SQuirreL SQL 来成功地对您的数据库测试进行自动化操作。
| 描述 | 名字 | 大小 | 下载方法 |
|---|---|---|---|
| Scripts to accompany the article | squirrel-sql-scripts.zip | 15KB | HTTP |
学习
- 您可以参阅本文在 develperWorks 全球网站上的 英文原文。
- 在 developerWorks 的 Rational Functional Tester 产品页面 中,获取利用这个工具您需要加强技巧的资源。
- 浏览技术书店寻找关于一些技术话题的书籍。
获得产品和技术
讨论
- 查看 developerWorks 博客,并加入到 developerWorks 社区中。