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

本文通过设计一些最佳实践的场景,以 Word Importer 中的 XLSWorksheetID、self reference、Link、XLSLink、cell or column、attachment 和 image 为主线,介绍 Rational Quality Manamger Excel Importer 的最佳实践。

1. RQM Excel Importer 简介

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

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

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

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

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

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

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

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

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

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

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

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

本章介绍了 RQM Excel Importer 的主要功能和使用方法,下面几章将重点介绍 RQM Excel Importer 中的 XLSWorksheetID、self reference、Link、XLSLink、cell or column、attachment 和 image 为主线,介绍 RQM Excel Importer 的最佳实践。


2. 通过 XLSWorksheetID 指定 Excel worksheet

从 RQM Excel Importer 中,可以通过 XLSWorksheetID 来指定 worksheet 来构造 Artifacts。

XLSWorksheetID 是 RQM Excel Importer 配置文件的语法格式,用来指定 excel worksheet 的名字。

清单 1. 指定构造 Artifact 的 worksheet name
testcase.XLSWorksheetID="Sheet1"
testplan.XLSWorksheetID="Sheet2"

如果 excel 文档使用清单 1 的配置文件,则会通过名字为"Sheet1"的 excel worksheet 来构造 testcase,通过名字为"Sheet2"的 excel worksheet 来构造 testplan。并且还可以通过 Link 关键字将 testcase 和 testplan 关联起来。Link 关键字将会在后面的章节中介绍。注意:worksheet 名字是区分大小写的。

图 6 excel 文档 1 worksheet “testcases”
图 6 excel 文档 1 worksheet “testcases”
图 7excel 文档 2 worksheet “testplans”
图 7excel 文档 2 worksheet “testplans”

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

清单 2. 配置文件 1
testcase.XLSWorksheetID="testcases"
testcase.XLSStartRow=2
testcase.dc:title=B
testcase.dc:description=C
testcase.jzalm:owner=D
testcase.XLSDelimeter=\n

testplan.XLSWorkssheetID="testplans"
testplan.XLSStartRow=2
testplan.dc:title=B
testplan.dc:description=C
testplan.jzalm:owner=D

RQM Excel Importer 会递归的进行数据抓取,首先将会从 excel 的 Worksheet "testcases"中构造 testcase,testcase.XLSDelimeter="\n"表示 testcase 实体构造的分隔符,表示遇到换行则开始构造下一个 testcase。testcase.XLSStartRow 表示开始构造 testcase 的开始行数,默认的开始行数是 0,在本例中如果没有设置 XLSStartRow,则会有 4 个 testcases 生成。第一个 testcase 的 title 是 name,description 为 description, owner 为 owner,这不是我们所期望的,这些值只是作为表格的说明而不是同样用来构造实体。

同理会从 excel 的 Worksheet "testplans"构造 testplan。

通过构造将会有 3 个 testcase 和 3 个 testplan 生成。如清单 3 和清单 4 所示:

清单 3. 构造的 testcase 对应的简化 XML
testcase1:
<testcase>
<dc:title>testcase1</dc:title>
<dc:description >des1</dc:description >
<jzalm:owner>user1</jzalm:owner>
</testcase>>

Testcase2:
<testcase>
<dc:title>testcase2</dc:title>
<dc:description >des2</dc:description >
<jzalm:owner>user2</jzalm:owner>
</testcase>

Testcase3:
<testcase>
<dc:title>testcase3</dc:title>
<dc:description >des3</dc:description >
<jzalm:owner>user3</jzalm:owner>
</testcase>
清单 4 构造的 testplan 对应的简化 XML
Testplan1:
<testplan>
<dc:title> testplan1</dc:title>
<dc:description>des1</dc:description>
<jzalm:owner>user1</jzalm:owner>
</testplan>

Testplan2:
<testplan>
<dc:title>testplan2</dc:title>
<dc:description >des2</dc:description >
<jzalm:owner>user2</jzalm:owner>
</tstplan>

Testplan3
<testcase>
<dc:title> testplan 3</dc:title>
<dc:description >des3</dc:description >
<jzalm:owner>user3</jzalm:owner>
</testplan>

对于生成的 XML 可以通过几种方式迁移到 RQM 中:

  1. 使用"Export to repository"指定 server 信息和对应的 user 信息,选择将要导入的 project area,则会在对应的 project area 里生成 3 个 testcase 和 3 个 testplan。
  2. 使用 Poster 来将构造的 XML 导入到 RQM 系统。可以参考RQM Using Poster
  3. 对于 testplan,testcase 和 testscript 可以使用这种方式来将 xml 导入到 RQM 系统。

在 RQM 系统界面选择 Planning -> Import test plans, Construction -> Import test cases, Construction -> Import test scripts 菜单来导入 XML。


2. 通过 self reference 关联 artifact

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

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

testplan.dc:title=testcase.dc:title
图 8 excel 文档 3 Worksheet:”self reference1”
图 8 excel 文档 3 Worksheet:”self reference1”
图 9 excel 文档 3 Worksheet: “self reference2”
图 9 excel 文档 3 Worksheet: “self reference2”

使用如下的配置文件来构造 testplan 和 testcase。

清单 5. 配置文件 5
testcase.XLSStartRow=2
testcase.dc:title=B
testcase.dc:description=C
testcase.jzalm:owner=D
testcase.XLSDelimeter=\n
testcase.XLSArtifactID=B

testplan.dc:title=testcase.dc:title
testplan.dc:description=testcase.dc:title

在没有指定 XLSWorksheetID 的情况下,RQM Excel Importer 将会递归所有的 excel Worksheet 来构造 artifact。testplan 会从 testcase 的属性来构造自身属性。本例中将会构造 6 个 testcase 和 6 个 testplan 并且有对应的关联关系。

清单 6. 构造的 testcase 的简化 XML
Testcase1:
<testcase>
<dc:title>login</dc:title>
<dc:description >des1</dc:description >
<jzalm:owner>user1</jzalm:owner>
</testcase>>

Testcase2:
<testcase>
<dc:title>regist</dc:title>
<dc:description >des2</dc:description >
<jzalm:owner>user2</jzalm:owner>
</testcase>

Testcase3:
<testcase>
<dc:title>logout</dc:title>
<dc:description >des3</dc:description >
<jzalm:owner>user3</jzalm:owner>
</testcase>

Testcase4:
<testcase>
<dc:title>browse</dc:title>
<dc:description >des4</dc:description >
<jzalm:owner>user4</jzalm:owner>
</testcase>>

Testcase5:
<testcase>
<dc:title>create</dc:title>
<dc:description >des5</dc:description >
<jzalm:owner>user5</jzalm:owner>
</testcase>

Testcase6:
<testcase>
<dc:title>update</dc:title>
<dc:description >des6</dc:description >
<jzalm:owner>user6</jzalm:owner>
</testcase>

清单 7. 构造的 testplan 的简化 XML

Testplan1:
<testplan>
<dc:title>login</dc:title>
<dc:description>des1</dc:description>
<testcase href="../testcase/login" />
<jzalm:owner>user1</jzalm:owner>
</testplan>

Testplan2:
<testplan>
<dc:title>regist</dc:title>
<dc:description >des2</dc:description >
<testcase href="../testcase/regist" />
<jzalm:owner>user2</jzalm:owner>
</tstplan>

Testplan3
<testcase>
<dc:title>logout</dc:title>
<dc:description >des3</dc:description >
<testcase href="../testcase/logout" />
<jzalm:owner>user3</jzalm:owner>
</testplan>

Testplan4:
<testplan>
<dc:title> browse</dc:title>
<dc:description>des4</dc:description>
<testcase href="../testcase/browse" />
<jzalm:owner>user4</jzalm:owner>
</testplan>

Testplan5:
<testplan>
<dc:title>create</dc:title>
<dc:description >des5</dc:description >
<testcase href="../testcase/create" />
<jzalm:owner>user5</jzalm:owner>
</tstplan>

Testplan6
<testcase>
<dc:title>update</dc:title>
<dc:description >des6</dc:description >
<testcase href="../testcase/update" />
<jzalm:owner>user6</jzalm:owner>
</testplan>

在配置文件中,使用 testcase.XLSArtifactID 来指定构造的 testcase 的 external id。不指定 testcase.XLSArtifactID 的时候系统将自动分配 external id,创建的所有的 artifact 都是通过 PUT 请求来创建的。在创建的 testplan 中,RQM Excel Importer 自动创建了 testplan 和 testcase 的关联关系。

如果使用 RQM UI 来导入生成的 XML 时,一定要先导入被关联的 artifact,在本例中为 testcase,然后在导入 testplan,否则 testplan 和 testcase 的关联关系会丢失。


3. 通过 XLSLink 关联 artifact

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

例如图 10 的 excel 文档,我们期望创建一个 test suite,创建 3 个 test case,并且将这个 testsuite 和 3 个 tescases 关联起来。

图 10 excel 文档 4 XLSLink
图 10 excel 文档 4 XLSLink

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

清单 8. Excel 文档 4 配置文件
testsuite.dc:title=B2
testsuite.dc:description=C2
testsuite.XLSLink=testcase

testcase.dc:title=B
testcase.dc:description=C
testcase.XLSStartRow=5
testcase.XLSArtifactID=B

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

清单 9. test suite 对应的简化 XML
<testsuite>
<dc:title>testsuite1</dc:title>
<dc:description>testsuite desc</dc:description>
<suiteelements><suiteelement><testcase href="../login"/>
</suiteelement>
<suiteelement><testcase href="../testcase/regist "/>
</suiteelement>
<suiteelement><testcase href="../testcase/logout "/>
</suiteelement>
</suiteelements>
</testsuite>
清单 10. testcases 对应的简化 XML
Testcase1:
<testcase>
<dc:title>login</dc:title>
<dc:description >des1</dc:description >
</testcase>>

Testcase2:
<testcase>
<dc:title>regist</dc:title>
<dc:description >des2</dc:description >
</testcase>

Testcase3:
<testcase>
<dc:title>logout</dc:title>
<dc:description >des3</dc:description >
</testcase>

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

在 RQM Excel Importer 中,可以通过 XLSArtifactId 指定生成 artifact 的 external id,再通过 Link 关键之来指定关联的 artifact。Link 关键字可以处理 1 对多的关联关系

例如图 11 的 excel 文档,我们期望创建两个 Test plan,创建 5 个 test case,并且将第一个 test plan 和三个 testcase 关联起来,另外一个 testplan 和两个 testcase 关联起来

图 11 excel 文档 5 Worksheet “testplans”
图 11 excel 文档 5 Worksheet “testplans”
图 12 excel 文档 5 Worksheet “testcases”
图 12 excel 文档 5 Worksheet “testcases”

我们可以使用清单 11 的配置文件,通过 Link 关键字指定要关联的 test case。在 RQM Excel Importer 中 Link 可以指定多个关联,在一个单元格中可以指定多个关联的 external id,它们之间用换行符分割。

清单 11. 配置文件
testplan.dc:title=B
testplan.dc:description=D
testplan.testcase=Link(D)
testplan.XLSStartRow=2
testplan.XLSWorksheetID="testplans"

testcase.dc:title=B
testcase.dc:description=C
testcase.XLSArtifactID=D
testcase.XLSStartRow=2
testcase.XLSWorksheetID="testcases"
清单 12. 构造的 testcases 的简化 XML
Testcase1:
<testcase>
<dc:title>login</dc:title>
<dc:description >des1</dc:description >
</testcase>>

Testcase2:
<testcase>
<dc:title>regist</dc:title>
<dc:description >des2</dc:description >
</testcase>

Testcase3:
<testcase>
<dc:title>logout</dc:title>
<dc:description >des3</dc:description >
</testcase>

Testcase4:
<testcase>
<dc:title>browse</dc:title>
<dc:description >des4</dc:description >
<jzalm:owner>user4</jzalm:owner>
</testcase>>

Testcase5:
<testcase>
<dc:title>create</dc:title>
<dc:description >des5</dc:description >
<jzalm:owner>user5</jzalm:owner>
</testcase>
清单 13. 构造的 testplan 的简化 XML
Testplan1:
<testplan>
<dc:title>testplan1</dc:title>
<dc:description>plan1</dc:description>
<testcase href="../testcase/tc1" />
<testcase href="../testcase/tc3" />
<testcase href="../testcase/tc5" />
</testplan>

Testplan2:
<testplan>
<dc:title>testplan2</dc:title>
<dc:description >plan2</dc:description >
<testcase href="../testcase/tc2" />
<testcase href="../testcase/tc4" />
<jzalm:owner>user2</jzalm:owner>
</tstplan>

Link 关键字还可以关联 RQM 中已经创建好的 artifacts,例如我们已经知道在 RQM 系统中 3 个 testcase 的 artifact 的 internal 为 urn:com.ibm.rqm:testcase:3, urn:com.ibm.rqm:testcase:7, urn:com.ibm.rqm:testcase:11 (external id 同样适用 )。如果想创建一个新的 testplan 然后把这 3 个 testcase 关联起来,我们可以构造如图 13 的 excel 文档和清单 14 的配置文件。

图 13 excel 文档 6
图 13 excel 文档 6
清单 14. 配置文件
testplan.dc:title=B2
testplan.dc:description=C2
testplan.testcase=Link(D2)

RQM Excel Importer 将会创建一个新的 testplan 如清单 15。

清单 15. 构造的 testplan 的简化 XML
Testplan1:
<testplan>
<dc:title>testplan1</dc:title>
<dc:description>plan1</dc:description>
<testcase href="../testcase/urn:com.ibm.rqm:testcase:3" />
<testcase href="../testcase/urn:com.ibm.rqm:testcase:7" />
<testcase href="../testcase/urn:com.ibm.rqm:testcase:11" />
</testplan>

5. 使用单元格(cell)还是列(column)来指定属性

在清单 14 的配置文件中我们使用了具体的单元格 B2,C2,D2 来构造 testplan,这种配置在几种场景比较常用。

  1. 一个 excel 文档中有很多 worksheet,为了区分将同种类型的 artifact 放在了不同的 worksheet 中。并且这些 artifact 属性所处的单元格位置相同。有 10 个 testplan 保存在了不同的 worksheet 中,它们的 title 放在不同 worksheet 的 B2 单元格中,description 放在了 C2 单元格中,这些 testplan 可以关联不同的 testcase 保存在 D2 中。如文档 7,如图 14,15,16.
图 14 excel 文档 7 worksheet “testplan1“
图 14 excel 文档 7 worksheet “testplan1“
图 15 excel 文档 7 worksheet “testplan2“
图 15 excel 文档 7 worksheet “testplan2“
图 16 excel 文档 7 worksheet “testplan3“
图 16 excel 文档 7 worksheet “testplan3“
  1. 有很多 excel 文档,并且这些文档的 worksheet 结构相同,这时可以使用 RQM Excel Importer 的 export to repository 功能的"Other document",然后加入这些具有相同结构的 excel 文档,使用相同的配置文件来到出到 RQM 系统。

使用 column 来指定所要读取的属性,这种情况一般是把很多 artifacts 放到了一个 worksheet,递归的构造 artifact。图 11,图 12,excel 文档 5 是一种典型情况。


6. 将 excel 中的图片,附件导入到 RQM

这种情况比较典型的是将 excel 的图片导入到 RQM 一个属性中,而这个属性必须是 rich text 格式的。例如 testscript 的 step 的 expect result。

导入图片可以使用 image 关键字来将 excel 表格中的图片信息导出到 RQM 系统中。image 只会读取 excel 表格中的图片信息。所以如果一个表格中文字信息和图片信息同时存在,可以使用如下的格式:

testscript.steps.expectedResult=F5 & image(F5)

"&"用来将不同的信息放入到容一个 artifact 的属性中。

attachment 用来保存 attachment 到 RQM 的 rich text 属性中。它的使用格式和 image 有所不同。格式如下:

testscript.steps.attachment=N9

6. 总结

本文主要介绍了 RQM 的数据迁移工具 RQM Excel Importer。介绍了针对不同的 excel 文档如何更好的设计配置文件,来更好的把 excel 文档中的数据迁移到 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=819163
ArticleTitle=迁移 MS Office 文档数据到 Rational Quality Manager —— Excel Importer 最佳实践
publish-date=05312012