• 1. 软件测试概述肖睿 rui.xiao@jb-aptech.com.cn
  • 2. 内容软件测试 定义、目的和作用 衡量标准 发展方向 原则和经验 软件测试要素 测试技术 测试过程 测试人员
  • 3. 软件测试概况 定义:为了发现程序的错误而执行程序的过程 软件测试是SQA的重要手段,属于软件工程领域 目前状况 软件测试的实践性大于理论性 软件测试理论体系尚不成熟 软件测试工具尚不成熟 软件测试效果对于个人的依赖性比较大
  • 4. 软件测试目的 为了寻找错误,并尽可能地为修正错误提供更多的信息 为了证明软件有错误,而不证明软件没有错误 作用 发现并管理缺陷 度量质量 评价工作效率和效果 预期项目风险
  • 5. 内容软件测试 定义、目的和作用 衡量标准 发展方向 原则和经验 软件测试要素 测试技术 测试过程 测试人员
  • 6. 软件测试衡量标准 多 能够找到尽可能多的、以至于所有的BUG 快 能够尽可能早地发现最严重的BUG 好 找到的BUG是关键的、用户最关心的 找到BUG后能够重现找到的BUG,并为修正BUG提供尽可能多的信息 省 能够用最少的时间、人力和资源发现BUG 测试的过程和数据可以重用
  • 7. 内容软件测试 定义、目的和作用 衡量标准 发展方向 原则和经验 软件测试要素 测试技术 测试过程 测试人员
  • 8. 软件测试发展方向 验证技术 形式化数学方法,用于关键应用小程序 静态测试 WALKTHROUGH/INSPECTION/REVIEW 走查/审查/评审 动态测试 选择测试策略 设计测试方式和测试用例 执行测试并评估和跟踪测试结果 自动测试 测试管理和测试执行中都有可以自动测试的地方 选择需要自动测试的地方 注重ROI
  • 9. 内容软件测试 定义、目的和作用 衡量标准 发展方向 原则和经验 软件测试要素 测试技术 测试过程 测试人员
  • 10. 软件测试原则 1、测试应该基于用户需求。 2、测试设计是关键 测试时间和资源是有限的 测试到所有情况是不可能的。 避免冗余的测试。 3、应该尽早开始测试 尽早制定测试计划。 测试从模块级开始。
  • 11. 软件测试经验 1、心理素质最重要 开发人员 我不会犯错---任何人都可能犯错 这种错误不能算作错误---质量是由用户来评价的 发现我的错误是对我工作的否定---是对我的工作的帮助 测试人员 责任心不够,反正测试是不可能发现所有错误的---职业教育+激励措施 没有创造性、枯燥---总结经验,培养敏锐度,提升个人价值和权威 技术比开发人员差,自信心不足---代表用户,决定成功的是用户满意
  • 12. 软件测试经验 2、测试前必须明确预期的输出结果 否则实际的输出结果很可能成为检验的标准,测试失去意义 3、必须检查每一个实际输出结果 很可笑,但是却是事实:不认真检查输出结果
  • 13. 软件测试经验 4、一段程序中存在错误的概率与这段程序中已经发现的错误数成正比 编码规范、需求理解、技术能力、内部耦合性都会导致这种“虫子窝“现象 5、可能的情况下,避免测试自己的软件 发现不了思路错误 发现不了环境错误 心理因素导致测试可能不够彻底和全面
  • 14. 软件测试经验 6、依照用户的要求、配置环境和使用习惯进行测试并评价结果 7、测试设计决定了测试的有效性和效率,测试工具只能提高测试效率 8、注意保留测试设计,并注意测试设计的可重用性和说明文档
  • 15. 软件测试经验 9、测试活动要有组织、有计划、有选择 穷举测试是不可能的 不充分的测试是不负责任,过度的测试是浪费资源 计划的活动提高效率 10、不要放弃随机测试的方法 测试的不成熟性和艺术性
  • 16. 内容软件测试 定义、目的和作用 衡量标准 发展方向 原则和经验 软件测试要素 测试技术 测试过程 测试人员
  • 17. 测试技术不实际运行程序,而是通过检查和阅读等手段来发现错误并评估代码质量的软件测试技术。也称为静态分析技术。实际运行程序,并通过观察程序运行的实际结果来发现错误的软件测试技术。在不知道程序内部结构,只知道程序规格的情况下采用的测试技术或策略。在知道程序内部结构的情况下采用的测试技术或策略。开发组内部进行的,采用讲解、讨论和模拟运行的方式进行的查找错误的活动。开发组内部进行的,采用讲解、提问并使用Checklist方式进行的查找错误的活动。一般有正式的计划、流程和结果报告。开发组、测试组和相关人员(QA、产品经理等)联合进行的,采用讲解、提问并使用Checklist方式进行的查找错误的活动。一般有正式的计划、流程和结果报告。针对要求的程序功能,按照规范的流程进行的测试。针对要求的程序功能以外的其他要求,包括性能、安全、配置、负载等指标,按照规范的流程进行的测试。针对要求的程序功能、性能、安全、配置、负载等指标,基于破坏目的、按照经验进行的随机测试。程序修改或者版本更新以后,为了确保以前正确的功能和其他指标仍旧正确,而重新进行的测试。在测试过程中,选择足够的测试用例,使得每一个可执行语句至少被执行一次。在测试过程中,选择足够的测试用例,使得程序中的每一个分支判断的每一种可能结果都至少被执行一次。在测试过程中,选择足够的测试用例,使得程序中的每一条可能执行的路径都至少执行一次。
  • 18. 内容软件测试 定义、目的和作用 衡量标准 发展方向 原则和经验 软件测试要素 测试技术 测试过程 测试人员
  • 19. 测试过程规格定义设计编码系统测试集成测试单元测试用户需求验收测试回 归 测 试配置管理缺陷跟踪
  • 20. 测试过程单元测试:Unit Testing 目标: 检验程序最小单元有无错误 接口、数据结构、边界、覆盖、逻辑 检验单元编码与设计是否吻合 时机: 编码完成后,首先要实施的测试 方法: 静态测试 白盒测试 责任: 开发工程师
  • 21. 测试过程集成测试:Integration Testing 目标: 检验组成系统的模块接口有无错误 代码实现的系统设计与需求定义是否吻合 时机: 主要的单元测试完成后,经常与单元测试同步进行 方法: 黑盒测试 责任: 开发工程师 测试工程师
  • 22. 测试过程系统测试:System Testing 目标: 检验组成整个系统的代码、以及系统的软硬件配合有无错误 代码实现的系统与用户需求是否吻合 检验系统的文档等各种是否完整、有效 模拟验收测试的要求,检查系统是否符合用户的验收标准 时机: 多数集成测试完成后 方法: 黑盒测试 责任: 测试工程师
  • 23. 测试过程系统测试:System Testing 稳定期测试 目标: 度量是否可以结束测试 时机: 传统的系统测试完成后 方法: 黑盒测试 责任: 测试工程师
  • 24. 测试过程验收测试:Acceptance Testing 目标: 使客户验收签字 系统是否符合事先约定的验收标准 时机: 系统测试完成后,在项目组看来开发和测试工作已经全部完成,可以交付使用 方法: 黑盒测试 责任: 产品经理或其他高级经理 开发工程师 测试工程师 用户
  • 25. 测试过程回归测试:Regression Testing 目标: 验证程序修改或者版本更新以后,以前正确的功能和其他指标仍旧正确。 时机: 每次错误修改之后,或者版本更新之后 方法: 白盒测试/黑盒测试 责任: 开发工程师 测试工程师
  • 26. 测试过程缺陷跟踪:Defect Tracing 目标: 确保所有发现的错误被正确记录、分发、评估、关闭、统计 时机: 从错误发现开始到错误关闭为止,每次错误状态修改之后 方法: 缺陷跟踪系统 责任: 开发工程师 测试工程师 测试经理 用户
  • 27. 测试过程测试粒度白盒测试黑盒测试单元系统验收集成
  • 28. 测试过程规格定义设计编码系统测试集成测试单元测试用户需求验收测试回 归 测 试配置管理缺陷跟踪
  • 29. 内容软件测试 定义、目的和作用 衡量标准 发展方向 原则和经验 软件测试要素 测试技术 测试过程 测试人员
  • 30. 测试人员职业素质要求—包括开发人员和测试人员 1、责任心 包括坚持原则 2、怀疑精神和学习能力 包括好奇 3、沟通能力 用户、项目组 4、专注力 至少需要耐心和记忆力 5、洞察力 来源于经验、逻辑思维能力和敏感度: 6、团队精神
  • 31. 内容软件测试 定义、目的和作用 衡量标准 发展方向 原则和经验 软件测试要素 测试技术 测试过程 测试人员