软件测试

臧艳辉

目录

  • 1 走近软件测试
    • 1.1 走近软件测试
    • 1.2 一个软件测试工程师必备的专业技能和素质
    • 1.3 章节测验
  • 2 软件测试技术
    • 2.1 正确认识软件测试
    • 2.2 软件测试遵循的基本原则
    • 2.3 软件测试的分类
    • 2.4 软件测试的过程模型
    • 2.5 章节测验
  • 3 测试中缺陷的识别与描述
    • 3.1 初识软件缺陷
    • 3.2 全面解析软件缺陷
    • 3.3 有效的记录缺陷
    • 3.4 缺陷报告实例
    • 3.5 缺陷报告模板
  • 4 项目测试计划的制定
    • 4.1 一个项目完整的测试流程
    • 4.2 初识测试计划
    • 4.3 测试计划的基本机构和内容
    • 4.4 测试计划模板和案例
  • 5 初识软件测试用例
    • 5.1 什么是测试用例
    • 5.2 项目测试中设计测试用例的作用
    • 5.3 如何设计一个项目的测试用例
    • 5.4 在测试过程中测试用例怎样进行更新和维护
  • 6 使用等价类划分方法设计测试用例
    • 6.1 等价类划分法的基本思想
    • 6.2 进行等价类划分法的原则
    • 6.3 使用等价类划分法设计测试用例实例
  • 7 使用边界值分析法设计测试用例
    • 7.1 边界值分析法的基本思想
    • 7.2 如何确定边界
    • 7.3 测试知识储备
    • 7.4 使用边界值分析法设计测试用例实例
    • 7.5 项目中如何进行健壮性边界值测试
    • 7.6 等价类+边界值
    • 7.7 章节测试
  • 8 使用大纲法设计测试用例
    • 8.1 什么是大纲法
    • 8.2 项目中如何使用大纲法设计测试用例
  • 9 使用场景法设计测试用例
    • 9.1 什么是场景法
    • 9.2 项目中如何使用场景法设计测试用例
  • 10 因果图和决策表结合设计测试用例
    • 10.1 因果图法的介绍
    • 10.2 决策表的介绍
    • 10.3 项目中选用因果图法和决策表设计测试用例需考虑的问题
    • 10.4 使用因果图法和决策表设计测试用例
  • 11 功能测试
    • 11.1 什么是功能测试
    • 11.2 功能测试的主要内容及测试策略
    • 11.3 功能测试的方法汇总
    • 11.4 功能测试的经验及注意事项
  • 12 界面测试
    • 12.1 界面检查的通用原则
    • 12.2 具体的界面检查的举例
    • 12.3 设计界面测试用例
    • 12.4 界面测试标准总结
  • 13 软件的安装卸载测试
    • 13.1 软件的安装卸载测试
    • 13.2 软件的安装测试
    • 13.3 软件的运行测试
    • 13.4 软件的卸载的测试
  • 14 项目中如何使用进行有效的缺陷管理
    • 14.1 进行缺陷管理的目标是什么
    • 14.2 项目中缺陷管理的流程是怎样的
    • 14.3 缺陷的跟踪方法有哪些
  • 15 测试报告该如何撰写
    • 15.1 软件质量评估
    • 15.2 如何撰写测试报告
    • 15.3 如何写项目总结
    • 15.4 如何写个人测试总结
  • 16 集成测试
    • 16.1 初识集成测试
    • 16.2 集成测试方法
  • 17 白盒测试
    • 17.1 初识白盒测试
    • 17.2 白盒测试技术——逻辑驱动测试
    • 17.3 白盒测试技术——循环覆盖测试
    • 17.4 白盒测试技术——基本路径测
  • 18 软件测试技术及岗位需求介绍
    • 18.1 软件测试岗位需求
    • 18.2 软件测试技术介绍
    • 18.3 软件测试比赛内容
    • 18.4 软件测试岗位应聘简历撰写
边界值分析法的基本思想
  • 1 电子教材
  • 2 PPT

第一章  使用边界值分析法设计测试用例

简介

如果软件在能力达到极限时能够运行,那么在正常情况下就不会有什么问题。长期的测试工作经验说明“错误隐藏在角落里,问题聚焦在边界上”,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此,针对各种边界情况设计测试用例,可以查出更多的错误。

7.1  边界值分析法的基本思想

7.1.1  为什么要使用边界值分析法

程序在处理大量中间数值时往往是对的,但是在边界处就容易出现错误?下面的例子说明了在一个极简单的程序中是如何产生边界条件问题的。

int data[10];

int i;

For (i=l; i<=10; i++)

Data[i]= -1;

这段代码的意图是创建包含10个元素的数组,并为数组中的每一个元素赋初值-1。看起来相当简单,它定义了包含10个整数的数组data和一个计数值iFor循环从110,数组中从第1个元素到第10个元素被赋予数值-1

我们知道在C语言中,当定义数组时(在本例中定义语句是int data[10]),第一个创建的元素下标为0,而不是1。该程序实际上创建了一个从data[0]data[9]10个元素的数组。程序从110循环地将数组元素的值初始化为-1,但是由于数组的第一个元素是data[0],因此它没有被初始化。程序执行完毕,数组值如下:

data[0]= 0             data[6]= -1

data[l]=-1             data[7]= -1

data[2]= -1            data[8]= -1

data[3]= -1            data[9]= -1

data[4]= -1

data[5]= -1

注意:data[0]的值是0,而不是-1。如果这位程序员以后忘记了,或者其他程序员不知道这个数据数组是如何初始化的,他就可能会用到数组的第1个元素data[0],以为它的值是-1。代码中还造成了缓冲区溢出问题,因为data[10]是不可用的。诸如此类的问题很常见,在复杂的大型软件中,可能导致极其麻烦的软件缺陷。

7.1.2  测试两位加法计算器时程序提示输入数据有误

在测试两位加法计算器时,输入第1个值,其值为-99,第2个值为98,单击“加”按钮后,程序弹出一个提示对话框,如图7-1所示。

7-1 加法器错误信息提示

7.1.3  所发生的问题

根据前面的等价类方法,按照测试用例表给出的测试用例进行测试,没有发现问题,那么为什么现在输入参数-9998后,程序提示输入的数据有误了?而-99是合理的输入数据,以-99作为输入数据应该是有效等价类中的数据。是不是等价类划分方法有问题?现在来看看有关的代码,为什么在第一个数值取-99的时候,程序就给出了错误提示:

If  Val (Textl.Text) >= 99 Or Val(Textl.Text) <= -99 Then

MsgBox ("输入的参数值必须大于-99同时小于99")

Else

If  Val (Text2.Text) >= 99 Or Val(Text2.Text) <= -99 Then

MsgBox ("输入的参数值必须大于-99同时小于99" )

Else

Text3.Text = Val (Textl.Text) + Val (Text2.Text)

End If

End If

分析以上代码,发现在对输入的数据进行判断时,程序将判断条件设为:

If Val (Textl.Text) >= 99 Or Val (Textl.Text) <= -99 Then

在事实上将输入数据的值的范围限制在了-9898之间,没能完全实现功能的要求。

7.1.4  如何解决问题

测试技术中的边界值测试方法可以帮助我们避免以上问题。

下面根据边界值分析的方法来看看如何对边界值进行测试。

由于允许输入的数值在-9999之间(图7-2所示),所以可以把-9999看作两个边界值。在测试的时候可以取紧邻边界值的数值和边界值本身作为输入(表7-1)。

7-2  等价类划分

7-1 边界值测试用例

 

测试用例编号

 
 

输入数值

 
 

被测边界

 
 

预期输出

 
 

1

 

2

 

3

 
 

-100

 

-99+ (-99)

 

-98+ (-98)

 
 

-99

 
 

错误信息

 

正确输出: -198

 

正确输出: -196

 
 

4

 

5

 

6

 
 

98+98

 

99+99

 

100

 
 

99

 
 

正确输出: 196

 

正确输出: 198

 

错误信息