CN107783893B - 一种基于场景描述的自动测试系统及其实现方法 - Google Patents
一种基于场景描述的自动测试系统及其实现方法 Download PDFInfo
- Publication number
- CN107783893B CN107783893B CN201610737511.0A CN201610737511A CN107783893B CN 107783893 B CN107783893 B CN 107783893B CN 201610737511 A CN201610737511 A CN 201610737511A CN 107783893 B CN107783893 B CN 107783893B
- Authority
- CN
- China
- Prior art keywords
- test
- test case
- path
- model
- constraint
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Abstract
本发明公开了一种基于场景描述的自动测试系统,包括:规则库;对象属性抽取器;场景模型构建器;解析引擎;路径约束抽取器;核心控制器;约束求解器;求解器适配器;测试用例生成器;测试用例库;优化引擎。本发明根据特定的规则库抽取测试对象的属性添加到场景模型中,结合模型本身信息和从测试用例库中提取的启发式信息解析模型,自动生成测试路径,使用约束求解器生成对应的测试输入,整合测试路径和测试输入生成测试用例,并对测试用例进行优化,在保证测试充分性的同时,降低了手工测试的测试成本,提高了测试的效率。本发明还公开了一种基于场景描述的自动测试系统的实现方法。
Description
技术领域
本发明属于自动测试系统及其实现方法,具体涉及一种基于场景描述的自动测试系统及其实现方法。
背景技术
软件测试是计算机软件生命周期中的一个重要组成部分。统计标明,在软件开发过程中,软件测试的开销占总成本的30%到50%。这说明软件测试对软件开发的开销有很大的影响。随着现代软件产业的发展,软件变得更加复杂,规模更加庞大,导致软件中存在的缺陷数量增多,加重了软件测试的压力。手工测试的开销随着这一系列的变化成为了软件开发的一个重要问题,自动化测试技术开始受到关注。自动化测试应用在很多领域,例如测试自动化脚本技术、测试自动化框架和自动化测试用例生成。由于测试用例的重要性,以及测试数据自动构造实现上的可行性,使得自动化生成测试用例成为自动化测试技术中研究的最为广泛的技术之一。
场景是待测试软件中用户的用例或事件的序列,辅助描述一个复杂的问题或系统。基于场景的测试是在场景基础上进行测试,适用于复杂交互式软件的测试,从业务工作流层面对软件进行全面性的测试。场景测试不需要关注系统的实现细节,不考虑软件的内部逻辑结构,而是关注测试的场景,考虑用户使用时出现的各种情况。测试的场景包含两个部分:测试数据和测试路径。场景建模的方法有很多种,可以通过使用不同的模型定义场景,典型的模型有:有限状态机、Petri网、流程图、UML模型等。
研究表明,基于场景的测试是目前第三方测试中最为常用的测试方法之一。实现场景测试的自动化,有助于提高测试的效率。基于场景描述的自动化测试存在的三个挑战:
1、模型的构建。目前已有的场景描述模型缺乏对系统的细节描述,同时多使用手工绘制,缺乏自动化特性,效率较低。
2、测试路径的生成。测试路径是场景测试的重要组成部分,直接决定了测试用例的测试能力。目前的路径生成方法大多基于覆盖准则,没有充分利用已有测试用例的信息,造成测试用例的大量冗余。
3、测试输入的生成。传统的自动化生成测试输入方法有:随机生成输入方法和基于启发式方法的测试输入生成方法。这两种方法的代码覆盖率较低、冗余的测试用例较多。
实现基于场景描述的自动化测试,需要克服上述三个挑战,有助于减少测试人员的负担,降低测试的成本,提高测试的效率。
在已公开的专利中,有两个专利涉及到模型测试用例的生成:一种基于扩展有限状态机可行路径分析的测试用例自动生成方法以及基于EFSM模型的路径测试数据生成方法。专利一种基于扩展有限状态机可行路径分析的测试用例自动生成方法,对扩展有限状态机进行分析,获取可行路径,并使用分散搜索ScatterSearch技术自动生成测试数据。专利基于EFSM模型的路径测试数据生成方法,对EFSM模型进行符号执行和数据流依赖分析,获得每条路径的约束条件,并使用遗传算法生成测试输入数据。这两个专利都未涉及模型的构建,不能保证模型的有效性,同时局限了使用模型的通用性;在路径搜索上只运用已有模型的信息,路径可能会存在一定的冗余性,并且未体现出测试路径的优先级别;对于测试数据生成,两个专利都采用了基于搜索的测试数据生成方法,需要耗费较多的时间,影响测试的效率。
发明内容
本发明提出了一种基于场景描述的自动测试系统和实现方法,根据特定的规则库抽取测试对象的属性添加到场景模型中,结合模型本身信息和从测试用例库中提取的启发式信息解析模型,自动生成测试路径,使用约束求解器生成对应的测试输入,整合测试路径和测试输入生成测试用例,并对测试用例进行优化,在保证测试充分性的同时,降低了手工测试的测试成本,提高了测试的效率。
本发明还提出了一种基于场景描述的自动测试系统的实现方法,包括以下步骤:步骤一:对象属性抽取器获取待测试软件中的对象,根据规则库抽取相关的对象属性信息,并进行对象属性信息的清洗和存储;步骤二:场景模型构建器依据待测试软件的基础信息和所述对象属性抽取器抽取的对象属性信息构建场景模型;步骤三:解析引擎解析场景模型构建器构建的场景模型,获取模型的基本信息,结合优化引擎反馈的启发式信息,搜索获取场景模型中的测试路径;步骤四:根据解析引擎搜索得到的测试路径,路径约束抽取器抽取对应路径上的所有约束条件集合,判断是否需要增加额外的约束条件;若不需要,直接将抽取的约束条件提交到所述核心控制器;若需要,补充新的约束条件并将抽取的约束条件和补充的约束条件全部提交到所述核心控制器;步骤五:核心控制器将获得的约束条件集合提交到所述求解器适配器,调用多种约束求解器进行求解,求解器适配器将求解结果反馈给所述核心控制器,判断是否有解;若有解,所述核心控制器将测试路径和求解结果提交到测试用例生成器;若无解,判断测试是否结束;若测试未结束,所述核心控制器通知所述解析引擎重新选择新的测试路径,执行步骤三;若测试结束,终止测试;步骤六:所述测试用例生成器组合所述核心控制器提交的测试路径和测试输入,生成完整的测试用例并添加到所述测试用例库中;测试输入是所述求解器适配器(8)的求解结果;测试用例生成器通知所述核心控制器生成测试用例完毕;步骤七:所述核心控制器通知所述优化引擎评估和简化测试用例库,同时提取有效的测试信息作为启发式信息反馈给所述解析引擎;所述核心控制器判断测试是否结束;若测试未结束,所述核心控制器通知所述解析引擎重新选择新的测试路径,执行步骤三;若测试结束;终止测试。
本发明的一种基于场景描述的自动测试系统的实现方法,在步骤一中,对象属性信息的获取方法包括了自动化抽取方法和人工抽取方法;自动化抽取方法可采用自动化测试工具获取待测试软件的组件、输入等有效属性;人工抽取方法可利用测试人员的测试经验以及软件规格说明书手动抽取有效的对象属性。
本发明的一种基于场景描述的自动测试系统的实现方法,在步骤二中,待测试软件的基础信息是对软件附加的说明,包括软件规格说明书、用户需求规格说明书等信息,用于构建基础的场景模型;所述对象属性抽取器抽取的对象属性信息可用于优化和丰富基础场景模型,说明模型中元素的属性,提高可读性;使用抽象运算组合基础信息和所述对象属性抽取器抽取的对象属性信息,完善场景模型;场景模型包括UML模型、有限状态机、Petri网、流程图、状态图。
本发明的一种基于场景描述的自动测试系统的实现方法,所述步骤三中,所述搜索获取场景模型中的测试路径方法是在广度优先搜索算法或者深度优先搜索算法的基础上,利用启发式信息,设定具体的评测指标,比如缺陷发现率,对已有的测试用例进行评估,动态调整测试路径的权重,优先搜索权重大的测试路径,生成路径集合。
本发明的一种基于场景描述的自动测试系统的实现方法,所述步骤四中,路径的约束条件集合是实现该路径的条件,通过使用逻辑运算符连接所述路径约束抽取器抽取的条件表达式,组合成一个完整的路径约束条件集合。
本发明的一种基于场景描述的自动测试系统的实现方法,所述步骤五中,所述求解器适配器提供了多个接口,用于连接各种不同的所述约束求解器,例如Z3、STP、Yices等。
本发明的一种基于场景描述的自动测试系统的实现方法,在步骤七中,所述优化引擎评估和简化测试用例库的步骤如下:步骤A1:设计一套测试用例的评价标准用于评估测试用例,例如缺陷探测情况、用例执行稳定性、客户需求、测试开销等影响因子;步骤A2:依据场景测试的测试目标,删除冗余的测试用例,精简测试用例库,并存储到所述测试用例库中。
本发明的一种基于场景描述的自动测试系统的实现方法,在步骤七中,所述优化引擎提取有效的测试信息作为启发式信息的步骤如下:步骤B1:所述优化引擎从所述测试用例库读取测试用例,包括历史测试用例和当前系统生成的测试用例,其中历史测试用例是一个大型的数据库,涵盖了多个相似软件的测试用例库和当前待测试软件的历史测试用例;步骤B2:所述优化引擎对测试用例进行相似度分析,找出和当前待测试软件相似的软件的测试用例集合;步骤B3:整合相似软件的测试用例和当前待测试软件已有的测试用例,分析缺陷探测情况、用例执行稳定性、执行用例的开销等信息,设定优先级评估准则(比如缺陷探测率高,则优先级高),挑选有较高优先级的测试用例,抽取覆盖需求、覆盖测试项等重要信息作为启发式信息,提交给所述解析引擎。
本发明的一种基于场景描述的自动化测试系统,包括:对象属性抽取器,用于抽取待测试软件中的对象及其属性;规则库,用于描述所述对象属性抽取器中抽取的对象及其属性对应的变量;场景模型构建器,用于对待测试软件的场景构建模型;解析引擎,用于解析所述场景模型构建器建立的模型,搜索测试路径;路径约束抽取器,用于抽取所述解析引擎搜索到的测试路径中的约束条件;约束求解器,用于求解所述路径约束抽取器抽取的路径约束,生成测试输入;求解器适配器,用于提供连接多种所述约束求解器的接口;测试用例生成器,用于自动生成测试用例集合;测试用例库,用于存储所述测试用例生成器生成的测试用例集合;优化引擎,用于优化所述测试用例库中存储的测试用例集合,实时向所述解析引擎反馈启发式信息;核心控制器,用于控制实现与所述解析引擎、所述路径约束抽取器、所述求解器适配器、所述测试用例生成器和所述优化引擎的交互;并判断测试是否结束;所述对象属性抽取器分别与所述规则库和所述场景模型构建器连接;所述解析引擎分别与所述场景模型构建器、所述路径约束抽取器、所述核心控制器和所述优化引擎连接;所述核心控制器与所述路径约束抽取器、所述求解器适配器、所述测试用例生成器和所述优化引擎连接;所述约束求解器与所述求解器适配器连接;所述测试用例库分别与所述测试用例生成器和所述优化引擎连接。
本发明采用的技术特征及其有益效果在于以下方面:
本发明设计实现了一种基于场景描述的自动测试系统,该系统的优点是:能够实现待测试软件的属性自动抽取,用于构建多种场景模型,避免了单一模型的局限性;并且能够结合从测试用例库中提取的历史测试信息和原有模型中的信息自动生成测试路径,优先搜索具有更高测试价值的路径,方便更早发现缺陷;同时采用约束求解技术自动生成测试输入,相对于基于搜索的测试数据生成方法,减少了生成测试数据的时间,提高了测试系统的测试效率,降低了测试成本。
附图说明
图1为本发明基于场景描述的自动测试系统的结构示意图;
图2为本发明基于场景描述的自动测试系统的工作流程图;
图3为解析场景模型的工作流程图;
图4为评估和简化测试用例库的工作流程图。
具体实施方式
下面结合附图和实施例对本发明的具体实施方式做进一步详细的说明,但不应以此限制本发明的保护范围。
如图1所示,本发明的基于场景描述的自动测试系统,包括:规则库1、对象属性抽取器2、场景模型构建器3、解析引擎4、路径约束抽取器5、核心控制器6、约束求解器7、求解器适配器8、测试用例生成器9、测试用例库10和优化引擎11。对象属性抽取器2分别与规则库1和场景模型构建器3连接;解析引擎4分别与场景模型构建器3、路径约束抽取器5、核心控制器6和优化引擎11连接;核心控制器6与路径约束抽取器5、求解器适配器8、测试用例生成器9和优化引擎11连接;约束求解器7与求解器适配器8连接;测试用例库10分别与测试用例生成器9和优化引擎11连接。
如图2所示,本发明的基于场景描述的自动测试系统的实现方法,包括:
步骤一S1:对象属性抽取器2获取待测试软件中的对象,根据规则库1抽取相关的对象属性信息,进行对象属性信息的清洗和存储。
步骤二S2:场景模型构建器3依据待测试软件的基础信息和对象属性抽取器2抽取的对象属性信息构建场景模型,场景模型可借鉴UML模型、有限状态机、Petri网等适合描述场景的模型。
步骤三S3:解析引擎4解析场景模型构建器3构建的场景模型,获取模型的基本信息,结合优化引擎11反馈的启发式信息,搜索获取场景模型中的测试路径。
步骤四S4:根据解析引擎4搜索得到的测试路径,路径约束抽取器5抽取对应路径上的所有约束条件集合,判断是否需要增加额外的约束条件;若不需要,直接将抽取的约束条件提交到核心控制器6;若需要,补充新的约束条件并将抽取的约束条件和补充的约束条件全部提交到核心控制器6。
步骤五S5:核心控制器6将获得的约束条件集合提交到求解器适配器8,调用多种约束求解器7进行求解,求解器适配器8将求解结果反馈给核心控制器6,判断是否有解;若有解,核心控制器6将测试路径和求解结果提交到测试用例生成器9;若无解,判断测试是否结束;若测试未结束,核心控制器6通知解析引擎4重新选择新的测试路径,执行步骤三;若测试结束,终止测试。
步骤六S6:测试用例生成器9组合核心控制器6提交的测试路径和测试输入,生成完整的测试用例并添加到测试用例库10中;测试用例生成器9通知核心控制器6生成测试用例完毕。
步骤七S7:核心控制器6通知优化引擎11评估和简化测试用例库,同时提取有效的测试信息作为启发式信息反馈给解析引擎4;核心控制器6判断测试是否结束;若测试未结束,核心控制器6通知解析引擎4重新选择新的测试路径,执行步骤三;若测试结束;终止测试。
步骤一中,对象属性的获取方法包括了自动化抽取方法和人工抽取方法;自动化抽取方法可采用自动化测试工具获取待测试软件的组件、输入等有效属性;人工抽取方法可利用测试人员的测试经验以及软件规格说明书手动抽取有效的对象属性。
步骤二中,待测试软件的基础信息是对软件附加的说明,包括软件规格说明书、用户需求规格说明书等信息,用于构建基础的场景模型;对象属性抽取器2抽取的对象属性信息可用于优化和丰富基础场景模型,说明模型中元素的属性,提高可读性;使用抽象运算组合基础信息和对象属性抽取器2抽取的对象属性信息,完善场景模型。
步骤三中,搜索场景模型中的测试路径方法是在广度优先搜索算法或者深度优先搜索算法的基础上,利用启发式信息,设定具体的评测指标(比如缺陷发现率)对已有的测试用例进行评估,动态调整测试路径的权重,优先搜索权重大的测试路径,生成路径集合。
步骤四中,路径的约束条件集合是实现该路径的条件,通过使用逻辑运算符连接路径约束抽取器5抽取的条件表达式,组合成一个完整的路径约束条件集合。
步骤五中,求解器适配器8提供了多个接口,用于连接各种不同的约束求解器7,例如Z3、STP、Yices等。
步骤七中,优化引擎11评估和简化测试用例库包括以下步骤:
步骤A1:设计一套测试用例的评价标准用于评估测试用例,例如缺陷探测情况、用例执行稳定性、客户需求、测试开销等影响因子。步骤A2:依据场景测试的测试目标,删除冗余的测试用例,精简测试用例库,并存储到测试用例库10中。
步骤七中,优化引擎11提取有效的测试信息作为启发式信息包括以下步骤:
步骤B1:优化引擎11从测试用例库10读取测试用例,包括历史测试用例和当前系统生成的测试用例,其中历史测试用例是一个大型的数据库,涵盖了多个相似软件的测试用例库和当前待测试软件的历史测试用例。步骤B2:优化引擎11对测试用例进行相似度分析,找出和当前待测试软件相似的软件的测试用例集合。步骤B3:整合相似软件的测试用例和当前待测试软件已有的测试用例,分析缺陷探测情况、用例执行稳定性、执行用例的开销等信息,设定优先级评估准则,比如缺陷探测率高,则优先级高,挑选有较高优先级的测试用例,抽取覆盖需求、覆盖测试项等重要信息作为启发式信息,提交给解析引擎4。
对象属性抽取器2用于抽取待测试软件中的对象属性。待测试软件中存在大量的对象,每个对象具有区别于其他对象的属性。对象属性抽取器2使用自动化测试工具自动抽取对象属性,涵盖组件、用户、表单等各种类型的对象。若自动抽取方法的结果不满足测试的需求,可以通过手动抽取的方法记录对象属性作为补充。手动抽取方法依据测试人员的测试经验、待测试软件的规格说明书等信息,选择与测试相关的对象属性,保证了场景模型的完整构建。抽取信息完毕后,对象抽取器需要清洗对象属性,并将清洗后的数据进行存储,用于场景模型的构建。
规则库1用于描述对象属性抽取器2中抽取的对象及其属性对应的变量。规则库1规定和限制了抽取的对象类型,指导对象属性抽取器2抽取数据。同时,在对象属性抽取器2清洗数据的过程中,规则库1提供了数据过滤的规则和依据,方便检查残缺数据、错误数据和重复数据,保证数据的一致性。规则库1还提供了对象属性存储的规则,包括数据结构和数据类型。
场景模型构建器3用于对待测试软件的场景构建模型。基础场景模型的构建依赖于待测试软件的规格说明书、测试人员经验、客户需求、历史测试用例等信息,涉及到的属性变量可从对象属性抽取器2存储的数据中获取。可用的场景模型包括:UML模型、有限状态机、Petri网、流程图、状态图等。
解析引擎4的作用是解析场景模型构建器3构建的场景模型,搜索测试路径。通过读取场景模型的源文件(比如xml文件),使用解析技术获取模型中的元素信息,包括每个元素具体的属性,以链表、树、数组、栈或其他数据结构的形式进行存储。解析完毕后,解析引擎4可选择一种路径搜索策略或者组合多种路径搜索策略对场景模型进行遍历,获取测试路径。常见的搜索策略包括:随机搜索、广度优先搜索、深度优先搜索、基于覆盖准则的搜索策略等。在上述搜索策略的基础上,解析引擎4还利用优化引擎11反馈的启发式信息,对路径搜索进行优化,提高测试效率。
路径约束抽取器5的作用是抽取场景模型中的路径约束。实现一条完整的路径必须满足一系列的约束条件,通常使用布尔表达式表示。路径约束抽取器5从解析引擎4中获取待测试的路径,通过遍历模型抽取该路径上相关的约束条件并进行记录,组合成一个路径约束条件集合。该路径可能还需要满足其他约束条件,但未在模型中显示,或者测试人员认为需要添加额外的约束条件,可补充新的约束条件,并将抽取的约束条件和补充的约束条件全部提交到核心控制器6。
约束求解器7的作用是求解路径约束抽取器5抽取的路径约束,生成测试输入。路径约束抽取器5抽取的路径约束条件集合构成了SMT问题,即一阶逻辑公式的可满足性问题,涉及多种理论:数组、量词、未定义函数、定长位向量理论和其他一阶理论。约束求解器7可对路径约束条件集合进行求解,常见的约束求解器7包括:Z3、STP、Yics、CVC4、UCLID等。求解理论有:基于DPLL算法的SAT求解理论;基于单纯性算法的算法线性算术求解器;数组公理的延迟实例化;位向量Bit‐Blasting算法等。
求解器适配器8用于提供连接多种约束求解器7的接口。求解器适配器8接收来自核心控制器6的路径约束条件集合,并根据求解策略调用合适的接口进行约束求解。求解完毕后,求解器适配器8再将求解结果反馈到核心控制器6。求解器适配器8起到一个连接的作用,方便快速调用约束求解器7,提高求解效率。
核心控制器6用于控制实现与解析引擎4、路径约束抽取器5、求解器适配器8、测试用例生成器9和优化引擎11的交互,并判断测试是否结束。核心控制器6接收路径约束抽取器5抽取的路径约束条件集合,并将路径约束条件集合提交给求解器适配器8进行求解。其中核心控制器6需要说明求解策略,即调用的约束求解器7类型和顺序。求解完毕后,求解器适配器8再将求解结果反馈到核心控制器6。若有解,核心控制器6将测试路径和求解结果(测试输入)提交给测试用例生成器9;若无解,核心控制器6再判断测试是否结束,判断依据为是否所有路径搜索完毕或达到测试目标。如果测试结束,则终止测试。如果未结束,核心控制器6通知路径约束抽取器5抽取新的路径,防止测试的中断。核心控制器6需要通知优化引擎11及时对测试用例库10进行优化,并反馈启发式信息到解析引擎4。
测试用例生成器9用于自动生成测试用例集合。测试用例生成器9连接测试用例库10,心控制器6将新的测试路径和测试输入提交给测试用例生成器9后,测试用例生成器9整合测试的信息并输入到测试用例库10中。测试用例生成器9还具备可视化的功能,可将测试路径在场景模型中进行描绘,以图形化的方式进行展现。
测试用例库10的作用是存储测试测试用例生成器9生成的测试用例集合。测试用例库10包含了测试软件的信息(编程语言、类型、规模等)和对应的测试用例的信息(编号、测试对象、测试输入、预期输出、检测到的缺陷等)。测试测试用例生成器9可增加测试用例库10中的测试用例,优化引擎11可对测试用例库10进行修改,减少测试用例。
优化引擎11用于优化测试用例集合,实时向解析引擎4反馈启发式信息。优化引擎11具有优化测试用例集合的功能,通过采用测试用例约简方法,结合优先级技术优化测试用例,减少测试用例的冗余,提高测试用例的效率和效果。优化引擎11还可以提取历史测试用例(多个相似软件的测试用例和当前待测试软件的历史测试用例)的缺陷探测情况、用例执行稳定性、执行用例的开销等信息,对测试用例集合进行相似性比较和优先级排列,挑选有较高优先级的测试用例,抽取覆盖需求、覆盖测试项等重要信息作为启发式信息,提交给解析引擎4。
实施例1:抽取待测试软件的对象属性
对象属性抽取器2使用自动化测试工具自动抽取对象属性,包括组件、用户、表单等各种类型的对象。抽取信息完毕后,对象抽取器需要清洗对象属性,并将清洗后的数据进行存储,用于场景模型的构建。本实施例中待测试软件是一个web网站,当前测试对象是注册界面,使用自动化测试工具selenium录制注册界面的测试用例,可保存为C#、Java、Python或Ruby语言的测试脚本。通过解析测试脚本,依据规则库1中的规则抽取登录界面中表单的属性,包括用户名、邮箱、手机号码和密码。对象属性抽取器2还需要对抽取的数据进行清洗,删除重复的数据、补充确实的数据和修改错误的数据,例如,用户名属性重复抽取了两次,对象属性抽取器2需要删除其中一个属性。根据规则库1,对象抽取器将用户名、邮箱和密码的类型设置为字符串,手机号码的类型设置为整型,并以链表的形式存储。
实施例2:构建场景模型
场景模型构建器3依据待测试软件的基础信息和对象属性抽取器2抽取的对象属性信息构建场景模型,基础信息包括待测试软件的规格说明书、测试人员经验、客户需求、历史测试用例等信息。可用的场景模型包括:UML模型、有限状态机、Petri网、流程图、状态图等。本实施例中,场景模型以有限状态机为基础,增加变量信息。根据待测试软件的规格说明书、测试人员经验、客户需求、历史测试用例等信息生成基础场景模型,包括状态元素和转移元素,其中转移元素包括事件和条件。场景模型构建器3使用对象属性抽取器2抽取的对象属性信息,补充基础场景模型的变量信息,例如转移条件,有利于后续测试路径的获取和约束条件的抽取。
实施例3:解析场景模型
解析引擎4解析场景模型构建器3构建的场景模型,通过读取场景模型的源文件(比如xml文件),使用解析技术获取模型中的元素信息,包括每个元素具体的属性,以链表、树、数组、栈或其他数据结构的形式进行存储。解析完毕后,解析引擎4可选择一种路径搜索策略或者组合多种路径搜索策略对场景模型进行遍历,获取测试路径。结合优化引擎11反馈的启发式信息,搜索获取场景模型中的测试路径。本实施例中解析对象是基于有限状态机的场景模型,具体步骤如图3所示:1)使用dom和sax两种解析技术对基于有限状态机的场景模型的xml文件进行解析,抽取状态元素和转移元素(包括转移条件)2)使用链表的方式存储状态和转移元素;3)使用启发式的搜索策略自动搜索路径,在广度优先搜索的基础上,基于优化引擎11反馈的启发式信息(例如测试用例的缺陷发现率),优先搜索可发现更多缺陷的路径。4)解析引擎4将搜索得到新路径提交到约束求解器7。
实施例4:评估和简化测试用例库
优化引擎11设计一套测试用例的评价标准用于评估测试用例,依据场景测试的测试目标,删除冗余的测试用例,精简测试用例库10,减少测试用例的冗余,提高测试用例的效率和效果。本实施例采用优先级排序的方法评估测试用例集以及状态迁移对覆盖准则精简测试用例集,具体步骤如图4所示:1)将测试用例的缺陷探测情况和执行稳定性作为评估标准,对每个测试用例进行评估;2)实现测试用例集的优先级排序,测试用例探测的缺陷越多,执行越稳定,优先级越高,反之,优先级越低;3)分析每个测试用例覆盖的状态迁移对并进行记录;4)精简测试用例集,如果某个用例覆盖的状态迁移对已经被其他测试用例覆盖,则删除该测试用例,减少重复测试。
本发明的保护内容不局限于以上实施例。在不背离发明的精神和范围下,本领域技术人员能够想到的变化和优点都被包括在本发明中,并且以所附的权利要求书为保护范围。
Claims (9)
1.一种基于场景描述的自动测试系统的实现方法,其特征在于,包括以下步骤:
步骤一:对象属性抽取器(2)获取待测试软件中的对象,根据规则库(1)抽取相关的对象属性信息,并进行对象属性信息的清洗和存储;
步骤二:场景模型构建器(3)依据所述待测试软件的基础信息和所述对象属性抽取器(2)抽取的对象属性信息构建场景模型;
步骤三:解析引擎(4)解析所述场景模型构建器(3)构建的场景模型,获取模型的基本信息,结合优化引擎(11)反馈的启发式信息,搜索获取场景模型中的测试路径;
步骤四:根据所述解析引擎(4)搜索得到的测试路径,路径约束抽取器(5)抽取对应路径上的所有约束条件集合,判断是否需要增加额外的约束条件;若不需要,直接将抽取的约束条件提交到核心控制器(6);若需要,补充新的约束条件并将抽取的约束条件和补充的约束条件全部提交到所述核心控制器(6);
步骤五:所述核心控制器(6)将获得的约束条件集合提交到求解器适配器(8),调用多种约束求解器(7)进行求解,所述求解器适配器(8)将求解结果反馈给所述核心控制器(6),判断是否有解;若有解,所述核心控制器(6)将测试路径和求解结果提交到测试用例生成器(9);若无解,判断测试是否结束;若测试未结束,所述核心控制器(6)通知所述解析引擎(4)重新选择新的测试路径,执行步骤三;若测试结束,终止测试;
步骤六:所述测试用例生成器(9)组合所述核心控制器(6)提交的测试路径和测试输入,生成完整的测试用例并添加到测试用例库(10)中,测试输入是所述求解器适配器(8)的求解结果;所述测试用例生成器(9)通知所述核心控制器(6)生成测试用例完毕;
步骤七:所述核心控制器(6)通知所述优化引擎(11)评估和简化测试用例库,同时提取有效的测试信息作为启发式信息反馈给所述解析引擎(4);所述核心控制器(6)判断测试是否结束;若测试未结束,所述核心控制器(6)通知所述解析引擎(4)重新选择新的测试路径,执行步骤三;若测试结束;终止测试。
2.如权利要求1所述的基于场景描述的自动测试系统的实现方法,其特征在于,所述步骤一中,对象属性信息的获取方法包括了自动化抽取方法和人工抽取方法;自动化抽取方法可采用自动化测试工具获取待测试软件的组件、输入有效属性;人工抽取方法可利用测试人员的测试经验以及软件规格说明书手动抽取有效的对象属性。
3.如权利要求1所述的基于场景描述的自动测试系统的实现方法,其特征在于,所述步骤二中,待测试软件的基础信息是对软件附加的说明,包括软件规格说明书、用户需求规格说明书信息,用于构建基础的场景模型;所述对象属性抽取器(2)抽取的对象属性信息用于优化和丰富基础场景模型,说明模型中元素的属性,提高可读性;使用抽象运算组合基础信息和所述对象属性抽取器(2)抽取的对象属性信息,完善场景模型;场景模型包括UML模型、有限状态机、Petri网、流程图、状态图。
4.如权利要求1所述的基于场景描述的自动测试系统的实现方法,其特征在于,所述步骤三中,所述搜索获取场景模型中的测试路径方法是在广度优先搜索算法或者深度优先搜索算法的基础上,利用启发式信息,设定具体的评测指标对已有的测试用例进行评估,动态调整测试路径的权重,优先搜索权重大的测试路径,生成路径集合。
5.如权利要求1所述的基于场景描述的自动测试系统的实现方法,其特征在于,所述步骤四中,路径的约束条件集合是实现该路径的条件,通过使用逻辑运算符连接所述路径约束抽取器(5)抽取的条件表达式,组合成一个完整的路径约束条件集合。
6.如权利要求1所述的基于场景描述的自动测试系统的实现方法,其特征在于,所述步骤五中,所述求解器适配器(8)提供了多个接口,用于连接不同的所述约束求解器(7),包括Z3、STP和/或Yices。
7.如权利要求1所述的基于场景描述的自动测试系统的实现方法,其特征在于,所述步骤七中,所述优化引擎(11)评估和简化测试用例库的步骤如下:
步骤A1:设计一套测试用例的评价标准用于评估测试用例,包括缺陷探测情况、用例执行稳定性、客户需求和/或测试开销的影响因子;
步骤A2:依据场景测试的测试目标,删除冗余的测试用例,精简测试用例库,并存储到所述测试用例库(10)中。
8.如权利要求1所述的基于场景描述的自动测试系统的实现方法,其特征在于,所述步骤七中,所述优化引擎(11)提取有效的测试信息作为启发式信息的步骤如下:
步骤B1:所述优化引擎(11)从所述测试用例库(10)读取测试用例,包括历史测试用例和当前系统生成的测试用例,其中历史测试用例涵盖了多个相似软件的测试用例库和当前待测试软件的历史测试用例;
步骤B2:所述优化引擎(11)对测试用例进行相似度分析,找出和当前待测试软件相似的软件的测试用例集合;
步骤B3:整合相似软件的测试用例和当前待测试软件已有的测试用例,分析缺陷探测情况、用例执行稳定性和执行用例的开销的信息,设定优先级评估准则,挑选高优先级的测试用例,抽取覆盖需求或覆盖测试项的重要信息作为启发式信息,提交给所述解析引擎(4)。
9.一种基于场景描述的自动测试系统,其特征在于,包括:
对象属性抽取器(2),用于抽取待测试软件中的对象及其属性;
规则库(1),用于描述所述对象属性抽取器(2)中抽取的对象及其属性对应的变量;
场景模型构建器(3),用于对待测试软件的场景构建模型;
解析引擎(4),用于解析所述场景模型构建器(3)建立的模型,搜索测试路径;
路径约束抽取器(5),用于抽取所述解析引擎(4)搜索到的测试路径中的约束条件;
约束求解器(7),用于求解所述路径约束抽取器(5)抽取的路径约束,生成测试输入;
求解器适配器(8),用于提供连接多种所述约束求解器(7)的接口;
测试用例生成器(9),用于自动生成测试用例集合;
测试用例库(10),用于存储所述测试用例生成器(9)生成的测试用例集合;
优化引擎(11),用于优化所述测试用例库(10)中存储的测试用例集合,实时向所述解析引擎(4)反馈启发式信息;
核心控制器(6),用于控制实现与所述解析引擎(4)、所述路径约束抽取器(5)、所述求解器适配器(8)、所述测试用例生成器(9)和所述优化引擎(11)的交互;并判断测试是否结束;
所述对象属性抽取器(2)分别与所述规则库(1)和所述场景模型构建器(3)连接;所述解析引擎(4)分别与所述场景模型构建器(3)、所述路径约束抽取器(5)、所述核心控制器(6)和所述优化引擎(11)连接;所述核心控制器(6)与所述路径约束抽取器(5)、所述求解器适配器(8)、所述测试用例生成器(9)和所述优化引擎(11)连接;所述约束求解器(7)与所述求解器适配器(8)连接;所述测试用例库(10)分别与所述测试用例生成器(9)和所述优化引擎(11)连接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610737511.0A CN107783893B (zh) | 2016-08-26 | 2016-08-26 | 一种基于场景描述的自动测试系统及其实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610737511.0A CN107783893B (zh) | 2016-08-26 | 2016-08-26 | 一种基于场景描述的自动测试系统及其实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107783893A CN107783893A (zh) | 2018-03-09 |
CN107783893B true CN107783893B (zh) | 2019-05-03 |
Family
ID=61439440
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610737511.0A Active CN107783893B (zh) | 2016-08-26 | 2016-08-26 | 一种基于场景描述的自动测试系统及其实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107783893B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3547143B1 (en) * | 2018-03-27 | 2022-06-01 | Siemens Aktiengesellschaft | System and method for model-based and behaviour-driven testing |
CN110262961A (zh) * | 2019-05-21 | 2019-09-20 | 深圳壹账通智能科技有限公司 | 工作流管理系统的测试方法、装置、存储介质及终端设备 |
CN110674047B (zh) * | 2019-09-26 | 2023-06-27 | 北京字节跳动网络技术有限公司 | 软件测试方法、装置及电子设备 |
CN111178004B (zh) * | 2019-12-30 | 2023-12-26 | 北京富通东方科技有限公司 | 一种面向机场停机位资源分配的规则数字化表示方法 |
CN111459824B (zh) * | 2020-04-01 | 2021-09-14 | 腾讯科技(深圳)有限公司 | 并发服务的测试用例处理方法及装置 |
CN111949553B (zh) * | 2020-09-04 | 2022-08-12 | 苏州浪潮智能科技有限公司 | 一种基于规则引擎的场景用例测试方法及装置 |
CN117951005A (zh) * | 2021-01-25 | 2024-04-30 | 杭州衣科信息技术股份有限公司 | 接口自动化测试装置、计算机设备及存储介质 |
CN113704093A (zh) * | 2021-08-05 | 2021-11-26 | 卡斯柯信号(成都)有限公司 | 一种通用联锁软件测试用例生成方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
MY158097A (en) * | 2009-04-22 | 2016-08-30 | Mimos Berhad | Method to generate analytical path deviation model |
CN104899136A (zh) * | 2015-05-15 | 2015-09-09 | 百度在线网络技术(北京)有限公司 | 一种用于生成测试用例的方法和装置 |
CN105426309B (zh) * | 2015-11-13 | 2018-04-06 | 上海斐讯数据通信技术有限公司 | 测试用例自动生成方法和装置 |
-
2016
- 2016-08-26 CN CN201610737511.0A patent/CN107783893B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN107783893A (zh) | 2018-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107783893B (zh) | 一种基于场景描述的自动测试系统及其实现方法 | |
CN106547689B (zh) | 一种基于web的自动化测试用例开发系统及方法 | |
CN110764753B (zh) | 一种业务逻辑代码生成方法、装置、设备及存储介质 | |
CN107844424B (zh) | 基于模型的测试系统及方法 | |
CN109189684A (zh) | 基于Python的接口自动化测试方法 | |
CN106133675B (zh) | 评估应用于数据的规则 | |
CN103559122B (zh) | 基于程序行为切片的测试案例约减方法 | |
CN104809071B (zh) | 一种代码测试方法及装置 | |
CN106951368A (zh) | 基于uml时序图的测试用例自动生成方法 | |
CN108897687A (zh) | 一种基于数据驱动的api自动化测试方法和系统 | |
CN106021816B (zh) | 一种基于行为树的分布式系统行为仿真分析工具的实现方法 | |
CN107066382A (zh) | 一种基于模型的航天器系统自动化测试方法 | |
CN104699613B (zh) | 一种航天器测试需求自动生成系统及其方法 | |
CN102968375B (zh) | 基于关联规则挖掘的不可达路径检测方法 | |
CN104375943A (zh) | 一种基于静态模型的嵌入式软件黑盒测试用例生成方法 | |
CN104516813B (zh) | 网络页面的测试节点的选取方法和装置 | |
CN102354144A (zh) | 一种将梯形图转化成plc程序指令的方法 | |
CN106611084A (zh) | 集成电路的设计方法及装置 | |
Oluwagbemi et al. | Automatic generation of test cases from activity diagrams for UML based testing (UBT) | |
CN107080945A (zh) | 测试游戏中人工智能行为的方法、装置及电子设备 | |
CN104899042B (zh) | 一种嵌入式机器视觉检测程序开发方法及系统 | |
Wieber et al. | On the usage of TGGs for automated model transformation testing | |
CN105242958B (zh) | 一种虚拟试验系统与hla仿真系统数据交换方法 | |
CN107247827A (zh) | 基于机器学习的虚端子模型建模及自动连线方法 | |
Klimek | Towards formal and deduction-based analysis of business models for soa processes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |