软件测试
1.定义:
使用人工或自动的手段来运行或测试某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。
简单来说,软件测试是为了发现程序中的错误而执行的过程。
2.软件缺陷:
- 软件未达到产品说明书(简称,SPEC)表名的功能。
- 软件出现了产品说明书指明不会出现的错误。
- 软件功能超出了产品说明书指明范围。
- 软件未达到产品说明书虽然未指出但应达到的目标,此条的目的是抓住产品说明书上遗漏之处。
- 软件测试员认为软件难以理解、不易使用、运行速度缓慢,或者最终用户认为不好。
3.软件测试的原则:
- 完全测试程序是不可能的,不可能找出软件的所有缺陷。
- 软件测试是有风险的行为。
- 测试无法显示潜伏的软件缺陷。
- 软件缺陷就像是生活中的寄生虫一样,两者都是成群出现的。
- 软件对测试方法及技术也有免疫力,只有发明新的测试技术或方法。
- 并非所有的软件缺陷都能修复。
- 难以说清的软件缺陷,对其理解不一致。
- 产品说明书的不断变化。
4.软件的版本:
- Alpha版--公司内部测试的版本
- Beta版--对外发布公测
- 发布版--正式发布版本,一般在Beta3之后软件正式发布
5.软件测试分类:
5.1特性分类
- 白盒测试(语句测试、分支测试、路径测试、条件测试,目测)
- 灰盒测试(介于白盒与黑盒之间)
- 黑盒测试(功能测试)
5.2要求分类
- 基本功能测试
- 全面测试
- 基准测试
5.3软件特性
- 功能测试
- 非功能测试
5.4开发过程分类
- 单元测试
- 集成测试
- 系统测试
- 用户验收测试
- 用户验收测试
6.自动化测试:
6.1应用方面
- 回归测试
- 涉及大量不同数据输入的功能测试
- 用手测完成难度较大的测试
6.2步骤
- 编写测试用例
- 分析、验证测试用例
- 对已有测试用例归类,制定自动化计划方案
- 编写自动化测试程序
- 尽量用“数据驱动”来提高测试覆盖率
- 将测试用例编写成自动化测试程序
- 执行测试程序,记录并反馈BUG
- 不断完善自动化测试系统或程序
7.BUG管理流程
7.1通用
- bug登记
- 指派任务
- 修改bug
- 验证
- 关闭
7.2BUG分类
7.2.1按缺陷状态分类
- open:确认提交的缺陷,等待处理
- rejected:不需要修复或不是缺陷
- resolved:缺陷被修复
- reopen:回测后,缺陷没有被修复
- closed:回测后,缺陷被修复,将其关闭
7.2.2按缺陷严重等级分类
- 严重
- 较严重
- 一般
- 轻微
7.2.3按缺陷优先级分类
- 高:立即解决
- 中:正常排队
- 低:可暂缓解决
系统实现与测试过程
1.概念系统实现与测试过程阶段对应于CMMI中技术解决方案(Technical Solution, TS)过程域、验证(Verification, VER)过程域、产品集成(Product Integration, PI)过程域。
2.准备工作
- 搭建开发环境:《开发环境配置表》
- 确定相关规范:《研发所用规范列表》
- 细化项目进度表:《角色职责对照表》、《编码安排表》、《代码检查安排表》
3.产品实现
4.单元测试
- 《单元测试用例列表》
- 《单元测试管理列表》
5.缺陷管理与改错
- 《系统集成计划表》
- 《缺陷统计报告》
6.系统集成与系统测试
- 《集成测试计划表》
- 《集成测试报告》
7.建立产品支持文档
- 《支持文档编写表》
- 《用户操作手册》
- 《系统维护手册》
- 《培训教材》
- 联机帮助
- 系统安装包
系统测试
1.系统测试对应于CMMI中的确认(Validation, VAL)过程域。系统测试的目的是对最终软件系统进行全面的测试,确保最终软件系统满足产品需求并遵循系统设计的标准和规定。
2.系统测试采用黑盒测试的测试方法,主要包括功能性测试、健壮性测试、性能-效率测试、用户界面测试、安全性测试、压力测试、可靠性测试、安装/反安装测试等。