基于模型知识库的程序化测试用例设计方法
2018-07-16李勇华张楠
文/李勇华 张楠
根据ISO/IEC17025及相关规范要求,第三方软件测试服务都需要有序地开展项目需求分析与策划、测试设计、测试执行、测试总结等各项工作,输出相应的测评工作产品。其中测试设计形成测试说明的过程是整个测试项目主要工作,测试用例设计应符合唯一性、可追溯性、可重现性等要求。由于第三方测评服务的性质,被测对象通常是全新软件系统,对测试人员的技术把握能力要求很高,且测试用例难以重用,带来很多的文档处理工作。而目前市售的测试管理系统,测试用例的生成必须由使用者自行设计和录入各类信息,不能实质提升测试设计有效性。为此,本文对测试项目开展过程和测试用例设计开展研究,提出了一种基于模型知识库的程序化测试用例设计方法,项目实践中取得良好效果。
1 设计方法说明
测试用例一般包括以下要素:名称、标识、需求追踪、前提与约束、测试步骤、预期结果、通过准则、终止条件、用例说明、备注等。每个第三方测评服务方对测试用例都有对应的格式要求,通行方式是采用表格,每一个测试用例表现为一个表格。
测试用例的名称、标识、需求追踪、终止条件等内容一般固定或按简单方式变化,测试设计的有效内容可以简化为测试步骤、测试数据、限制条件。在项目测试需求分析时,按照某种约定的编写规则分析测试项,明确测试步骤的过程分支方式、测试用例数据产生方式和覆盖方式,则可以由一种程序化的方式,对应检索测试用例知识库中已经存在的条目,产生基础的测试用例,从而大幅减少测试设计的工作量和技术难度。过程如下:
(1)根据测试方案的测试策略,由项目负责人对照整个项目的等级、时间限制等策略要求,设定测试用例生成策略。
(2)逐项解析测试方案中测试项,获取测试项中测试步骤、充分性、限制条件等内容的关键字,及其中设定的测试用例知识库模型相关信息。
(3)根据获取的测试项名称、内容等关键字,匹配现有知识库中的测试用例模型,找到最合适的条目,将其作为测试用例生成的起始模板,提供最初版用例建议。
(4)对照测试用例初始模板,在测试人员干预后,匹配测试用例输入数据、输出数据,生成测试用例表格。
2 设计方法重点
应用的关键在于测试用例模型知识库,主要技术有测试用例数据组织方式、产生模型。
2.1 测试用例数据的组织方式
测试用例数据的组织方式决定测试用例的适用性,应该按照领域采用的指导标准来执行。对于普通上架销售软件,参考相关标准,软件质量要求包括功能性、可靠性、易用性、效率、维护性、可移植性、安全性、兼容性等特性,测试用例数据的第一级可以按照这8个质量特性来组织。对以上质量特性分析可以发现,其中针对执行环境基本相同的软件产品,差异最大的就是功能性。目前根据实验室工作需要,在第一级划分和提取增删改查类、条件组合类、状态转换类、业务流程类、录入检查类、业务操作类等主要类型操作模块,并在此基础上进一步细分2~3级直至具体的用例操作级别。
2.2 测试数据的产生模型
测试数据需要覆盖输入数据和输出数据,一般更关注的是输入数据。测试用例生成时,在用户和设计者提供的原始数据之外,还应由已积累的知识库针对关键字生成合适的典型数据。典型数据常用的如时间、经纬度、角度等,而在一些行业或特定领域常用的数据和内在边界,如初始配置数据、外部环境状态、被测对象的状态、特殊的用户数据序列、敏感数据信息等,则需要通过实验室运作逐步积累。一种测试输入数据产生参考模型如图1所示。
3 设计方法的应用
我们基于以上设计方法实现了一种实用测试方法,对应主要工作有三个方面:
3.1 测试说明模板
为便于程序化生成测试说明,测试说明文档的主体内容在结构上拆分为测试用例设计方法说明和测试用例表格两个部分。每个测试用例表格则由辅助工具自动生成。用例表格操作过程部分由测试步骤构成,测试点部分则由每个测试数据和预期结果对应一个测试点。测试用例设计方法说明部分,描述测试用例设计的分解策略、测试用例的数据产生策略,在测试用例表格生成后,综合测试方案中内容和测试用例表格的标题内容,通过辅助工具自动产生这部分内容,人工进行必要调整补充即可。
3.2 测试用例设计辅助工具
辅助工具采用Python开发,由4个模块组成:
图1:一种测试输入数据产生参考模型
(1)测试用例生成模块:扫描测试方案文档,提取对应的测试项和关键内容;针对每个测试项,查找和匹配测试用例库模型,形成初始的测试用例记录列表;提供人工编辑测试数据界面,对确认后的测试用例内容写入到指定的Excel文件中。
(2)文档生成模块:提取excel文件内容,生成测试用例表格;随后按照测试说明模板,生成测试用例设计方法说明及测试用例追踪表
(3)测试用例库管理功能:支持测试用例库模型和测试数据数值的编辑、导入导出、灵活配置
(4)系统设置模块:提供设置文件路径、模板名称、保存条件、简单日志等系统运行相关的内容。
3.3 测试用例模型知识库
目前应用中,测试用例库对照标准按照质量特性组织,对应提供了基本测试用例和匹配,每个系列的测试用例逐级确定级别编号和代号。以实现难度最大的功能部分为例,在目前辅助工具中,第一级实现了增删改查类、条件组合类、状态转换类、业务流程类、录入检查类、业务操作类等6种类型。每种类型再进一步细分出不同应用场景,例如增删改查类中,代号GN01010101,代表增加操作-通过界面录入增加数据记录-未限制输入集-输入数据典型值,在辅助工具进行设计时,每个测试项的设计人员确定第一级类别后,按照策略确定需要进一步细化的级别(至少到第二级),然后在列表中选择需要纳入的测试点,辅助工具会自动根据测试方案和数据类型边界产生一些默认典型测试数据,设计人员更改确认后,即可产生测试项的测试用例内容,写入到指定的excel文件中。
在广东省电子政务畅通工程中某数据共享目录体系建设的验收测试中,测试项目组6人通过采用以上测试用例设计方法,仅仅4天时间完成了原来需要10天的测试用例设计工作,工作效率大大提升。在时间紧、任务重的情况下,由于采用程序化的设计模式,有效规避了一些低级错误,在审核阶段测试说明问题报告率同比下降30%,保证测试设计的质量控制在水平线之上。
4 结语
本文提出的测试用例设计方法,其应用成功的关键在于测试用例模型的组织方式和丰富程度,及相关的测试用例生成策略的划分粒度。推广应用该设计方法,将大幅降低第三方测试的用例设计工作强度和技术难度,同时可有力推动测试用例设计规范化和行业应用评测的深入。