一:基础概念
软件测试的定义:
Myers (1979)定义测试是执行程序的过程,其目的是发现错误。
本书:软件测试就是一个过程或一系列过程,用来确定计算机代码完成了其应该完成的功能,不执行其不该有的操作。
软件测试的目的(意义)是什么?
软件测试是为了确认软件做了所期望的事情(Do theright thing),另一方面是确认软件以正确的方式来做了这个事件(Do it right)。软件测试不仅是在测试软件产品的本身,而且还包括软件开发的过程。如果一个软件产品开发完成之后发现了很多问题,这说明此软件开发过程很可能是有缺陷的。因此软件测试是保证整个软件开发过程是高质量的。
重要的测试原则:① 软件测试是为发现错误而执行程序的过程② 尽量避免编码人员测试自己的程序③ 好的测试用例能够对未发现的错误高度敏感④ 成功的测试用例能够发现未知的错误⑤ 成功的测试需要仔细定义输入输出的期望值⑥ 成功的测试需要仔细研究分析测试结果
常见的错误:
① 数据引用错误(是否有引用的变量未赋值或为初始化)
② 数据声明错误(是否所有的变量都进行了明确的声明?)
③ 运算错误 (是否存在不一致的数据类型的变量间的运算?)
④ 比较错误 (是否有不同数据类型变量之间的比较运算?)
⑤ 控制流错误 (是否所有的循环最终都终止了?)
⑥ 接口错误 (被调用模块接收到的形参(parameter)数量是否等于调用模块发送的实参(argument)数量?顺序是否正确?)
⑦ 输入/输出错误 (打开文件的语句中各项属性的设置是否正确?)
⑧ 其他检查 (如果程序编译通过了,但计算机提供了一个或多个“警告”或“提示”信息,应对此逐一进行认真检查......)
大多数软件项目应使用人工测试:① 利用错误列表进行代码检查② 小组代码走查③ 桌面检查④ 同行评审⑤ 可用性测试
单元测试与聚合测试:1. 单元测试是测试的基础级别。单元测试着眼于程序或 系统的较小组件模块,执行每个模块以证实其履行了 指定功能 2. 单元测试的优势在于它容许对小单元的测试和调试, 从小单元到大单元的集成过程提供了更好的管理方式 3. 把组件聚合后,必须通过测试确认所有的组件之间能 够正确地协作运行。因此集成测试的目标是暴露接口 的缺陷,以及聚合后的组件之间相互作用的缺陷
高级测试:
模块测试的目的是发现程序模块与其接口规 格说明之间的不一致
功能测试的目的是为了证明程序未能符合其 外部规格说明
系统测试的目的是为了证明软件产品与其初 始目标不一
二:白盒测试
定义:白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。
白盒测试的测试方法有:代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、路径覆盖和程序变异。
白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。
其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。六种覆盖标准发现错误的能力呈由弱到强的变化:
如果上面的几种覆盖方法还是不懂什么意思的话看这个:http://www.51testing.com/html/44/n-3713444.html
三:黑盒测试
定义:黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。
测试方法:从理论上讲,黑盒测试只有采用穷举输入测试,具体的黑盒测试用例设计方法包括等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正交试验设计法、功能图法、场景法等。
等价类划分方法:将程序可能的输入数据分成若干个子集,从每个子集选取一个代表性的数据作为测试用例,等价类是某个输入域的子集,在该子集中每个输入数据的作用是等效的
步骤
a) 建立等价类表,列出所有划分出的等价类:
b) 为每个等价类规定一个唯一的编号;
c) 设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类
d) 重复c),最后使得所有有效等价类均被测试用例所覆盖;
e) 设计一个新的测试用例,使其只覆盖一个无效等价类。
f) 重复e)使所有无效等价类均被覆盖。
ppt上的一个例子:
(还不明白:详细跟实验二黑盒测试的一个例子走一遍)
边界值分析方法:
看了这张图你因该会知道
因果图:(有可能出大题)因果图方法最终生成的就是判定表。它适合于检查程序输入条件的各种组合情况。
怎么画?
因果图-图形符号
1. 恒等(-):若原因出现,则结果出现;若原因不出现,则结果也不出现(见图 (a))。
2. 非():若原因出现,则结果不出现;若原因不出现,则结果出现(见图(b))。
3. 或(Ú):若几个原因中有一个出现,则结果出现;若几个原因都不出现,则结果不出现(见图 (c))。
4. 与(Ù):若几个原因都出现,则结果出现;若其中有一个原因不出现,则结果不出现(见图 (d))。
我估计不会考到下面这张图
例子:
上面这张图原本因有8个可能,有两个是等价类!(中间有很多细节我不能解释,如果出了这题,就照着上面的例子写满就好了)
四:回归测试
定义:执行回归测试是一种技术,它提供一种快速的 、方便的方法来决定代码的修改是否改变了或 破坏了现存的功能。回归测试与一般测试比较 ,有六个方面不同: 测试计划的可获性 测试范围 时间分配 开发信息 完成时间和执行频率
回归测试过程主要有七个步骤:提出修改需求 ,修改软件工件,选择测试用例,执行测试, 识别失败结果,确认错误,和排除错误。
回归测试有两个主要方法: 1. 全部重新测试,即将之前所有的测试用例全部重 新执行; 2. 有选择的重新测试,即选择和使用已存在的测 试用例的一个子测试用例集。
波及效应:波及效应是研究改变给软件所带来的直接波及 和诱发波及,以保证软件发生改变后仍然保持 一致性与完整性。 波及效应分析是一个迭代过程。有的步骤可以 自动化执行,而有的步骤必须手工进行。 程序切片能自动化帮助进行识别潜在波及影响。
总结:回归测试要消耗很多时间,建议那些常常要进 行回归测试的人员,使用各种工具来提高效率 ,并利用模块依赖和修改依赖来帮助分析波及 效应