第3章 可扩展的测试资源管理模块

对自动化测试用例来说,我们需要通过某种途径去获取所需的测试资源,并通过特定的接口来操作这些资源。

有很多方式可以实现将测试资源信息传递给测试脚本,比如通过文本形式的配置文件XML、JSON或YAML来定义测试资源,再在测试脚本中通过解析这些文件来获取资源。但是通常我们不会直接从脚本中解析这些文件,而是将其封装成特定的测试资源库,来统一定义测试资源的定义方法,比如测试资源的类型、字段等。即便如此,这种方法仍然会有一定的问题产生,相信很多从事自动化测试开发的工程师都会遇到过,主要有以下两方面的问题。

(1)测试资源定义的变动

当我们定义一个测试资源的时候,我们并不能保证将来不添加新的字段或属性,当我们需要添加新的字段的时候,除了在定义文件内添加,还需要在解析它的库里面增加新字段的支持。同样,这些改动还需要告诉测试用例的开发人员。当然定义的变动不仅仅是属性的变动,还有资源类型的变化,比如当新的测试资源被引入时,就需要对其进行新的定义,使其可以被测试资源库正确解析,并提供给测试用例。

(2)测试资源定义文件的建立和修改

如果一个测试环境非常复杂,测试资源非常多,并且需要描述测试资源之间的连接关系,那么测试文件的建立和修改就会变得非常麻烦,通过文本文件编辑器来直接编辑非常容易出错。在这样的情况下,就需要设计一些辅助的工具来帮助建立和修改这些文件,比如一个可视化的GUI编辑器。但是如果测试资源的定义会变动,那么这个编辑器也需要随之进行变动。

因此,对一个比较高效的自动化测试平台而言,就需要一种方法,让测试资源的定义变得简单,又不容易出错,甚至测试用例开发人员自己通过编写很少的代码就可以完成。

除测试资源的定义外,在测试脚本中,我们往往需要做一些测试资源的可用性检查。比如,被测设备的版本是否符合测试要求,测试用例要求的被测设备的数量是否满足测试用例的要求。这些检查虽然说可以用if else语句来完成,但是大量的约束条件会使得代码变得凌乱甚至难以理解,特别是在没有注释的情况下。

在这一章中,我们会介绍一个测试资源管理模块,该模块会通过一些规则来定义测试资源的抽象方法、测试脚本中资源的获取方法,以及测试资源的选择。通过这一章,读者将会了解到:

• 测试资源的定义方法。

• 测试资源配置的保存和读取。

• 如何在测试用例中过滤和选择所需要的资源。

• 从测试资源获取资源对象的控制实例。