软件测试的生命周期
软件测试有以下的生命周期:
需求分析, 测试计划, 测试设计/测试开发, 测试执行, 测试评估
- 需求分析: 分析需求是否正确, 是否完整
- 测试计划: 制定测试人员, 时间, 模块.
- 测试设计/测试开发: 设计测试用例, 开发测试工具
- 测试执行: 执行测试用例
- 测试评估: 测试人员生成测试报告
测试报告中要包括测试时间, 测试人员, 开发人员, 开发时间, 测试用例, bug描述, 需求文档和技术文档.
Bug
1. Bug描述
对于一个Bug的描述应该包含以下几点:
- 发现问题的版本
应该写明发现Bug的项目版本 - 发现问题的环境
对于Web项目, 应该标明浏览器版本, 操作系统版本等信息. 对于app项目, 标明机型, 分辨率, 操作系统版本. - 错误复现步骤
要详细介绍错误复现的步骤, 便于开发人员进行复现定位问题. - 预期结果
根据用户需求, 写明程序正常情况下的预期结果. - 错误结果
根据测试结果, 写明程序执行时的实际结果(存在问题) - 故障分类
根据错误进行故障分类, 故障可以分为功能故障, 界面故障, 兼容性故障等. - 故障优先级
根据故障的影响程度给故障设置优先级, 影响严重的优先级高 - 多个Bug不能合并到一起
如果没有明确多个Bug是由同一段代码引起的, 不能将多个Bug合并到一起.
Bug描述如下:
故障发现版本:
故障类别:界面故障
故障优先级:中
故障标题:
故障描述:
测试环境:
测试步骤:
预期结果:
实际结果:
附件:上传截图
2. Bug级别
不同公司Bug级别定义的规范不一样. 具体的Bug级别定义要看公司规范. 这里只是一个样例:
- 崩溃
造成系统崩溃, 死机, 发生死锁, 无法连接数据库, 主要功能丧失等重大故障, 严重影响测试工作, 应立刻停止测试, 打回代码给开发人员. - 严重
部分功能丧失, 数据库数据调用错误, 模块无法启动, 程序重启, 自动退出, 安全问, 稳定性问题等. - 一般
功能没有完全实现但不影响使用, 界面响应时间过长, 数据库表中字段过多等 - 次要
界面, 性能问题. 如出现了错别字, 界面格式不规范, 提示语丢失, 用户体验感不好, 优化性能的方案等.
3. Bug生命周期
new : 测试人员发现问题
open: 测试人员将问题指派给开发人员
rejected: 开发人员否认问题.
delay: 延迟修复
fixed: 开发人员已修复问题
reopen: 打回
close: 问题已修复
开发与测试间的争执
当开发人员与测试人员之间产生了争执, 不应该互相推卸责任, 要以解决问题作为第一要义.
- 要始终站在用户的角度, 确保对用户需求的理解没有问题, 然后检查操作, 确保操作没有问题.
- 之后和开发人员沟通, 并给出开发人员解决方案.
- 第三方会议: 在会议上说明问题出现的原因, 详细描述问题是什么, 并提出自己的解决方案. 根据会后的结果来明确Bug的状态(待解决或误判).
如何上手测试工作
作为一个刚进入测试团队的新人, 在第一次工作前需要做很多的准备:
- 测试前: 熟悉项目所使用的测试管理工具, 配置管理工具, 获取对应的登录地址; 同时要阅读已有的测试方案; 阅读旧的Bug库, 了解公司的规范要求(编码规范, bug级别提交规范, 用例执行规范, 测试工具使用规范等 ), 还要注意测试任务需不需要特殊的测试资源.
- 充分理解用户需求. 阅读有关项目的文档, 如需求文档, 技术文档, 用户手册等. 也要尽可能多的参加相关会议. 了解项目的背景, 团队人员.
- 制定测试计划. 了解测试的模块, 测试的时间周期
- 执行测试任务. 要注意开发人员修复bug后必须进行检验, 查看bug是否完全修复.
- 项目上线后要做好后期的维护, 出现问题时以用户需求为第一要义, 协助开发人员定位并解决问题.
测试流程
- 打开待测试系统
- 打开测试管理工具用例模块, 执行测试用例.
- 发现bug, 进行复现并记录复现步骤
- 记录bug
- 与开发人员沟通bug
- 验证开发人员修复bug后的程序
- 确认测试完成
- 编写测试报告
注意在执行测试时, 不能拘泥于测试用例或已有的测试方法, 要根据自己的直觉进行随机测试, 有时可以发现测试用例无法发现的缺陷. 同时要多总结测试方法和测试故障模型.