CN103914380A - 结构测试中的边界值测试方法及其系统 - Google Patents

结构测试中的边界值测试方法及其系统 Download PDF

Info

Publication number
CN103914380A
CN103914380A CN201410115157.9A CN201410115157A CN103914380A CN 103914380 A CN103914380 A CN 103914380A CN 201410115157 A CN201410115157 A CN 201410115157A CN 103914380 A CN103914380 A CN 103914380A
Authority
CN
China
Prior art keywords
boundary value
statement
expression formula
path
obtains
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.)
Granted
Application number
CN201410115157.9A
Other languages
English (en)
Other versions
CN103914380B (zh
Inventor
宫云战
李峰
黄俊飞
金大海
王雅文
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing University of Posts and Telecommunications
Original Assignee
Beijing University of Posts and Telecommunications
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing University of Posts and Telecommunications filed Critical Beijing University of Posts and Telecommunications
Priority to CN201410115157.9A priority Critical patent/CN103914380B/zh
Publication of CN103914380A publication Critical patent/CN103914380A/zh
Application granted granted Critical
Publication of CN103914380B publication Critical patent/CN103914380B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明涉及一种结构测试中的边界值测试方法及其系统,所述方法包括:S1,根据被测文件中的语句的语义和表达式的语义选择特定的边界覆盖准则;S2,根据所述边界覆盖准则获取所述被测文件的语句边界值和表达式边界值;S3,为所述语句边界值和所述表达式边界值选择对应的可达路径;S4,根据所述可达路径生成测试用例,并对所述测试用例进行比较,从而得到边界值测试结果。本发明的结构测试中的边界值测试方法及其系统,通过对不同的语句以及表达式选择特定的边界值覆盖准则,可以快速地找到对应的边界值,从而可以在结构测试中对语句以及表达式的边界值进行测试。

Description

结构测试中的边界值测试方法及其系统
技术领域
本发明涉及软件测试技术领域,尤其是,尤其涉及一种在结构测试中的边界值测试方法。
背景技术
边界值测试的提出是用于功能测试。1979年,Myers GJ.提出输入域的边界比中间更加容易发生错误,从而将边界值分析看成补充等价类划分的测试用例生成技术,即不是选择等价类的任意元素,而是选择等价类的边界。1997年Reid使用真实工程中的17个模块做实验,对比边界值、语句覆盖、分支覆盖、随机以及其他的测试方法的错误检测效果。试验结果表明,边界值比其他所有方法都好,找到了几乎17个模块中的所有错误;其中的14个模块,需要50000个随机测试用例才能得到与边界值相当的测试效果。
结构测试是一种基于代码的测试,人们提出各种覆盖准则来验证结构测试的充分性,比如语句覆盖、分支覆盖、全定义覆盖、全引用覆盖等等。但是这些传统的覆盖测试技术都是基于控制流图,以控制流图上的点和边为覆盖元素,所以只要求为覆盖元素生成一个测试用例即可,而不关注取值是否在边界上,导致传统覆盖测试很难检测到边界值发生错误的情况。
发明内容
本发明提供一种结构测试中的边界值测试方法及其系统,可以快速地找到各个语句以及表达式的边界值,并对其边界值进行测试。
根据上述目的,本发明提供了一种结构测试中的边界值测试方法,该包括:S1,根据被测文件中的语句的语义和表达式的语义选择特定的边界覆盖准则;S2,根据所述边界覆盖准则获取所述被测文件的语句边界值和表达式边界值;S3,为所述语句边界值和所述表达式边界值选择对应的可达路径;S4,根据所述可达路径生成测试用例,并对所述测试用例进行比较,从而得到边界值测试结果。
其中,所述步骤S2包括:从所述结构测试的控制流图中,得到语句节点,然后根据所述边界覆盖准则得到所述语句边界值;从结构测试中的抽象语法树中,得到所述表达式的节点,然后根据所述边界覆盖准则得到所述表达式边界值。
其中,根据所述边界值覆盖准则获取所述语句边界值的过程还包括:所述结构测试中的跳转语句的每个边界值为一个路径集合,所述边界覆盖准则检测到所述集合中的任一个元素,则得到所述跳转语句的语句边界值。
其中,当语句边界值为路径集合时,为所述路径集合中的任一个元素选择到可达路径,即为此语句边界值选择到可达路径。
其中,当语句边界值为路径集合时,对此语句边界值选择路径的具体步骤包括:S51,获取所述语句边界值中的第一个元素;S52,选择一条经过所述第一个元素的第一路径;S53,判断所述第一路径是否为所述第一个元素的可达路径;S54,如果是,则将所述第一路径作为所述语句边界值的可达路径;如果否,则选择所述语句边界值中的下一个元素,并重复进行上述判断,直到找到所述语句边界值的可达路径。
其中,对所述表达式边界值选择路径的具体步骤包括:S61,找到所述表达式所在的控制流图节点;S62,获取所述表达式的边界值的约束CV;S63,选择一条经过所述控制流图节点的路径;S64,获取所述路径的约束CP;S65,判断C=CV∧CP是否有解;S66,如果判定C有解,则所述路径为所述表达式边界值的可达路径;如果判定C无解,则重新选择一条经过所述控制流图节点的路径,直至C有解。
根据本发明的另一个方面,提供了一种故障自动注入与故障检测的系统,所述系统包括:边界覆盖准则选择模块,用于根据被测文件中的语句的语义和表达式的语义选择特定的边界覆盖准则;边界值选取模块,用于根据所述边界覆盖准则获取所述被测文件的语句边界值和表达式边界值;可达路径选择模块,用于为所述语句边界值和所述表达式边界值选择对应的可达路径;边界值测试模块,用于根据所述可达路径生成测试用例,并对所述测试用例进行比较,从而得到边界值测试结果。
本发明所述的结构测试中的边界值测试方法及其系统,通过对不同的语句以及表达式选择特定的边界值覆盖准则,可以快速地找到对应的边界值,从而可以在结构测试中对语句以及表达式的边界值进行测试。
附图说明
通过参考附图会更加清楚的理解本发明的特征和优点,附图是示意性的而不应理解为对本发明进行任何限制,在附图中:
图1示出了本发明的结构测试中的边界值测试方法的流程图;
图2示出了本发明的结构测试中的边界值测试方法的对语句边界值选择路径的实施例的流程图;
图3示出了本发明的结构测试中的边界值测试方法的对所述表达式边界值选择路径的实施例的流程图;
图4示出了本发明的结构测试中的边界值的测试系统的结构框图。
具体实施方式
下面将结合附图对本发明的实施例进行详细描述。
图1示出了本发明的结构测试中的边界值测试方法的流程图。
参照图1,本发明的实施例的结构测试中的边界值测试方法包括:
步骤S1,根据被测文件中的语句的语义和表达式的语义选择特定的边界覆盖准则。
步骤S2,根据所述边界覆盖准则获取所述被测文件的语句边界值和表达式边界值。
在本实施例中,通过从所述结构测试的控制流图中,得到语句节点,然后根据所述边界覆盖准则得到所述语句边界值。并且,在所述结构测试中的跳转语句的每个边界值为一个路径集合,所述边界覆盖准则检测到所述集合中的任一个元素,则得到所述跳转语句的语句边界值。
同时,从结构测试中的抽象语法树中,得到所述表达式的节点,然后根据所述边界覆盖准则得到所述表达式边界值。
步骤S3,为所述语句边界值和所述表达式边界值选择对应的可达路径。
在本实施例中,当语句边界值为路径集合时,为所述路径集合中的任一个元素选择到可达路径,则为此语句边界值选择到可达路径。
图2示出了本发明的结构测试中的边界值测试方法的对语句边界值选择路径的实施例的流程图。
参照图2,当语句边界值为路径集合V={vi|i=1,2,3…}时,对此语句边界值V={vi|i=1,2,3…}选择路径的具体步骤包括:
S51,获取语句边界值V中的任一个元素v1
S52,选择一条经过元素v1的路径p;
S53,判断路径p是否为元素v1的可达路径;
S54,如果是,则将路径p作为语句边界值V的可达路径;如果否,则选择语句边界值V中的下一个元素,并重复进行上述判断,直到找到语句边界值V的可达路径。
在本实施例中,其他不是路径集合的边界值,都是控制流图中的点和边,其选择路径的方法与现有测试程序中的方法相同,在此不再赘述。
图3示出了本发明的结构测试中的边界值测试方法的对所述表达式边界值选择路径的实施例的流程图;
参照图3,在本发明的另一个实施例中,对表达式边界值选择路径的具体步骤包括:
S61,找到所述表达式所在的控制流语句节点S,
S62,得到所述表达式的边界值的约束CV
S63,选择一条经过上述控制流图节点S的路径P;
S64,获取所述路径的约束CP
S65,判断C=CV∧CP是否有解;
S66,如果判定C有解,则所述路径为所述表达式边界值的可达路径;如果判定C无解,则重新选择一条经过所述控制流图节点的路径,直至C有解。
S4,根据所述可达路径生成测试用例,并对所述测试用例进行比较,从而得到边界值测试结果。
下面是本发明的在结构测试中进行边界值测试的一个具体的实施例。
对一个字符串表示的小数,四舍五入取整:
程序源代码(节选)及对应的控制流图如下所示:
上述程序的计算如:round(“1.28”)=1,round(“1.82”)=2;
上述程序中有两个错误:
①没有考虑到参数可能没有“.”,比如round(“12”),应该等于12,结果却出现数组越界错误(“取小数点后一位数字”的表达式str[i+1]出现数组越界错误);
②四舍五入应该是charAfterDot>='5'(源程序将”>=”误写成”>”),比如round(“1.5”),应该返回2,结果返回1;
上述程序使用边界值覆盖测试的流程如下:
S11,获取边界值:
S111,获取语句边界值(以break执行0次为例)
break执行0次={BCDBF,BCDBCDBF,BCDBCDBCDBF,…}
S112,获取表达式边界值(以charAfterDot>’5’为例)
表达式charAfterDot>’5’的边界值有三个:
{charAfterDot=’5’,charAfterDot=’4’,charAfterDot=’6’}
S12,处理所有的边界值:
S121,处理语句边界值:break执行0次
为边界值选到可达路径:ABCDBFGH…;
为路径生成测试用例时,会出现数组越界错误;
S122,处理表达式边界值:charAfterDot=’5’
为边界值选到可达路径:ABCDBCDBCDBFGI…
为路径生成测试用例,比如str=”1.5”,对比测试用例的执行结果可知,有错误(预期结果为2,但实际执行结果为1);
使用上述两种方法,对上述程序中的语句语句边界值和表达式边界值进行测试,测试的结果发现了程序中的上述两个错误。
在发明的实施例中,边界覆盖准则是基于本实施例中的各种语句边界值和表达式边界值的取值的一个集合,表一为本实施例的语句边界值的边界值类型表。表二为表达式边界值的边界值类型表。
从表二可知,由于表达式由操作数和操作符构成,所以变大时的边界由操作数和操作符共同决定。同时,其取值域由数据类型决定,如长整型的取值域比整型的取值域大。
表一语句边界值类型表
表二表达式边界值类型表
图4示出了本发明的结构测试中的边界值的测试系统的结构框图。
如图4所示,本发明的又一个实施例中,提供了一种故障自动注入与故障检测的系统,该系统包括:
边界覆盖准则选择模块100,用于根据被测文件中的语句的语义和表达式的语义选择特定的边界覆盖准则;
边界值选取模块200,用于根据所述边界覆盖准则获取所述被测文件的语句边界值和表达式边界值;
可达路径选择模块300,用于为所述语句边界值和所述表达式边界值选择对应的可达路径;
边界值测试模块400,用于根据所述可达路径生成测试用例,并对所述测试用例进行比较,从而得到边界值测试结果。
本发明所述的结构测试中的边界值测试方法及其系统,通过对不同的语句以及表达式选择特定的边界值覆盖准则,可以快速地找到对应的边界值,从而可以在结构测试中对语句以及表达式的边界值进行测试。
虽然结合附图描述了本发明的实施方式,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。

Claims (7)

1.结构测试中的边界值测试方法,其特征在于,包括:
S1,根据被测文件中的语句的语义和表达式的语义选择特定的边界覆盖准则;
S2,根据所述边界覆盖准则获取所述被测文件的语句边界值和表达式边界值;
S3,为所述语句边界值和所述表达式边界值选择对应的可达路径;
S4,根据所述可达路径生成测试用例,并对所述测试用例进行比较,从而得到边界值测试结果。
2.根据权利要求1所述的故障自动注入与故障检测的方法,其特征在于,所述步骤S2包括:
从所述结构测试的控制流图中,得到语句节点,然后根据所述边界覆盖准则得到所述语句边界值;
从结构测试中的抽象语法树中,得到所述表达式的节点,然后根据所述边界覆盖准则得到所述表达式边界值。
3.根据权利要求2所述的故障自动注入与故障检测的方法,其特征在于,根据所述边界值覆盖准则获取所述语句边界值的过程还包括:
所述结构测试中的跳转语句的每个边界值为一个路径集合,所述边界覆盖准则检测到所述集合中的任一个元素,则得到所述跳转语句的语句边界值。
4.根据权利要求1所述的故障自动注入与故障检测的方法,其特征在于,当语句边界值为路径集合时,为所述路径集合中的任一个元素选择到可达路径,即为此语句边界值选择到可达路径。
5.根据权利要求4所述的故障自动注入与故障检测的方法,其特征在于,当语句边界值为路径集合时,对此语句边界值选择路径的具体步骤包括:
S51,获取所述语句边界值中的第一个元素;
S52,选择一条经过所述第一个元素的第一路径;
S53,判断所述第一路径是否为所述第一个元素的可达路径;
S54,如果是,则将所述第一路径作为所述语句边界值的可达路径;如果否,则选择所述语句边界值中的下一个元素,并重复进行上述判断,直到找到所述语句边界值的可达路径。
6.根据权利要求1所述的故障自动注入与故障检测的方法,其特征在于,对所述表达式边界值选择路径的具体步骤包括:
S61,找到所述表达式所在的控制流图节点;
S62,获取所述表达式的边界值的约束CV
S63,选择一条经过所述控制流图节点的路径;
S64,获取所述路径的约束CP
S65,判断C=CV∧CP是否有解;
S66,如果判定C有解,则所述路径为所述表达式边界值的可达路径;如果判定C无解,则重新选择一条经过所述控制流图节点的路径,直至C有解。
7.故障自动注入与故障检测的系统,其特征在于,所述系统包括:
边界覆盖准则选择模块,用于根据被测文件中的语句的语义和表达式的语义选择特定的边界覆盖准则;
边界值选取模块,用于根据所述边界覆盖准则获取所述被测文件的语句边界值和表达式边界值;
可达路径选择模块,用于为所述语句边界值和所述表达式边界值选择对应的可达路径;
边界值测试模块,用于根据所述可达路径生成测试用例,并对所述测试用例进行比较,从而得到边界值测试结果。
CN201410115157.9A 2014-03-26 2014-03-26 结构测试中的边界值测试方法及其系统 Expired - Fee Related CN103914380B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410115157.9A CN103914380B (zh) 2014-03-26 2014-03-26 结构测试中的边界值测试方法及其系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410115157.9A CN103914380B (zh) 2014-03-26 2014-03-26 结构测试中的边界值测试方法及其系统

Publications (2)

Publication Number Publication Date
CN103914380A true CN103914380A (zh) 2014-07-09
CN103914380B CN103914380B (zh) 2016-10-19

Family

ID=51040082

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410115157.9A Expired - Fee Related CN103914380B (zh) 2014-03-26 2014-03-26 结构测试中的边界值测试方法及其系统

Country Status (1)

Country Link
CN (1) CN103914380B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105786686A (zh) * 2014-12-22 2016-07-20 阿里巴巴集团控股有限公司 边界值测试方法及装置
CN107967218A (zh) * 2017-12-26 2018-04-27 中原工学院 基于用户历史数据的工业软件现场测试中边界值测试方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
KONRAD JAMROZICK 等: "Augmented Dynamic Symbolic Execution", 《PROCEEDINGS OF THE 27TH IEEEACM INTERNATIONAL CONFERENCE ON AUTOMATED SOFTWARE ENGINEERING》 *
李丽萍,李兴森: "基于模型的若干逻辑边界覆盖测试准则", 《计算机科学》 *
李青翠: "单元自动化测试系统中路径选择方法的研究与设计", 《中国优秀硕士学位论文全文数据库信息科技辑》 *
毛颖: "测试用例自动生成系统研究与实现", 《中国优秀硕士学位论文全文数据库信息科技辑》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105786686A (zh) * 2014-12-22 2016-07-20 阿里巴巴集团控股有限公司 边界值测试方法及装置
CN107967218A (zh) * 2017-12-26 2018-04-27 中原工学院 基于用户历史数据的工业软件现场测试中边界值测试方法

Also Published As

Publication number Publication date
CN103914380B (zh) 2016-10-19

Similar Documents

Publication Publication Date Title
US9983984B2 (en) Automated modularization of graphical user interface test cases
US8918678B2 (en) Functional testing of a processor design
Kuhn et al. Combinatorial testing: Theory and practice
US10152406B2 (en) Software program repair
US20170075795A1 (en) Identifying test gaps using code execution paths
Calvagna et al. A formal logic approach to constrained combinatorial testing
US9645800B2 (en) System and method for facilitating static analysis of software applications
Zhonglin et al. An improved method of acquiring basis path for software testing
CN101482596B (zh) 多因素工业系统的故障快速识别方法
Jacob Implementation of randomized test pattern generation strategy
CN102566988B (zh) 基于用户使用流程有向图的测试用例自动生成方法及测试方法
CN104063307B (zh) 一种软件测试方法和系统
Wang et al. Detecting SQL vulnerability attack based on the dynamic and static analysis technology
CN107766230A (zh) 一种基于配置文件进行测试的方法与设备
CN103914380A (zh) 结构测试中的边界值测试方法及其系统
Simos et al. A combinatorial approach to analyzing cross-site scripting (XSS) vulnerabilities in web application security testing
Uetsuki et al. An efficient software testing method by decision table verification
Zhang et al. Test case prioritization technique based on error probability and severity of UML models
Martinez et al. ASTOR: Evolutionary automatic software repair for Java
Kumar et al. A Coupling effect based test case prioritization technique
US9916412B2 (en) Automatic generation of test layouts for testing a design rule checking tool
US9477800B1 (en) System, method, and computer program product for automatically selecting a constraint solver algorithm in a design verification environment
Rajarathinam et al. Test suite prioritisation using trace events technique
Musa et al. Regression test framework based on extended system dependence graph for object-oriented programs
Javed et al. Decreasing defect rate of test cases by designing and analysis for recursive modules of a program structure: Improvement in test cases

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20161019

CF01 Termination of patent right due to non-payment of annual fee