课件
软件测试过程
软件测试过程通常包括计划、准备、执行和报告四个部分:
- 首先我们要明确测试的任务和方法,制定合理的测试方案和计划
- 然后根据任务需要组织测试团队并且设计测试用例,还要开发测试工具或者测试脚本,准备测试的环境和数据
- 之后对所提交的软件系统进行测试,记录测试结果,并且跟踪和管理所发现的缺陷
- 最后对测试结果进行分析,评价产品的质量,提交最终的测试报告
软件测试活动
软件测试过程中需要执行不同类型的测试,它们的侧重点各有不同。在执行系统测试之前,开发人员需要通过单元测试来保证单元模块的质量,然后把各个单元模块集成在一起,通过集成测试得到一个集成后的系统。系统测试需要先执行功能测试,来验证系统功是不是正常。功能测试之后再进行性能测试,以保证系统能够满足规定的非功能需求,这时我们得到的是一个可以发布的系统。由于开发人员对软件的需求可能和客户的实际需求有所不同,所以我们要通过验收测试来保证所构建的系绕就是客户想要的。最后还要在用户的实际环境中进行安装测试,以保证系统在用户环境下不出现问题。
软件测试类型
软件测试可以从不同的角度划分成不同的类型:
- 从测试对象角度来说,包括单元测试、集成测试、系统测试、验收测试等。其中系统测试又分成功能测试和非功能测试。
- 从测试技术角度来说,可以分成黑盒测试(功能测试)、白盒测试(结构测试)。
- 从程序执行角度来说,可以分成静态测试、动态测试。
- 从测试执行方式来说,又分成手工测试、自动化测试。
单元测试
单元测试( Unit Testing )是对软件基本组成单元进行的测试,其测试对象是软件设计的最小单位(模块或者类),以保证单元模块的功能是正确的。一般来说单元测试是由编写代码的开发人员自己来执行,正如俗话所说,一屋不扫何以扫天下,如果开发人员对自己的代码都不做检查,那么更谈不上整个产品的质量保证。
集成测试
集成测试(Integration Testing)是在单元测试的基础上,将所有模块按照总体设计的要求,组装成为一个子系统或整个系统,所进行的测试。
一般来说,不同的模块单元是由多个开发人员并行进行开发,虽然每个模块都通过了单元测试,但是并不能保证这些模块可以正确地组装在一起。对于小规模的子系统或者系统来说,可以采用一次性集成的方式,即把所有单元一次性地组装在一起。对于大型系统来说,通常会采用渐进式集成的方式,即先组装一部分单元进行测试,之后再增加更多的单元,最终完成所有单元的集成。
集成测试的主要目的是发现不同单元模块之间接口设计和实现上的问题。
功能测试
在整个系统集成之后就可以开始执行系统测试,功能测试和性能测试是系统测试的主要内容。
一般情况下,功能测试是软件测试中工作量最大的一项测试工作。功能测试(Functional Testing)是在已知产品所应具有的功能基础上,从用户角度来进行功能验证,以确认每个功能是否都能正常使用。功能测试主要结合界面、数据、操作、逻辑和接口等方面来检查系统的功能是不是正确。
比如说要测试在当当网搜索并选购图书的功能:
我们需要确认每一项功能是符合用户的实际要求,系统的界面清晰、美观,菜单、按钮的操作正常灵活。除了接受正确的数据输入,对异常数据的输入要有提示和容错处理,输出结果准确。功能的逻辑清晰,符合使用者的习惯,系统的各种状态按照业务流程而变化,并且保持稳定。要能够配合多种外部的硬件设备和外部其它的应用系统,比如说支付系统的接口正确、有效。
性能测试
性能测试(Performance Testing)是在实际或模拟实际的运行环境下,针对软件的非功能特性所进行的测试。常见的测试类型包括压力测试、容量测试、兼容性测试、安全测试、负载测试、可靠性测试等:
- 容量测试是在大数据量的环境下,对系统进行测试,以便发现其中存在的问题
- 压力测试是在强负载,比如说大量并发用户情况下对系统进行测试,来检查系统在峰值使用情况下的操作行为
- 兼容性测试是测试系统在特定的硬件平台上,不同的应用软件之间、不同操作系统平台以及不同网络环境下是不是能够正常的运行
- 安全性测试要确保系统满足一些安全性需求
- 负载测试是通过在资源超负荷情况下测试系统的表现,来发现设计上的错误或者验证系统的负载能力
验收测试
验收测试是在软件产品完成了系统测试之后、产品发布之前进行的软件测试活动, 其目的是验证软件的功能和性能是否能够满足用户所期望的要求。
验收测试一般又包括 α 测试和 β 测试:
- α 测试是软件公司内部的人员来模拟各类用户对 α 版本的产品进行测试
- β 测试是公司组织一些典型的用户,在日常工作中实际使用 β 版本,然后用户来报告异常的情况或提出批评的意见
安装测试
安装测试是系统验收之后,把系统在目标环境中进行安装,来检查是不是能够成功安装并正常地启动使用。
安装测试要考虑目标环境、配置信息以及它对其它应用的影响等一系列的事项:
黑盒测试与白盒测试
黑盒测试与白盒测试是两种不同的测试方法,在前面课程讲解中已经介绍过。
黑盒测试主要是针对界面和功能进行测试,来检查这些功能是不是可以正常使用。白盒测试主要是对程序的内部逻辑或者结构进行仔细地检查,包括逻辑覆盖、基本路径测试等等:
静态测试与动态测试
从测试是否运行程序来区分,又可以分成静态测试和动态测试。
所谓静态测试,就是不实际运行被测软件,而只是对程序代码、界面或者文档进行静态地检查。这种检查可以是非正式的走查,也可以是正式的审查会议。实践证明代码走查是一项非常有效的查找代码问题的方法。
动态测试是指实际运行被测程序,通过输入相应的测试数据来检查实际输出结果和预期结果是否相符。
手工测试与自动化测试
软件测试可以是手工执行也可以是自动化执行。
- 手工测试下,测试人员根据测试大纲中所描述的测试步骤和方法,手工地输入测试数据并记录测试结果。
- 自动化测试是使用软件测试工具或者测试脚本,按照测试人员预先设计好的思路自动地执行。
一般来说手工测试比较适合业务逻辑测试,特别是一些比较复杂的业务逻辑。而自动化测试效率更高而且可重复性强,可以把测试人员从重复的劳动中解脱出来。还有一些手工没有办法执行的测试,比如说要模拟大量用户需要大量数据的一些性能测试,都是要进行自动化来执行。
软件测试文档
在测试之前,需要对测试工作进行计划和准备。
- 测试计划是测试工作的一个指导性文档,它规定测试活动的范围、方法、资源和进度,明确测试内容、任务以及任务的人员分工等
- 测试用例描述了测试环境、输入数据、执行条件或者步骤,以及执行之后的预期结果
- 缺陷报告是记录在测试过程中发生的任何事件,简单地说就是记录软件的缺陷
- 测试报告是对测试的过程和结果进行汇总描述,它的核心内容包括两部分,一个是测试结果汇总,要对所测试软件的质量进行评价。另一个是测试过程的总结,回顾整个测试过程存在的不足,然后进行总结和改进
软件测试计划
上面思维导图列出的是测试计划应该包括的一些主要内容。
测试用例文档
这是一个测试用例的示例文档,测试的是记事本程序的文件/退出菜单。
缺陷报告内容
缺陷报告一定要详细描述缺陷发生的基本环境,可重现的执行步骤、错误现象和简单的问题分析。对于所报告的缺陷要说明严重性和修复的优先级。
缺陷的严重性指缺陷对软件产品使用的影响程度。这里把严重性分成四个等级,并且描述了每一个级别对应的影晌程度:
缺陷的优先级指的是缺陷应该被修复的紧急程度,这里从高到低列出了四个优先级: