python测开28期-Pomelo-学习笔记-软件测试基础概念

软件测试基础概念

什么是软件测试?

  • 通过手工或者工具对 “被测对象”进行测试
  • 验证实际结果与预期结果之间是否存在差异

软件测试的作用

  • 通过测试工作发现并修复软件当中存在的缺陷,从而提高用户对产品的使用信心
  • 测试可以降低同类型产品发开遇到问题的风险

什么是软件缺陷?

  • 软件缺陷又叫bug
  • 软件缺陷会导致软件不能正常运行,它的存在会在一定程度上导致软件不能满足用户的需求,甚至有可能破坏或泄露用户的重要数据

软件测试的原则

  • 测试显示却显得存在
  • 穷尽测试是不可能的
  • 测试今早介入
  • 缺陷集群性(2/8原则)
  • 杀虫剂悖论
  • 测试活动依赖于测试内容
  • 没有错误是好的谬论

软件测试对象

  • 需求分析阶段:需求文档、接口文档
  • 编码实现阶段:源代码
  • 系统功能使用:软件程序

什么是测试用例?

为特定的目的而设计的一组测试输入、执行步骤和预期的结果,一遍测试产品是否满足某个特定需求的文档

什么是软件?

软件是与计算机系统操作有关的计算机程序、文档及数据。

软件生命周期

  • 定义问题:搜集需求、可行性研究、需求分析
  • 软件开发:概要设计、详细设计、编码、测试
  • 软件维护:纠错性维护、改进性维护、报废

软件开发流程

软件开发模型

1、瀑布模型

(1)生命周期:制定计划–>需求分析–>软件设计–>程序编码–>软件测试–>运行维护

(2)优点:

  • 开发各个阶段比较清晰
  • 强调早期计划及需求调查
  • 适合需求稳定的产品开发

(3)缺点:

  • 早期的错误可能要等到开发后期的阶段才能发现
  • 由于开发模型是线性的,增加了开发的风险

2、敏捷开发模型
(1)适用于需求频繁变化和需要快速开发的场景

  • XP
  • SCRUM

(2)总结

  • 增量迭代
  • 小布快跑

3、DevOps

(1)生命周期:

  • 持续开发
  • 持续测试
  • 持续集成
  • 持续部署
  • 持续监控

(2)持续集成(Continuous Integration,缩写为 CI)

  • 一种软件开发实践
  • 团队开发成员每天可能会发生多次集成
  • 每次集成都通过自动化的构建(包括编译、发布、自动化测试)来验证
  • 根据测试结果确定新代码和原有代码是否能正确的集成在一起

(3)持续交付(Continuous Delivery,缩写为 CD)

  • 一种软件工程手法
  • 让软件产品的产出过程在一个短周期内完成
  • 保证软件可以稳定、持续的保持在随时可以发布的状态
  • 目标:让软件的构建、测试与发布变得更快以及更频繁
    减少软件开发的成本与时间,减少风险

(4)CD与DevOps的关系

  • DevOps 的范围更广:
    • DevOps 是软件交付过程所涉及的多个团队之间的合作。
    • 并且将软件交付的过程自动化。
  • 持续交付是一种自动化交付的手段:
    • 关注点在于将不同的过程集中起来。
    • 并且更快、更频繁地执行这些过程。
  • 总结:DevOps 可以是持续交付下的一个产物,持续交付的成果直接汇入 DevOps 模型。