目录
一、概述
1. 软件测试的定义
软件测试的经典定义是在规定条件下对程序进行操作,以发现错误,对软件质量进行评估。因为软件是由文档、数据以及程序组成的,所以软件测试的对象也就不仅仅是程序本身,而是包括软件形成过程的文档、数据以及程序。
随着软件工程化越来越被重视以及软件规模的不断扩大,软件分析、设计的作用越来越突出,而在实践中,越来越多的错误是在刚开始的分析与设计阶段就已经存在,所以对于软件需求和设计阶段的测试就显得非常重要,这就是测试概念的扩大化以及软件全生命周期测试的理念。
2. 软件测试的目的
软件测试是想以最少的人力、物力和时间找出软件中潜在的各种错误和缺陷,通过修正各种错误和缺陷提高软件质量,回避软件发布后由于潜在的软件缺陷和错误造成的隐患所带来的商业风险。 同时,测试是以评价一个程序或者系统属性为目标的活动,测试是对软件质量的度量与评估,以验证软件的质量满足用户的需求的程度,为用户选择和接收软件提供有力依据。
测试是为了证明软件是否可以使用,即是符合用户的需求的。
- 测试目的在于发现错误
- 一个好的测试用例在于能够发现至今为止未发现的错误
- 一个成功的测试是发现了至今未发现的错误的测试
二、黑盒测试
1.是对软件的功能进行测试的方法
2.又称为数据驱动的测试,其测试数据主要来源于来自软件需求文档
黑盒测试方法:
1. 等价类划分
1. 定义:
等价类是指某个输入域的子集合。
在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试.
因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据.取得较好的测试结果.
等价类划分可有两种不同的情况:有效等价类和无效等价类。而无效等价类则是其他任何可能的输入(即不正确的输入值)。有效等价类和无效等价类都是使用等价类划分法设计用例时所必须的,因为被测程序若是正确的,就应该既能接受有效的输入,也能接受无效输入的考验。
2. 为什么使用这个方法
理想的测试,是从所有可能的输入中找出某个小的子集,并且是可能发现错误最多的子集。即:使用最少的测试数据,达到最好的测试质量(最高性价比)。
这个子集如何确定?可以借助测试用例的两个特性:测试用例数量达到最少;某个测试用例要能覆盖大部分其他测试用例。第二个特性就暗示我们,应该尽量将程序输入范围进行划分,将其划分为有限数量的等价类,这样就可以合理地假设测试每个等价类的代表性数据等同于测试该类的其他任何数据。这两种特性形成了称为等价类划分的黑盒测试方法。
因此,等价类划分是黑盒测试最基本的方法。
3. 如何划分等价类?
在给定了输入或外部条件之后,等价类的划分原则如下:
- 如果输入条件规定了一个取值范围(例如,“数量可以是1到999”),那么就应确定出一个有效等价类(1<数量<999),以及两个无效等价类(数量<1,数量>999)。
- 如果输入条件规定了取值的个数(例如,“汽车可登记一至六名车主”),那么就应确定出一个有效等价类和两个无效等价类(没有车主,或车主多于六个)。
- 如果输入条件规定了一个输入值的集合,而且有理由认为程序会对每个值进行不同处理(例如,“交通工具的类型必须是公共汽车、卡车、出租车、火车或摩托车”),那么就应为每个输入值确定一个有效等价类和一个无效等价类(例如,“拖车”)。
- 如果存在输入条件规定了“必须是”的情况,例如“标识符的第一个字符必须是字母”,那么就应确定一个有效等价类(首字符是字母)和一个无效等价类(首字符不是字母)。
- 以上是基于字面上的需求划分的等价类,而细化等价类依据的是数据在内存或数据库中存储的类型。(举例,测试加法器,两个文本框,要求输入-99~99之间的整数。整数的存储在计算机底层中会使用不同的算法,正整数和负整数算法不同。所以测试时正整数和负整数应该分开来测(一般对有效等价类数据应用,无效等价类数据一般不需要正、负分别测)。所以将有效等价类细分为:-99--(-1)负整数、0—99 正整数。
> Tips:如果有任何理由可以认为程序并未等同地处理等价类中的元素,那么应该将这个等价类再划分为小一些的等价类。
划分等价类的标准:
- 完备测试、避免冗余;
- 划分等价类重要的是:集合的划分,划分为互不相交的一组子集,而子集的并是整个集合;
- 并是整个集合:完备性;
- 子集互不相交:保证一种形式的无冗余性;
- 同一类中标识(选择)一个测试用例,同一等价类中,往往处理相同,相同处理映射到"相同的执行路径"。
4. 案例:
1.学号等价类划分
2:设计一元二次方程求解程序的测试用例
【分析】第一步:确定测试策略。在本例中,对被测程序的功能有明确的要求,即:
(1)判断是否组成一元二次方程;
(2)求解两个相等实根;
(3)求解两个不相等实根;
(4)求解虚根;
因此可首先用黑盒法设计测试用例,然后用白盒法验证其完整性,必要时再进行补充。
第二步:根据本例的实际情况,首先可用等价分类法划分输入的等价类,然后用错误推测法作补充。
输入条件 | 有效等价类 | 编号 | 无效等价类 | 编号 |
a | a!=0&&a是整数 | 1 | a=0 | 4 |
小数 | 5 | |||
非数字 | 6 | |||
b | b是整数 | 2 | 小数 | 7 |
非数字 | 8 | |||
c | c是整数 | 3 | 小数 | 9 |
非数字 | 10 |
-------------------未完待续 --------分割线
2. 边界值分析
做题:
2.2.边界值分析的基本思想
在最小值、略高于最小值、正常值、略低于最大值、最大值处取输入变量值。
表示方法:min、min+、nom、max-、max;
边界值分析采用单缺陷假设,即弱类型测试。
单缺陷假设:软件失效、极少是由两个或多个缺陷同时发生引起的。
2.3.边界值分析的测试用例
设计边界值测试用例时,多个变量,只使其中一个变量取极值,其他变量取正常值,控制变量嘛。
归纳基本边界值分析方法:
1.通过变量个数
2.通过变量取值范围
Question:对于一个变量个数为n的函数,边界值分析会产生多少个测试用例?
每个变量取极值时(min、min+、max-、max),其他变量取正常值,最后再加上所有变量取正常值的情况。
答:用例个数=4n+1
3. 决策表
4.因果图
-----
做题:
答案: