软件测试基础知识
一、软件测试的目的、原则以及特性准则
1.软件测试目的
软件测试是以发现软件的存在的缺陷、错误为第一目的,并借此对软件的质量进行度量评价。为达到此目的,测试活动的目标是最大可能的找出最多的错误或缺陷来。
测试是从假定软件含有缺陷和故障的假设而进行的,实现这个目标的关键,是要科学合理地设计出最能暴露存在问题的测试用例,并通过测试用例来实现这个测试的根本目的。因此,软件测试活动也常常用下面三点来表述:
- 测试是程序执行过程,并限于执行处理有限的测试用例与情形,并发现了错误;
- 检测软件是否满足软件定义的各种需求目标;
- 执行的测试用例发现了未曾发现的错误,实现成功的测试。
2.软件测试原则
依据软件测试的目的,通过实践归纳出了一些测试活动的原则。
- 尽早和及时的进行测试。测试活动应从软件产品开发初始阶段就开始;
- 测试用例要由测试数据与预期结果两部分组成,并包括测试的前置条件
或后置条件; - 测试需根据软件需求和分析得来的风险,测试活动可由专业测试者进行或程序开发者自行测试完成;
- 测试需要严格执行测试计划,排除测试工作的随意性;
- 充分注意测试中的集群效应。实践经验表明,大量的统计结果分析表明,软件程序中约80%的错误仅与20%的程序有关。这就是所谓的’8/2现象’,可以告诉测试者的重点关注应在哪里。
- 应对测试结果作核查,存档测试计划、测试用例、缺陷统计和分析报告等文档,为软件运行时的维护工作提供足够的资料及测试条件。这里的软件维护是指软件交付使用后到来的Bug修复, 软件变更、版本升级等过程, 以及带来的相应测试活动。
3.基本测试原理
测试原理1: 测试可以证阴缺存在但不能证明缺陷不存在
测试可以证明软件系统(产品)是失败的,即说明软件中存在缺陷,但测试不能证明软作中没有缺陷,适当的软件测以成测试对家中的隐感缺陷,即使在测试中没有发现失效也不能证明其没有缺陷。
测试原理2: 穷尽测试是不可能的
测试若考虑所有可能的输入值及其组合,并结合所有的前置条件进行穷尽测
试是不可能的,实际测试过程中,对软件测试基本上是抽样测试因此,必须根
据风险和优先级,控制测试工作量。
测试原理3: 测试活动应尽早开始
测试原理4: 缺陷的集群性
通常情况下,缺陷并不是平均而集群分布的,大多数的缺陷只存在于测试对象的极小部分中。因此,如在一个地方发现了较多缺陷,通常在附近会有更多的缺陷,这就是所谓的缺陷集群性,也就是常说的‘8/2现象’,80%的缺陷集中在20%的程序模块中。
测试原理5: ‘杀虫剂’悖论
若同样的测试用例被一再重复执行,则会减少测试的有效性。先前没有发现的缺陷反复使用同样的测试用例也不会被重新发现。
测试原理6: 测试依赖测试内容
测试必须与应用系统的运行环境及使用中固有的风险相适应,因此,没有两个系统可以使用完全相同的方式进行测试。
测试原理7: 没有失效就是有用的系统就是一种谬论
二、软件基本测试策略
软件具有生命周期。软件测试贯穿整个软件生命周期,因此测试基本策略是在其生命周期的每个阶段中。包括以下测试策略:
- 确定测试目标
- 确认测试对象
- 建立测试生命周期
- 制订和实施测试策略
- 选择测试类型
- 运用测试方法
图1 测试部署
三、软件测试流程
软件测试流程框架如图2所示。目前,业界针对软件测试的流程规划与实施过程大体上是一致的,主要由测试规划、测试需求、测试用例设计、产品集成、确认测试和验收测试7个部分组成。
图2 测试通用流程
四、软件测试模型
1.瀑布模型
瀑布模型易于理解和掌握,它是将软件生命周期的各项活动规定为按照固定顺序相连的若干阶段性工作,形如瀑布流水,最终得到软件产品。该模型适用于需求稳定并易于准确理解的软件项目开发。
2.螺旋模型
螺旋模型是瀑布方法与边写边改模式的演化,结合形式,并加入风险评估的一种开发技术。
3.RUP流程
RUP为在开发组织中分配任务和明确职责提供了一种规范的方法,其目标是确保在可预计的时间安排和预算内开发出满足最终用户需求的高品质的软件产品。
4.IPD
IPD适用于复杂、大型软件开发项目,尤其是设计到软、硬件结合的开发项目。IPD流程从整个产品角度出发,流程综合考虑了从系统工程、研发、制造、财务到市场、采购、技术支援等所有流程。
5.敏捷模式
敏捷方法是将开发与测试融为一体。测试以多种不同的方法寻找当前开发的软件的缺陷和修正。敏捷测试分为手工测试和自动化测试,不同测试扮演不同角色。如人工走查和程序静态测试,分属不同测试类别。根据敏捷原则,确定能用自动化测试事情决不用手工测试,同时做到适于手工测试的内容也不花费高昂成本做自动化测试。
敏捷开发中的测试是整个软件开发的“指引灯”, 引领开发过程。敏捷开发中,测试不完全依赖文档,需要自动地寻找和挖掘更多关于程序的信息来指导测试。敏捷中测试人员需主动和开发人员讨论软件需求和设计,研究缺陷出现原因。敏捷测试需要实施持续测试、不断地回归测试和快速测试。测试为项目组提供各种信息,项目开发过程基于这些信息而做出正确决定。敏捷项目中测试人员并非质量保证的唯一,整个项目组每一成员都对质量负责,而测试人 员的主要责任之一是帮助开发人员找到修正的目标。