在 4.1 节中,我们已经解决如何批量的创建 Test Case(TC)和 Configured Test Case(CTC),并与脚本相关联。在本节中,我们将提供一个高级方案,以使得测试的准备更方便,流程更易管理。
在 CQTM 中,除了与测试脚本相关联以外,对于 TMTestCase 和 TMConfiguredTestCase 还有其他一些重要的信息,比如“Description”, “Iterations”, “Points”, “Owner”等,如图 9 所示。
图 9. CQTM 中 Test Case 的属性
我们当然可以在测试用例 (TC/CTC) 被创建后手动为每个用例输入上述信息,但这样做非常耗时,而且不易于统计所有用例的信息或在同一视图中对它们进行比较。为何不可在同一次创建过程中批量导入这些信息呢?
假定我们有一个关于所有测试用例信息的列表,那么我们就可以在同一视图中修改并管理它们。这会使得测试用例的准备和审查更为容易。更进一步的是,有了这样一个列表,我们就可以在短时间内将这些信息准确无误的导入到 CQTM 中。
这个方案在前述的普通方案的基础上增加了效率——首先创建一个列表,其中包含所有测试用例所需的信息;然后在创建 TC/CTC 时,就可同时将相应的信息导入到 CQTM 中。
Checklist 简介
Checklist 可以是 txt 格式,excel 格式或其他易于通过程序访问(仅需读取权限)的文件格式。
该文件的内容应当以类似表格的形式存在,每一行代表一个测试用例,每一列则代表测试用例的某个域的值。
图 10 是一个 txt 格式的文件示例:
图 10. txt 格式的 Checklist
在这种格式中,每个测试用例都从新的一行开始,每个域之间用逗号(,)分隔。如果某个域含有换行符或者逗号,则需要用一对双引号(“”)将其括住。
图 11 是一个 excel 格式的文件示例:
图 11. excel 格式的 Checklist
在这种格式中,每行代表一个测试用例,每列代表测试用例的一个域。标题(headline,与测试脚本名称相同)将用于匹配将在 CQTM 中创建的测试用例。
图 12 展示了该表格和 CQTM 之间的域映射 :
图 12. 域的映射关系
示例代码
高级方案中的步骤与普通方案类似,但加入了一些其他功能,以及更复杂的逻辑控制。基本步骤包括:
创建 CQSession 并登录;从工作表获取脚本信息;(更多信息,例如 owner,Iteration,description,points 等)创建 Test Plan;创建 Test Case;创建 Configured Test Case;创建 File Location;创建 External File;将脚本与 Test Case 或 Configured Test Case 相关联。以下示例代码阐述了与普通方案的一些主要不同点:
创建 Iteration。从工作表可以获取测试用例相关的迭代(Iteration)信息。如果该迭代在 CQTM 中不存在,则可以通过提供 startDate 和 endDate 来创建它。
清单 8. 创建 Iteration
session.SetNameValue("IterationCreation", "true"); CQEntity entity = session.BuildEntity("TMIteration"); entity.SetFieldValue("Name", iterationName); entity.SetFieldValue("StartDate", startDate); entity.SetFieldValue("EndDate", endDate); entity.SetFieldValue("AssetRegistry", assetRegistry); entity.Validate(); entity.Commit();
创建 Test Plan/TC/CTC 时加入更多的信息。
由于从工作表中可以取得更多信息,因此可以尽可能的向 CQTM 中自动加入,以减少手动工作。以下列出一些可能添加的信息。
创建 Test Plan:owner 和 Iteration.
创建 Test Case:points, description, owner 和 Iteration.
创建 Configured Test Case:points, owner 和 Iteration.
以创建 Test Plan 为例:
清单 9. 加入更多信息
entity.SetFieldValue("AssetRegistry", assetRegistry); entity.SetFieldValue("Headline", headline); entity.SetFieldValue("owner", owner); //owner information entity.SetFieldValue("Iterations", iteration); //Iteration information
创建 File Location。
可以创建 File Location 以供 External File 使用。此处需要定义一定的命名规则来区分不同的 File Location。其名字应被返回以在创建 External File 时使用。
文章来源于领测软件测试网 https://www.ltesting.net/