一、前言
1.1 软件测试的目的
- 测试的目的就是发现软件中的各种缺陷。
- 测试只能证明软件存在缺陷,不能证明软件不存在缺陷。
- 测试可以使软件中缺陷降低到一定程度,而不是彻底消灭。
- 以较少的用例、时间和人力找出软件中的各种错误和缺陷,以确保软件的质量。
1.2 软件测试的原则
- Good-enough: 一种权衡投入/产出比的原则。
- 保证测试的覆盖程度,但穷举测试是不可能的。
- 所有的测试都应追溯到用户需求。
- 越早测试越好,测试过程与开发过程应是相结合的。
- 测试的规模由小而大,从单元测试到系统测试。
- 为了尽可能地发现错误,应该由独立的第三方来测试。
- 不能为了便于测试擅自修改程序。
- 既应该测试软件该做什么,也应该测试软件不该做什么。
二、准备工作
2.1 测试准备
- 在测试工作之前,首先要拿到项目的设计文档、UI/UE、需求文档等资料,并与开发人员交流,了解熟悉项目的设计思想、设计方法和设计方案,以此来确定测试范围与测试方法。
2.2 工作内容与职责
- 估算项目测试的工作量及时间进度
- 安排测试进度与测试人员,制定测试计划
- 准备文档资料
- 需求分析文档与设计文档的评审,提交评审结果
- 根据项目需求及性质,决定测试过程所使用的测试技术、测试方法及测试工具
- 搭建测试环境
- 编写测试用例
- 编写测试程序
- 评审测试用例
- 根据测试用例进行测试并记录测试过程
- 记录测试BUG
- 汇总提交测试记录、测试BUG
- 根据测试记录汇总并编排测试文档
- 管理与归档各类测试文档
三、基本测试过程
3.1 测试流程
-
对需要测试的任何产品,都需要有一个测试的进入标准、测试执行的开始标准、测试执行的结束标准以及测试执行好坏的评价标准。其过程主要包括测试的进入、执行、报告、分析、结束。测试的进入往往是在需求分析即将结束时进行的,这样测试过程与开发过程基本同步,有助于尽早发现系统设计的问题;这样做的另一好处还在于测试准备充分,开发结束可立即进入测试阶段,有助于缩短项目进度。测试执行前的准备工作对于测试来说是至关重要的,这些准备工作主要包括从系统需求分析报告和概要设计文档里面获取产品信息及产品功能特点,并对此进行相关的分析、总结,然后进行测试设计:包括选择测试方法,确定测试内容、测试工具,结合产品特点确定是否进行性能、负载、压力、安全等方面内容的测试;制定测试计划;制定详细测试执行计划及设计测试案例。
下图是测试过程的结构层次图,我们可以看到整个过程中,测试和开发之间的关系以及对应的测试过程。
3.2 测试方法设计
- 根据测试需求,在了解熟悉被测试项目的主要功能情况后,有针对性的对测试任务进行具体的测试方法设计,让测试有效而简洁,尽量避免重复劳动,以此来提高效率。
- 测试的方法和种类有很多,根据实际被测试项目的测试需求来选择需要的、适用的测试方式,以及测试工具。
- 测试过程按4个阶段进行,即单元测试、组装测试、确认测试和系统测试。
- 单元测试(白盒、自动、静态),集中对用源代码实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能。在单元测试时,测试者需要依据详细设计说明书和源程序清单,了解该模块的I/O条件和模块的逻辑结构,主要采用白盒测试的测试用例,辅之以黑盒测试的测试用例,使之对任何合理的输入和不合理的输入,都能鉴别和响应。
- 集成测试(白盒、黑盒、自动、静态),把已测试过的模块组装起来,主要对与设计相关的软件体系结构的构造进行测试。
- 系统测试(黑盒、自动、手工),把已经经过确认的软件纳入实际运行环境中,与其它系统成份组合在一起进行测试。
- 用户验收/确认测试(黑盒、自动、手工),是要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确。
3.3 测试计划
- 在执行测试之前,需规划好具体测试过程,编写测试计划,测试计划需结合测试资源,估算测试预期进度,安排好测试人员以及风险管理;确定测试的范围和测试数据的生成;指出测试方法和测试需要用到的工具及工具的开发;测试完成的标准以及对测试的影响因素的考虑。
3.4 评审
- 制定好测试计划和方案之后,以文字形式将测试方法、计划、方案、记录下来,并提交给管理人员,与开发人员一起交流讨论,测试设计是否合理可行,测试设计被确认后,开始执行测试
3.5 测试用例
- 测试用例的设计是整个软件测试工作的核心,反映对被测试对象的质量要求,决定对测试对象的质量评估。
- 测试用例控制着软件测试的执行步骤,是对测试方案中每个测试项的进一步实例化。根据被测试的项目的界面和功能设计测试用例,不放过任何细节地进行模块分类,每个具体测试用例都将包括下列详细信息:版本号、模块名称、用例编号、用例名称、用例级别、预知条件、验证步骤、期望结果(含判断标准)、测试结果、测试时间、测试人员等。避免冗长狭隘的视角,避免交叉,最好的测试覆盖。记录每一个测试用例执行结果,标记、整理总结、分析缺陷。
3.6 环境准备
- 根据测试计划搭建测试环境,选择并安装所需测试工具、测试程序等。
3.7 测试执行
- 按照测试计划和测试案例执行测试过程,寻找被测试对象的缺陷。
3.8 缺陷分析与汇报
- 按照测试用例执行测试后,将实际输出情况与预期输出情况不符,以及发现意外的缺陷等测试结果记录下来,并编号,分析并记录缺陷的具体情况、所属模块、缺陷严重级别等相关信息,并将结果汇报给研发人员进行修改完善。
3.9 回归测试
- 在原测试环境下,将研发人员修复缺陷后的项目进行验证测试,再次检测修复后的项目是否还在存在该问题,并记录对应的结果。
3.10 随机、异常测试
- 完成一般的测试后,设计随机测试用例,模拟用户进行非正常流程操作,以此来发现正常操作途径难以发现的隐藏问题,并记录测试结果,以及将测试发现的缺陷记录并提交给研发人员进行修复。
3.11 测试报告
- 汇总测试数据,统计分析测试记录,根据统计数据评估被测试项目的质量,并以文字形式记录成测试报告文档,提交审核测试报告。