确认测试总述
确认测试也称为验收测试,它的目标是验证软件的有效性。
软件有效性的一个简单定义是:如果软件的功能和性能如同用户所合理期待的那样,软件就是有效的。
需求分析阶段产生的软件需求规格说明书,准确地描述了用户对软件的合理期望,因此是软件有效性的标准,也是进行确认测试的基础。
一、确认测试的范围
确认测试必须有用户积极参与,或者以用户为主进行。
使用用户界面输入测试数据并且分析评价测试的输出结果。
通常在验收之前由开发单位对用户进行培训。
二、软件配置复查
确认测试的一个重要内容是复查软件配置。
复查的目的是保证软件配置的所有成分都齐全,质量符合要求,文档与程序完全一致,具有完成软件维护所必须的细节,而且已经编好目录。
三、Alpha和Beta测试
Alpha测试由用户在开发者的场所进行,并且在开发者对用户的“指导”下进行测试。Alpha测试是在受控的环境中进行的。
Beta测试由软件的最终用户们在一个或多个客户场所进行。开发者通常不在Beta测试的现场,因此,Beta测试是软件在开发者不能控制的环境中的“真实”应用。
测试总结:

1. 接口测试
每个接口可能有多个输入参数,每个参数有 “典型值”、“边界值”、“异常值”之分。
根据接口的定义,可以推断某种输入应当产生什么样的输出。输出包括函数的返回值和输出参数。
观察是否有程序语句从来没有被执行过。
要特别留意函数体内的错误处理程序块。
2. 路径测试
想遍历测试几乎是不可能的,不测试或者胡乱找几条路径测试却又不行。
输入与对应的输出之间的路径是唯一的。由于接口测试时的输入是有代表性的,因此相应的路径也具有代表性。
路径测试检查表:数据类型、变量值、逻辑判断、循环、内存管理、文件I/O、错误处理。
3. 功能测试
功能测试的基本方法是构造一些合理输入(在需求范围之内),检查输出是否与期望相同。
功能测试有两种比较好的测试方法:等价划分法和边界值分析法。
等价划分是指把输入空间划分为几个“等价区间”,在每个“等价区间”中只需要测试一个典型值就可以了。
边界值测试法是对等价划分法的补充。除了典型值外还要用边界值作为测试用例。
4. 健壮性测试
健壮性是指在异常情况下,软件能正常运行的能力。
健壮性有两层含义:
(1)容错能力。容错性测试通常构造一些不合理的输入来引诱软件出错。
(2)恢复能力 。恢复测试重点考察以下几项:
■系统能否重新运行;
■有无重要的数据丢失;
■是否毁坏了其它相关的软件硬件。
5. 性能测试
性能测试即测试软件处理事务的速度,一是为了检验性能是否符合需求,二是为了得到某些性能数据供人们参考。
有时人们关心测试的“绝对值” 。
有时人们关心测试的“相对值” 。
6. 用户界面测试
绝大多数软件拥有图形用户界面。
图形用户界面的测试重点是正确性、易用性和视觉效果。
在评价易用性和视觉效果时,主观性非常强,应当考虑多个人的观点。
7. 信息安全测试
信息安全性是指防止系统被非法入侵的能力,既属于技术问题又属于管理问题。
信息安全性测试有如下步骤:
■为非法入侵设立目标;
■邀请(或悬赏)一些人扮演黑客,让他们想尽办法入侵系统,实现“目标”。
■如果有人成功了,请他详述入侵的过程。
8. 压力测试
压力测试也叫负荷测试,即获取系统能正常运行的极限状态。
压力测试的主要任务是:构造正确的输入,使劲折腾系统却让它刚好不瘫痪。
压力测试的一个变种是敏感测试。
敏感测试目的是发现什么样的输入可能会引发不稳定现象。
9. 可靠性测试
可靠性是指在一定的环境下、给定的时间内、系统不发生故障的概率。
软件可靠性测试可能会花费很长时间。
比较实用的办法是,让用户使用该系统,记录每一次发生故障的时刻。计算出相邻故障的时间间隔,注意要去掉非工作时间。
统计出不发生故障的“最小时间间隔”、“最大时间间隔”和“平均时间间隔”。
10. 安装/反安装测试
目前市面上有非常流行的、专门制作安装/反安装程序的一些工具,如Install Shelled。
主要测试工作:
■至少在标准配置和最低配置两种环境下测试;
■如果有安装界面,应当尝试各种选项,如选择“全部”、“部分”、“升级”等。

