基于蚁群算法的自动化测试方法和系统
文献发布时间:2023-06-19 10:06:57
技术领域
本发明涉及测试技术领域,尤其涉及一种基于蚁群算法的自动化测试方法和一种基于蚁群算法的自动化测试系统。
背景技术
随着通讯技术的发展,电信行业在计费业务上也取得突飞猛进的发展。从而对业务支撑系统也提出了更高的要求,架构不断升级,系统不断灵活扩展。支撑系统的智能化,运营的自动化越来越成为了未来发展的趋势和系统演进的必然结果。在5G时代电信系统的业务更加复杂,对新需求的业务推广过程中,对测试质量和效率的要求也越来越高。
而现有的测试技术中,场景覆盖率不全,测试场景数量太多,导致测试不准确,且测试时间过长。
发明内容
针对上述问题,本发明提供了一种基于蚁群(In-Parameter-Order)算法的自动化测试方法和系统,通过优化的测试场景核心参数,结合笛卡尔积运算以及改进的蚁群算法,在覆盖全场景测试用例的情况下减少测试用例的总数,提升测试用例集生成质量,大大提升了测试效率,从而缩短开发测试周期。
为实现上述目的,本发明提供了一种基于蚁群算法的自动化测试方法,包括:对预设的测试场景选取核心参数,生成核心参数的笛卡尔积全组合;根据所述笛卡尔积全组合,形成所述核心参数的测试用例初始集;采用基于蚁群算法的逐参数扩展算法,对所述测试用例初始集逐个加入除所述核心参数外的剩余参数分别进行横向扩展和纵向扩展,形成扩展测试用例集;获取参数约束条件,并遍历所述扩展测试用例集删除包含所述参数约束条件的测试用例,以生成最终测试用例集;根据所述最终测试用例集,生成自动化测试任务以完成测试。
在上述技术方案中,优选地,所述采用基于蚁群算法的逐参数扩展算法,对所述测试用例初始集逐个加入除所述核心参数外的剩余参数分别进行横向扩展和纵向扩展,形成扩展测试用例集具体包括:
确定所述测试场景下除所述核心参数外的剩余参数;针对所述核心参数生成的笛卡尔积全组合,沿横向逐项加入所述剩余参数,进行横向扩展生成横向测试用例集;所述横向扩展完成后,将未覆盖的剩余参数组合形式纵向扩展至所述横向测试用例集中,直至所有参数组合都覆盖后生成所述扩展测试用例集。
在上述技术方案中,优选地,所述获取参数约束条件,并遍历所述扩展测试用例集删除包含所述参数约束条件的测试用例,以生成最终测试用例集具体包括:根据所述测试场景,获取具有互斥约束条件的参数,并确定包含互斥约束条件参数的测试用例;在所述扩展测试用例集中遍历查找,删除包含互斥约束条件参数的测试用例,生成最终测试用例集。
本发明还提出一种基于蚁群算法的自动化测试系统,应用如上述技术方案中任一项所述的基于蚁群算法的自动化测试方法,包括:笛卡尔积模块,用于对预设测试场景选取的核心参数生成笛卡尔积全组合;初始用例模块,用于根据所述笛卡尔积全组合,形成所述核心参数的测试用例初始集;扩展用例模块,用于采用基于蚁群算法的逐参数扩展算法,对所述测试用例初始集逐个加入除所述核心参数外的剩余参数分别进行横向扩展和纵向扩展,形成扩展测试用例集;最终用例模块,用于获取参数约束条件,并遍历所述扩展测试用例集删除包含所述参数约束条件的测试用例,以生成最终测试用例集;自动测试模块,用于根据所述最终测试用例集,生成自动化测试任务以完成测试。
在上述技术方案中,优选地,所述扩展用例模块具体用于:确定所述测试场景下除所述核心参数外的剩余参数;针对所述核心参数生成的笛卡尔积全组合,沿横向逐项加入所述剩余参数,进行横向扩展生成横向测试用例集;所述横向扩展完成后,将未覆盖的剩余参数组合形式纵向扩展至所述横向测试用例集中,直至所有参数组合都覆盖后生成所述扩展测试用例集。
在上述技术方案中,优选地,所述最终用例模块具体用于:根据所述测试场景,获取具有互斥约束条件的参数,并确定包含互斥约束条件参数的测试用例;在所述扩展测试用例集中遍历查找,删除包含互斥约束条件参数的测试用例,生成最终测试用例集。
与现有技术相比,本发明的有益效果为:通过优化的测试场景核心参数,结合笛卡尔积运算以及改进的蚁群算法,在覆盖全场景测试用例的情况下大大减少了测试用例的总数,提升了测试用例集生成质量,提升了测试效率,从而缩短了开发测试周期。
附图说明
图1为本发明一种实施例公开的基于蚁群算法的自动化测试方法的流程示意图;
图2为本发明一种实施例公开的蚁群算法改进前后的测试效率对比示意图;
图3为本发明一种实施例公开的改进蚁群算法的测试用例数量分析图;
图4为本发明一种实施例公开的基于蚁群算法的自动化测试系统的模块图。
图中,各组件与附图标记之间的对应关系为:
11.笛卡尔积模块,12.初始用例模块,13.扩展用例模块,14.最终用例模块,15.自动测试模块。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合附图对本发明做进一步的详细描述:
如图1所示,根据本发明提供的一种基于蚁群算法的自动化测试方法,包括:对预设的测试场景选取核心参数,生成核心参数的笛卡尔积全组合;根据笛卡尔积全组合,形成核心参数的测试用例初始集;采用基于蚁群算法的逐参数扩展算法,对测试用例初始集逐个加入除核心参数外的剩余参数分别进行横向扩展和纵向扩展,形成扩展测试用例集;获取参数约束条件,并遍历扩展测试用例集删除包含参数约束条件的测试用例,以生成最终测试用例集;根据最终测试用例集,生成自动化测试任务以完成测试。
在该实施例中,通过优化的测试场景核心参数,结合笛卡尔积运算以及改进的蚁群算法,在覆盖全场景测试用例的情况下大大减少了测试用例的总数,提升了测试用例集生成质量,提升了测试效率,从而缩短了开发测试周期。
具体地,根据对电信行业业务的多年统计分析,假如一个测试需求相关的参数如果有10个,那么超过90%的错误是由核心的3个以内的参数互相作用而引发的,这些核心参数对测试用例的质量至关重要。
其次,对于很多待测系统或程序来说,用例参数之间的关系是存在关联关系和约束条件的。比如,某个参数的某个取值与另一个参数的某个取值不能同时出现。在此情况下,测试用例集中某些组合是没有意义的,有时对于测试来说甚至是无效的。所以,在使用蚁群算法生成测试用例的过程中,应该系统地考虑并用例参数之间的依赖约束关系。
因此,本发明在原有蚁群算法基础上,对测试用例初始集的生成进行优化,将初始参数集由原有蚁群算法中的任意两个参数的笛卡尔积全组合,修改为核心参数的笛卡尔积全组合,从而通过改进蚁群算法把核心参数的测试用例100%全场景全部覆盖,其他相关参数按照蚁群算法的横向扩展和纵向扩展步骤逐渐加入到测试用例初始集中,生成扩展测试用例集。由于核心参数个数一般不大于3个,因此改进后的算法与原有蚁群算法相比,扩展测试用例集的总数并没有显著增加,但是却大大提升扩展测试用例集的关键用例覆盖率。
在上述实施例中,优选地,获取参数约束条件,并遍历扩展测试用例集删除包含参数约束条件的测试用例,以生成最终测试用例集具体包括:根据测试场景,获取具有互斥约束条件的参数,并确定包含互斥约束条件参数的测试用例;在扩展测试用例集中遍历查找,删除包含互斥约束条件参数的测试用例,生成最终测试用例集。
具体地,在扩展测试用例集生成后,加入参数互斥条件约束删减步骤,全局扫描测试用例集,将参数之间取值有互斥依赖等约束条件的冗余无效测试用例删减。通过约束条件参数用例的删减,既减少了测试用例集中无效测试用例的数量,提升了测试效率,还提高了测试用例集生成质量。
在具体实施过程中,改进蚁群算法的流程步骤如下:
1)获取核心参数列表,核心参数为t个;
2)生成t个核心参数的笛卡儿积全组合,得到t个核心参数的测试用例初始集;
3)逐一加入其他参数进行横向扩展和纵向扩展,直到所有参数均被加入测试用例初始集中;
4)生成扩展测试用例集;
5)获取参数约束条件;
6)遍历扩展测试用例集,删除其中包含约束条件的测试用例,生成最终测试用例集。
通过上述改进蚁群算法,实现了核心参数组合的笛卡儿积用例100%全覆盖,又将测试用例相关的所有参数均在测试用例生成算法中使用,同时还考虑了参数条件之间的依赖互斥约束等。
以电信业务需求测试为例,分别根据改进前后的蚁群算法进行测试,大大降低了需求测试需人工重复的工作量,极大的提升需求测试效率,一个需求平均测试时间从以前的全组合测试算法的125分钟降低到69分钟以内。如图2所示,横坐标为需求个数,纵坐标为测试平均使用时间数(单位为分钟),根据测试结果证明,采用改进蚁群算法,缩短了测试时间,加快了开发测试周期,在测试需求越多时,改进蚁群算法在测试效率上具有更大的优势,大大提升了需求产品推向市场商用的效率。
实践表明该改进蚁群算法还大大提升了测试用例的覆盖率。使用改进蚁群算法前后,都保证了核心关键测试用例覆盖率100%,但是使用改进蚁群算法后,将测试用例的总体覆盖率由以前只考虑核心测试用的90%提升到了考虑所有相关参数的总体测试用例覆盖率99.9%以上,大大提升了测试用例的质量,需求的错误故障率降低了90%以上。
使用改进蚁群算法,在测试用例参数不超过15个的情况下,生成的测试用例集数量在1000个以内,生成测试用例数量如图3所示.
在上述实施例中,优选地,采用基于蚁群算法的逐参数扩展算法,对测试用例初始集逐个加入除核心参数外的剩余参数分别进行横向扩展和纵向扩展,形成扩展测试用例集具体包括:
确定测试场景下除核心参数外的剩余参数;针对核心参数生成的笛卡尔积全组合,沿横向逐项加入剩余参数,进行横向扩展生成横向测试用例集;横向扩展完成后,将未覆盖的剩余参数组合形式纵向扩展至横向测试用例集中,直至所有参数组合都覆盖后生成扩展测试用例集。
具体地,横向扩展是指:在确定了初始的组合合集后,水平的新加入一个新的参数的取值加入测试用例初始集中,达到新扩展参数到测试用例初始集的目的。
纵向扩展是指:在横向扩展完成后,若还有其他参数取值两两组合的用例不能被覆盖到,则把未覆盖的组合形式也加入到测试用例初始集中。
假设有3个输入参数X1,X2,X3,参数的取值分别是(V11,V12),(V21,V22),(V31,V32,V33),先将X1和X2参数组合,得到初始用例集,然后进行横向扩展和纵向扩展。
横向扩展步骤:在前两个参数4个组合取值后,将参数X3的3个取值分别扩展参数X3所对应的列,由于(V22,V31)未被覆盖到,因此把V31扩展到底四行,如下表所示。
纵向扩展步骤:将横向扩展后,两两组合还未覆盖在测试用例集中的参数组合,扩展补充道测试用例集中,直到所有参数的两两组合都覆盖在了测试用例集中为止,从而生成最终的测试用例集,如下表所示。
如图4所示,本发明还提出一种基于蚁群算法的自动化测试系统,应用如上述实施例中任一项的基于蚁群算法的自动化测试方法,包括:笛卡尔积模块11,用于对预设测试场景选取的核心参数生成笛卡尔积全组合;初始用例模块12,用于根据笛卡尔积全组合,形成核心参数的测试用例初始集;扩展用例模块13,用于采用基于蚁群算法的逐参数扩展算法,对测试用例初始集逐个加入除核心参数外的剩余参数分别进行横向扩展和纵向扩展,形成扩展测试用例集;最终用例模块14,用于获取参数约束条件,并遍历扩展测试用例集删除包含参数约束条件的测试用例,以生成最终测试用例集;自动测试模块15,用于根据最终测试用例集,生成自动化测试任务以完成测试。
在上述实施例中,优选地,扩展用例模块13具体用于:确定测试场景下除核心参数外的剩余参数;针对核心参数生成的笛卡尔积全组合,沿横向逐项加入剩余参数,进行横向扩展生成横向测试用例集;横向扩展完成后,将未覆盖的剩余参数组合形式纵向扩展至横向测试用例集中,直至所有参数组合都覆盖后生成扩展测试用例集。
在上述实施例中,优选地,最终用例模块14具体用于:根据测试场景,获取具有互斥约束条件的参数,并确定包含互斥约束条件参数的测试用例;在扩展测试用例集中遍历查找,删除包含互斥约束条件参数的测试用例,生成最终测试用例集。
在上述实施例中,基于蚁群算法的自动化测试系统中,各组件所实现的功能与上述实施例中基于蚁群算法的自动化测试方法各步骤实现的功能相一致,在此不再赘述。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
- 一种基于蚁群算法的自动化测试方法,系统及测试终端
- 一种基于蚁群算法的自动化测试方法,系统及测试终端