APP下载

组合测试技术在防汛辅助决策支持系统中的应用

2017-01-11戚荣志李水艳王龙宝张云飞周思琪

水利信息化 2016年6期
关键词:雨情决策支持系统测试用例

戚荣志,李水艳,王龙宝,张云飞,曾 涛,周思琪

(1. 河海大学计算机与信息学院,江苏 南京 211100;2. 河海大学理学院,江苏 南京 211100)

简讯

组合测试技术在防汛辅助决策支持系统中的应用

戚荣志1,李水艳2,王龙宝1,张云飞1,曾 涛1,周思琪1

(1. 河海大学计算机与信息学院,江苏 南京 211100;2. 河海大学理学院,江苏 南京 211100)

组合测试是一种重要的软件测试方法,能够有效地检测软件系统中各种因素间的组合可能促发的故障。防汛辅助决策支持系统需要输入多个查询条件实现相关信息的查询,影响系统正常工作的因素众多,可使用组合测试技术检测防汛辅助决策支持系统中各种参数及其相互作用对系统各种功能的影响。选择水雨情信息模块,重点探讨对水雨情信息模块建立组合测试建模,以及使用高级组合测试系统(ACTS)对该模块进行组合测试用例集的生成,再用测试用例集对系统进行测试。测试结果表明,两两组合测试仅需要执行 35个测试用例,而全覆盖测试需要执行 140个测试用例。

组合测试;防汛辅助决策支持;ACTS;测试用例集生成

0 引言

防汛辅助决策支持系统是一个多层次的分布式系统,基于数据和应用支撑平台,利用 GIS 技术,实现对水情、雨情、工情、灾情、气象等实时汛情信息的综合查询和结果展示[1],为防洪调度提供辅助决策支持。由于防汛辅助决策支持系统在防汛抗旱工作中的重要作用,要求系统具有很高的稳定性、可靠性和可用性。同时,由于系统的规模越来越大,如何高效地检测出系统开发过程中产生的软件故障,进一步保证系统的质量,是一个值得研究的问题。

软件测试是为了发现软件中的错误,提高软件质量而运行程序的过程。软件测试是软件工程中质量保证过程的一项基本的又极其重要的活动。在软件开发过程中,软件测试的工作量非常大,大概占整个软件产品开发总成本的 30%~50%[2],而软件故障带来的代价更高。为此,需要在防汛辅助决策支持系统发布之前检测出更多的软件故障。在众多的软件故障中,交互故障是较常见的一种故障[3],是由系统的多个因素(功能选项、输入参数等)间的相互作用引起的。为了确保系统在这些因素的相互作用下正常运行,需要使用组合测试技术设计相应的测试用例,进而高效地检测出系统中的交互故障。本研究主要探讨使用组合测试技术,高效地检测出防汛辅助决策支持系统中的交互故障。

1 组合测试

组合测试是一种重要的软件测试方法,可以高效地检测出软件系统中的交互故障。一个 Web 应用的软件配置实例如表1所示,该实例有 4个因素,称为参数(Browser,Web Server,Application Server,Database Server),每个参数有 3 种取值。四元组(IE,Tomcat,WebLogic,Oracle)是一条测试用例。如果要检测表1 中的所有参数可能的交互故障,那么就要对所有参数取值的可能组合进行测试,将需要 34= 81个测试用例。

在一次测试过程中,穷举这 81个测试用例的工作量不是太大,但是,如今的软件系统越来越复杂,可能有多个参数,每个参数可能有多个取值,因此,参数值的组合数量会变得非常庞大,穷尽测试需要的测试用例集也会非常庞大。比如,1个软件系统有 10个参数,每个参数有 5 种取值,穷尽测试这些参数间交互需要进行 510次,在有限的测试时间和成本下,几乎是不可行的。组合测试可以从待测软件面临的庞大组合空间中,选取少量的测试用例,高效、科学、系统地检测软件系统中的交互故障[4]。如果对表1 的实例进行两两组合测试,那么只需要测试所有的两两组合,而不需要测试所有可能的组合。这种情况下只需要 9 条测试用例就可以完成对所有两两组合的测试。表2 给出了两两组合测试的用例集,从表中可以看出,两两组合测试能够将测试用例数量从 81个减少为 9个,提高了测试的效率。

表1 Web 应用的软件配置实例

表2 两两组合测试用例集

美国国家标准与技术研究院的 Kuhn 等人[5-6]对5个具体软件系统中的交互故障进行了研究,提出了组合测试的交互准则:绝大多数的软件故障是由单个或者 2个因素的交互引起的,随着交互的因素数量的增加(通常不超过 6个),发现的软件故障越来越少。该交互准则指出,两两组合测试只能检测出大部分的交互故障,当交互的因素数量增至 6 时,可以检测出 100% 的交互故障。因此,(t - way)(2 ≤t ≤ 6)组合测试可以使用较小规模的测试用例集,达到穷举测试的检测效果。

组合测试的基本过程包括:创建组合测试建模,生成测试用例集,测试执行等。其中,创建组合测试建模主要是准确识别待测软件(Software Under Test,SUT)中的参数,参数的取值和参数间的相互关系及约束。1个 SUT 模型通常包含影响SUT 的参数 P、每个参数的取值 V 等元素,有时还包括不同参数之间的约束 C。建模的关键在于从实际问题中准确提取出上述关键元素,选取一定的形式化方法对其进行描述。本研究将对防汛辅助决策支持系统进行组合测试建模。

测试用例集的生成是组合测试过程中最重要的一个环节,目标是在所建立的组合测试模型的基础上,采用一定的方法和测试工具生成较小规模的测试用例集。组合测试用例生成主要包括数学、贪心和启发式算法[7]3 类方法。组合测试的测试用例生成工具有很多,主要包括:AETG[8],TCG[9],PICT[10],ACTS[11]和一些基于启发式算法的工具。本研究将基于贪心算法,使用高级组合测试系统(Advanced Combinatorial Testing System,ACTS)对防汛辅助决策支持系统进行组合测试用例生成。

2 组合测试工具 ACTS

ACTS 是由美国国家标准与技术研究院研制开发的用于学术研究的测试工具,主要用于快速生成组合测试用例集。ACTS 具有(t - way)、混合与可变力度 2 种组合测试用例生成及约束处理等主要特征。同时,ACTS 还提供图形用户界面、命令行和应用程序接口(API)等 3 种外部接口供广大研究者使用。

2.1 (t - way)组合测试用例生成

ACTS 支持(t - way)(2 ≤ t ≤ 6)组合测试用例生成,实现了多个组合测试用例生成算法,包括 IPOG,IPOG-D,IPOG-F 和 IPOG-F2 等[11]。其中,IPOG 在测试用例集生成规模和时间上做了一个折中考虑,还支持混合力度生成和约束处理。IPOG-F,IPOG-F2 和 IPOG-D 是基于IPOG 的 3个改进的算法,其中,IPOG-F 和 IPOG-F2 能够生成更小规模的测试用例集,但是需要更长的运算时间,IPOG-D 适合大规模的系统。综合考虑,本研究选用 IPOG 作为防汛辅助决策支持系统组合测试用例集生成算法。

2.2 混合与可变力度组合测试用例生成

在实际软件系统中,不同的参数有不同的取值数目。混合力度是指系统的不同参数可以有不同数量的取值个数,例如 1个系统有 4个参数:P1,P2,P3和 P4,其中 P1和 P2有 3 种取值,P3和 P4有 2 种取值。在一些实际测试场景中,某些参数之间存在着较强的交互,某些参数之间交互较弱,甚至没有交互作用,这样的情形称为可变力度。例如 1个系统有 5个参数:P1,P2,P3,P4和 P5,对该系统进行组合测试时,需对这 5个参数中的任意 2个实现(2 - way)组合覆盖,而对 P1,P2和 P3,以及 P3,P4和 P5都需要做到(3 - way)组合覆盖。

2.3 约束处理

在实际软件系统中,参数之间往往存在着一定的约束,某个参数值出现时,其它参数的某个值不能同时出现,或者其它参数的值必须同时出现。如果不处理好这些约束关系,就会产生很多违反约束的无效测试用例,因此,违反约束的参数值组合必须从结果测试用例集中排除掉。ACTS 将软件中的约束定义为逻辑表达式,表达式中共有布尔、关系和算术等 3 种运算符。在约束处理过程中,ACTS 会对每一个测试用例检查是否满足所有的约束。

3 组合测试实例

防汛辅助决策支持系统主要包括水雨情、水利工程、实时工险情、灾情、气象、防汛辅助信息和组织等功能模块[1,12]。系统需要输入多个查询条件实现相关信息的查询,因此影响系统正常工作的因素众多,组合测试可以检测防汛辅助决策支持系统中各种参数及其相互作用对系统各种功能的影响。本研究以水雨情信息模块为例,应用组合测试技术检测防汛辅助决策支持系统中多个查询条件间的交互故障,重点探讨对水雨情信息模块的组合测试建模,以及使用 ACTS 对该模块进行组合测试用例集的生成。

3.1 组合测试建模

水雨情信息模块含有多个输入参数,图1 为日雨量子模块的输入界面,其中日期可以有很多选择,这里设为最近 1 周,共 7 d。这样的输入界面在防汛辅助决策支持系统中有多处,如果进行全覆盖测试,工作量很大。以日雨量子模块为例,引入组合测试技术,大大减少系统测试的工作量,其它模块的测试方法和该方法类似。

图1 日雨量输入界面

从图1 中可以抽取出如表3所示的 3个参数及相应取值。其中,日期参数有 7 种取值,为近 1 周,参数名设为 P1,取值范围为 0~6,代表2016-07-10—16;流域有 5 种取值,参数名设为P2,取值范围为 0~4,分别代表全部、江苏省、沂沭泗、淮河和长江;片区有 4 种选择,参数设为P3,取值范围为 0~3,分别代表全部、沿江苏南、江淮之间和淮北地区。

表3 日雨量输入组合测试模型

在 ACTS 中,可以使用如图2所示的模型文件描述该组合测试模型。

3.2 组合测试用例集生成

如果对图2所示的测试模型进行全覆盖测试,至少需要 7×5×4 = 140个测试用例,使用组合测试可以大大减少测试用例的数量。在 ACTS 中,选择IPOG 算法,进行两两组合测试,生成的测试用例集如表4所示,一共 35 条测试用例,覆盖了 83个两两组合,用时 0.234 s。表4 中最后 1 列为该条测试用例的预期输出结果。

图2 日雨量模型文件

表4 日雨量模块两两组合测试用例集

利用表4 中的 35个测试用例对日雨量子模块进行测试,并与预期结果进行比较。测试结果表明,所有 35个测试用例都能执行通过并与预期结果一致。

4 结语

组合测试通过构造较少的测试用例,高效地检测出软件系统中各种因素相互作用可能触发的交互故障。本研究使用组合测试技术对防汛辅助决策支持系统中的雨水情信息模块进行测试,首先建立组合测试模型,生成组合测试模型文件,然后将模型文件输入 ACTS,选择 IPOG 算法,生成 35个两两组合测试用例,再执行所有测试用例完成对日雨量子模块的测试。

在今后的研究工作中,将尝试使用数学方法和启发式算法对系统进行组合测试用例集的生成,并对这 3 种方法进行比较。

[1] 李春华,王绍勤,宋炜,等. 江苏省防汛防旱会商系统的设计与实现[J]. 水利信息化,2015 (3): 50-55.

[2] Beizer B. Software Testing Techniques, Second Edition[M]. Boston: International Thompson Computer Press, 1990: 1-5.

[3] Kuhn D R, Kacker R N, Lei Y. Introduction to Combinatorial Testing[M]. Boca Raton: CRC Press, 2013: 4-8.

[4] 聂长海. 组合测试[M]. 北京:科学出版社,2015: 6-10.

[5] Kuhn D R, Wallace D R, Jr. Gallo A M. Software Fault Interactions and Implications for Software Testing[J]. IEEE Transactions on Software Engineering, 2004, 30 (6): 418-421.

[6] Kuhn D R, Lei Y, Kacker R N. Practical Combinatorial Testing: Beyond Pairwise[J]. It Professional, 2008, 10 (3): 19-23.

[7] Nie C H, Leung H. A Survey of Combinatorial Testing[J]. ACM Comput. Surv, 2011, 43 (2): 1-29.

[8] Cohen D M, Dalal S R, Fredman M L, et al. The AETG System: An Approach to Testing Based on Combinatorial Design[J]. IEEE Transactions on Software Engineering, 1997, 23 (7): 437-444.

[9] Tung Y W, Aldiwan W S. Automating Test Case Generation for the New Generation Mission Software System[C]// Proceedings of IEEE Aerospace Conference. Montana:IEEE, 2000: 431-437.

[10] Czerwonka J. Pairwise Testing in the Real World: Practical Extensions to Test-case Scenarios[C]//Proceedings of the 24th Pacific Northwest Software Quality Conference. Portland: PNSQC, 2006: 419-430.

[11] Yu L, Lei Y, Kacker R N, et al. ACTS: A Combinatorial Test Generation Tool[C]// Proceedings of 2013 IEEE Sixth International Conference on Software Testing, Verification and Validation. Luxembourg: IEEE, 2013: 370-375.

[12] 戚荣志,吕鑫,宋健,等. 县级防汛辅助决策支持系统的设计与实现[J]. 水利信息化,2015 (5): 53-55.

Application of Combinatorial Testing Technology in Flood Control Decision Support System

QI Rongzhi1, LI Shuiyan2, WANG Longbao1, ZHANG Yunfei1, ZENG Tao1, ZHOU Siqi1
(1. College of Computer and Information, Hohai University, Nanjing 211100, China;2. College of Science, Hohai University, Nanjing 211100, China)

Combinatorial testing is an important software testing method, which can detect failures triggered by combinations of factors in software system effectively. Many input parameters are needed in flood control decision support system, and the number of influence elements is big. Combinatorial testing is applied to detect failures triggered by parameters and their interactions in flood control decision support system. This paper discusses building combinatorial testing model of hydrological information model in detail, and applying ACTS (Adranced Combinatorial Testing Systen) to generate test suite, and testing the system by the generated test suite. Combinatorial testing can generate smaller test suites for test engineers, and improve the test efficiency of flood control decision support system.

combinatorial testing; flood control decision support; ACTS; test suite generation

P332.4

A

1674-9405(2016)06-0001-05

10.19364/j.1674-9405.2016.06.001

2016-07-18

国家自然科学基金面上项目(61272543);国家科技支撑计划项目(2013BAB06B04;HNKJ13-H17-04);水利部公益性行业科研专项经费项目(201501007);NSFC 广东联合基金重点项目(U1301252)

戚荣志(1980-),男,江苏兴化人,博士,研究方向:软件工程、水利信息化。

猜你喜欢

雨情决策支持系统测试用例
护理临床决策支持系统的理论基础
闽江雨情
基于SmartUnit的安全通信系统单元测试用例自动生成
临床决策支持系统应用于呼吸疾病的现状概述
临朐县气象局对台风“安比”服务效益探析
基于混合遗传算法的回归测试用例集最小化研究
电务维修决策支持系统研究
雨情
县级防汛辅助决策支持系统的设计与实现
基于依赖结构的测试用例优先级技术