一种基于模型的软件测试方法
本文关键词:软件测试技术
更多相关文章: 一种专利、基于专利、模型专利、软件专利、测试专利、方法专利、说明书、专利查询网、专利下载网
一种基于模型的软件测试方法有效
申请号:CN201310455252.9 (进入下载页) 申请日:2013-09-27
申请/专利权人:西安电子科技大学 公开/公告号:CN103530228A
发明/设计人:段振华;苗俊磊;张南;田聪;王小兵;罗玲 公开/公告日:2014-01-22
主分类号:G06F11/36
分类号:G06F11/36
搜索关键词:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安电子科技大学,未经西安电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【】
【说明书】:
技术领域
本发明涉及测试技术领域,具体来讲是一种基于模型的软件测试方法。
背景技术
近几年来,随着计算机软硬件技术的迅猛发展,各种各样的软件系统应运而生,社会各行各业对软件系统的依赖越来越强,软件系统的规模越来越大,复杂性也越来越高,对软件系统的质量要求也显得更为重要。软件测试和验证,是保证软件正确性和提高软件可靠性的最基本、最重要的手段。为了尽量减少花费在软件产品测试上的时间和精力,大量研究机构开始投入到软件测试方法与测试工具的研究上。目前,软件测试领域中的一个关键的、同时也是极为困难的问题就是:如何设计和生成有效的测试用例。
随着面向对象软件开发技术的广泛应用和软件测试自动化的要求,基于模型的软件测试逐渐得到重视。目前,软件测试技术大体上可分为两大类:一类是白盒测试技术,另一类是黑盒测试技术。
白盒测试技术是把程序看成装在一个白盒子里,即完全了解程序的内部结构和处理过程,按照程序内部的逻辑结构,检验程序中的每条通路是否都按照预定要求正确工作。白盒测试从考察程序的结构和逻辑出发,验证所构造的程序是否符合设计要求,白盒测试包括逻辑覆盖、域测试、符号测试、路径分析、程序插桩及程序变异等。
白盒测试技术的缺点在于,白盒测试只根据程序的内部结构进行测试,而不考虑程序的外部特征,如果程序结构本身有问题,比如程序逻辑有误或是有纰漏,就无法发现错误。另外,即使将程序中的每条路径都测试了仍然可能有错误,原因在于:第一,穷举路径测试不能查出程序违反了设计规范;第二,穷举路径测试不可能查出程序中因纰漏路径而出现的错误;第三,穷举路径测试可能发现不了一些与数据相关的错误。
黑盒测试技术,又称为功能测试技术,与白盒测试技术恰恰相反,它把程序看成一个黑盒子,完全不用考虑程序的内部结构和处理过程。黑盒测试是在程序接口进行的测试,它只检查程序功能是否按照预先的要求正常工作,即接收输入数据是否产生正确的输出结果。黑盒测试技术包括边界值分析技术、等价分类技术及因果图技术等。
黑盒测试技术的缺点在于,黑盒测试是一种穷举输入的测试方法,不仅要穷举所有合法的输入,还要穷举那些不合法但是可能的输入进行测试。但是根据软件测试的局限性,不太可能完全覆盖所有的输入情况,测试代价太大。黑盒测试的研究重点在于如何从输入域中选择适当数量的、对发现错误具有代表性的测试输入来有效的进行测试。
白盒测试方法是从开发者的角度在源代码级使用软件分析和理解技术,对程序的内部逻辑结构进行分析来测试系统,而黑盒测试方法通过从用户的角度测试软件系统是否符合需求规格,这两类方法各有侧重,在测试的实践中是互补的。但它们又各有缺点,并且不能在方法内部进行完善来解决,而且在面向对象语境下,软件的设计思路和软件的结构,与传统的面向过程的软件相比有了很大的变化,而传统的软件测试方法不能适应这样的变化。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种基于模型的软件测试方法,通过UML(unified爉odeling爈anguage,统一建模语言)模型图自动生成满足一定覆盖准则的测试用例,从而快速有效的完成软件测试,适应软件的设计思路和软件的结构、与传统的面向过程的软件之间的变化,弥补白盒测试和黑盒测试的不足。
为达到以上目的,本发明采取的技术方案,一种基于模型的软件测试方法,其特征在于,包括如下步骤:
S1.分析被测试软件,根据测试目的,确定测试对象和测试特征;
S2.选择和构造UML模型,该UML模型表述了需求所表述的所有可能行为;
S3.对UML模型进行验证,排查UML模型构造时可能出现的有界性、安全性、死锁和状态可达性,确保UML模型的正确性;
S4.通过深度优先搜索算法遍历UML模型,自动生成测试用例,根据充分性准则计算相关的覆盖率,完成对测试用例的评估;
S5.根据待测程序和所述UML模型得到的测试用例生成测试脚本,自动执行所述测试脚本,并保存执行测试脚本得到的实际输出结果;
S6.根据测试用例的实际输出与预期输出的比较,得出测试结果,再根据测试目标与预先设定好的停止准则,决定是否需要修改模型或修改待测程序。
在上述技术方案的基础上,所述充分性准则包括:
基于控制流的充分性准则:语句覆盖准则、条件覆盖准则和判断覆盖准则;
基于数据流的充分性准则:定义引用覆盖准则、上下文覆盖准则;
基于故障的充分性准则:弱变异覆盖准则、强变异覆盖准则。
在上述技术方案的基础上,所述覆盖率用来度量测试完整性和充分性,其包括:逻辑覆盖、函数覆盖以及功能覆盖,其中逻辑覆盖包括:语句覆盖、判定覆盖、条件覆盖以及路径覆盖。
在上述技术方案的基础上,所述S1中分析被测试软件包括:被测试软件是面向对象的开发技术或者是面向过程的开发技术、被测试软件所采用的开发语言、被测试软件开发的系统环境。
在上述技术方案的基础上,所述UML模型为机器可读的模型,用于对被测试软件进行描述、可视化处理、构造和建立软件系统的文档。
在上述技术方案的基础上,所述S3中,对UML模型进行有界性、安全性、死锁及状态可达性验证。
在上述技术方案的基础上,所述停止准则包括实际输出结果与测试用例的预期输出结果相同,程序所具有的功能与UML模型所具有的功能一致。
在上述技术方案的基础上,所述测试用例主要包括三部分:测试场景、测试输入数据和预期输出序列,,测试用例的生成方法主要针对所述三部分相关信息的获取。
在上述技术方案的基础上,所述测试脚本为可以被自动化测试工具执行的指令,所述测试脚本可以被创建,或使用测试自动化工具自动生成,或用编程语言编程来完成,或通过创建、用测试自动化工具自动生成及用编程语言编程共同完成。
在上述技术方案的基础上,所述测试脚本包括以下功能:
a.驱动程序执行,包括编译程序执行和运行程序执行;
b.检测程序的执行过程;
c.向程序传递所需的输入,并得到程序的执行输出。
本发明的有益效果在于:
1、本发明基于模型的软件测试方法,使得基于UML的用例生成方法的流程更加规范,更加易于生成满足高覆盖要求的测试用例。
2.所述生成测试用例均是通过UML模型得到的,并且可以通过结合待测程序自动执行测试,故而大大提高了测试的自动化水平。
3、在基于模型的软件测试中,测试用例的生成仅仅依赖于UML模型,并不依赖于被测试的软件,因此测试用例的生成可以在软件开发完成前进行。
4、系统的模型是根据系统功能需求构建的,所以通过模型生成的测试用例可以直接覆盖系统的需求,减少测试用例的冗余。
5、当需求或者系统发生更改时,基于模型的软件测试只需要根据改变后的模型重新生成测试用例,易于维护。
附图说明
图1为本发明实施例基于模型的软件测试方法流程图。
图2为本发明步骤S4流程图;
图3为本发明步骤S5流程图;
图4为本发明步骤S6流程图。
具体实施方式
以下结合附图及实施例对本发明作进一步详细说明。
如图1所示,本发明为一种基于模型的软件测试方法,所述方法包括以下步骤:
S1:充分了解软件需求规范和设计文档、用户手册,了解被测系统,根据测试目标确定被测组件及其功能特征。分析被测试软件,根据测试目的,确定测试对象和测试特征;
S2:选择和构造UML模型,该UML模型表述了需求所表述的所有可能行为;通过软件的系统特征和各个模型的特征,选择并建立合适的模型作为测试用例生成的模型。
S3:模型验证:
基于形式化方法与可视化UML相结合的建模思想,设计一套从UML模型到Promela模型的转换规则,开发由UML模型自动生成Promela代码的转换工具。在转换工具中通过调用SPIN自动验证Promela代码,来验证UML模型,排查模型构造时可能出现的问题,以确保UML模型正确性。
S4:测试用例自动生成:具体请参考图2,测试用例主要包含了测试场景、测试输入数据和预期输出序列这三部分内容,测试用例的生成主要针对自动获取这三部分的相关信息。在生成测试用例时,我们首先需要将由步骤S2、S3得到的UML模型转化为形式化模型,通过深度优先搜索算法,得到所有的测试场景,再由测试人员根据软件系统的需求在测试场景上添加输入数据等所需的信息,完成测试用例的生成。
在生成测试用例的过程中,需要对于选择和循环等进行处理,找出形式化模型上所有的路径,每条路径即是一个测试场景。
S5:请参考图3,测试用例自动执行:测试用例的自动执行是软件测试自动化的关键步骤,以下为具体实施过程:
分析由S4得到的测试用例,若能从UML模型得到的测试用例中得到输入数据和预期输出,则采用由UML模型得到的测试数据,否则根据被测程序建立约束系统,然后通过随机法、静态法、动态法或者试探法,求解约束系统,得到测试数据。
为您推荐 专利分类
G 物理
G06 计算;推算;计数G06F 电数字数据处理
G06F11-00 错误检测;错误校正;监控
G06F11-07 .响应错误的产生,例如,容错
G06F11-22 .在准备运算或者在空闲时间期间内,通过测试作故障硬件的检测或定位
G06F11-28 .借助于检验标准程序或通过处理作错误检测、错误校正或监控
G06F11-30 .监控
G06F11-36 .通过软件的测试或调试防止错误
本文编号:1174461
本文链接:https://www.wllwen.com/wenshubaike/dxkc/1174461.html