软件测试读书笔记
一、软件测试简介
软件测试概念:
早期的软件测试是为了发现程序中的错误而执行的过程,将测试等同于“调试”,目的是为了纠正软件中已经知道的故障,早期的工作中,对测试的投入也较少。
后来对软件测试做出了进一步定义:“测试是为了度量和提高被测软件的质量,对测试件进行工程设计、实施和维护的整个周期过程。
软件缺陷:
软件未达到产品说明书标明的功能
软件出现了产品说明书不会出现的错误
软件功能超出产品说明书指明范围
软件未达到产品说明书虽然未指出当应达到的目标
软件测试人员认为软件难以理解、不易使用、运行速度缓慢、或者最终用户认为不好
产生缺陷的原因
软件模型或业务模型制定不正确,SPEC本身并不明确或有错误,没有很好地描述要开发的软件
软件庞大,功能十分复杂
编程过程出错,此类原因较容易纠正
个别功能要求改变而影响到其他部分
与要开发的软件对接的第三方软件有缺陷
人为因素(项目组管理方法、项目进度要求时间紧等情况)
软件测试的原则
不可能做到完全测试程序
软件测试有风险,软件测试人员不能发现潜伏的风险,所以软件测试人员要力求把风险降到最低
软件缺陷都是成群出现的,与编程人员的编码习惯相关
一个软件缺陷可以带来很严重的后果
并非所有的软件缺陷都能修复
产品说明书随着社会的要求以及用户的需求不断变化
测试人员自身的心情状态影响着软件测试工作的开展
软件测试特性分类
白盒测试:测试人员直接在源程序的基础上进行测试、修改、复测(要求测试工程师对软件深入了解);
黑盒测试:测试人员不必深入了解软件内部设计,只需要从一个用户的角度根据产品说明书来进行软件测试;
灰盒测试:介于黑白之间,要求测试工程师对软件结构有一定了解但不需要达到白盒测试的深度
软件测试要求分类
基本功能测试:只对软件的关键功能做测试
全面测试:对全部功能进行测试
基准测试:在不同计算机上执行测试并加以比较
功能测试:等价区间测试
非功能测试
自动化测试
节省时间和资源
没有时间限制
可反复进行
保证测试执行过程中的一致性及准确性
有较高的功能测试覆盖率
模拟操作进行压力测试
BUG管理流程
角色分工:
PM(项目管理经理):定义需求,书写每个功能特性的书写文档(SPEC)
Dev(软件开发工程师):写代码实现SPEC
Tester(软件测试工程师):测试产品是否符合PM定义的SPEC
管理流程:
BUG登记:测试工程师,初始
指派任务:项目经理,激活
修改BUG:开发工程师,修改
验证:测试工程师,通过则转下一步,否则回第2步,状态为再激活
关闭:测试工程师
BUG的分类
按缺陷状态分
Open:确认提交的缺陷,等待处理
Rejected:不需要修复或不是缺陷
Resolved:缺陷被修复
Reopen:回测后,缺陷没有被修复
Closed:回测后,缺陷被修复,将其关闭
按缺陷严重级分类
按缺陷优先级分类
高:理解解决
中:正常排队,产品发布前修复
低:可暂缓解决,不修复也能发布
二、系统实现与测试过程
编码的工作准备
细化并更新项目进度表
评审计划
确定相关规范
描述开发环境,搭建开发环境
编码常见问题解决方法
识别有重大影响的任务加强跟踪避免出现开发堵塞
公司应该选择业内推荐语言以及擅长的语言编写程序
编程过程中少用技巧
测试流程
单元测试:分模块测试保证各模块单元无误
集成测试:将已经测试的单元进行组合来测试它们之间的接口
熟悉代码规范
排版规定
注释
标识符命名
可读性
变量、结构
函数、过程
程序效率
三、制定测试方案及编写测试用例
收集与整理测试资料
检查产品规格说明书
修订测试方案
测试计划书的编写及要素
测试计划书的文件名和版本号
基本情况介绍
测试的具体目标
具体执行的测试用例
测试通过的判断标准
测试准备工作及测试结果处理
测试工作涉及的相关事项
测试人力资源分配
测试进度列表
测试过程中遇到的偶然事件及危机处理
编写测试用例
四、系统测试
目的:对最终软件进行全面的测试,确保最终软件系统满足产品需求并且遵循一定的设计标准和规定
内容:
用户层:面向最终使用操作者的测试
应用层:针对产品的测试重点在系统应用的角度模拟实际应用环境,对系统的兼容性、可靠性、性能进行测试
功能层:针对产品具体功能实现的测试
子系统层:针对产品内部结构性能的测试
制定系统测试计划
设计测试用例
执行系统测试