什么是单元测试?
单元测试是针对软件基本组成单元(软件设计的最小单位)来进行正确性检验的测试工作,
单元测试的目的是检测软件模块对《详细设计说明书》的符合程度。
什么是集成测试?
集成测试是在单元测试的基础上,将所有模块按照概要设计要求组装称为子系统或系统,验证组装后功能以及模块间接口是否正确的测试工作;
集成测试的目的是检测软件模块对《概要设计说明书》的符合程度。
什么是系统测试?
系统测试是将已经集成好的系统,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际运行(使用)环境下,对计算机系统进行一系列的测试工作;
系统测试的目的在于通过与《需求规格说明书》作比较,发现软件与系统需求定义不符合或与之矛盾的地方。
单元测试、集成测试和系统测试的比较
测试方法不同
单元测试属于白盒测试范畴;
集成测试属于灰盒测试范畴;
系统测试属于黑盒测试范畴。
考察范围不同
单元测试主要测试单元内部的数据结构、逻辑控制、异常处理等;
集成测试主要测试模块之间的接口和接口数据传递关系,以及模块组合后的整体功能;
系统测试主要测试整个系统相对于需求的符合度。
评估基准不同
单元测试的评估基准主要是逻辑覆盖率;
集成测试的评估基准主要是接口覆盖率;
系统测试的评估基准主要是测试用例对需求规格的覆盖率。
回归测试
软件在测试或其他活动中发现的缺陷经过修改后,应该进行回归测试(Regression Testing)。目的是验证缺陷得到了正确的修复,同时对系统的变更没有影响以前的功能。回归测试可以发生在任何一个阶段,包括单元测试、集成测试和系统测试。
回归测试的策略包括:
完全重复测试
选择性重复测试:覆盖修改法(针对修改的部分)、周边影响法(针对修改部分和修改的扩散影响)、指标达成法(如修改代码100%覆盖,与修改相关接口60%覆盖)
回归测试流程:(适用于单元测试、集成测试和系统测试)
在测试策略制定阶段,制定回归测试策略
确定需要回归测试的版本
回归测试版本发布,按照回归测试策略执行回归测试
回归测试通过,关闭缺陷跟踪单(问题单)
回归测试不通过,缺陷跟踪单返回开发人员,开发人员重新修改问题,再次提交测试人员回归测试
回归测试的自动化
回归测试的自动化包括测试程序的自动运行、自动配置,测试用例的管理和自动输入,测试的自动执行,测试信息与结果的自动采集,测试结果的自动比较和结论的自动输出。
验收测试:
在通过了内部系统测试及软件配置审查之后,就可以开始验收测试。验收测试是以用户为主的测试。
软件开发人员和QA(质量保证)人员也应参加。由用户参加设计测试用例,使用用户界面输入测试数据,并分析测试的输出结果,一般使用生产实践中的实际数据进行测试。
除了考虑软件的功能和性能外,还应对软件的可移植性、兼容性、可维护性、错误的恢复功能进行确认。
验收测试根据合同、《需求规格说明书》或《验收测试计划》对产品进行验收测试。
验收测试的结果有两种情况:
软件功能、性能等质量特性与用户的要求一致,软件可以接受。
软件功能、性能等质量特性与用户的要求有差距,不被用户接受。
验收测试可以分成Alpha测试和Beta测试
α测试
α测试是由一个用户在开发环境下进行的测试,也可以公司内部的用户在模拟实际操作环境下进行的测试。
Alpha和Beta测试,目的是从实际终端用户的使用角度,对软件的功能和性能进行测试,以发现可能只有最终用户才能发现的错误。
α测试针对的是用户的测试 ,不能由程序员和测试员完成。
α测试即为非正式验收测试。
β测试
β测试是由软件的多个用户在实际使用环境下进行的测试,这些用户返回有关错误信息给开发者。
与α测试不同的是,β测试时开发者不在测试现场。因而,β测试是在开发者无法控制的环境下进行的软件现场应用。
只有当α测试达到一定的可靠程度时,才能开始β测试测试。它处在整个测试的最后阶段。同时,产品的所有手册文本也应该在此阶段完全定稿。
测试过程模型
V&V模型是一套切实可行的测试过程的理论依据。
V&V即验证(Verification)和确认(Validation),具体的说,验证是否做了正确的事情,和确认是否把事情做正确了。
验证:
验证指保证软件正确地实现了特定功能的一系列活动。验证过程提供证据表明软件及相关产品与所有生命周期活动的要求(如正确性、完整性、一致性、准确性等)相一致;验证是否满足生命周期过程中的标准,时间和约定;验证为判断每一个生命周期活动是否已经完成,以及是否可以启动其他生命周期活动建立一个准则。
确认:
确认是指保证所生产的软件可追溯到用户需求的一系列活动。确认过程提供证据表明软件是否满足系统需求(指分配给软件的需求),并解决了相应的问题。
Boehm对V&V的解释是:
Verification:“Are we building the product right?”
Validation:“Are we building the right product”
双V内容为:
需求分析-概要设计-详细设计-编码-代码审查-----单元测试计划、设计、实现-集成测试计划、设计、实现-系统测试计划、设计、实现
-----执行单元测试-执行集成测试-执行系统测试
CMM的全称是:Capability Maturity Model
CMM关于过程的要素包括如下几个方面:
角色(Roles)
入口准则(Entry Criteria)
输入(Inputs)
活动(Activites)
输出(Outputs)
出口准则(Exit Criteria)
评审和审计(Reviews and Audits)
可管理和受控的工作产品(Work Products Managed and Controlled)
测量(Measurements)
书面规程(Documented Procedures)
培训(Training)
工具(Tools)
软件测试主要包括软件系统测试、集成测试、单元测试三个大的阶段,每个大阶段包含4个小的阶段,每个小阶段有对应的输入、输出、入口和出口准则。
软件系统测试阶段
系统测试计划阶段、系统测试设计阶段、系统测试实现阶段、系统测试执行阶段。
系统测试计划阶段 | 系统测试设计阶段 | 系统测试实现阶段 | 系统测试执行阶段 | |
输入 |
《软件开发计划》 《软件测试计划》 《需求规格说明书》 |
《需求规格说明书》 《系统测试计划》 |
《需求规格说明书》 《系统测试计划》 《系统测试方案》 |
《系统测试计划》 《系统测试方案》 《系统测试用例》 《系统测试规程》 《系统测试预测试项》 |
输出 | 《系统测试计划》 | 《系统测试方案》 |
《系统测试用例》 《系统测试规程》 《系统测试预测试项》 |
《系统测试预测试报告》 《系统测试报告》 《软件缺陷报告》 |
软件集成测试阶段
集成测试计划阶段 | 集成测试设计阶段 | 集成测试实现阶段 | 集成测试执行阶段 | |
输入 |
《软件测试计划》 《概要设计说明书》 |
《概要设计说明书》 《集成测试计划》 |
《概要设计说明书》 《集成测试计划》 《集成测试方案》 |
《集成测试计划》 《集成测试方案》 《集成测试用例》 《集成测试规程》 |
输出 | 《集成测试计划》 | 《集成测试方案》 |
《集成测试用例》 《集成测试规程》 |
《集成测试报告》 《软件缺陷报告》 |
软件单元测试阶段
单元测试计划阶段 | 单元测试设计阶段 | 单元测试实现阶段 | 单元测试执行阶段 | |
输入 |
《软件测试计划》 《详细设计说明书》 |
《详细设计说明书》 《单元测试计划》 |
《详细设计说明书》 《单元测试计划》 《单元测试方案》 |
《单元测试计划》 《单元测试方案》 《单元测试用例》 《单元测试规程》 |
输出 | 《单元测试计划》 | 《单元测试方案》 |
《单元测试用例》 《单元测试规程》 |
《单元测试报告》 《软件缺陷报告》 |