内容


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

Comments

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 功能菜单
图 1. RQM Word Importer 功能菜单

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

图 2. RQM Word Importer – Export to File
图 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 菜单项
图 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
图 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 菜单项
图 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 文档 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 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 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
图 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
图 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 系统中来。


相关主题


评论

添加或订阅评论,请先登录注册

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