软件测试基础知识
一、软件测试发展历程
20世纪60年代(软件工程建立前),为表明程序正确而进行测试。1972年在北卡罗来纳大学举行了首届软件测试正式会议。1975 John Good Enough和Susan Gerhart在IEEE上发表了《测试数据选择的原理》的文章,软件测试被确定为一种研究方向。20世纪80年代早期,“质量”的号角开始吹响。软件测试定义发生了改变,测试不单纯是一一个发现错误的过程,而且包含软件质量评价的内容。制定了各类标准。20世纪90年代,测试工具盛行起来。到了2002年,Rick和Stefan在《系统的软件测试》一书中对软件测试做了进一步定义:测试是为了度量和提高被测软件的质量,对测试软件进行工程设计、实施和维护的整个生命周期过程。
二、软件测试目的
(1)测试并不仅仅是为了找出错误,而且要通过分析错误产生的原因和错误的发生趋势,帮助项目管理者发现当前软件开发过程中的缺陷,以便及时改进。
(2)测试分析帮助测试人员设计出有针对性的测试方法,以改善测试的效率和有效性。
(3)没有发现错误的测试也是有价值的,完整的测试是评定软件质量的一种方法。
三、软件测试原则
(1)应把“尽早和不断地进行软件测试”作为软件开发者的座右铭,实践证明单元测试 能够尽早发现问题,减少后期测试的错误量。可以采用junit和jtest来辅助进行单元测试
(2)测试用例应由测试输入数据、测试执行步骤和与之对应的预期输出结果三部分组成。
(3)应当避免由程序员检查自己的程序。(指后期系统测试阶段,不包括单元测试)
(4)测试用例的设计要确保能覆盖所有可能路径。在设计测试用例时,应当包括合理的 输入条件和不合理的输入条件。不合理的输入条件是指异常的,临界的,可能引起问题的输 入条件。
(5)充分注意测试中的群集现象。经验表明,测试后程序残存的错误数目与该程序中已 发现的错误数目或检错率成正比。应该对错误群集的程序段进行重点测试。
(6)严格执行测试计划,排除测试的随意性。
(7)应当对每一个测试结果做全面的检查。
(8)妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。
四、软件测试分类
l 按照开发阶段划分
分为:单元测试、集成测试、确认测试、系统测试、验收测试等。
l 按照执行主体划分
分为:开发方测试、用户测试、第三方测试。
1. 开发方测试
开发方测试通常也叫“验收测试”或“α测试”。在软件开发环境中,开发者检测与证实软件的实现是否满足软件设计说明或软件需求说明的要求。
2. 用户测试
用户测试被称为β测试,指把软件有计划地,免费地分发到目标市场,让用户大量使用、评价和检查软件。
3. 第三方测试
第三方测试是指由第三方测试机构来进行的测试,也称独立测试。
l 按照执行状态划分
1. 静态测试
静态测试是指计算机不真正运行被测试的程序,而是人工对程序和文档进行分析与检查,包括走查、符号执行、需求确认等。
2. 动态测试
动态测试是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率和健壮性等性能,这种方法由三部分组成:构造测试实例、执行程序、分析程序的输出结果。
l 按照测试技术划分
1. 黑盒测试
黑盒测试也称功能测试或数据驱动测试。黑盒测试方法主要有等价类划分、边值分析、因果图、错误推测等,主要用于软件确认测试
2. 白盒测试
白盒测试称为结构测试或逻辑驱动测试。
3. 灰盒测试
灰盒测试由方法和工具组成,这些方法和工具取材于应用程序的内部知识和与之交互的环境,能够用于黑盒测试以增强测试效率、错误发现和错误分析的效率。它是介于白盒测试与黑盒测试之间的,灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种关注不象白盒那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态,有时候输出是正确的,但内部其实已经错误了,这种情况非常多,如果每次都通过白盒测试来操作,效率会很低,因此需要采取这样的一种灰盒的方法。
l 按照软件发布范围划分
1. 国际化测试
国际化测试的目的是测试软件的国际化支持能力,发现软件的国际化的潜在问题,保证软件在世界不同区域中都能正常运行。
2. 本地化能力测试
本地化能力是指不需要重新设计或修改代码,将程序的用户界面翻译成任何目标语言的能力
3. 本地化测试
本地化测试的目的是测试特定目标区域设置的软件本地化质量。
五、软件测试模式
1. V模型
2. W模型
3. H模型
4. X模型
5. 前置模型
(1)开发和测试相结合
(2)对每一个交付内容进行测试
(3)让验收测试和技术测试保持相互独立
(4)反复交替的开发和测试
(5)引入新的测试理念
六、测试用例
1. 测试用例的基本概念
测试用例是指为实施测试而向被测试系统提供的输入数据,操作或各种环境设置以及期望结果的一个特定集合
测试用例有如下几种分类:
(1)功能测试用例:包含功能测试、健壮性测试和可靠性测试。
(2)性能测试用例:包含性能测试、压力测试和强度测试。
(3)集成测试用例:包含接口测试、健壮性测试和可靠性测试。
(4)安全测试用例
(5)用户界面测试用例及少量功能测试用例。
(6)安装/反安装测试用例。
2. 测试用例的编写
编写测试用例文档应有文档模板,必须符合内部的规范要求。测试用例文档将受限于测试用例管制软件的约束。
3. 测试用例的作用
(1) 指导测试的实施
(2) 规划测试数据的准备
(3) 编写测试脚本的”设计规格说明书”
(4) 评估测试结果的度量基准
(5) 分析缺陷的标准
4. 相关问题
l 测试用例的评审
l 测试用例的修改更新
l 测试用例的管理软件