自动化测试设计规范V1.0(仅供内部使用)For internal use onlyPrepared by拟制陈玉梅37906 Date日期2010-12-15Reviewed by 评审人孟咏喜00137435顾江00118951张杰飞00101597Date日期2010-12-16Approved by批准Date日期yyyy-mm-ddAuthorized by签发Date日期yyyy-mm-ddHuawei Technologies Co., Ltd.华为技术有限公司All rights reserved 版权所有侵权必究Revision record 修订记录Date 日期Revision Version 修订版本CR ID / Defect ID CR 号SectionNumber 修改章节Change Description修改描述 Author 作者2010-12-16 1.00 初稿完成 陈玉梅 379061 前言本规范适用于指导基于AutoSpace 自动化测试平台的自动化测试设计活动,目的是通过规范性指导提升自动化测试设计质量。
自动化测试设计的活动流程如图所示:自动化测试分析AW 设计开始自动化用例设计 结束数据规划测试工程设计TSE 、测试骨干自动化测试工程师自动化测试设计活动角色主要分为两种:✧自动化设计人员(如TSE、测试骨干)负责自动化用例设计前的设计活动,包括自动化测试分析、AW设计、数据规划、测试工程设计等✧自动化测试工程师负责自动化用例设计本文将按照自动化测试设计流程,分别介绍各个活动的设计规范和指导原则。
2自动化测试分析自动化测试分析过程,重点分析产品特性哪些适合自动化、哪些特性应优先实现自动化。
适合自动化的范围包括:1.产品特性相对比较稳定,变化不是非常大2.产品特性重要程度高,每轮版本测试、回归测试基本都是必测的3.自动化投入成本在接受范围内,最好已有技术储备通过如上三个维度分析自动化实现的优先级,应优先实现投入产出比收益明显的产品特性,即自动化较易于实现、且需要频繁测试的重要特性。
3AW设计AW是自动化用例设计的基础,应易于理解、好用,便于测试人员快速掌握,降低学习成本,提高用例设计效率。
AW设计的基本原则是基于业务进行抽象、设计粒度合理,尽可能覆盖自动化用例。
对于底层AW(如协议AW),应封装为类似“开户”、“用户认证”、“拨号”等业务逻辑,降低用例设计难度和接口变更时对用例的影响,提升自动化用例的重用性。
3.1 可用性3.1.1AW及AW参数命名清晰,有明确的含义AW命名要简洁、易懂,便于测试人员一眼便知其大概含义,降低学习成本。
AW命名格式可参考:命名格式举例说明主语+ 动词+ 名词用户订购产品动词+ 名词检查话单名称+ 动词数据库检查、拨号同样,AW参数命名应易于理解,例如:手机型号3.1.2AW命名风格应统一,避免中英文混用不规范示例:3.1.3AW及AW参数应定义别名AW和AW参数定义别名(Alias),避免因修改AW或AW参数而引起自动化用例脚本不兼容性问题。
别名建议英文化,同时命名含义明确,便于AW开发实现。
规范示例:不规范示例:3.1.4AW及AW参数说明信息应尽量详细AW及AW参数说明信息应尽量详细,方便指导测试设计人员快速掌握AW的使用,降低AW的学习成本。
规范示例:图:AW说明信息规范样例图:AW参数说明信息规范样例3.1.5AW参数值建议采用人性化的语言描述例如:AW参数“预期结果”,建议用“成功”、“失败”作为参数值,而不是数字“0”、“1”规范示例:不规范示例:3.1.6AW参数值有多个取值时,应置为枚举值AW参数有多个取值时,应在ValuePool中设置枚举值,便于用例设计时快速选择。
规范示例:图:AW参数置为枚举值示例图:用例设计时AW参数值的选择示例3.1.7AW参数的常用值应设置为默认值若AW参数值有常用值,应将常用值设置为AW参数的默认值,减少用例设计的AW参数值输入,提高用例设计效率。
规范示例:3.1.8AW参数可通过分组,保证参数结构的清晰规范示例:3.1.9AW可通过分组,保证A W结构的清晰按照产品特性对AW进行合理分组保持结构清晰,让自动化用例设计时方便选择AW。
规范示例:3.1.10正确区分“必填”和“可填”的AW参数AW参数中,有的参数值不允许为空即必须填写,有的参数填写是可选的。
在AW设计时,AW参数应正确设置“Can Empty”选项值,明确该参数是否必填。
规范示例:图:AW参数置为不允许为空的示例图:用例设计时必填和可填参数以图标区分的示例3.1.11AW参数个数不宜太多,可将复杂参数设计为外挂参数AW参数个数不宜太多,否则用例设计时填写AW参数值很不方便。
复杂的AW参数可设计为外挂参数,通过外挂对话框辅助输入。
规范示例:图:AW参数置为外挂参数示例图:用例设计时通过外挂对话框辅助参数输入的示例3.2 Logic封装业务封装的基本原则:基于业务封装,Logic参数应体现业务,屏蔽具体底层实现细节。
业务逻辑封装的好处:✧Logic体现测试的业务,测试人员设计用例时不用关心底层细节、上手容易✧Logic参数一般不多,测试人员设计用例方便,提高用例设计效率✧业务或接口变更时,往往只要修改Logic内部逻辑,而不用维护大量的自动化用例脚本,提升自动化用例的重用性规范示例:示例1:图:基于协议的业务封装示例示例1中将Soap协议细节封装在Logic,Logic对外的参数是ServiceID、ServiceName 等业务参数,测试人员不用关心Soap协议的WSDL文件、Soap消息体的结构等内部细节。
示例2:图:基于Web控件基本操作的业务封装示例示例2中将Web控件的基本操作封装在Logic中,Logic对外的参数是控件名称、日期等业务参数,测试人员在用例设计时不用关心每个控件的基本操作,减少用例步骤,降低用例设计难度,提升用例的重用性。
不规范示例:示例中业务逻辑参数没有体现业务,仍是协议层面的实现细节。
示例中,Logic的参数体现的仍是底层协议细节,封装粒度不合理,应该基于业务进行抽象和封装。
3.3 公共AW使用公共AW使用应遵循两个基本原则:✧尽量使用AutoSpace平台提供的公共AW,避免重复设计和开发✧公共AW应使用引用方式,不应将公共AW直接合并到自定义AW文件中公共AW采用引用方式的好处有:✧引用的公共AW无法编辑,避免误操作✧公共AW升级时可自动升级,无需手工升级规范示例:不规范示例:4数据规划根据产品特性,应事先规划自动化测试需要的基础业务数据。
这些预先规划好的数据,可以在测试环境搭建时预置到被测系统中。
自动化用例设计时可直接使用这些数据,简化用例的数据准备,一定程度上可提高用例执行效率。
数据规划举例:一个网上银行系统,实现用户之间的汇款业务。
用户分为两种:✧VIP用户:汇款不收手续费✧普通用户:汇款收手续费用户信息定义如下:字段名字段含义类型取值范围UserName 用户名Char[16] 1~16Account 帐号Char[16] 16个字符,’0’~’9’字母组成的字符串Password 密码Char[8] 4~8个字符isVIP 是否VIP用户int [0,1]0: 普通用户1: VIP用户Balance 余额int [0,100000],单位为“元”自动化测试设计时,应考虑普通用户和普通用户、普通用户和VIP用户、VIP用户和VIP用户之间的汇款是否正确扣手续费用。
因此,我们可以规划如下基础的用户数据:UserName Account Password isVIP BalancenormalUser1 6222999999993333 123123 0 5000normalUser2 6222999999995555 123123 0 0VIPUser1 6222999999998888 321321 1 100000VIPUser2 622299999999999 Abcd12 1 50005测试工程设计测试工程是自动化执行需要的所有文件的集合,包括:AW定义文件、Replace文件、AW实现体文件、外挂文件、AW实现体的配置文件等。
5.1 所有工程文件应放在工程目录中规范示例:5.2 工程文件的路径应置为相对路径工程文件的路径应设置为相对路径,且相对于工程目录。
规范示例:图:工程目录下所有文件都置为相对路径示例图:AW实现体文件置为相对路径的示例图:参数外挂文件置为相对路径的示例5.3 Repalce文件定义测试环境的数据(如IP地址、端口号等)、基础业务数据,可以作为全局变量定义在Replace文件中。
用例设计时使用这些变量,实现用例脚本和数据分离,提升用例的重用性。
定义的变量应易于理解、好用,方便自动化用例设计。
5.3.1变量命名应清晰、有明确含义Replace变量命名规则为:V AR_xxx其中xxx为变量名称,其命名应清晰、有明确含义。
规范示例:5.3.2变量含义说明应清晰、易懂变量定义时应给出变量的含义说明,要求清晰、易懂,方便自动化用例设计时正确使用。
规范示例:5.3.3变量较多时,应通过分组保证结构清晰按照环境部件、业务数据类型,对Replace变量进行合理分组,保持结构清晰、提高文件的维护效率。
规范示例:6自动化用例设计自动化用例设计应遵循四个基本原则:基本原则描述用例的独立性✧尽量降低用例和用例之间耦合性,即单个用例重复执行或单独执行,不会对其他测试用例有任何影响;✧自动化用例批量执行时,避免用例间干扰导致用例执行失败用例的重用性✧测试环境变更时,只需要修改环境数据配置,即可进行自动化执行,无需修改自动化用例脚本✧接口变更时,只需要修改封装的业务逻辑,即可进行自动化执行,无需修改自动化用例脚本用例的可读性添加必要的注释或分组,保证用例结构清晰,提升用例可维护性用例的健壮性多AW集并发执行、时延性AW等,应做好同步处理,避免因异步导致用例执行的不稳定6.1 用例的独立性6.1.1用例申请的资源应在本用例的Aftershell中及时释放,避免用例间的干扰用例常见的申请或改变的资源类型包括:序号资源类型申请与释放资源方式1 Socket Preshell中申请Socket资源,Aftershell中释放Socket资源2 服务状态改变Preshell中启动应用服务,Aftershell中停止应用服务3 配置项的改变Preshell 中修改配置文件中配置项,Aftershell中恢复配置文件中配置项4 业务数据(如开户)Preshell中申请开户,Aftershell中申请销户注:资源释放应放在用例的AfterShell中,不建议在下一个用例的Preshell中。