专利名称:基于形式化描述的测试程序自动生成方法
技术领域:
本发明属于软件验证测试领域,尤其涉及一种基于形式化描述的测试程序自动生成方法。
背景技术:
自从有了软件设计技术,软件缺陷就一直伴随着软件开发而存在。软件验证测试是当前发现软件缺陷保证软件质量的实用的可操作的技术。但软件验证测试也面临巨大的挑战,随着技术的发展,软件承担的任务越来越多,软件规模越来越大,软件验证测试的工作量也随之增加。当前软件验证测试还属人力密集型产业,很多环节需要人工完成。为了提高工作效率,同时减少人为产生的差错,需要自动化的验证测试技术。
发明内容
针对已有软件验证测试领域中存在的不足,本发明的目的在于提供一种基于形式化描述的测试程序自动生成方法,用计算机程序来实现原来由人工完成的测试程序编写工作,避免人工编写测试程序导入的错误并显著提高工作效率,验证测试人员可以将注意力更多地投入到对软件需求规格说明的理解和测试用例的编写,保证测试更完整充分。本发明的发明目的是通过如下技术方案实现的。一种基于形式化描述的测试程序自动生成方法,包括如下步骤(1)、构造形式化描述,包括如下步骤(如图1所示)a.选择形式化测试用例描述的格式。格式可以是表格、文本文件、UML(统一建模语言)文件等,格式要保证通过一定的关键词或确定的物理位置能够准确地找到并提取所需要的信息。b.对应用系统功能进行分解。一个应用系统由若干条软件需求组成,要使测试任务易于分配、测试用例文件易于管理和维护,一个测试用例描述文件通常按围绕某一条需求或某几条相关联软件需求形成。c.规定形式化测试用例描述的内容。内容主要包括测试程序通用信息和测试用例专用信息。①测试程序通用信息版权信息、测试程序名称、测试平台信息、引用文件信息、规定的结果文件名称、初始化命令系列;②测试用例专用信息可追踪的软件需求规格说明条目、测试用例目的、预置条件、输入参数、输出参数及其期望结果、判定准则等。d.设计测试用例。测试用例设计的依据主要有①项目确定的软件安全性等级; ②项目确定的测试策略,如等价类方法、边界值方法、是否考虑功能、性能、强度等;③必须考虑正常范围测试用例和异常范围测试用例等;④对枚举量必须给出组合规则。(2)、生成验证测试程序,包括如下步骤(如图2所示)a.确定测试程序编写语言。语言可以是C、C++、ADA、PYTH0N或任何用户指定的语 、
曰οb.确定测试程序编写规范和模板。规范规定程序由哪几部分组成、每部分的内容、变量和函数命名约定、测试程序和结果文件的命名约定、可使用的命令及其格式要求等。c.从形式化测试用例描述文件中获取测试程序通用信息,按照所选择的脚本语言和程序规范,生成相应的程序头说明,包括版权信息、测试程序名称、测试平台信息、引用文件信息、规定的结果文件名称。d.生成引用文件指令序列。e.生成初始化命令系列。f.读取形式化测试用例信息,生成相应的测试用例。包括自动编号或按照规定的序号标识测试用例、描述测试目的、设置输入参数、给出期望结果。g.生成期望结果与实际结果比较指令。通过命令可获取实际结果的输出参数可进行自动比较,无法自动比较的情形可以给出等待人工判别指令。h.反复执行步骤f和步骤g,直至全部测试用例均转换为相应测试程序。i.构造测试程序结束信息。测试程序结束信息包括重置或初始化全部参数和状态、计算测试用例总数、成功的用例数和失败的用例数、测试程序执行时间等。本发明方法通过构造形式化描述,最后生成软件验证测试程序,用计算机程序来实现原来由人工完成的测试程序编写工作,即可避免人工编写测试程序导入的错误,又显著地提高了工作效率。以某民用飞机显示系统适航取证软件验证项目为例,经统计编写测试用例的时间和编写PYTHON测试程序的时间大约分别占项目总时间的20%和40%,应用本发明,就可省去40 %的编程时间。
图1为本发明方法步骤中构造形式化描述的方框图;图2为本发明方法步骤中生成验证测试程序的方框图。
具体实施例方式下面结合具体的实施例进一步说明本发明是如何实现的。实施例以某民用飞机显示系统适航取证软件验证项目为例,该系统由大约4千条软件需求规格构成。选取其中相对简单的“空速指示”功能为例子对本发明加以说明。空速指示的软件需求描述为“空速指示由下列指示元素组成指示空速刻度、指示空速读数、指示空速指针、空速下限、选择的空速读数、选择的空速箭头、选择的空速标记、地速读数。”项目选择以MS EXCEL表格形式描述测试用例。在测试用例描述中①给出程序的通用信息,包括版权信息、测试程序名称、测试平台信息、引用文件信息、规定的结果文件名称、初始化命令系列;②依据软件安全性关键等级为A级,必须达到MCDC覆盖的要求,设计正常范围测试用例和异常范围测试用例各1个;③给出测试用例专用信息,包括可追踪的软件需求规格说明条目、测试用例目的、预置条件、输入参数、输出参数及其期望结果、判定准则。本实施例选择MS VB作为计算机程序设计平台,VB程序将完成①根据用户要求选择PYTHON作为测试脚本语言;②项目有详细定义的脚本编写规范;③从形式化测试用例描述文件中获取测试程序通用信息,生成相应的程序头说明,包括版权信息、测试程序名称、 测试平台信息、引用文件信息、规定的结果文件名称;④根据测试平台场景生成引用文件指令序列;⑤生成初始化命令系列;⑥读取第1个测试用例的信息,生成相应的测试程序。包括自动标识测试用例编号、描述测试目的、设置输入参数、给出期望结果;⑦因为项目验证的是显示画面,因此生成实际结果人工判别指令;⑧再次执行步骤⑥和步骤⑦完成第2 个测试用例的设计;⑨构造测试程序结束信息。测试程序结束信息包括重置或初始化全部参数和状态、计算测试用例总数、成功的用例数和失败的用例数、测试程序执行时间等。
权利要求
1. 一种基于形式化描述的测试程序自动生成方法,包括如下步骤(1)构造形式化描述首先,选择形式化测试用例描述的格式,所述格式要保证通过关键词或确定的物理位置能够准确地找到并提取所需要的信息;其次,对应用系统功能进行分解,一个测试用例描述文件通常围绕某一条需求或某几条相关联软件需求形成;再其次,规定形式化测试用例描述的内容,内容包括测试程序通用信息和测试用例专用fn息;最后,设计测试用例,测试用例设计的依据有项目确定的软件安全性等级;项目确定的测试策略;要考虑正常范围测试用例和异常范围测试用例;对枚举量须给出组合规则;(2)生成验证测试程序,步骤如下a.确定测试程序编写语言;b.确定测试程序编写规范和模板;c.从形式化测试用例描述文件中获取测试程序通用信息,按照所选择的脚本语言和程序规范,生成相应的程序头说明;d.生成引用文件指令序列;e.生成初始化命令系列;f.读取形式化测试用例信息,生成相应的测试用例,包括自动编号或按照规定的序号标识测试用例、描述测试目的、设置输入参数、给出期望结果;g.生成期望结果与实际结果比较指令;h.反复执行步骤f和步骤g,直至全部测试用例均转换为相应测试程序;i.构造测试程序结束信息,测试程序结束信息包括重置或初始化全部参数和状态、 计算测试用例总数、成功的用例数和失败的用例数、测试程序执行时间。
2.根据权利要求1所述的一种基于形式化描述的测试程序自动生成方法,其特征在于所述(1)步骤中格式为表格、文本文件或统一建模语言文件。
3.根据权利要求1所述的一种基于形式化描述的测试程序自动生成方法,其特征在于所述(1)步骤中的测试程序通用信息包括版权信息、测试程序名称、测试平台信息、引用文件信息、规定的结果文件名称和初始化命令系列。
4.根据权利要求1所述的一种基于形式化描述的测试程序自动生成方法,其特征在于所述(1)步骤中的测试用例专用信息包括可追踪的软件需求规格说明条目、测试用例目的、预置条件、输入参数、输出参数及其期望结果和判定准则。
5.根据权利要求1所述的一种基于形式化描述的测试程序自动生成方法,其特征在于所述(2)步骤中的测试程序编写语言包括C、C++、ADA、PYTH0N或其他用户指定的语言。
6.根据权利要求1所述的一种基于形式化描述的测试程序自动生成方法,其特征在于所述( 步骤中的测试程序编写规范是规定程序由哪几部分组成、每部分的内容、变量和函数命名约定、测试程序和结果文件的命名约定、可使用的命令及其格式要求。
7.根据权利要求1所述的一种基于形式化描述的测试程序自动生成方法,其特征在于通过步骤O)中所述生成的期望结果与实际结果比较指令可获取实际结果的输出参数可进行自动比较,无法自动比较的情形则给出等待人工判别指令。
全文摘要
本发明公开了一种基于形式化描述的测试程序自动生成方法,包括如下步骤首先进行构造形式化描述步骤,具体包括选择形式化测试用例描述的格式;对应用系统功能进行分解;规定形式化测试用例描述的内容;设计测试用例;最后生成软件验证测试程序。本发明用计算机程序来实现原来由人工完成的测试程序编写工作,即可避免人工编写测试程序导入的错误,又显著地提高了工作效率。
文档编号G06F11/36GK102360331SQ201110303769
公开日2012年2月22日 申请日期2011年10月9日 优先权日2011年10月9日
发明者倪亭, 倪红英, 周弘斌, 黄芙平 申请人:中国航空无线电电子研究所