第一章
为什么要进行软件测试?
1、软件总存在缺陷。只有通过软件测试,才可以发现软件的缺陷。也只有发现了缺陷,才可以将软件缺陷从软件产品或软件系统中清理出去。
2、软件中存在的缺陷给我们带来的损失是巨大的,这也说明了软件测试的必要性和重要性。
3、测试是所有工程学科的基本组成单元,自然也是软件开发的重要组成部分。
4、测试人员的水平越高,找到软件问题的时间就越早,软件就越容易更正,产品发布之后越稳定,公司赚的钱也越多,然健就是一个典型的例子。
软件缺陷
软件缺陷是存在于软件(文档、数据、程序)中的偏差,导致软件在某个特定条件下出现故障(这时成为软件缺陷被激活)
软件测试学科的发展
软件测试在软件开发过程的瀑布模式
CMMI模型简介
CMMI五级模型
CMMI模型对传统软件测试技术的扩充
1、从软件产品的测试--》软件产品的测试开发过程的度量
2、从事后测量-----》全过程测试和分析
3、软甲测试与开发的其他阶段不在穿行工作,而是并行进行。
测试用例
测试用例TC简单来讲是指执行条件和预期结果的集合,完整的来讲是针对要测试的内容所确定的一组输入信息,视为达到最佳的测试效果或高效的揭露隐藏的错误而精心设计的少量测试数据。
编号: TC1、TC2……
测试用力设计的基本原则
1、测试用力的代表性
2、测试结果的可判定性
3、测试结果的可再现性
测试用例模板
1.4 软件测试环境
1.4.1什么是测试环境
软件测试环境就是软件运行的平台,即软件、硬件和网络的集合
测试环境 = 软件 + 硬件 + 网络 + 历史数据
第二章
测试原则
1、所有的测试都应追溯到用户需求
2、把“尽早测试和不断地进行软件测试”作为软件测试者的座右铭
3、Pareto原则应用于软件测试
简单的将,Pareto原则暗示着测试发现的错误中的80%很可能起源于程序模块中的20%,这就是缺陷群集现象
造成缺陷群集吸现象的主要原因:
1、程序员的疲劳 2、程序员的习惯
4、测试应从“小规模”开始逐步专转向“大规模”
5、穷举测试是不可能的
6、为了达到最佳效果,应该由独立的第三方来构造测试
7、不充分的测试是不负责的,过分的测试是一种资源的浪费
2.2 软件测试的分类
2.2.1按测试阶段分类
单元测试、集成测试、确认测试、系统测试、验收测试等。
2.2.2 静态测试、动态测试
1、静态测试
定义 静态测试,又称静态分析,是不实际运行被测试软件,而是直接分析软件的形式和结构,查找缺陷。
主要包含对代码、程序界面和各类文档及中间产品(如产品规格说明书、技术设计文档等)所做的测试。
(1)对于源代码
静态测试主要是看代码是否符合相应的标准和规范,如可读性、可维护性等,其工作过程类似一个编译器,随着语法分析的进行做特定工作,如分析模块调用图、程序控制流图等图标,度量软件的代码质量等。
(2)对于程序界面
静态测试主要是查看软件的实际操作和运行界面是够符合需求中的相关说明。
(3)对于文档
2、动态测试
定义 动态测试又称动态分析,是指需要实际运行被测软件,通过观察程序运行时所表现出来的状态、行为等发现软件缺陷,包含在程序运行时,通过有效的测试用例(对应的输入、输出关系)来分析被测程序的运行情况或进行跟踪对比,发现程序所表现的行为与设计规格或客户需求不一致的地方。
3、静态测试与动态测试的比较
2.2.3 按是否需要查看代码
黑盒测试、白盒测试、灰盒测试
软件测试方法和技术的分类与软件开发过程相关联,他贯穿了整个软件生命周期。走查、单元测试、集成测试、系统测试应用于整个开发过程中的不同阶段。开发文档和与那程序可
2.2.4按测试执行时时是否需要人工干预分类
手工测试,自动测试
瀑布模型(最后进行测试)
2.4.1 V模型(进行一部分 测试一部分 也是最后测试)
2.4.2 W模型(开发人员和测试人员同时进行)
2.4.3 H模型(开发和测试独立)
瀑布模型:需求分析->设计(概要、详细)->编程->测试(单元、集成、系统)->维护
V模型(瀑布-改):在软件开发的生存期,开发活动和测试活动几乎同时的开始,如概要设计阶段结束后集成测试的测试用例就出来了、详细设计阶段结束后单元测试的测试用例也就出来了等
W模型(V模型更加细化、每步都加测试,边造软件边进行测试):需求分析加了需求测试、概要设计加了功能测试、详细设计加了设计测试、编码加了单元测试、集成加了集成测试、确认加了确认测试、验收加了系统测试
H模型:无实际意义,仅说明可以独立测试
vw传统模型
从效率上来说 xh效率最高
2.4.4 X模型(将程序分成每个程序段 交叉进行)
第三章 白盒测试技术
定义:白盒测试也成结构测试、逻辑驱动过基于程序的测试,是一种测试用例设计方法,他从程序的控制结构导出测试用例。他从一般用来分析程序的内部结构。他依赖于程序细节的严密验证,针对特定的条件和循环设计测试用例,对程序的逻辑路径进行测试。通过在程序的不同点检验程序状态,来判断其实际情况是否和语气的状态一致。
白盒测试覆盖率
逻辑覆盖法
3.2.2 基路径测试法
路径测试就是从一个程序的入口开始,执行所经理的各个语句的完整过程。从广义的角度讲,任何有关路径分析测试的理想情况就是做到路径的覆盖,但对于复杂性较大的程序要做到所有的路径覆盖(测试所有可执行的路径)是不可能的。
基路径测试法实在程序控制流图的基础上,通过分析控制构造的环路复杂性,到处基本可执行路径集合,从而设计测试用例的方法。设计出的测试用例哟啊保证在测试中程序的每个可执行语句至少执行一次。
基路径测试法包括一下4个步骤
1、根据过程设计结果画出程序的控制流图
2、计算程序的环路复杂度
3、到处基本路径集,确定程序的独立路径
4、设计相应的测试用例
3.2.3 循环语句测试
循环是软件逻辑结构实现算法的重要组成部分。对循环语句的测试主要是关注循环造成的程序结构复杂度的提高,它遵循的基本测试原则是:在循环的便捷和运行界限值测试密切相关。从本质上说,循环语句测试的目的就是检查程序中循环结构的有效性。
简单循环、嵌套循环串接循环和不规则循环等
(1)简单循环
简单循环需要考虑如下集中循环(假设n是允许通过循环的最大次数):
1、 零次循环:从循环入口直接调到循环出口。
2、 一次循环:只有一次通过循环,用户查找循环初始值方面的错入。
3、二次循环:两次通过循环,用户查找循环初始值方面的错误
4、m次循环“”
(2)嵌套循环
(3)串接循环
串接循环又称并列循环。如果串接循环的每个循环都彼此独立