一种高效的应用程序脚本语言 API 自动化测试方法(下)

发表于:2010-7-15 16:54

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Monica Luke(IBM)    来源:51Testing软件测试网采编

  7 错误处理机制

  测试执行过程中必然会遇到错误发生,为了使测试能够连续的执行,不会因为一个错误而中断了整个测试的执行过程,同时方便测试执行结束后分析错误原因,需要对运行时的错误进行处理。从测试的观点来看,测试用例是用来测试被测对象,测试脚本只需要严格按照测试用例中的步骤来编写。如果对测试脚本加了容错方法,则成为测试“测试脚本”,因此不应在每个测试脚本中加容错处理。我们只需要在 testMain 方法中加上容错处理,来捕获运行时的错误 , 运行时的错误描述信息写入 Log 文件。代码片段如下:

  清单 3. 将运行时的错误描述信息写入 Log 文件

Sub testMain()
On Error GoTo ErrorProcess
 testMothed1()
 testMothed2()
 ....

 Exit Sub
ErrorProcess:
TestLog_Error (Err.Description)
Resume.Next
end sub

  8 连续的执行测试

  上文中我们提到一个或多个 API 存在一个测试文件中,也就是一个测试脚本存在于一个测试文件中。它不像 JUnit 等所有测试脚本都在一个工程中,而且有 TestSuite 机制可以方便的连续执行需要的测试脚本。RFT 运行测试脚本时,会自动运行 testMain 方法,且脚本都在一个 Java 工程中,可以方便的连续执行所有的测试脚本。上文中介绍到本文测试脚本的组织结构,每个测试脚本都存在 testMain 方法中,因此我们只需要运行测试文件,调用 testMain 方法既可脚本以运行测试脚本。我们借鉴这种运行测试脚本的机制,只要可以连续处理测试文件,测试脚本就可以被连续的执行。我们使用 VBA 语言来操作测试文件,连续执行测试脚本。也可以使用其它高级语言来操作测试文件,启动测试脚本。考虑到 Symphony 项目中对 VBA 只是部分支持,我们使用 Java 去操作测试文件,执行测试脚本,Symphony Toolkit 中存在相应 Java API 可以读取和操作测试文件。图 4 所示其流程图:(1)读取测试文件列表(2)逐个打开测试文件(3)调用测试脚本。对于其它脚本语言也可以根据此思想通过其它方法进行操作。如使用 RFT 打开测试文件,模拟用户去调用测试脚本等。

  图 4. 连续执行测试脚本流程图


  9 TestSuite 的生成

  在 Symphony 项目中我们使用基于 Domino 和 Lotus Notes 的 TestCase Database 对测试用例和测试执行进行管理。测试存在不同的测试阶段如 FVT,SVT,即使是一个测试阶段如 FVT 又可以分为 FVT Fist Pass,Regression Test 等,并且需要在不同的操作系统上进行测试,需要执行不同的测试用例集合。每个测试用例中包含了所需要的测试文件(Excel 文件),测试对象(被测 API 列表)等。一个测试用例可以在多个测试 Cycle 中执行,而每个测试执行文档记录都有一个唯一的 URL,因此我们可以根据测试需要,生成由 URL,测试文件名组成的 TestSuite 文件。从而根据 TestSuite 来执行需要被执行的测试脚本。我们使用 Java 代码去操作 TestCase Database 生成 TestSuite。其核心代码片段如下:

  清单 4. 使用 Java 代码去操作 TestCase Database 生成 TestSuite

NotesThread.sinitThread(); // 初始化连接 Notes DB 线程
Session session = NotesFactory.createSession(
(String)null, (String)null, password);// 获取连接 Notes DB 的 Seession
Database database = session.getDatabase(host, nsf, false);// 获取 TestCase Database
DocumentCollection dc = database.search("ExecCycleID=" + "\"" + cycle + "\"");
// 根据 Cycle 获取测试记录集合
Document doc = dc.getFirstDocument();
// 把测试集合中的测试记录关键信息写入 TestSuite
while (doc != null) {
suiteFileWriter.write("-DexecutionURL=" + doc.getURL() + " " + tcID+ "\r\n");
doc = dc.getNextDocument();
}
41/41234>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号