第五章 软件测试理论


目标:

  1. 掌握软件测试的目的和原则
  2. 掌握瀑布模型
  3. 了解快速原型模型和螺旋模型
  4. 掌握V模型
  5. 掌握W(双V)模型
  6. 能掌握软件质量模型的分类
  7. 掌握软件测试分类
  8. 掌握软件缺陷的定义与判定标准
  9. 掌握测试用例定义和8要素

一、软件测试的目的和原则

目标

  1. 掌握软件测试的目的和原则

1、软件测试目的

用最少的人力、物力、财力,找到软件中的问题并修复,从而降低商业风险

2、软件测试原则

  1. 只能证明软件存在问题,不能证明不存在问题

  2. 不能进行穷尽(穷举)测试,应该分类别测试

  3. 测试工作要尽早的介入,降低修复成本(需求文档-UI、程序、测试)

  4. 缺陷存在集群现象,二八原则:20%的模块中存在80%的缺陷

  5. 测试依赖环境(系统、浏览器)

  6. 杀虫剂现象

  7. 不存在缺陷谬论

二、软件开发模型

目标

  1. 掌握瀑布模型
  2. 了解快速原型模型
  3. 了解螺旋模型

1、开发模型的介绍

  • 在软件开发的几十年实践中,人们总结了很多软件开发模式用来描述和表示一个复杂的开发过程,如:

  • 软件测试与软件开发模式有着紧密联系,作为一测试人员,应该充分理解软件的开发模式,以便找准自己在其中的位置,从而发挥自身的价值

2、瀑布模型

2.1、瀑布模型的特点
  1. 是线性模型的一种,每一个阶段只执行一次

  2. 文档驱动

2.2、瀑布模型的优缺点

优点:

  1. 开发的各个阶段比较清晰,当前阶段完成后,只需关注后续阶段

缺点:

  1. 不适应需求的变化
  2. 风险往往延至后期才显露,失去及早纠正的机会

3、快速原型模型(了解)

  • 在开发真实系统之前,构造一个原型,在该原型的基础上,逐渐完成整个系统的开发工作

3.1、快速原型模型的特点
  1. 快速的构建软件的原型

  2. 支持用户参与

3.2、快速原型模型的优缺点
优点:
  1. 克服瀑布模型的缺点,减少由于软件需求不明确带来的项目开发风险
缺点:
  1. 不适合大型系统的开发(适合开发小型的、灵活性高的系统)

4、螺旋模型(了解)

4.1、螺旋模型的特点
  1. 引进了风险分析活动

4.2、螺旋模型的优缺点
优点:
  1. 螺旋模型很大程度上是一种风险驱动的方法体系
缺点:
  1. 采用螺旋模型需要具有相当丰富的风险评估经验和专门知识

三、软件测试模型

目标

  1. 掌握V模型
  2. 掌握W(双VV)模型重点

1、V模型

  • V模型是最具有代表意义的测试模型,最早是由Paul Rook在20世纪80年代提出,由英国国家计算机中心文献中发布,旨在改进软件开发的效率和效果

  • V模型本身是软件开发中瀑布模型的变种,它反映了测试活动与分析和设计的关系

  • V模型标记了测试过程中本身存在的不同阶段,从左到右,描述了开发过程和测试过程间的阶段对应关系。

V模型示意图:

1.1、V模型的优缺点

优点:

  1. 测试V模型既包含了底层测试又包含了高层测试

缺点:

  1. 当需求变更时将会导致返工量非常大,模型灵活性比较低

2、W模型

  • 测试伴随着整个软件开发周期,并且测试的对象不仅仅是程序,需求和设计同样要测试

W模型示意图:

2.1、W模型的优缺点

优点:

  1. 强调测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,还包含需求和设计

  2. 更早地介入,能尽早的发现缺陷进行修复

缺点:

  1. 对于测试技术要求高,实践起来困难

 

四、软件质量模型

目标

  1. 能掌握软件质量模型的分类

1、软件质量模型

  • 软件质量,就是软件与明确地和隐含地定义的需求相一致的程序

  • ISO 9126软件质量模型是评价软件质量的国际标准,这个模型是软件质量标准的核心,对于大部分的软件,都可以考虑从这6个特性和27个子特性去测试,评价一个软件

五、软件测试分类

目标

  1. 掌握软件测试分类(重点)

1、软件测试分类

2、按测试阶段划分

2.1、单元测试
  • 又称模块测试,针对软件设计中的最小单位-程序模块,进行正确性检查的测试工作,单元测试需要从程序内部结构出发设计测试用例,多个模块可以平行地独立进行单元测试

  • 单元定义:C中指一个函数,Java中指一个类

2.2、集成测试
  • 又叫组装测试:通常在单元测试的基础上,将所有程序模块进行有序的、递增的测试

2.3、系统测试
  • 指的是将整个软件系统看为一个整体进行测试,测试的依据是软件需求说明书

2.4、验收测试

检验软件是否符合用户需求的测试

  • α测试
    • Alpha 是内测版本
    • 通常只在软件开发者内部交流
    • 一般而言, 该版本软件的bug较多,普通用户最好不要安装
  • β测试
    • Beta是公测版本,是对所有用户开放的测试版本
    • 这一版本通常由软件公司免费发布, 用户可从相关的站点下载
    • 通过一些专业爱好者的测试, 将结果反馈给开发者, 开发者们再进行有针对性的修改
  • γ测试
    • Gamma版本,指的是软件版本正式发行的候选版。该版本已经相当成熟了, 与即将发行的正式版相差无几, 成为正式发布的候选版本

3、按是否查看源代码

3.1、黑盒测试
  • 又称数据驱动测试,完全不考虑程序内部结构和内部特性,注重于测试软件的功能需求,只关心软件的输入数据和输出数据

3.2、白盒测试
  • 把盒子打开,去研究里面的源代码和程序结构

3.3、灰盒测试
  • 灰盒测试,是介于百盒测试与黑盒测试之间的一种测试,不仅关注输出、输入的正确性,同时也关注程序内部的情况

4、按是否运行分类

  • 静态测试:
    • 指不实际运行被测软件,而只是静态地检查程序代码、界面或文档中可能存在的错误过程
  • 动态测试:
    • 是指实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程

5、按是否自动化

  • 人工测试
    • 也叫做手工测试,测试人员手动去进行的测试
  • 自动化测试
    • 利用代码或工具帮助人工进行测试

6、软件测试的更多分类

  • 冒烟测试
    • 冒烟测试就是对系统进行最基本功能的测试,保证基本的功能和流程能走通
  • 回归测试
    • 当修改一个BUG后,把之前的测试用例在最新的代码下进行再次测试
  • 随机测试
    • 随机测试主要是对被测软件的一些重要功能进行复测,也包含测试那些当前的测试用例没有覆盖到的部分
  • 搜索性测试
    • 探索性测试意味着同时设计测试和执行测试,测试人员通过测试来不断学习被测系统

六、软件缺陷

目标

  1. 掌握软件缺陷的定义与判定标准

1、软件缺陷

软件缺陷:是指软件或程序中存在的各种问题及错误

 软件缺陷的存在会导致软件产品在某种程度上不能满足用户的需求

1.1、软件缺陷的判定标准
  1. 软件未达到需求规格说明书中标明的功能

  2. 软件出现了规格说明书指明不会出现错误的地方

  3. 软件的功能超出了需求规格说明书指明的范围

  4. 软件未达到需求规格说明书虽未指明但应该达到的目标

  5. 软件测试人员认为软件难以理解,不易使用,运行速度慢,或者最终用户体验不好。

1.2、软件缺陷产生的原因

软件缺陷产生是不可避免的,造成软件缺陷产生的原因主要归纳如下:

  1. 需求解释、记录或者定义错误
  2. 设计文档说明存在错误或者拼写错误
  3. 编码说明、程序代码有误
  4. 硬件或软件系统上存在错误
1.3、软件缺陷产生的根源
  1. 需求的变更

  2. 交流不充分

  3. 软件复杂性

  4. 进度压力

1.4、软件缺陷的类型
  1. 功能错误

  2. 界面错误

  3. 兼容性缺陷

  4. 易用性问题

  5. 改进建议

七、测试用例

目标

  1. 掌握测试用例定义(重点)
  2. 掌握测试用例8要素(重点)

1.测试用例

测试用例:(Test Case)是为特定的目的而设计的一组测试输入,执行条件和预期结果的文档。测什么?怎么测?

1.1、认识生活的测试用例
  • 买手机、买电脑,要试用一下:开机、屏幕、运行速度、内存大小;这就是生活中的测试用例!

  • 举例说明

  • 买手机:按开机键,相等于输入了一组数据来测试,执行条件指的是开机的前提条件,比如是否有电;预期结果就是能顺利打开手机,那么测试完毕后,是否达到了想要的需求(顺利开机)

2、测试用例八大要素

  •  软件测试用例的基本要素包括用例编号、用例标题、测试项目、用例级别、预置条件、测试输入、执行步骤、预期结果