软件测试与维护(二):Test Realities
组建测试团队
- 测试团队的任务与责任
- 基本任务:测试计划、测试用例设计、执行测试、评估测试结果、递交测试报告
- 尽早地发现问题,发现软件程序、文档、系统或产品中所有的问题,督促相关人员尽快地解决产品中的缺陷;
- 对问题进行分析、分类总结和跟踪;
- 帮助项目管理人员制定合理的开发计划;
- 帮助改善开发流程、提高产品开发效率;
- 提高程序、文档编写的规范性、易读性、可维护性等
- 测试团队的基本构成
- 测试组长
- 测试配置人员
- 测试设计人员/资深测试工程师
- 一般(初级)测试工程师
- 以项目经理为核心的组织模型
- 优秀软件测试工程师的必备素质
- 沟通能力、技术能力、信心、外交能力和幽默感、耐心、很强的记忆力、怀疑精神、洞察力、适度的好奇心、反向思维和发散思维能力
测试的原则
- 完全测试是不可能的
- 原因:输入量太大、输出结果太多、软件执行路径太多、软件说明书是主观的
- 软件测试是有风险的行为
- 测试无法显示潜伏的软件缺陷 cannot show the absence of bugs
- 找到的软件缺陷越多,就说明软件缺陷越多
- 程序员也有心情不好的时候
- 程序员往往会犯同样的错误
- 某些软件缺陷是冰山一角
- 杀虫剂怪事:软件测试越多,其对测试的免疫力越强
- 并非所有软件缺陷都要修复
- 没有足够的时间
- 不算真正的软件缺陷
- 修复的风险太大
- 不值得修复
- 什么时候才叫缺陷难以说清
- 产品说明书从没有最终版本
- 软件测试员在产品小组中不受欢迎
- 软件测试是一项讲究条理的技术专业 disciplined
- 补充原则
- “质量第一”
- 质量标准
- 第三方测试会更客观,更有效
- 重视文档
软件测试
定义
- 对软件产品进行充分测试,尽早找出其中的缺陷(Bug),并督促相关人员进行解决。
分类
测试类型 |
对象 |
目的 |
依据 |
方法 |
单元测试 |
模块内部程序错误 |
消除局部模块的逻辑和功能上的错误和缺陷 |
详细设计 |
白盒为主,黑盒为辅 |
集成测试 |
模块间的集成和调用关系 |
找出与软件设计相关的程序结构,模块调用关系,模块间借口方面的问题 |
概要设计 |
白盒与黑盒结合 |
系统测试 |
整个系统中的软硬件 |
对整个系统进行一系列的整体、有效性测试 |
需求规格说明书、概要设计 |
黑盒 |
验收测试 |
用户实际环境 |
对整个系统进行整体有效测试 |
需求规格说明书 |
黑盒 |
测试与调试
- 测试发展的初期,测试就是调试,而现在测试是一个系统化工程化的概念,有自己的生命周 期,调试的范畴更小一些。
- 调试不属于测试,是编码阶段的工作,由程序员完成;而测试由测试员或程序员完成
- 测试是为了找出软件中存在的缺陷,并督促相关人员解决,为了提升软件质量; 而调试是 为了解决存在的缺陷。
- 成功的测试发现了错误的症状,从而引起调试的进行。
测试管理体系
相关术语 Some Terminology
精度(precision)和准确(accuracy)
确认(certification)和验证(validation)
- 确认:是否正确地创建了产品
- 验证:是否创建了正确的产品
质量(quality)和可靠性
测试和质量保证(Software Quality Assurance)
- SQA:软件质量保证是通过对软件产品和活动有计划地进行评审和审计来验证软件是否合乎标准的系统工程活动。
- SQA与软件测试的关系
- SQA是管理工作,审查对象是流程,强调以预防为主;测试是技术实施工作,测试对象是产品,主要以事后检查(文档、程序)为主。
- SQA指导测试、监控测试;测试为SQA提供依据,测试是SQA的一个环节、一个手段。
- 软件测试员的目标是尽可能早地找出软件缺陷,并确保缺陷得以修复;软件质量保证人员的主要职责是创建和执行改进软件开发过程并防止软件缺陷发生的标准和方法。