确认测试(Validation Testing)
• 确认测试又称有效性测试。任务是验证软件的功能和性能及其它特性是否与用户的要求一致。
• 对软件的功能和性能要求在软件需求规格说明书中已经明确规定。它包含的信息就是软件确认测试的基础。
1. 进行有效性测试(黑盒测试)
• 有效性测试是在模拟的环境 (可能就是开发的环境) 下,运用黑盒测试的方法,验证被测软件是否满足需求规格说明书列出的需求。
• 首先制定测试计划,规定要做测试的种类。还需要制定一组测试步骤,描述具体的测试用例。
• 通过实施预定的测试计划和测试步骤,确定
– 软件的特性是否与需求相符;
– 所有的文档都是正确且便于使用;
– 同时,对其它软件需求,例如可移植性、兼容性、出错自动恢复、可维护性等,也都要进行测试
• 在全部软件测试的测试用例运行完后,所有的测试结果可以分为两类:
– 测试结果与预期的结果相符。这说明软件的这部分功能或性能特征与需求规格说明书相符合,从而这部分程序被接受。
– 测试结果与预期的结果不符。这说明软件的这部分功能或性能特征与需求规格说明不一致,因此要为它提交一份问题报告。
2. 软件配置复查
n 软件配置复查的目的是保证
u 软件配置的所有成分都齐全;
u 各方面的质量都符合要求;
u 具有维护阶段所必需的细节;
u 而且已经编排好分类的目录。
n 应当严格遵守用户手册和操作手册中规定的使用步骤,以便检查这些文档资料的完整性和正确性。
验收测试(Acceptance Testing)
• 在通过了系统的有效性测试及软件配置审查之后,就应开始系统的验收测试。
• 验收测试是以用户为主的测试。软件开发人员和QA(质量保证)人员也应参加。
• 由用户参加设计测试用例,使用生产中的实际数据进行测试。
• 在测试过程中,除了考虑软件的功能和性能外,还应对软件的可移植性、兼容性、可维护性、错误的恢复功能等进行确认。
• 确认测试应交付的文档有:
– 确认测试分析报告
– 最终的用户手册和操作手册
– 项目开发总结报告。
系统测试(System Testing)
• 系统测试,是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的组装测试和确认测试。
• 系统测试的目的在于通过与系统的需求定义作比较, 发现软件与系统的定义不符合或与之矛盾的地方。
α测试和β测试
• 在软件交付使用之后,用户将如何实际使用程序,对于开发者来说是无法预测的。
• α测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试。
• α测试的目的是评价软件产品的FLURPS(即功能、局域化、可使用性、可靠性、性能和支持)。尤其注重产品的界面和特色。
• α测试可以从软件产品编码结束之时开始,或在模块(子系统)测试完成之后开始,也可以在确认测试过程中产品达到一定的稳定和可靠程度之后再开始。
• β测试是由软件的多个用户在实际使用环境下进行的测试。这些用户返回有关错误信息给开发者。
• 测试时,开发者通常不在测试现场。因而,β测试是在开发者无法控制的环境下进行的软件现场应用。
• 在β测试中,由用户记下遇到的所有问题,包括真实的以及主观认定的,定期向开发者报告。
• β测试主要衡量产品的FLURPS。着重于产品的支持性,包括文档、客户培训和支持产品生产能力。
• 只有当α测试达到一定的可靠程度时,才能开始β测试。它处在整个测试的最后阶段。同时,产品的所有手册文本也应该在此阶段完全定稿。
测试类型
• 软件测试是由一系列不同的测试组成。主要目的是对以计算机为基础的系统进行充分的测试。
功能测试
功能测试是在规定的一段时间内运行软件系统的所有功能,以验证这个软件系统有无严重错误。
强度测试
强度测试是要检查在系统运行环境不正常乃至发生故障的情况下,系统可以运行到何种程度的测试。例如:
– 把输入数据速率提高一个数量级,确定输入功能将如何响应。
– 设计需要占用最大存储量或其它资源的测试用例进行测试。
– 设计出在虚拟存储管理机制中引起“颠簸”的测试用例进行测试。
– 设计出会对磁盘常驻内存的数据过度访问的测试用例进行测试。
• 强度测试的一个变种就是敏感性测试。在程序有效数据界限内一个小范围内的一组数据可能引起极端的或不平稳的错误处理出现,或者导致极度的性能下降的情况发生。此测试用以发现可能引起这种不稳定性或不正常处理的某些数据组合。
性能测试
• 性能测试是要检查系统是否满足在需求说明书中规定的性能。特别是对于实时系统或嵌入式系统。
• 性能测试常常需要与强度测试结合起来进行,并常常要求同时进行硬件和软件检测。
• 通常,对软件性能的检测表现在以下几个方面:响应时间、吞吐量、辅助存储区,例如缓冲区,工作区的大小等、处理精度,等等。
恢复测试
恢复测试是要证实在克服硬件故障(包括掉电、硬件或网络出错等)后,系统能否正常地继续进行工作,并不对系统造成任何损害。
• 为此,可采用各种人工干预的手段,模拟硬件故障,故意造成软件出错。并由此检查:
– 错误探测功能──系统能否发现硬件失效与故障;
– 能否切换或启动备用的硬件;
– 在故障发生时能否保护正在运行的作业和系统状态;
– 在系统恢复后能否从最后记录下来的无错误状态开始继续执行作业,等等。
– 掉电测试:其目的是测试软件系统在发生电源中断时能否保护当时的状态且不毁坏数据,然后在电源恢复时从保留的断点处重新进行操作。
配置测试
• 这类测试是要检查计算机系统内各个设备或各种资源之间的相互联结和功能分配中的错误。
• 它主要包括以下几种:
– 配置命令测试:验证全部配置命令的可操作性(有效性);特别对最大配置和最小配置要进行测试。软件配置和硬件配置都要测试。
– 循环配置测试:证明对每个设备物理与逻辑的,逻辑与功能的每次循环置换配置都能正常工作。
– 修复测试:检查每种配置状态及哪个设备是坏的。并用自动的或手工的方式进行配置状态间的转换。
安全性测试
安全性测试是要检验在系统中已经存在的系统安全性、保密性措施是否发挥作用,有无漏洞。
• 力图破坏系统的保护机构以进入系统的主要方法有以下几种:
– 正面攻击或从侧面、背面攻击系统中易受损坏的那些部分;
– 以系统输入为突破口,利用输入的容错性进行正面攻击;
– 申请和占用过多的资源压垮系统,以破坏安全措施,从而进入系统;
– 故意使系统出错,利用系统恢复的过程,窃取用户口令及其它有用的信息;
– 通过浏览残留在计算机各种资源中的垃圾(无用信息),以获取如口令,安全码,译码关键字等信息;
– 浏览全局数据,期望从中找到进入系统的关键字;
– 浏览那些逻辑上不存在,但物理上还存在的各种记录和资料等。
可使用性测试
• 可使用性测试主要从使用的合理性和方便性等角度对软件系统进行检查,发现人为因素或使用上的问题。
• 要保证在足够详细的程度下,用户界面便于使用;对输入量可容错、响应时间和响应方式合理可行、输出信息有意义、正确并前后一致;出错信息能够引导用户去解决问题;软件文档全面、正规、确切。
安装测试
安装测试的目的不是找软件错误,而是找安装错误。
• 在安装软件系统时,会有多种选择。
– 要分配和装入文件与程序库
– 布置适用的硬件配置
– 进行程序的联结。
• 而安装测试就是要找出在这些安装过程中出现的错误。
• 安装测试是在系统安装之后进行测试。它要检验:
– 用户选择的一套任选方案是否相容;
– 系统的每一部分是否都齐全;
– 所有文件是否都已产生并确有所需要的内容;
– 硬件的配置是否合理,等等。
容量测试
• 容量测试是要检验系统的能力最高能达到什么程度。例如,
– 对于编译程序,让它处理特别长的源程序;
– 对于操作系统,让它的作业队列“满员”;
– 对于信息检索系统,让它使用频率达到最大。
在使系统的全部资源达到“满负荷”的情形下,测试系统的承受能力。
文档测试
这种测试是检查用户文档(如用户手册)的清晰性和精确性。
• 用户文档中所使用的例子必须在测试中一一试过,确保叙述正确无误。
自动测试
• 认识自动测试
• 什么时候使用自动测试