浅析黑盒测试理论及在程序设计中的应用

2017-07-14 17:15汤小波
商情 2017年18期
关键词:等价程序设计程序

汤小波

摘要:程序设计是软件专业的一门重要课程,在完成一个问题的设计思路后,如何判断其结果的正确性,必须要进行相应的测试,软件测试方法分为白盒测试与黑盒测试,而黑盒测试对于初学者来说简单易行,本文针对黑盒测试方法对其原理进行了分析与阐述,并针对实际问题在程序设计中加以分析及应用。

关键词:黑盒 测试

1黑盒测试概述

1.1什么是黑盒测试

黑盒测试也称功能测试或数据驱动测试,它是指在已知产品所应具有功能前提下,通過测试来检测每个功能是否都能正常使用。在测试时,把程序看成一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试。

1.2黑盒测试的优缺点

优点如下:比较简单,与软件的内部实现无关;从用户角度出发;基于软件开发文档。其缺点如下:覆盖率较低,大概只能达到代码量的30%左右;自动化测试复用率较低。

1.3黑盒测试方法

黑盒测试方法主要有五种,分为等价类划分法、边界值划分法、错误推测法、场景法和因果图法。在实际测试用例设计过程中,不仅根据需要、场合单独使用这些方法,而且常常综合运用多个方法,使测试用例的设计更为有效。

2等价类法

2.1等价类定义

指某个输入域的子集合。在该集合中,各个输入数据对于揭露程序中的错误都是等效的。包括有效等价类和无效等价类。有效等价类指符合《需求规格说明书》,合理地输入数据集合。无效等价类指不符合《需求规格说明书》,无意义地输入数据集合。

2.2等价类划分的原则

划分等价类最重要的原则是集合的划分。集合划分为互不相交的子集。确定等价类的原则如下:

如果规定了输入值的范围,可以分为一个有效等价类,两个无效等价类;如果输入是布尔表达式,可以分为一个有效等价类和一个无效等价类;如果输入条件规定了输入值的集合或者“必须如何”的条件,则可以确定一个有效等价类和一个无效等价类;在规定了输入数据的一组值(假定n个),且程序要对每一个输入值分别处理的情况下,可确定n个有效等价类和一个无效等价类;在规定了输入数据必须遵守的规则的情况下,可确定一个有效等价类和若干个无效等价类。

2.3等价类的应用

案例1:输入X值,当X>0时,输出1;当X=0时,输出0;当X<0时,输出为-1。

利用c#语言编写程序代码片断如下:

Int x=int.parse(System.In.ReadLind());

int y;

If(x>0) Y=1; elseif(x=0) y=0 else y=-1;

利用等价类法划分为三个有效等价类,

根据上述测试,分析与测试结果完全符合预期,程序完全正确。

3边界值法

3.1边界值法定义

边界值法就是假定错误发生在输入和输出边界上,并对其进行测试分析的方法,实践证明,大量的错误发生在输入或输出范围的边界上,而不是输入或输出范围的内部。

3.2边界法的应用

案例2:利用循环计算前100项的和。利用c#语句编写代码片断如下:

重点关注在循环到终点时的情况,即边界值为99、100、101时的情况,根据上表分析,当i值在临近边界99时,累加情况刚好随着i值累加到了99,i值为100时,累加刚好到100,i值为101时循环结束。此时刚好累加到100程序终止,可见程序分析和测试结果完全正确。

4场景法

4.1场景法内涵

场景是通过描述流经用例的路径来确定的过程,这个流经过程要从用例开始到结束遍历所有基本流和备选流。场景法就是根据这些基本流和备选流的流动过程设计测试用例。

4.2场景法应用

案例3:从甲地到乙地,经过二次猜数游戏方能顺利到达,每次猜数最多只能猜三次,猜错则被淘汰,否则正常通过。用伪代码编写c#程序如下:

Booleanf=true;

For(int i=1;i<=3;i++)

{猜数;if(猜错) f=false;}

For(int i=1;i<=3;i++)

{猜数;if(猜错) f=false;}

If(f)通过; else不通过;

将上述三种场景进行测试分析,程序完全符合预期,程序设计正确。

5其它方法简述

因果图法是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。错误推测法是根据经验和直觉推测程序中所有可能存在的各种错误,从而有针对性地设计测试用例的方法。

综述,在程序设计中充分利用软件测试的方法和原理可以有效地检测和防止程序中发生的各种错误,对于提高程序的分析和设计能力具有重要的意义,丰富了软件过程设计思想。

猜你喜欢
等价程序设计程序
基于OBE的Java程序设计个性化教学研究
项目化教学在Python程序设计课程中的应用
C++程序设计课程教学改革研究
等价转化
医学专业“Python程序设计”课程教学改革总结与思考
给Windows添加程序快速切换栏
简化化学平衡移动教学程序探索
n次自然数幂和的一个等价无穷大
“程序猿”的生活什么样
英国与欧盟正式启动“离婚”程序程序