一、软件测试
(一)软件测试基本概念:使用人工或自动的手段来运行或测试某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别,是帮助识别开发完成的计算机软件的正确度、完全度和质量的过程,是软件质量保证的重要子域。
(二)软件测试原则
为了更好地进行软件测试,提高测试的整体效率,降低项目的整体成本,在测试过程中要遵循以下的几点原则:
- 完全测试程序是不可能的,不可能找出软件的所有缺陷
- 软件测试是有风险的,要学会把无尽的可能减少到可以控制的范围,去粗存精
- 测试无法展示潜伏的软件缺陷
- 软件缺陷通常成群出现
- 软件对测试方法及技术也有免疫力
- 并非所有的缺陷都能修复
- 小组成员对于缺陷的理解不一致
- 产品说明书不断变化,软件变得越复杂越多功能化
- 软件测试员在小组中不受欢迎
(三)软件版本
Alpha版:公司内部测试的版本
Beta版:对外发布公测的版本
发布版:正式发布版本
(四)软件测试分类
1.按软件测试特性可分为:
白盒测试:测试人员直接在软件的源程序上进行测试、修改、复测,分为语句测试、分支测试、路径测试等。
黑盒测试:主要是功能测试,从外部测试软件的各项功能及性能。
灰盒测试:介于白黑两者之间,是二者结合的测试方法。
2.按软件开发过程可以分为:单元测试、集成测试、系统测试、用户验收测试及回归测试。
回归测试V模型图如下:
3.按软件测试要求可分为:基本功能测试、全面测试、基准测试、功能测试和非功能测试。
4.当回归测试或者手测完成难度较大时,优先采用自动化测试,即使用工具来进行测试。这种方法优点很多,如能为日后自动化测试节省大量资源、没有时间限制、可以反复执行、具有较高的功能测试覆盖率等。当然缺点也是显而易见,使用性测试和兼容性测试不能采用自动化测试、没有创造性、受具体项目资源限制和时间人力限制等。
5.自动化测试步骤
编写测试用例,分析验证测试用例,对已有的测试用例归类,制定测试自动化计划方案,编写自动化测试程序,尽量用“数据驱动”提高测试覆盖率,将测试用例编写成自动化测试程序,执行测试程序、记录反馈bug,不断完善自动化测试系统或程序。
(五)BUG流程管理
- 通用的bug管理流程
Bug登记--测试工程师,初始
指派任务--项目经理,激活
修改bug--开发工程师,修改
验证--测试工程师,通过则继续,否则状态为再激活
关闭--测试工程师
2.bug分类
按缺陷状态分类:open,rejected,resolved,reopen,close
按缺陷严重级分类:严重,较严重,一般,轻微
按缺陷优先级分类:高,中,低
二、系统实现与测试过程
(一)简述
系统实现阶段开始的时机,一般有以下的约定:系统设计阶段的《数据库设计》、《模块设计》、《用户界面设计》已完成,且通过同行评审后才开始系统实现过程。整个实现及测试过程的活动可以分为:准备工作、产品实现、单元测试、缺陷管理与改错、系统集成及集成测试、建立产品支持文档。具体操作流程如下图
(二)编码流程
- 工作准备:更新项目进度表,评审该计划,确定相关规范,搭建开发环境
- 编码活动:开发人员根据《编程计划》、《数据库设计》、《模块设计》、《用户界面设计》、《编码规范》编写模块代码,在完成每个模块时进行必要的自查和测试,发现bug记录下来。
- 编码中常见问题:如何避免开发阻塞,换用更快的计算机还是开发更快的算法等
(三)测试流程
- 单元测试流程
根据开发进展情况,安排测试人员或系统分析人员编写《单元测试管理列表》或直接使用测试相关测试工具来编写,项目经理审批《单元测试管理表》,指定测试人员进行单元测试,
测试人员进行相应的单元测试,产生单元测试报告
2.集成测试
当《实现与测试计划》中涉及的单元均通过单元测试,开始集成测试。针对本次集成范围、集成顺序、集成环境等制定《集成测试策略》,建立集成环境进行集成测试,记录结果。
(四)缺陷管理与改错原则
- 记录缺陷
- 及时清除缺陷
- 消除缺陷后进行回归测试
(五)建立产品支持文档
文档人员在开发人员的协助下编制《用户操作手册》、《系统维护手册》、《培训教材》、联机帮助、系统安装包等。
三、制定测试方案与编写测试用例
(一)测试资料收集与整理
- 通用信息:一般信息,技术信息
- 被测软件的类别及构成
- 被测软件的用户界面
(二)检查产品说明书
- 高级审查步骤:设身处地为客户着想,研究现有的标准和规范惯用语和约定等,审查和测试同类软件
- 产品说明书的8个属性:完整,准确,精确,一致,贴切,合理,代码无关,可测试
(三)测试方案的制定
测试方案是软件测试的总体规划,包括测试的方针、策略、系统建立等,制定时一般考虑四个因素。
- 软件的现状及将来可能的发展
- 现有的资源及将来可能获得的补充资源
- 风险分析
- 制定测试的策略,确定采用的测试方法
(四)测试计划书的编写及要素
- 测试计划书衡量标准
有效达到最终目的,引导整个测试软件测试工作正常运行
列举的数据准确
提供的方法使测试高效运行
提供明确的测试目标、测试策略、具体步骤等
强调测试重点,重视测试的基本覆盖率
尽可能利用现有资源
有一定的灵活性
2.测试计划内容
测试计划书的文件名及版本号
基本情况介绍
测试的具体目标
具体执行的测试类型
测试通过的判断准则
测试用例等
(五)测试用例编写
- 单元测试用例编写:用例编号、被测对象,输入数据,期望输出
- 集成测试用例编写:用例编号、被测对象、场景,输入数据,测试操作步骤,期望输出
- 系统测试用例编写:包括对外的接口测试用例、系统性能测试用例等15种类型
四、系统测试
(一)系统测试简述
系统测试的目的是对最终软件系统进行全面测试,确保最终软件系统满足产品需求并且遵循系统设计的标准和规定。采用黑盒测试方法进行测试,主要内容有功能性测试、健壮性测试等。
制定测试计划和设计测试用例活动的准则是:产品需求和系统设计文档完成以后,系统测试小组可以提前开始制定测试计划和设计测试用例,提高测试效率。
(二)系统测试活动内容
- 系统测试内容
用户层,主要面向产品最终的使用操作者的测试
应用层,针对产品应用的测试
功能层,针对产品具体功能实现的测试
子系统层,针对产品内部结构性能的测试
协议/指标层,针对系统支持的协议、指标的测试
2.制定系统测试计划
主要内容有:测试目标、测试范围、测试方法、测试环境与辅助工具、测试完成准则、人员与任务表。
3.设计测试用例
4.执行系统测试
系统测试人员依据《系统测试计划》和《系统测试用例》执行系统测试,并对测试过程中发现的缺陷进行跟踪,及时解决验证。
5.两个结束准则
对于非严格系统可以采用“基于测试用例”的准则,对于严格系统,应当采用“基于缺陷密度”的准则。