单元测试细节
作者:软件测试工程师 发布时间:[ 2010/8/18 9:20:29 ] 推荐标签:
对于一个代码单元,首先要测试它的基本功能。功能是在某种输入时应该产生某种确定的输出。对于一个代码单元,它的可能输入通常是无穷的,显然,把输入的 所有可能取值都进行测试,是不可能也是无意义的,我们应该用一定的规则选择有代表性的数据来建立测试用例。要考虑的输入主要有三种:正常输入,边界输入, 非法输入,每种输入还可以分类,也是平常说的等价类法,每类取一个数据作为输入数据建立测试用例,如果测试通过,可以肯定同类的其他输入也是可以通过 的。如果等价类的划分是准确且完整的,并且每一个等价类都进行了测试,那么,可以说这个代码单元经过了充分的测试。下面举例说明:
正常输入
例如字符串的Trim函数,功能是将字符串前后的空格去除,那么正常的输入可以有四类:前面有空格;后面有空格;前后均有空格;前后均无空格。
边界输入
上例中空字符串可以看作是边界输入。
再如一个表示年龄的参数,它的有效范围是0-100,那么边界输入有两个:0和100。
非法输入
非法输入是正常取值范围以外的数据,或使代码不能完成正常功能的输入,如上例中表示年龄的参数,小于0或大于100都是非法输入,再如一个进行文件操作的函数,非法输入有这么几类:文件不存在;目录不存在;权限错误。
如果输入有多个数据,还要考虑这些数据之间的关系,即等价类还要包括数据的组合。
要人工找出所有的等价类通常是很困难的,但使用VU,通常不需要这样做,只要为容易想到的、比较典型的等价类建立测试用例行了,后文会有进一步的论述。
从上述可以看出,测试用例编辑器可以适应很复杂的测试用例的编辑。只要一个测试用例已编辑完毕,第二个及更多的测试用例很简单了:选定一个现有的测 试用例,由系统自动拷贝,用户再对部分数值进行修改行了。由于各个测试用例之间的差别通常很小,这种方式可以很快建立测试用例集。
测试用例编辑器还具有代码模式,很特殊的情况下,可以切换到代码模式下直接编辑代码。
白盒测试
这里所说的白盒测试,是指针对程序的逻辑结构来设计测试用例进行测试。白盒测试用逻辑覆盖率来衡量测试的完整性。逻辑单位主要有:语句、分支、条件、条件 值、条件值组合,路径。语句覆盖是覆盖所有的语句,其他类推。另外还有一种判定条件覆盖,其实是分支覆盖与条件覆盖的组合,在此不作讨论。跟条件有关的 覆盖有三种,容易混淆,解释一下:条件覆盖是指覆盖所有的条件表达式,即所有的条件表达式都至少计算一次,不考虑计算结果;条件值覆盖是指覆盖条件的所 有可能取值,即每个条件的取真值和取假值都要至少计算一次;条件值组合覆盖是指覆盖所有条件取值的所有可能组合。循环结构一般不考虑循环的次数,而只考虑 至少执行循环体一次和不进入循环体两种情况,即把循环结构看作具有进入循环和不进入循环两个会支的分支结构。由于不同的覆盖率具有不同的侧重点,为了保证 充分的测试,好是完成几种覆盖率的组合。VU选择了四种覆盖的组合作为白盒测试指标:语句覆盖、条件覆盖、分支覆盖、路径覆盖。如果这四种覆盖都达到了 ,那么,测试的完整性是非常高的,读者可以比较一下,在使用VU之前,您的项目要求达到什么样的白盒覆盖?实际上又能完成到什么程度?
白盒测试与功能测试有什么关系呢?可以说,如果功能测试是足够充分的,那么白盒测试没有必要,从等价类的角度来看,足够充分是指,等价类的划分是完 全正确的,并且所有的等价类都测试到了。如何衡量功能测试的完整性呢?人工审核是一个方法,不过这种方式代价较高,并且仍然不能保证结果的准确性。难于衡 量测试的完整性是功能测试的主要缺陷,而白盒测试恰恰具有易于衡量测试完整性的优点,两者之间具有极好的互补性。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11