《软件测试的艺术》笔记

目录

一、软件测试基本知识

1.1 黑盒和白盒测试

1.1.1 黑盒测试

1.1.2 白盒测试

1.2 测试原则

二、代码检查、走查与评审

三、测试用例的设计

3.1 白盒测试

3.1.1 语句覆盖

3.1.2 判定覆盖

3.1.3 条件覆盖

3.1.4 多重条件覆盖

3.2 黑盒测试

3.2.1 等价划分

3.2.2 边界值分析

3.2.3 因果图

3.2.4 测试策略

四、模块测试

4.1 增量测试

4.2 自顶向下的测试

4.3 自底向上的测试

五、 更高级别的测试

5.1 功能测试

5.2 系统测试

六、 敏捷开发模式下的测试


一、软件测试基本知识

1.1 黑盒和白盒测试

1.1.1 黑盒测试

       又称数据驱动测试。将程序视为一个黑盒子,将重点集中在发现程序不按规范正确运行的环境条件。想用这种方法来发现程序的所有错误,判定的标准就是“穷举输入测试”,将所有可能的输入条件都作为测试用例。

1.1.2 白盒测试

        又称逻辑驱动测试。对程序内部的逻辑进行检查,即将程序中的每条语句至少执行一次,称为穷举路径测试。

1.2 测试原则

        1)必须对预期输出或结果进行定义。

        2)应当彻底检查每个测试的执行结果。

        3)测试用例的编写不仅应当根据有效和预料到的输入情况,而且也应当根据无效和未预料到的输入情况。

 

二、代码检查、走查与评审

       代码检查与走查都要求人们组成一个小组来阅读或直观检查特定的程序。

表2-1 用于代码检查的错误列表
错误类型 错误内容
数据引用错误 是否有引用的变量未赋值或未初始化
对于所有数组的引用,是否每一个下标的值都在相应规定的范围内
对于所有数组的引用,是否每一个下标都是整数
对于所有通过指针或引用变量的引用,当前引用的内存单元是否分配
变量值的类型或属性是否与编译器所预期的一致
数据声明错误 是否所有变量都进行明确声明
若变量没有明确声明,默认属性是否正确
变量初始化是否正确
变量是否被赋予正确长度和数据类型
相似名称的变量初始化不要出错
运算错误 是否存在不一样数据类型的运算
是否有相同数据类型,不同字长变量间的运算
表达式是否存在向上或向下溢出的情况
除法运算中除数是否可能为0
比较错误 是否有不同类型变量之间的比较
控制流程错误 警惕go to语句
是否所有循环都能够终止
switch语句应该有default语句
接口错误 形参数量是否等于实参数量
实参量纲与形参量纲是否匹配
如果有全局变量,在所有引用它们的模块中,定义和属性是否相同
输入/输出错误 打开文件的语句中,各项属性设置是否正确
  是否有足够内存空间,来保存程序将读取的文件
所有文件使用之前是否都已经打开
所有文件使用之后是否都已经关闭
是否有判断文件结束的条件,并正确处理
对I/O出现的情况处理是否正确
程序是否正确处理“文件无法找到”这类错误
其他错误 对警告信息应注逐一排除
程序或模块是否具有鲁棒性,即对输入的合法性进行检查
程序是否遗漏某个功能

 

三、测试用例的设计

        本章讨论黑盒和白盒各自的测试方法。推荐先使用黑盒测试方法,然后视情况需要使用白盒测试。

3.1 白盒测试

        完全的白盒测试是将程序中每条路径都执行一遍,然后对一个带循环的程序来说,完全的路径测试并不切合实际。

3.1.1 语句覆盖

       语句覆盖是指每条语句都执行一遍。例如下面的测试小程序:

public void foo(int a, int b, int x)
{
    if(A > 1 && B == 0)
        X = X/A;
    
    if(A == 2 || X > 1)
        X = X + 1;
}

        按照语句覆盖准则,根据被测试的程序流程图3-1中,测试用例只需测试ace路径,而其他路径的代码都未被测试。

图3-1 被测试程序流程图

3.1.2 判定覆盖

       判定覆盖准则要求每个判断都至少有一个为真和为假的输出结果,并且每个判断都被执行至少一次。

3.1.3 条件覆盖

       与条件覆盖相比,判定覆盖只关心判断表达式的值是“真”是“假”,而条件判定则还关心判断表达式内部各个值的真假。举个例子:判定表达式:a>1 or b>1

        用判定覆盖设计的测试数据:

        a=5 (判定表达式的值为“真”),这里不需要管b的取值,就已经满足判定覆盖的条件了。

        a=0 (判定表达式的值为“假”)

         用条件覆盖设计的测试数据:

         a=5 (条件a>1的值为“真”)

         a=0(条件a>1的值为“假”)

         b=5 (条件b>1的值为“真”)

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值