CN112799961A - 基于贪婪算法和搜索算法的组合测试用例生成算法 - Google Patents
基于贪婪算法和搜索算法的组合测试用例生成算法 Download PDFInfo
- Publication number
- CN112799961A CN112799961A CN202110213195.8A CN202110213195A CN112799961A CN 112799961 A CN112799961 A CN 112799961A CN 202110213195 A CN202110213195 A CN 202110213195A CN 112799961 A CN112799961 A CN 112799961A
- Authority
- CN
- China
- Prior art keywords
- algorithm
- test case
- greedy algorithm
- coverage
- greedy
- 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.)
- Pending
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 65
- 238000010845 search algorithm Methods 0.000 title claims abstract description 26
- 238000000034 method Methods 0.000 claims description 7
- 238000005457 optimization Methods 0.000 claims description 6
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 238000007429 general method Methods 0.000 claims description 3
- 239000011159 matrix material Substances 0.000 claims description 3
- 238000006467 substitution reaction Methods 0.000 claims 1
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013522 software testing Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
Images
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/3684—Test management for test design, e.g. generating new test cases
-
- 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/3676—Test management for coverage analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
- G06N20/20—Ensemble learning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于混合的组合测试用例生成算法,包括以下步骤:1)生成满足要求的覆盖数组,后续的操作以覆盖这个数组为判别标准。2)在覆盖率较低的情况下,根据贪婪算法特性,使用贪婪算法来生成测试用例。3)在覆盖率达到比例K后,贪婪算法遇到瓶颈,选择搜索算法替代,以期达到更优的效果。本发明的基于混合算法的组合测试用例生成算法,即保证了贪婪算法生成测试用例前期的高效,又能避免后期陷入局部最优的情况,为从业人员在做测试用例生成方向的工作时,提供一个可以思考的角度。
Description
技术领域
本发明提出了一种新的组合测试用例生成算法,其基于贪婪算法和搜索算法的组合,该技术属于软件测试领域中的组合测试部分。利用恰到好处的对两种算法的取舍,根据覆盖率指标及时切换生成技术,以更快地生成测试用例。本发明有效地弥补了贪婪算法和搜索算法的缺陷,在高维的情况下更能体现本发明的优势。
背景技术
软件测试是软件开发生命周期中不可或缺的一个重要环节。通过对系统进行各种实际场景的模拟,通过测试用例对系统进行测试,可以保证系统的安全性。然而,在现实生活中,一个软件系统的参数可能有很多,这会导致测试用例数量达到成千上万个,因此组合测试用例生成算法应运而生。
贪婪算法试图在每次系统更新后,使用迭代技术找到当前的最佳选择,以达到最优解。在确定给定测试集时,确定一个测试用例作为源测试用例,然后迭代选择后续的测试用例。但是贪婪算法很容易陷入局部最优解,从而无法达到整体最优解。
搜索算法:许多搜索技术应用于许多领域,包括基于搜索的软件工程(SBSE)领域。作为组合测试的关键问题,生成覆盖数组已经得到了广泛的研究,并且已经应用了许多搜索技术,这些技术称为基于搜索的组合测试(SBCT)。SBCT是SBSE中基于搜索的软件测试(SBST)的一个分支。
本文提出基于贪婪算法和搜索算法的混合算法,用来生成组合测试用例,并给出测试用例生成工具。
发明内容
发明目的:为了解决传统的贪婪算法在生成测试用例时会陷入局部最优的情况,本文提出了一种基于贪婪算法和搜索算法的测试用例生成算法,并且设置动态覆盖率,在未达到设置的覆盖率之前采用贪婪算法,当达到覆盖率要求后,采用搜索算法生成测试用例。
技术方案:为了实现上述目的,本发明采用的技术方案为:
基于贪婪算法和搜索算法的测试用例生成算法,包括以下步骤:
步骤1)、生成满足要求的覆盖数组。
步骤2)、选择贪婪算法,如图2,根据贪婪算法的特性逐步覆盖数组。
步骤3)、当覆盖标准达到K后,贪婪算法可能会遇到瓶颈,选择搜索算法代替,如图3,以期达到更优的效果。
进一步的,所述步骤1)的具体步骤如下:
步骤1.0)、首先是构建数组,构建覆盖数组的目标是创建一个二维数组,其中所有与指定输入关联的t元组都会被覆盖。
步骤1.1)、组合测试使用覆盖表CA作为测试用例集,CA是一个大小为M×k维的矩阵。本发明中,测试用例条数,即覆盖表的大小标记为N;覆盖强度标记为t;待测系统参数个数为其中,取值个数为vi的参数有ki(1≤i≤m,m≤k)个,vi(1≤i≤k)表示第i个参数取值集合,|vi|表示第i个参数取值个数。则CA表有如下表示:
进一步的,所述步骤2)的具体步骤如下:
步骤2.1)、使用贪婪算法,将每个因子与某个值绑定在一起,可以为该集合一次建立一行。一旦所有t元组都被覆盖,覆盖数组就完成了。本发明可以动态设置参数K,当覆盖率达到K时,将贪婪算法转换为搜索算法,避免陷入局部最优。
步骤2.2)、手动选择第一个测试用例T,T的选择会影响后续测试用例的生成。
步骤2.3)、根据步骤2.2)选中的测试用例T,选择测试用例T’,选择标准是转换成本最低,如果同时存在多个T’,则选择其中一个。在此阶段,覆盖率逐渐上升。
进一步的,所述步骤3)的具体步骤如下:
步骤3.1)、用户可以根据自己的实际需求,设置一个覆盖标准值K。如果标准值K设置得过高,则有可能在贪婪算法陷入局部最优时仍未达到K,会影响性能。
步骤3.2)、当覆盖率到达K时,本发明将选择搜索算法继续生成测试用例。
步骤3.4)、假定S为SUT应涵盖的所有未覆盖2值组合的集合,Tg为生成的测试用例的集合。对于每个测试候选t,t(2-way)表示t覆盖的S中的所有2-way值组合。则有:
Fitness(t)=|t(2-way)∩S|
其中Fitness用来来衡量每个候选者的质量。以此来选择候选者。因为这是搜索算法的一般方法,因此对于其他强度的组合也适用。
步骤3.5)、当步骤3.4)中S为空时,CA完全覆盖。
附图说明
图1是基于混合算法的组合测试用例生成流程图
图2是一般贪婪算法流程图
图3是一般搜索算法流程图
具体实施方案
下面结合附图和具体实施例,进一步阐明本发明,应理解这些实例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
为了解决传统的贪婪算法在生成测试用例时会陷入局部最优的情况,本文提出了一种基于贪婪算法和搜索算法的测试用例生成算法,并且设置动态覆盖率,在未达到设置的覆盖率之前采用贪婪算法,当达到覆盖率要求后,采用搜索算法生成测试用例。
技术方案:为了实现上述目的,本发明采用的技术方案为:
基于贪婪算法和搜索算法的测试用例生成算法,包括以下步骤:
步骤1)、生成满足要求的覆盖数组。
步骤2)、选择贪婪算法,如图2,根据贪婪算法的特性逐步覆盖数组。
步骤3)、当覆盖标准达到K后,贪婪算法可能会遇到瓶颈,选择搜索算法代替,如图3,以期达到更优的效果。
进一步的,所述步骤1)的具体步骤如下:
步骤1.0)、首先是构建数组,构建覆盖数组的目标是创建一个二维数组,其中所有与指定输入关联的t元组都会被覆盖。
步骤1.1)、组合测试使用覆盖表CA作为测试用例集,CA是一个大小为M×k维的矩阵。本发明中,测试用例条数,即覆盖表的大小标记为N;覆盖强度标记为t;待测系统参数个数为其中,取值个数为vi的参数有ki(1≤i≤m,m≤k)个,vi(1≤i≤k)表示第i个参数取值集合,|vi|表示第i个参数取值个数。则CA表有如下表示:
进一步的,所述步骤2)的具体步骤如下:
步骤2.1)、使用贪婪算法,将每个因子与某个值绑定在一起,可以为该集合一次建立一行。一旦所有t元组都被覆盖,覆盖数组就完成了。本发明可以动态设置参数K,当覆盖率达到K时,将贪婪算法转换为搜索算法,避免陷入局部最优。
步骤2.2)、手动选择第一个测试用例T,T的选择会影响后续测试用例的生成。
步骤2.3)、根据步骤2.2)选中的测试用例T,选择测试用例T’,选择标准是转换成本最低,如果同时存在多个T’,则选择其中一个。在此阶段,覆盖率逐渐上升。
进一步的,所述步骤3)的具体步骤如下:
步骤3.1)、用户可以根据自己的实际需求,设置一个覆盖标准值K。如果标准值K设置得过高,则有可能在贪婪算法陷入局部最优时仍未达到K,会影响性能。
步骤3.2)、当覆盖率到达K时,本发明将选择搜索算法继续生成测试用例。
步骤3.4)、假定S为SUT应涵盖的所有未覆盖2值组合的集合,Tg为生成的测试用例的集合。对于每个测试候选t,t(2-way)表示t覆盖的S中的所有2-way值组合。则有:
Fitness(t)=|t(2-way)∩S|
其中Fitness用来来衡量每个候选者的质量。以此来选择候选者。因为这是搜索算法的一般方法,因此对于其他强度的组合也适用。
步骤3.5)、当步骤3.4)中S为空时,CA完全覆盖。
在组合测试领域中,生成测试用例算法各有优缺,本发明的基于混合算法的组合测试用例生成算法,即保证了贪婪算法生成测试用例前期的高效,又能避免后期陷入局部最优的情况。
以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (1)
1.基于贪婪算法和搜索算法的组合测试用例生成算法,其主要步骤如下:
步骤1)、生成满足要求的覆盖数组。
步骤2)、首先选择贪婪算法,如图2,根据贪婪算法特性逐步覆盖数组。
步骤3)、当覆盖标准达到K后,贪婪算法遇到瓶颈,选择搜索算法代替,如图3,以期达到更优的效果。
进一步的,所述步骤1)的具体步骤如下:
步骤1.0)、首先是构建数组,构建覆盖数组的总体目标是创建一个二维数组,其中所有与指定输入关联的t元组都会被覆盖。
步骤1.1)、组合测试使用覆盖表CA作为测试用例集,CA是一个大小为M×k维的矩阵。本发明中,测试用例条数,即覆盖表的大小标记为N;覆盖强度标记为t;待测系统参数个数为其中,取值个数为vi的参数有ki(1≤i≤m,m≤k)个,vi(1≤i≤k)表示第i个参数取值集合,|vi|表示第i个参数取值个数。则CA表有如下表示:
进一步的,所述步骤2)的具体步骤如下:
步骤2.1)、通过使用贪婪算法,将每个因子与某个级别的值绑定在一起,可以为该集合一次建立一行。一旦所有t元组都被覆盖,覆盖数组就完成了。本发明可以动态设置参数K,当覆盖率达到K时,将贪婪算法转换为搜索算法,避免陷入局部最优。
步骤2.2)、手动选择第一个测试用例T,或者自动选择T,T的选择会影响后续测试用例的生成。
步骤2.3)、根据步骤2.2)选中的测试用例T,选择测试用例T’,选择标准是转换成本最低,如果同时存在多个T’,则选择其中一个。在此阶段,覆盖率逐渐上升。
进一步的,所述步骤3)的具体步骤如下:
步骤3.1)、用户可以根据自己的实际需求,设置一个覆盖标准值K。如果标准值K设置得过高,则有可能在贪婪算法陷入局部最优时仍未达到K,会影响性能。
步骤3.2)、当覆盖率到达K时,本发明将选择搜索算法继续生成测试用例。
步骤3.4)、假定S为SUT应涵盖的所有未覆盖2值组合的集合,Tg为生成的测试用例的集合。对于每个测试候选t,t(2-way)表示t覆盖的S中的所有2-way值组合。则有:
Fitness(t)=|t(2-way)∩S|
其中Fitness用来衡量每个候选者的质量。以此来选择候选者。因为这是搜索算法的一般方法,因此对于其他强度的组合也适用。
步骤3.5)、当步骤3.4)中S为空时,CA完全覆盖,流程结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110213195.8A CN112799961A (zh) | 2021-02-25 | 2021-02-25 | 基于贪婪算法和搜索算法的组合测试用例生成算法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110213195.8A CN112799961A (zh) | 2021-02-25 | 2021-02-25 | 基于贪婪算法和搜索算法的组合测试用例生成算法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112799961A true CN112799961A (zh) | 2021-05-14 |
Family
ID=75815874
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110213195.8A Pending CN112799961A (zh) | 2021-02-25 | 2021-02-25 | 基于贪婪算法和搜索算法的组合测试用例生成算法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112799961A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113238954A (zh) * | 2021-05-26 | 2021-08-10 | 南京信息工程大学 | 一种软件测试用例的递归生成方法 |
CN117520211A (zh) * | 2024-01-08 | 2024-02-06 | 江西财经大学 | 基于多维覆盖矩阵的随机组合测试用例生成方法与系统 |
-
2021
- 2021-02-25 CN CN202110213195.8A patent/CN112799961A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113238954A (zh) * | 2021-05-26 | 2021-08-10 | 南京信息工程大学 | 一种软件测试用例的递归生成方法 |
CN113238954B (zh) * | 2021-05-26 | 2023-05-09 | 南京信息工程大学 | 一种软件测试用例的递归生成方法 |
CN117520211A (zh) * | 2024-01-08 | 2024-02-06 | 江西财经大学 | 基于多维覆盖矩阵的随机组合测试用例生成方法与系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112799961A (zh) | 基于贪婪算法和搜索算法的组合测试用例生成算法 | |
CN107766245B (zh) | 基于ott策略的可变力度组合测试用例优先级在线排序方法 | |
CN106528433B (zh) | 一种用于白盒测试的测试用例优先级排序方法 | |
CN104573000B (zh) | 基于排序学习的自动问答装置及方法 | |
CN107832047A (zh) | 一种基于lstm的非api函数实参推荐方法 | |
CN111275186A (zh) | 一种基于分组分层机制的可微结构搜索方法 | |
CN109451304A (zh) | 一种摄像头模组批量对焦测试方法及系统 | |
McCaffrey | Generation of pairwise test sets using a genetic algorithm | |
Gupta et al. | Using genetic algorithm for unit testing of object oriented software | |
CN112684346A (zh) | 基于遗传卷积神经网络的锂电池健康状态估计方法 | |
CN111507504A (zh) | 基于数据重采样的Adaboost集成学习电网故障诊断系统及方法 | |
CN105718368A (zh) | 一种软件测试数据扩增方法 | |
CN110532291B (zh) | 基于最小执行代价的深度学习框架间模型转换方法及系统 | |
CN111984542A (zh) | 一种基于贪婪算法和搜索算法的混合算法的组合测试用例生成算法 | |
CN108400935A (zh) | 一种基于遗传算法的业务路径选择方法、装置及电子设备 | |
CN105654498B (zh) | 基于动态局部搜索和免疫克隆自动聚类的图像分割方法 | |
CN107578123A (zh) | 一种基于nsga‑ii的行波管电子光学系统优化方法 | |
CN103888314A (zh) | 基于uio序列法验证有限状态机所处状态的方法 | |
CN109858247A (zh) | 一种基于XGBoost的静态三特征模型的恶意软件分类方法 | |
CN108615056A (zh) | 一种基于可分解评分函数的树增强朴素贝叶斯分类方法 | |
AU2020438008B2 (en) | Time series data generation method and device based on multi-condition constraints, and medium | |
CN113704078A (zh) | 构建调用链转换图及引导生成x.509证书变种方法 | |
Ledezma et al. | Empirical evaluation of optimized stacking configurations | |
Elfeky et al. | A simple ranking and selection for constrained evolutionary optimization | |
CN106598585A (zh) | 云环境下计分驱动的服务快速匹配和聚合方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
DD01 | Delivery of document by public notice |
Addressee: Wang Ziyuan Document name: Deemed not to have provided notice |
|
DD01 | Delivery of document by public notice | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |