基于脚本的三维建模软件自动测试方法

文档序号:6631696阅读:196来源:国知局
专利名称:基于脚本的三维建模软件自动测试方法
技术领域
本发明涉及一种软件自动测试方法,特别是一种基于脚本的三维建模软件自动测试方法。
背景技术
软件测试是伴随软件开发产生的一项技术,它经历了从无到有、从简单到复杂的发展过程。在软件技术发展的早期,软件测试是混合于软件开发之中。没有软件开发人员与软件测试人员的区分,甚至没有开发与测试过程的明显区分。随着软件技术的逐步发展,软件测试也慢慢与软件开发分开,成为一项独立的技术。
目前,软件工程理论认为,软件测试是软件生命周期的一个重要阶段,对应于不同的测试层次,又分为单元测试、集成测试、验收测试等;同时,不同的测试对应于不同的执行测试人员。通常,集成测试与验收测试应有专门的测试人员完成,而单元测试应该作为软件开发的一个部分,由软件开发人员完成。
在软件测试技术的发展过程中,开发人员与测试人员发现,如果软件测试过程全部由手工完成,测试的成本相当高昂,并且随着测试次数的增加持续增加。为了解决这一问题,软件测试自动化技术逐步产生并发展起来。对于某些测试任务,测试自动化比手工测试执行高效得多,尤其是在对程序的新版本运行已有的测试(回归测试)时。这样,更多、更频繁的运行测试成为可能,这样可以显著降低新引入错误存在的平均时间,降低修改错误的成本。同时,测试自动化可以更好的利用设备资源,这项技术可以将测试技术人员从繁琐的重复输入、检验输出的过程中解放,使其可以将更多的精力用于设计新的测试用例。另外,测试自动化具有一致性和可重复性。对于自动重复的测试可以重复多次相同的测试,这样就可以获得测试的一致性,这在手工测试中的很难保证的。
目前,一般的测试自动化技术为通用技术,并非针对三维建模软件,不能处理三维建模软件中的特殊问题;且通用测试自动化技术基于技术限制,只能在用户界面层次上进行自动化测试,而三维建模软件的特点决定了在用户界面层次上的自动化测试基本无法完成。这是由于,传统的通用测试自动化技术通常基于像素比较,而三维渲染输出不同于二维图形、文字输出,三维渲染输出没有标准的像素级输出,这就导致了在三维建模软件的运行环境发生少许变化之后,例如图形显示卡型号、驱动程序版本或系统软件设置发生改变之后,具体的输出结果可能会发生变化。这就最终导致在用户界面层次上不能进行传统的自动化测试。

发明内容
本发明的技术解决问题是克服现有技术的不足,提供一种基于脚本的三维建模软件自动测试方法,它考虑了三维建模软件的特点,有效地提高三维建模软件的测试效率,且成本低。
本发明的技术解决方案基于脚本的三维建模软件自动测试方法,其特征在于包括下列步骤(1)在回归测试管理工具的控制下,以测试用脚本作为输入启动三维建模工具开始工作;(2)经过三维建模工具后输出工作结果;(3)在回归测试管理工具的控制下,利用比较工具将输出的工作结果与标准回归测试输出文件进行比较和分析;(4)最后将比较后的测试结论在工具界面上报告给用户。
所述的回归测试管理工具包括测试用例管理和执行引擎两个主要模块,测试用例管理模块管理所有的测试用例索引列表,它要进行测试用例列表的浏览、测试用例列表的添加和测试用例列表的删除工作,测试用例索引列表直接对应于磁盘上的回归测试索引文件,当用户下达执行命令后,测试用例管理模块以回归测试索引文件作为输入,将磁盘上的每个测试用例送入执行引擎模块中测试;执行引擎负责单个测试用例条目的执行,包括进程启动、进程监视和进程返回结果处理部分,三维建模工具与比较工具作为外部的独立部分由进程启动部分启动,并由进程监视部分监视其执行状态,直到每个测试用例执行结束,并根据比较结果由进程返回结果处理部分进行处理。
所述的三维建模工具自下而上由数据层、逻辑层和表现层组成。数据层是整个软件的核心,负责模型树的维护、环境变量的使用以及OpenFlight文件的读写等功能;逻辑层主要由Command Center以及一组Command组成,其功能主要是进行建模操作,对模型树进行某项修改;表现层利用OpenGL或是DirectX,以二维、三维等多种形式对正在编辑的模型、辅助点线面等进行实时显示输出,并允许用户对正在运行的命令提供输入。三维建模工具作为自动化测试的对象,在逻辑层设计了专用于测试的基于脚本系统的输入接口。利用此输入接口,回归测试管理工具依次将每个测试用例的输入脚本作为参数启动三维建模工具,并获取所有的输出。
所述的比较工具以两个同种类型的文件作为输入,经过比较算法进行比较,最终输出比较的结果。对于文本比较工具而言,输入文件必须是文本文件,比较工具以文本行为单位进行比较操作。对于二进制比较工具或定制比较工具而言,输入文件可以为二进制文件,比较工具以固定长度二进制数据块或结构化数据块作为比较单位。比较算法通常为外搜索算法,相对于其他算法,外搜索算法可以有效减少内存的占用。
本发明与现有技术相比的优点在于(1)三维建模工具作为自动化测试的对象,拥有专用于测试的基于脚本系统的输入接口,利用此输入接口,回归测试管理工具依次将每个测试用例的输入脚本作为参数启动三维建模工具,并获取所有的输出。为了建立这个专用于测试的接口,本发明的三维建模工具采用层次结构化设计,自下而上主要分为数据层、逻辑层与用户界面层,各个层次之间相互独立,拥有特定的内部接口(C++语言描述)。在内部接口之外,逻辑层还拥有以三维建模工具脚本语言描述的另一同功能接口,这个接口就是自动化测试专用接口。本发明在测试对象方面,与传统自动化测试最大的不同在于传统自动化测试不要求也不能够在测试对象中为测试建立专用的模块。在传统自动化测试中,所有测试都必须基于用户界面层次进行。而本发明打破这一限制,将自动化测试直接建立在自动化测试对象的逻辑层或数据层,这样便解决了传统自动化测试不适用于三维建模软件的问题,为低成本、高效率地建立高质量的三维建模软件建立了良好的基础。
(2)本发明对应于每一个回归测试脚本,编辑制作对应的标准回归测试输出文件,测试者通过比较工具对比某一次的回归测试输出与标准回归测试输出文件,即可快速发现该次回归测试中产生的问题、错误,而且由于新需求、固有错误或优化而进行的程序修改之后,回归测试可以快速发现系统最新引入的错误,从而减少新错误存在的时间,降低修改错误的成本。
(3)本发明根据三维模型编辑系统的特点,设计了一组专门用于三维模型编辑的指令集合,使用户可以更加精确的发出建模指令,同时允许用户设计一组包括顺序、条件分支以及循环的复杂指令集,共同完成一个参数化的建模动作。
(4)本发明为了减少手工操作,设计了回归测试程序,通过将测试脚本、标准回归测试输出加入统一的回归测试索引文件,使回归测试可以自动进行,进一步减小了回归测试代价,降低了系统测试成本。


图1为本发明的自动测试方法流程图;图2为本发明的回归管理工具组成图;图3为本发明的一个实施例中的回归测试工具用户界面图;图4为本发明中的三维建模工具组成框架图;
图5本发明中的三维建模工具的图形用户界面图;图6为本发明中的一个测试用例生成的三维几何体图。
具体实施例方式
如图1所示,使用本发明方法进行自动化测试,具体的步骤为首先用户(测试者)启动回归测试管理工具,然后在回归测试管理工具的控制下,令三维建模工具以测试用脚本作为输入开始工作,得到输出结果后,再通过控制比较工具将输出结果与标准回归测试输出进行比较,最后得到回归测试成功或失败的结论,输出比较结果。
回归测试索引文件按照条目编制,每一条目对应一项测试,条目内容包含测试名称、此项测试的各项输入文件名等信息,具体条目如表1所示。
表1回归测试索引文件

由表1可以看出,每一个回归测试索引项由4行组成,第一行为由方括号包围的测试用例名称,代表着一项的开始,第二行为测试的输入文件名,第三行为测试的输出文件名,最后一行为针对此测试用例的解释。利用这样的回归测试索引文件,用户可以方便的描述一次测试中的所有测试用例,并且由于已经在文件中说明了输入、输入文件名,因此不需要在运行时再单独指明,使测试过程完全无需用户参与,实现全面的自动化。
回归测试索引文件是一个文本文件,可以使用任意的文本编辑器对其进行编辑。
测试用脚本使用三维建模工具脚本语言书写,符合三维建模工具脚本语言的语法,具体语法如表2所示。脚本的具体内容根据不同测试的需求而不同。一般地,测试脚本应该假设测试脚本启动时具有一致的启动环境,同时,为了满足回归测试的需要,在设计测试脚本的过程中,必须注意脚本运行的运行结果要有可预期的一致性,否则不能作为回归测试脚本使用。测试脚本的语义不受任何限制,不论是系统允许的操作或是系统不允许的操作,都可以作为测试脚本使用。在测试系统是否能够正确处理错误的输入信息时,通常故意使用具有不正确内容的测试脚本。
三维建模工具脚本系统的语法如表2所示,通过组合使用各种三维建模命令,可以达到建立复杂模型的目的。
表2三维建模工具脚本系统语法(部分)

基于以上的脚本语法,配合适当的参数,用户可以写出多种不同的测试脚本,并以此对系统进行充分的测试。关于测试脚本的具体写法,可以参考下面的两个具体的例子。
比较工具比较两个文件,并指出两个文件的异同。根据具体任务的不同,系统对比较工具有不同的要求。在对三维建模工具的文本形式的输出进行比较时,仅使用标准的、由操作系统提供的文本比较工具即可;但在对三维建模工具的二进制输出进行比较,尤其是有结构化二进制比较要求的时候,需要使用针对专用二进制格式的结构化比较工具。
在软件结构方面,比较工具以两个同种类型的文件作为输入,经过比较算法进行比较,最终输出比较的结果。对于文本比较工具而言,输入文件必须是文本文件,比较工具以文本行为单位进行比较操作。对于二进制比较工具或定制比较工具而言,输入文件可以为二进制文件,比较工具以固定长度二进制数据块或结构化数据块作为比较单位。比较算法通常为外搜索算法,相对于其他算法,外搜索算法可以有效减少内存的占用。
标准回归测试输出为预期的测试输出。常用的标准回归测试输出文件制作方法为使用已经编制好的测试脚本运行三维建模软件,得到输出文件。人工检查此文件,如果其内容完全符合预期,则将此文件归档,作为未来回归测试的标准回归测试输出使用。当然,标准回归测试输出文件也可以完全由手工编制,不过相对比较复杂,实际使用此方法较少。
如图2所示,回归测试管理工具包括测试用例管理和执行引擎两个主要模块,测试用例管理模块管理所有的测试用例索引列表(如表1所示),它要进行测试用例列表的浏览、测试用例列表的添加和测试用例列表的删除工作,测试用例索引列表直接对应于磁盘上的回归测试索引文件,在回归测试管理工具的运行期间,所有所有的测试用例索引列表的数据项以vector数据结构存储,以便顺序访问,当用户下达执行命令后,测试用例管理模块以回归测试索引文件作为输入,将磁盘上的每个测试用例送入执行引擎模块中测试。回归测试索引文件按照条目编制,每一条目对应一项测试,条目内容包含测试名称、此项测试的各项输入文件名等信息。
前面已经提到,回归测试管理工具将负责保证每一项测试启动时的系统环境的一致性。由于每一次启动三维建模软件后,三维建模软件的内部状态总保持一致,回归测试管理工具的保证系统环境一致性的工作体现为保证三维建模软件的外部状态一致。这主要包括操作系统环境变量的一致性、软件测试目录与输入输出文件结构的一致性、其他外部参数与外部参考文件的一致性等。
执行引擎负责单个测试用例条目的执行,它由进程启动、进程监视和进程返回结果处理部分组成,三维建模工具与比较工具作为外部的独立部分由进程启动部分启动,并由进程监视部分监视其执行状态,直到每个测试用例执行结束,并根据比较结果由进程返回结果处理部分进行处理。
图3表示的为回归测试管理工具的主界面。在主界面上,可以看到所有的测试用例索引列表,测试用例的执行情况等多种信息。
如图4所示,本发明采用的三维建模工具自下而上分别为数据层、逻辑层和表现层。数据层是整个软件的核心,负责模型树的维护、环境变量的使用以及OpenFlight文件的读写等功能;逻辑层主要由Command Center以及一组Command组成,其功能主要是进行建模操作,对模型树进行某项修改;表现层利用OpenGL或是DirectX,以二维、三维等多种形式对正在编辑的模型、辅助点线面等进行实时显示输出,并允许用户对正在运行的命令提供输入。
(1)数据层DataGraph模块的功能是实现三维模型数据库,此数据库负责存储与管理三维模型信息。三维模型信息包括模型的几何拓扑信息;纹理、材质、光照信息;物理信息;对象信息等等。几何拓扑信息使用树(Tree)结构进行存储,其他信息则根据具体情况使用映射(Mapping)、向量(Vector)等数据结构进行存储。
除了DataGraph所提供的树形结构外,系统还需要存储一些其他的非结构化数据。目前,这类在DataGraph之外的数据主要包括选择列表与环境变量。
选择列表(Selection)表示了用户当前的选择状态。用户可以通过三维图形界面或者Console访问选择列表。模型树的所有节点都可以放在选择列表之中,使用节点ID表示。一个特殊情况是vertex list,不仅需要使用vertex list的节点ID,而且还需要一个nVertex序号,表示选择的是第几个vertex。
环境变量(EnvVar)允许存储一些简单的环境数据,数据一律使用字符串进行表示。其中,系统定义了一些系统级环境变量,作为系统内部使用,目前主要包括用于camera、base plane等的数据。虽然环境变量的外界面使用字符串形式,但内部允许使用任意的格式进行表示,同时,表示特定环境变量的类型必须自行提供内部类型与字符串类型相互转换的函数。在这种情况下,允许环境变量对用户的设置进行验证,如果用户输入与要求不符,可以拒绝用户对环境变量的修改。环境变量机制的利用,使系统中各模块耦合降低,系统更加灵活。
(2)逻辑层命令中心Command2Center负责代理执行所有的逻辑层命令。在命令执行前后,命令中心将对所执行的命令进行包裹,并生成对应的undo命令。这样,用户可以方便的使用很小的代价进行undo/redo操作。
在系统设计中,命令被分为四种类型,分别为COMMAND_TYPE_CREATE创建型命令,此类命令的target为命令的父节点,在父节点下面创建一个新的模型子树。
COMMAND_TYPE_MODIFY修改型命令,修改一个模型节点,target即为目标位置。
COMMAND_TYPE_MOD_SUBTREE修改子树型命令,修改一个子树,target为子树的根节点ID,所有在此子树中的内容都有可能被修改。
COMMAND_TYPE_DELETE删除型命令,删除一个子树,target为子树的根节点ID,此类指令只有唯一的一个命令Cmd2Delete。
目前的系统中,共有10条不同的命令,分属以上的四种类型。
另外,还有四种仅用于Undo使用的Command类型,没种类型唯一对应一个Command,分别为COMMAND_TYPE_UNDO_CREATE对应于Cmd2UndoCreate,用于Undo创建型命令。
COMMAND_TYPE_UNDO_MODIFY对应于Cmd2UndoModify,用于Undo修改型命令。
COMMAND_TYPE_UNDO_MOD_SUBTREE对应于Cmd2UndoModSubtree,用于Undo修改子树型命令。
COMMAND_TYPE_UNDO_DELETE对应于Cmd2UndoDelete,用于Undo删除型命令(即Cmd2Delete)利用Command2Center的协助,单个命令的设计得以大大简化,仅需要考虑针对单一指定对象、无需恢复的命令执行,而对象的选择、多对象处理、备份与恢复等复杂的操作都由Command2Center完成,大大降低了命令的复杂度,增强了系统的稳定性。
(3)表现层三维图形界面是系统中的一个复杂的组成部分,其中又分为UI_3D、Interact以及CmdDIg三个部分。UI_3D主要负责三维图形的实时绘制,Interact负责将鼠标在屏幕上的二维操作转化为三维空间中的操作,最后CmdDIg负责维护一个命令对话框,允许用户交互式的使用系统提供的建模命令。
UI_3D使用系统DataGraph中的数据进行绘制。根据用户的情况,可以选择使用OpenGL或者DirectX作为底层的绘制引擎。如何保证绘制速度是这里的核心问题,使用独立的RenderGraph、渲染状态集管理以及视景体裁减等优化手段是常用的加速渲染手段。
下面结合具体的实施例对本发明的具体测试过程。
实施例1,测试了创建一个圆形的命令。
(1)首先,输入脚本如表3所示表3测试脚本输入

(2)同时,还需要提供标准回归测试输出,如表4所示表4标准回归测试输出

(3)在回归测试管理工具的控制下,测试输入经过三维建模软件的处理,得到了输出结果,如表5所示输出结果;表5输出结果

(4)比较结果由于此测试用例非常简单,可以直接观察发现表2与表3的内容完全相同。而回归测试管理工具需要通过比较工具得出两个文件是否相同的结论,如表6所示表6标准测试工具的比较结果

(5)此项回归测试通过。类似的,回归测试管理工具将根据回归测试索引文件逐项进行测试,并将结果反映在回归测试工具的用户界面上,如图3所示。图5表示的就是系统的主界面。在经过一个创建球体的命令以及一个Slice(切割)命令之后,在三维界面观察的结果。
实施例2,测试了创建一个复杂几何体的过程。
(1)首先,输入脚本如表7所示表7测试脚本输入

(2)同时,还需要提供标准回归测试输出,如表8所示表8标准同归测试输出


(3)在回归测试管理工具的控制下,测试输入经过三维建模软件的处理,得到了输出结果,如表9所示输出结果;表9输出结果


(4)比较结果通过比较工具得出两个文件是否相同的结论,如表10所示表10标准测试工具的比较结果

(5)此项回归测试通过,此项测试同时还生成了一个模型文件,如图6所示。
权利要求
1.基于脚本的三维建模软件自动测试方法,其特征在于包括下列步骤(1)在回归测试管理工具的控制下,以测试用脚本作为输入启动三维建模工具开始工作;(2)经过三维建模工具后输出工作结果;(3)在回归测试管理工具的控制下,利用比较工具将输出的工作结果与标准回归测试输出文件进行比较和分析;(4)最后将比较后的测试结论在工具界面上报告给用户。
2.根据权利要求1所述的基于脚本的三维建模软件自动测试方法,其特征在于所述的回归测试管理工具包括测试用例管理和执行引擎两个主要模块,测试用例管理模块管理所有的测试用例索引列表,它要进行测试用例列表的浏览、测试用例列表的添加和测试用例列表的删除工作,测试用例索引列表直接对应于磁盘上的回归测试索引文件,当用户下达执行命令后,测试用例管理模块以回归测试索引文件作为输入,将磁盘上的每个测试用例送入执行引擎模块中测试;执行引擎负责单个测试用例条目的执行,包括进程启动、进程监视和进程返回结果处理部分,三维建模工具与比较工具作为外部的独立部分由进程启动部分启动,并由进程监视部分监视其执行状态,直到每个测试用例执行结束,并根据比较结果由进程返回结果处理部分进行处理。
3.根据权利要求1所述的基于脚本的三维建模软件自动测试方法,其特征在于所述的三维建模工具自下而上由数据层、逻辑层和表现层组成,数据层是整个软件的核心,负责模型树的维护、环境变量的使用以及OpenFilght文件的读写功能;逻辑层主要由Command Center以及一组Command组成,其功能主要是进行建模操作,对模型树进行某项修改;表现层利用OpenGL或DirectX以二维、三维等多种形式对正在编辑的模型、辅助点线面等进行实时显示输出,并允许用户对正在运行的命令提供输入。
全文摘要
基于脚本的三维建模软件自动测试方法,在回归测试管理工具的控制下,以测试用脚本作为输入启动三维建模工具开始工作;经过三维建模工具后输出工作结果;在回归测试管理工具的控制下,利用比较工具将输出的工作结果与标准回归测试输出文件进行比较和分析;最后将比较后的测试结论在工具界面上报告给用户。本发明它考虑了三维建模软件的特点,有效地提高三维建模软件的测试效率,且成本低。
文档编号G06F11/36GK1752944SQ20051008666
公开日2006年3月29日 申请日期2005年10月20日 优先权日2005年10月20日
发明者赵沁平, 郝爱民, 王京 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1