APP下载

水利业务应用系统中软件测试方法研究及应用

2017-03-08戚荣志徐淑芳周思琪

水利信息化 2017年1期
关键词:白盒黑盒测试用例

戚荣志,徐淑芳,曾 涛,周思琪

(河海大学计算机与信息学院,江苏 南京 211100)

水利业务应用系统中软件测试方法研究及应用

戚荣志,徐淑芳,曾 涛,周思琪

(河海大学计算机与信息学院,江苏 南京 211100)

软件测试是一项重要的软件确认活动,通过运行测试用例,旨在发现软件中存在的错误,保证交付出高质量的软件。为保证水利业务应用系统的质量,需要在建设过程中对系统进行充分的测试。研究测试用例的生成方法,包括逻辑覆盖和基本路径测试等白盒测试技术,以及等价划分和边界值分析等黑盒测试技术。选择防汛信息查询模块,重点探讨使用白盒和黑盒测试技术对该模块进行测试用例的生成,再运行测试用例对系统进行测试。2种测试技术能够有效地检测出系统中存在的错误,使开发人员能够及时修正错误。

软件测试;水利业务应用系统;白盒测试;黑盒测试;测试用例生成

0 引言

国家防汛抗旱指挥系统二期工程的业务应用系统包括水雨情、防汛、抗旱等业务应用和综合信息服务系统[1]。在国家防汛抗旱指挥系统一期工程建设成果的基础上,业务应用系统以洪水预报、防洪调度、洪灾评估、旱情监视和分析、信息查询与服务等功能模块为依托,为防汛抗旱提供辅助决策支持。为了提高各业务应用系统的质量,需要在编程过程中及完成后,对系统进行充分的测试,在软件提交给用户之前发现并改正尽可能多的错误。本研究主要探讨使用软件测试技术对业务应用系统潜藏的错误进行检测,保证系统的质量。

1 软件测试概述

软件测试是为了发现软件中的错误,提高软件质量而运行程序的过程[2],是软件工程中质量保证过程的一项基本又极其重要的活动。在软件开发过程中,软件测试的工作量非常大,大概占整个软件产品开发总成本的 30%~50%[3]。Meyers 给出了软件测试的基本原则:测试是为了发现程序中的错误而执行程序的过程;一个好的测试方案具有较高的发现迄今为止尚未发现的错误的可能性;一个成功的测试方案能够发现至今为止尚未发现的错误[4]。因此,软件测试是寻找软件系统中错误的过程,该过程通常从单个功能模块测试开始,并逐步过渡到系统级的测试,具体包括以下3个步骤:

1)单元测试。单元测试是把每个功能模块作为一个独立的实体来测试,对每个模块重要的执行通路进行测试,利用测试发现封装在模块中的数据和处理逻辑错误。单元测试着重对模块内部的处理逻辑和数据结构进行测试,因此,单元测试通常由开发人员完成,不同模块的单元测试可以同时进行。

2)集成测试。当完成单个模块的测试后,需要将模块组合在一起进行集成测试。集成测试的主要目标是发现模块间接口的错误,着重检测模块的输入输出数据。集成测试主要有 2种方法,一种方法是非渐增式集成测试,先分别测试每个模块,再把所有的模块集成在一起作为一个整体进行测试;另一种方法是渐增式集成测试,把下一个要测试的模块和已经测试好的模块组集成起来进行测试,测试完后再将下一个要测试的模块集成进来,如此递增下去直到整个系统测试完成。集成测试通常由专业的测试人员完成。

3)确认测试。确认测试把软件系统作为一个整体进行测试,主要目标是验证系统是否满足用户需求,包括功能和性能需求,因此,确认测试需要用户积极参与。确认测试通常由第三方专业测试机构完成。

在整个软件测试过程中,设计测试用例是关键技术问题,好的测试用例对于检测软件中的错误,更好地完成测试工作至关重要。在学术研究和实际测试过程中,测试用例的生成依赖于测试方法的选择,基本的测试方法包括白盒和黑盒测试[5-6]。

2 软件测试方法

软件测试方法通常有以下2种:1)如果知道系统的内部处理流程,通过测试可以检验该处理流程是否按照需求规格说明书的规定正常运行,该方法称为白盒测试;2)如果不知道内部处理流程,只知道系统应该具有的功能,通过测试可以检验每个功能是否都能正常使用,该方法称为黑盒测试[7-8]。在水利业务应用系统的建设过程中,需要联合使用白盒和黑盒测试技术对系统进行充分的测试。

表1 5种覆盖标准

程序模块流程图如图1所示,其中 i,j,m 为整型循环变量,考虑图1 中的程序模块,除去开始和结束语句,共有 4 条语句,分别用 a,b,c,d 标识。针对 5种覆盖标准设计的测试用例如表2所示。

2.1.2 基本路径测试

使用基本路径测试技术时,测试人员依据程序模块的环形复杂度定义程序执行路径的基本集合[9],从该基本集合导出的测试用例集可以保证程序模块中的每条语句至少执行 1 次,而且每个条件在执行时都将分别取真、假 2种值[7-8]。环形复杂度根据程序控制流的复杂程度定量度量程序的复杂程度。使用基本路径测试技术设计测试用例的步骤如下:1)根据待测模块的代码或者程序流程图画出相应的流

图1 程序模块流程图

2.1 白盒测试

白盒测试称为结构测试,用于对程序的逻辑结构进行检查,从中生成测试用例。白盒测试通常用于单元测试过程,由开发人员执行。开发人员把程序看成装在一个透明的白盒子里,完全知道程序的处理流程。在水利业务应用系统各个功能模块(如防汛、抗旱信息查询模块)开发完成后,应由相关的开发人员进行白盒测试。白盒测试按照程序内部的逻辑测试程序,通过有选择地执行程序中某些最有代表性的通路,代替穷举测试,技术主要有逻辑覆盖和基本路径测试 2种。

2.1.1 逻辑覆盖

逻辑覆盖是对待测模块中程序执行通路进行测试的完整程度的描述,即开发人员设计测试用例,通过执行这些测试用例,分析哪些程序通路被执行,执行的通路越多,说明该测试用例越能够检测出更多的错误。根据覆盖源程序语句的详尽程度,逻辑覆盖包括语句、判定、条件、判定/条件、条件组合覆盖等 5种不同的覆盖标准,每种覆盖标准的具体含义如表1所示。从表1 可以看出,从语句覆盖到条件组合覆盖,对源程序语句的覆盖程度越来越强。图[9];2)计算流图的环形复杂度;3)确定独立路径的基本集合;4)设计可强制执行每条独立路径的测试用例,在测试过程中,执行每个测试用例并把实际输出结果与预期结果相比较。

2.2 黑盒测试

黑盒测试称为功能测试,是指不基于设计和代码,而基于需求和功能的测试。测试目标与程序的内部结构完全无关,测试用例完全来源于软件需求规格说明。测试人员把程序看成一个黑盒子,检测程序接口能否接收输入数据并产生正确的输出数据,检测程序是否按照需求规格说明书的规定正常运行。黑盒测试主要有等价划分和边界值分析 2种方法。

2.2.1 等价划分

等价划分把程序的输入域划分成若干个数据类,每一类以一个代表性的测试数据进行测试,这个数据就等价于这一类中的其它数据。在使用等价划分设计测试用例时,有以下4 条设计指南:

1)如果规定了输入值的范围,则可划分出 1个有效和 2个无效等价类。输入值在此范围内的为有效等价类,输入值小于最小值或大于最大值的为无效等价类。

2)如果输入数据为一特定的数值,则可划分出1个有效和 1个无效等价类。输入值等于该数值的为有效等价类,输入值不等于该数值的为无效等价类。

3)如果规定了输入数据的一组值,则可划分出1个有效和 1个无效等价类。每个允许的输入值为有效等价类,每个不允许的输入值为无效等价类。

4)如果输入数据为布尔型的值,则可划分出1个有效和 1个无效等价类。

例如,某个数据库软件能够处理 1~16 383 条数据记录,按照等价划分指南,可以设计出 3个等价类,测试用例如表3所示。

2.2.2 边界值分析

程序的一些错误经常发生在输入值范围的边界处,边界值分析可以用来检测该错误。在使用边界值分析设计测试用例时,需要确定边界情况,选取的测试数据应该刚好等于、小于和大于边界值。如果规定了输入值的范围为(p,q),则选取刚刚小于、等于、大于 p,刚刚小于、等于、大于 q 等 6 条测试数据。对于 2.2.1 小节中的数据库软件测试实例,应用边界值分析可以设计出 6 条测试用例,如表4所示。

表3 等价类划分测试用例

表4 边界值分析测试用例

在对水利业务应用系统进行黑盒测试时,需要联合使用等价划分和边界值分析 2种技术,先划分等价类,设计测试用例;再选取等价类的边界值,使用边界值分析设计测试用例。

3 软件测试在水利业务应用系统的应用

为了保证水利业务应用系统的质量,在建设过程中,软件开发和测试人员联合使用白盒和黑盒测试技术对系统进行充分的测试。水利业务应用系统的功能模块数量众多,限于篇幅,本研究选取防汛信息查询模块,介绍白盒和黑盒测试技术在该模块测试过程中的应用。

3.1 白盒测试

防汛信息查询模块的一个核心功能为查询雨量站的降雨信息,程序流程图如图2所示,其中station,city 和 county 为输入的查询条件,分别表示测站名称、地市和区县。

图2 查询雨量站降雨信息的程序流程图

由于条件组合覆盖是 5种覆盖标准中覆盖强度最高的标准,满足条件组合覆盖标准的测试数据,也一定满足其它 4种覆盖标准,因此,这里只给出满足条件组合覆盖的测试用例,同时给出基本路径测试的测试用例。

表5 给出了条件组合覆盖的测试用例,运行表中的 3 条测试用例,并与预期结果进行比较。测试结果表明,3 条测试用例中前 2 条测试用例都能执行通过并与预期结果一致,第3 条测试用例执行后不显示任何结果信息,与预期结果不一致。测试人员将测试结果记录下来,并由开发人员修改错误。

表5 查询雨量站降雨信息的测试用例

根据基本路径测试步骤,首先由图2 画出该模块的流图,如图3所示。再根据环形复杂度计算公式 V(G)= E - N + 2[9]得到 V(G)= 10 - 8 + 2 = 4,式中: V(G)为流图G 的环形复杂度;E 为流图中的边数;N 为结点数,因此,共有 4 条独立路径。

表6 给出了 4 条独立路径对应的测试用例,运行表中的 4 条测试用例,并与预期结果进行比较。测试结果表明,4 条测试用例中,第1 条测试用例存在和表5 中第3 条测试用例相同的错误,其余测试用例都能执行通过并与预期结果一致。

3.2 黑盒测试

图3 查询雨量站降雨信息的流图

防汛信息查询模块中需要输入测站编码,查询测站的汛限水位。全国水文测站编码标准[10]规定水文测站编码采用 8 位字符串,前 3 位为0~9 的数字,表示流域水系码,第4 位为0~9 的数字和大写字母 A,表示站类码,第5~8 位为0~9 的数字,表示测站序号。使用等价划分和边界值分析 2种技术对该功能模块设计测试用例,结果如表7所示。

表6 基本路径测试用例

表7 测站编码输入项黑盒测试用例

运行表7 中的 11 条测试用例,并与预期结果进行比较。测试结果表明,第2~3,5~6 条测试用例执行后,程序显示无此测站,与预期结果不一致,是因为没有使用 8 位数字串的边界值对测站进行编码,不属于程序错误。其余 7 条测试用例的执行结果与预期结果一致。

4 结语

研究水利业务应用系统的软件测试方法,将白盒和黑盒测试技术应用于系统的研发过程中,在系统交付给用户之前对其进行充分的测试,尽可能多地检测出系统中潜藏的错误,并及时修正错误,从而保证系统的质量,对水利信息化建设过程中其它软件系统的研发具有良好的借鉴价值。

但利用白盒和黑盒测试技术生成测试用例的自动化程度不高,测试的效率受到一定的影响。在今后的研究工作中,将尝试使用元启发式算法实现测试用例的自动生成,提高测试的效率。

[1] 水利部水利信息中心. 国家防汛抗旱指挥系统二期工程初步设计报告[R]. 北京:水利部水利信息中心,2015: 339-534.

[2] BERTOLINO A. Software testing research: Achievements, challenges, dreams[C]//Proceedings of future of software engineering IEEE. Washington DC, IEEE, 2007: 85-103.

[3] BEIZER B. Software testing techniques[M]. 2nd ed. Boston: International Thompson Computer Press, 1990: 1-5.

[4] MYERS J G, BADGETT T, SANDLER C. The art of software testing[M]. 3rd ed. New York: John Wiley & Sons, 2012: 14-20.

[5] PAGE A, JOHNSTON K, ROLLISON B. How we test software at microsoft [M]. Redmond: Microsoft Press, 2009: 62-85.

[6] LUCCA GAD, FASOLINO A R. Testing web-based applications: The state of the art and future trends [J]. Information & software technology, 2005, 2 (12): 1172-1186.

[7] PRESSMAN R S, MAXIM B R. Software engineering: A practitioner’s approach[M]. 8th ed. Columbus: McGraw-Hill Education, 2015: 499-507.

[8] 张海藩,牟永敏. 软件工程导论 [M]. 6 版. 北京:清华大学出版社,2015: 162-176.

[9] MCCABE T. A software complexity measure [J]. IEEE transactions on software engineering, 1976 ( 2): 308-320.

[10] 水利部水文局. 全国水文测站编码[S]. 北京:水利部水文局,2002: 1-40.

Research and application of software testing in water business application system

QI Rongzhi, XU Shufang, ZENG Tao, ZHOU Siqi
(College of Computer and Information, Hohai University, Nanjing 211100, China)

Software testing is an important software validation activity to reveal failures in software and release high-quality product by executing test cases. In order to ensure the quality of water business application system, complete testing should be executed during the construction of these systems. This paper carries out a research on the methods of generating test cases, which contain white-box testing and black-box testing. White-box testing includes logic coverage and basis path testing, and black-box testing includes equivalence partitioning and boundary value analysis. This paper discusses test cases generation of flood control information query module using white-box and black-box testing. Then these test cases are executed to test the module. These two testing techniques can detect failures in the system effectively, and developers can fix these failures in time.

software testing; water business application system; white-box testing; black-box testing; test case generation

TV21

A

1674-9405(2017)01-0005-05

10.19364/j.1674-9405.2017.01.002

2016-11-18

国家重点研发计划项目(2016YFC0400910);国家科技支撑计划项目(2013BAB06B04);水利部公益性行业科研专项经费项目(201501007)

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

猜你喜欢

白盒黑盒测试用例
一种基于局部平均有限差分的黑盒对抗攻击方法
面向未来网络的白盒交换机体系综述
DWB-AES:基于AES 的动态白盒实现方法
基于SmartUnit的安全通信系统单元测试用例自动生成
网络“黑”“白”之争
基于混合遗传算法的回归测试用例集最小化研究
基于依赖结构的测试用例优先级技术
基于EEPROM数据读写的智能电能表白盒测试方法
软件回归测试用例选取方法研究