迁移 MS Office 文档数据到 Rational Quality Manager —— Word Importer 最佳实践

本文通过设计一些最佳实践的场景,以 Word Importer 中的 List、Table、self reference、Link 及 DOCLink 为主线,介绍 Rational Quality Manager Word Importer 的最佳实践。

1. RQM Word Importer 简介

Microsoft 的 word 是被很多测试机构用来存储和维护测试资产的非常流行的文本格式。RQM Word Importer 是 RQM 提供的一个数据迁移工具,可以将这些 word 格式的测试资产通过 HTTP 导入到 RQM 系统。通过 RQM Word Importer, word 格式的数据可以导成标准的 RQM 系统支持的 XML 格式的文件,这些文件可以通过 RQM Reportable REST API 导入到 RQM 系统,并且通过自定义的配置,不同的测试数据可以在 RQM 系统中相互关联起来。通过简单的修改配置文件,word 数据可以导入成 RQM 系统提供的各种实体(Artifact)。

可以在 jazz.net 下载 RQM Word Importer(参见参考资料)。

RQM Word Importer 是一个 word 程序的插件,安装后就会在 word 中增加了一个菜单,菜单中包含了 RQM Word Importer 的主要功能,如图 1 所示。

图 1. RQM Word Importer 功能菜单
图 1. RQM Word Importer 功能菜单

Export to File,用来将 word 文档转换成 XML 数据格式并保存在本地磁盘上,如图 2 所示。

图 2. RQM Word Importer – Export to File
图 2. RQM Word Importer – Export to File

Export to File 菜单项,如图 3 所示。可以在菜单中指定到处的目录和配置文件,如果选择 Active Document 则为当前文件,如果几个 word 文档格式一致,那么可以认为这些文档可以公用同一个配置文件,可以选择 Other Document,这时可以选择多个 word 文档同时导出。

图 3. RQM Word Importer – Export to File 菜单项
图 3. RQM Word Importer – Export to File 菜单项

Export to Repository,用来将 word 文档中的数据导入到 RQM 服务器中。如图 4 所示。同过 RQM Reportable REST service 在 RQM 服务器端创建实体数据。

图 4. RQM Word Importer – Export to Repository
图 4. RQM Word Importer – Export to Repository

Export to Repository 菜单项,如图 5 所示。输入正确的 RQM Server 和用户信息后,在 Project 下拉框中会显示当前 server 中的对该 user 授权的项目。

图 5. RQM Word Importer – Export to Repository 菜单项
图 5. RQM Word Importer – Export to Repository 菜单项

本章介绍了 RQM Word Importer 的主要功能和使用方法,下面几章将重点介绍 RQM Word Importer 中的 List、Table、self reference、Link、DOCLink 为主线,介绍 RQM Word Importer 的最佳实践。


2. 通过 List()关键字抓取 word 文档中的编号列表数据

从 RQM Word Importer 4.0 开始,推荐通过换行符来分隔 word 文档中的实体数据。

List() 是 RQM Word Importer 配置文件的语法格式,List() 可以是字符串或者通配符。如果想抓取匹配 1.*. 的列表数据作为测试用例的 title,可以使用清单 1 的代码示例:

清单 1. 匹配 1.*. 的列表数据
testcase.dc:title=List("1.*.",1)
图 6 word 文档 1
图 6 word 文档 1

对于图 6 的 word 文档我们可以设计配置文件如清单 2。

清单 2. 配置文件 1
testscript.DOCStart="1."
testscript.dc:title=List("*")
testscript.steps.type="execution"
testscript.steps.description=List("*.1.*.1")
testscript.steps.expectedResult=List("*.1.*.2")

RQM Word Importer 会递归的进行数据抓取,首先将会从列表数据"1."分析数据,由于在列表数据"2. Account 40978267"之前使用了换行分隔符,所以该文档会创建两个测试脚本 (testscript) 实体。对于 testscript,如果配置了 steps,则会递归的读取 step 直到遇到换行分隔符,在本例中生成的第一个 testscript(Account 67666766676) 实体,会对应有 3 个 step,产生如清单 3 的 XML。

清单 3. testscript(Account 67666766676) 对应的 XML
<testscript>
<dc:title>Account 67666766676</dc:title>
<steps>
    <step type="execution">
        <description>Hammer introduced to 10000 degrees from a blow furnace Hammer 
        introduced to 10000 degrees from a blow furnace</description>
        <expectedResult>Hammer put through blast furnace and comes out without a 
        scratch on it</expectedResult>
    </step>
    <step type="execution">
        <description>Hammer can fall from a 1000 foot cliff</description>
        <expectedResult>Hammer falls from the cliff and comes out without a scratch
        on it.</expectedResult>
    </step>
    <step type="execution">
        <description>Hammer pounder by a rock 4000 times</description>
        <expectedResult>After pounding the hammer 4000 times it should come through 
        with hardly a scratch to show</expectedResult>
    </step>
</steps>
</testscript>

可以通过更改配置文件来改变生成的数据实体。例如使用清单 4 的配置文件。则会有两个测试用例(testcase)实体生成。生成的 testcase(Account 67666766676) 如清单 5 所示。

清单 4. 配置文件 2
testcase.DOCStart="1."
testcase.dc:title=List("*")
testcase.dc:description=List("*.1.")
testcase.jzalm:owner=List("*.1.1.")
清单 5. testcase(Account 67666766676) 的 XML
<testcase>
<dc:title>Account 40978267</dc:title>
<dc:description>Steps</dc:description>
<jzalm:owner>Step 1</jzalm:owner>
</testcase>

List 的主要目的是抓取 word 文档中编号列表数据,使用者可以通过更改配置文件来灵活的抓取 word 文档中的列表数据。


2. 通过 Table()关键字抓取 word 文档中的表格数据

Table 是 RQM Word Importer 配置文件的语法格式,Table 可以由一个数字(word 文档中 table 的序号),或者 table 的第一个单元格包含的字符串来指定。

当 Table 通过数字来指定时,我们可以使用 Table(1)来指定一个静态的 Table,静态的 Table 表示所有的 Artifacts 将通过同一个 Table 来抓取数据。

当 Table 通过字符串来指定时,Table 则为动态的,如果多个 Table 都通过这个字符串来标识,则可以递归的通过多个创建多个 Artifacts。当 Artifact 的数据放在不同的 Table 并且期望同时创建多个 Artifacts 时可以使用这种方式,语法如 Table("My Table")。

当指定一个 Table 之后,必须指定 Table 中的某一个单元格或者某一列。

定义读取一个静态 Table 中的单元格可以使用如下配置:

testcase.dc:title=Talbe(1).B2

下面的配置将抓取数据从一个动态的 Table,这个 Table 的第一个单元格由字符串"My Test"开头。

Testcase.dc:title=Table("My Test").B

其中"My Test"是区分大小写,并且忽略前后空格的。

下面将通过两个实例来介绍如何使用 Table 关键字。

图 7 word 文档 2
图 7 word 文档 2

如图 7 是一个包含 Table 的 word 文档的片段。

RQM Word Importer 不建议将测试脚本的 step 放到一个单元格中,但是如果已有的文档已经使用清单 6 的数据格式我们可以将 steps 作为一个整体保存在一个单元格中。(计划将在 RQM Word Importer 4.0 的后续版本中解析单元格,将数据分别放在不同的 step 中。)

可以使用如清单 6 的配置文件:

清单 6. 配置文件 3
testscript.DOCStart="1."
testscript.dc:title=List("1.*")
testscript.steps.type="execution"
testscript.steps.title=Table("Description").B1
testscript.steps.description=Table("Description").B2

导出后将会对应有 3 个测试脚本 (test script) 生成。

图 8 word 文档 3
图 8 word 文档 3

如图 8,定义了 3 个测试脚本,并且测试脚本的步骤放在 Table 的不同的行中。这种样式是 RQM Word Importer 推荐使用的格式,可以使用如清单 7 的配置文件。

清单 7. 配置文件 4
testscript.DOCStart="1."
testscript.dc:title=List("1.*")
testscript.dc:description=List("1.*.1")
testscript.jzalm:owner=List("1.*.2")
testscript.steps.type="execution"
testscript.steps.title=Table("Description").B
testscript.steps.description=Table("Description").C

通过清单 7 的配置文件,将会对应生成 3 个 test script,包含 title、description、owner、step、信息。


3. 通过 self reference 关联 artifact

在 RQM Word Importer 中 self reference 处理 1 对 1 的关联关系。表示一个 artifact 只关联唯一的 artifact。

Self reference 通常使用如下的配置。

testcase.dc:title=testscript.dc:title
清单 8. 配置文件 5
testscript.DOCStart="1."
testscript.dc:title=List("1.*")
testscript.dc:description=List("1.*.1")
testscript.jzalm:owner=List("1.*.2")
testscript.steps.type="execution"
testscript.steps.title=Table("Description").B
testscript.steps.description=Table("Description").C

testcase.dc:title=testscript.dc:title
testcase.dc.description=testscript.dc:description

对于图 7 的 word 文档,如果使用清单 8 的配置文件,将会生成 3 个 test case 和 3 个 test script,并且每个 test case 都与一个 test script 相关联。

生成的 test case1 对应的 XML 文件如清单 9 所示。

清单 9. test case 对应的 XML 文件
testcase1
<testcase>
<dc:description>Test1 Description</dc:description>
<dc:title>Test1</dc:title>
<testscript href="../testscript/Testscript1.xml"/>
</testcase>

testcase2<testcase>
<dc:description>Test2 Description</dc:description>
<dc:title>Test2</dc:title>
<testscript href="../testscript/Testscript2.xml"/>
</testcase>

testcase3
<testcase>
<dc:description>Test3 Description</dc:description>
<dc:title>Test3</dc:title>
<testscript href="../testscript/Testscript3.xml"/>
</testcase>

4. 通过 DOCLink 关联 artifact

在 RQM Word Importer 中,DOCLink 主要处理 1 对多的关联关系。

例如图 9 的 word 文档,我们期望创建一个 Test suite,创建 5 个 test case,并且将这个 test suite 和 5 个 test suite 关联起来。

图 9 word 文档 4
图 8 word 文档 4

我们可以使用 DOCLink 来实现这个需求。如清单 10 所示。

清单 10. 配置文件 6
testsuite.dc:title=List("1.")
testsuite.dc:description=List("1.1")
testsuite.DOCLink=testcase

testcase.dc:title=List("1.1.*.1.")
testcase.dc:description=List("1.1.*.2.")

生成的 test suite 的 XML 文件如清单 11 所示。

清单 11.test suite 对应的 XML
<testsuite>
<dc:title>Test suite</dc:title>
<dc:description>Testsuite description</dc:description>
<suiteelements><suiteelement><testcase href="../testcase1"/>
</suiteelement>
<suiteelement><testcase href="../testcase/testcase2"/>
</suiteelement>
<suiteelement><testcase href="../testcase/testcase3"/>
</suiteelement>
<suiteelement><testcase href="../testcase/testcase4"/>
</suiteelement>
<suiteelement><testcase href="../testcase/testcase5"/>
</suiteelement>
</suiteelements>
</testsuite>

5. 通过 Link 关联指定 id 的 artifact

在 RQM Word Importer 中,可以通过 DOCArtifactId 指定生成 artifact 的 external id,再通过 Link 关键之来指定关联的 artifact。

例如图 10 的 word 文档,我们期望创建一个 Test plan,创建 5 个 test case,并且将这个 test plan 和第三个 testcase 关联起来。

图 10 word 文档 5
图 10 word 文档 5

我们可以使用清单 12 的配置文件,通过 Link 关键字指定要关联的 test case。在 RQM Excel Importer 中 Link 可以指定多个关联,将会在下一篇 RQM Excel Importer 中介绍。

清单 12. 配置文件 7
testplan.dc:title=List("1.")
testplan.dc:description=List("1.1")
testplan.testcase=Link("../testcase/Testcase3")

testcase.dc:title=List("1.1.*.1.")
testcase.dc:description=List("1.1.*.2.")
testcase.DOCArtifactID=testcase.dc:title

6. 总结

本文主要介绍了 RQM 的数据迁移工具 RQM Word Importer。介绍了针对不同的 word 文档如何更好的设计配置文件,来更好的把 word 文档中的数据迁移到 RQM 系统中来。

参考资料

学习

获得产品和技术

  • 下载 RQM Word Importer
  • 获取免费的 Rational 软件工具包系列,了解最新的 IBM Rational 软件开发工具技术文档和资源。
  • 下载更多免费的 IBM Rational 试用版软件,了解 IBM Rational 软件的最新特性。
  • 获取更多 IBM 试用版软件,并熟练掌握来自 DB2®、Lotus®、Tivoli®,以及 WebSphere® 的开发工具和中间件产品,用这些试用版软件开发您的下一个项目。这些试用版软件可以免费直接从 developerWorks 下载。

讨论

  • 加入 developerWorks 中文社区,developerWorks 社区是一个面向全球 IT 专业人员,可以提供博客、书签、wiki、群组、联系、共享和协作等社区功能的专业社交网络社区。
  • 访问 developerWorks 社区上的 Jazz 技术小组,这里汇集了丰富的 Jazz 平台中文技术资源。 您可以通过这里了解更多关于 Jazz 平台和 Jazz 技术发展趋势的最新信息。
  • 访问 developerWorks 社区上的 敏捷开发小组,在那里您将有机会与更多的开发人员一起交流敏捷开发最佳实践。
  • 加入 IBM 软件下载与技术交流群组,参与在线交流。

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Rational
ArticleID=819140
ArticleTitle=迁移 MS Office 文档数据到 Rational Quality Manager —— Word Importer 最佳实践
publish-date=05312012