文章目录
- 软件测试基础
- 2.1 软件测试模型
- 2.2 确认和验证
- 2.3 软件测试分类
- 2.4软件测试流程概述
软件测试基础
2.1 软件测试模型
2.2 确认和验证
软件确认(Validation)和验证(Verification),简称V&V或V2。
确认是指在软件开发过程结束时对软件进行评价,以确定它是否和软件需求一致的过程。在软件产品开发完成以后,为了对它在功能、性能、接口以及限制条件等方面是否满足需求做出切实的评价,需要在开发的初期,在软件需求规格说明书中明确地规定确认的标准。
验证是指确定软件开发周期中的一个给定的产品是否满足了在上一阶段确立的需求的过程。也就是说,验证是要决定软件开发的每个阶段、每个步骤的产品是否正确无误,并于前面的开发阶段和开发步骤的产品相一致。验证工作意味着在软件开发过程中开展的一系列活动,旨在确保能够正确无误地实现软件的需求。
确认和验证既有联系,也有区别。确认要回答的是:正在开发一个正确、无误的软件产品吗?而验证要回答的是:正开发的软件产品时正确、无误的吗?
区别:
确认表明要与规定的需求进行比较,判断是否满足要求,所关心的是该软件产品的价值;
而验证关心的是确保软件模块或功能内在的正确性和一致性。
验证+确认=测试。
2.3 软件测试分类
- 按是否需要执行被测软件的角度分类
- 静态测试:不利用计算机运行待测程序而应用其他手段实现测试目的,如代码审查;
- 动态测试:通过运行被测试软件来达到目的。
- 按开发阶段分类
- 单元测试。单元测试又称模块测试,是对软件中的基本组成单位进行的测试,如一个模块、一个过程等。单元测试的主要方法有控制流测试、数据流测试、排错测试、分域测试等。
- 集成测试。集成测试也称为组装测试,是在软件系统集成过程中所进行的测试,其主要目的是检查软件单位之间的接口是否正确。
- 确认测试。确认测试又称为有效性测试。确认测试的目的是检查已实现的软件系统是否满足需求规格说明书中规定的各种需求,以及软件配置是否完全、正确。
- 系统测试。系统测试是对已经集成好的软件系统进行彻底的测试,以验证软件系统的正确性和性能等是否满足其规约所指定的要求。
- 验收测试。验收测试旨在向软件的购买者展示该软件能够满足其用户的需求,它的测试数据通常是系统测试的测试数据的子集。
- 按测试实施组织分类
- Alpha测试。一般由最终用户或其他人员完成,不能由程序员或测试人员完成。
- Beta测试。一般由最终用户或其他人员完成,不能由程序员或测试人员完成。
- 第三方测试。第三方测试是指不同于开发方和用户方的组织进行的测试。通常模拟用户的真实操作环境,对软件进行确认测试。第三方测试有利于客观、公正地测试和评价软件。
- 按测试方法分类
- 白盒测试。白盒测试也称为结构测试或逻辑驱动测试,是指基于一个应用代码的内部逻辑知识,即基于覆盖全部代码、分支、路径、条件的测试。白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。
- 黑盒测试。黑盒测试是指不基于内部设计和代码的任何知识,而基于需求和功能性的测试。黑盒测试的方法主要有等价类划分、边界值分析、因果图、错误推荐等,主要用于软件确认测试。
- 灰盒测试。它关注输出相对于输入的正确性,同时也关注内部表现,通过一些表征性的现象、事件、标志来判断内部的运行状态。当进行灰盒测试时,要考虑用户端、特定的系统知识和操作环境,要在系统组件的协同环境中评价应用软件的设计。
2.4软件测试流程概述
- 软件开发流程
以V模型为例,介绍软件开发生命周期
(1)需求分析阶段。需求分析人员进行需求获取和分析,这个阶段的输出是需求规格说明书。在这个阶段,测试工程师就可以开始制定系统测试计划,并且根据需求规格说明书着手进行系统测试说明的编写。
(2)概要设计阶段。设计人员根据需求规格说明书进行概要设计,这个阶段的输出是概要设计说明书,测试工程师开始制定集成测试计划,并且根据概要设计说明书编写集成测试说明。
(3)详细设计阶段。在概要设计的基础上进行详细设计,输出是详细设计说明书,测试人员要制定单元测试计划,并根据详细设计说明书编写单元测试说明。
(4)编码阶段。开发人员根据详细设计说明书进行编码。
(5)单元测试阶段。测试工程师根据单元测试说明对编码人员编写的代码进行单元测试。
(6)集成测试阶段。测试工程师根据集成测试说明对通过单元测试的单元进行集成测试。
(7)确认和系统测试阶段。在集成测试完成后,测试工程师根据测试说明对集成的软件进行确认和系统测试。 - 软件测试流程
科学的软件测试过程是软件测试人员在项目开发初始融入到项目中,了解用户需求和设计开发工作。在测试阶段开始前,拟定软件测试计划,编制软件测试大纲,设计和生成测试用例,在测试过程中,有效地进行缺陷和问题跟踪,在测试结束后,生成软件测试报告和测试评估报告。
科学的软件测试流程主要包括:
(1)测试阶段的划分;
(2)测试周期的制定;
(3)测试工作的质量。
一个好的测试过程的属性包括:
(1)整个测试过程被书面化;
(2)测试过程是灵活的、可变的;
(3)每个人都同意遵循这个测试过程;
(4)测试过程包含度量,该度量用于测量测试过程的有效性,也是修改测试过程和测试改进的基础。
(5)测试过程要被主动管理。
测试阶段的划分:
测试周期细分: