第五章 软件测试理论
目标:
- 掌握软件测试的目的和原则
- 掌握瀑布模型
- 了解快速原型模型和螺旋模型
- 掌握V模型
- 掌握W(双V)模型
- 能掌握软件质量模型的分类
- 掌握软件测试分类
- 掌握软件缺陷的定义与判定标准
- 掌握测试用例定义和8要素
一、软件测试的目的和原则
目标
- 掌握软件测试的目的和原则
1、软件测试目的
用最少的人力、物力、财力,找到软件中的问题并修复,从而降低商业风险
2、软件测试原则
-
只能证明软件存在问题,不能证明不存在问题
-
不能进行穷尽(穷举)测试,应该分类别测试
-
测试工作要尽早的介入,降低修复成本(需求文档-UI、程序、测试)
-
缺陷存在集群现象,二八原则:20%的模块中存在80%的缺陷
-
测试依赖环境(系统、浏览器)
-
杀虫剂现象
-
不存在缺陷谬论
二、软件开发模型
目标
- 掌握瀑布模型
- 了解快速原型模型
- 了解螺旋模型
1、开发模型的介绍
-
在软件开发的几十年实践中,人们总结了很多软件开发模式用来描述和表示一个复杂的开发过程,如:
-
软件测试与软件开发模式有着紧密联系,作为一测试人员,应该充分理解软件的开发模式,以便找准自己在其中的位置,从而发挥自身的价值
2、瀑布模型
2.1、瀑布模型的特点
-
是线性模型的一种,每一个阶段只执行一次
-
文档驱动
2.2、瀑布模型的优缺点
优点:
- 开发的各个阶段比较清晰,当前阶段完成后,只需关注后续阶段
缺点:
- 不适应需求的变化
- 风险往往延至后期才显露,失去及早纠正的机会
3、快速原型模型(了解)
-
在开发真实系统之前,构造一个原型,在该原型的基础上,逐渐完成整个系统的开发工作
3.1、快速原型模型的特点
快速的构建软件的原型
支持用户参与
3.2、快速原型模型的优缺点
优点:缺点:
- 克服瀑布模型的缺点,减少由于软件需求不明确带来的项目开发风险
- 不适合大型系统的开发(适合开发小型的、灵活性高的系统)
4、螺旋模型(了解)
4.1、螺旋模型的特点
引进了风险分析活动
4.2、螺旋模型的优缺点
优点:缺点:
- 螺旋模型很大程度上是一种风险驱动的方法体系
- 采用螺旋模型需要具有相当丰富的风险评估经验和专门知识
三、软件测试模型
目标
- 掌握V模型
- 掌握W(双VV)模型重点
1、V模型
-
V模型是最具有代表意义的测试模型,最早是由Paul Rook在20世纪80年代提出,由英国国家计算机中心文献中发布,旨在改进软件开发的效率和效果
-
V模型本身是软件开发中瀑布模型的变种,它反映了测试活动与分析和设计的关系
-
V模型标记了测试过程中本身存在的不同阶段,从左到右,描述了开发过程和测试过程间的阶段对应关系。
V模型示意图:
1.1、V模型的优缺点
优点:
测试V模型既包含了底层测试又包含了高层测试
缺点:
当需求变更时将会导致返工量非常大,模型灵活性比较低
2、W模型
-
测试伴随着整个软件开发周期,并且测试的对象不仅仅是程序,需求和设计同样要测试
W模型示意图:
2.1、W模型的优缺点
优点:
强调测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,还包含需求和设计
更早地介入,能尽早的发现缺陷进行修复
缺点:
对于测试技术要求高,实践起来困难
四、软件质量模型
目标
- 能掌握软件质量模型的分类
1、软件质量模型
-
软件质量,就是软件与明确地和隐含地定义的需求相一致的程序
-
ISO 9126软件质量模型是评价软件质量的国际标准,这个模型是软件质量标准的核心,对于大部分的软件,都可以考虑从这6个特性和27个子特性去测试,评价一个软件
五、软件测试分类
目标
- 掌握软件测试分类(重点)
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.2、软件缺陷产生的原因
软件缺陷产生是不可避免的,造成软件缺陷产生的原因主要归纳如下:
- 需求解释、记录或者定义错误
- 设计文档说明存在错误或者拼写错误
- 编码说明、程序代码有误
- 硬件或软件系统上存在错误
1.3、软件缺陷产生的根源
-
需求的变更
-
交流不充分
-
软件复杂性
-
进度压力
1.4、软件缺陷的类型
-
功能错误
-
界面错误
-
兼容性缺陷
-
易用性问题
-
改进建议
七、测试用例
目标
- 掌握测试用例定义(重点)
- 掌握测试用例8要素(重点)
1.测试用例
测试用例:(Test Case)是为特定的目的而设计的一组测试输入,执行条件和预期结果的文档。测什么?怎么测?
1.1、认识生活的测试用例
-
买手机、买电脑,要试用一下:开机、屏幕、运行速度、内存大小;这就是生活中的测试用例!
-
举例说明
-
买手机:按开机键,相等于输入了一组数据来测试,执行条件指的是开机的前提条件,比如是否有电;预期结果就是能顺利打开手机,那么测试完毕后,是否达到了想要的需求(顺利开机)
2、测试用例八大要素
-
软件测试用例的基本要素包括用例编号、用例标题、测试项目、用例级别、预置条件、测试输入、执行步骤、预期结果。