CN103914380A - 结构测试中的边界值测试方法及其系统 - Google Patents
结构测试中的边界值测试方法及其系统 Download PDFInfo
- 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
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.故障自动注入与故障检测的系统,其特征在于,所述系统包括:
边界覆盖准则选择模块,用于根据被测文件中的语句的语义和表达式的语义选择特定的边界覆盖准则;
边界值选取模块,用于根据所述边界覆盖准则获取所述被测文件的语句边界值和表达式边界值;
可达路径选择模块,用于为所述语句边界值和所述表达式边界值选择对应的可达路径;
边界值测试模块,用于根据所述可达路径生成测试用例,并对所述测试用例进行比较,从而得到边界值测试结果。
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105786686A (zh) * | 2014-12-22 | 2016-07-20 | 阿里巴巴集团控股有限公司 | 边界值测试方法及装置 |
CN107967218A (zh) * | 2017-12-26 | 2018-04-27 | 中原工学院 | 基于用户历史数据的工业软件现场测试中边界值测试方法 |
-
2014
- 2014-03-26 CN CN201410115157.9A patent/CN103914380B/zh not_active Expired - Fee Related
Non-Patent Citations (4)
Title |
---|
KONRAD JAMROZICK 等: "Augmented Dynamic Symbolic Execution", 《PROCEEDINGS OF THE 27TH IEEEACM INTERNATIONAL CONFERENCE ON AUTOMATED SOFTWARE ENGINEERING》 * |
李丽萍,李兴森: "基于模型的若干逻辑边界覆盖测试准则", 《计算机科学》 * |
李青翠: "单元自动化测试系统中路径选择方法的研究与设计", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
毛颖: "测试用例自动生成系统研究与实现", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
Cited By (2)
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 |