软件测试基础--第一章基本概念

软件测试基本概念

为什么需要软件测试?

提升用户满意度

  • 引起软件缺陷的原因:
    • 时间紧 任务重
    • 复杂的代码
    • 复杂的架构系统
    • 人本身容易犯错误
    • 复杂的外部系统
    • 程序员 “懒”

软件测试的定义

1.评价一个程序和系统的特性或能力,并确认它是否达到预期的结果,检查是否满足规定的需求 2.测试是为发现错误而执行程序的过程 3.是对软件需求分析、设计、编码的最终复查的一系列过程,是软件质量保证的关键步骤

软件测试的目的

1.发现缺陷,提高质量

  • 发现并纠正软件中的错误,提高软件质量
    • 正向测试
    • 反向测试

2.验证是否满足需求

  • 验证软件功能性能满足需求
    • 功能需求
    • 性能需求
    • 安全需求等

3.建立软件质量的信心

  • 测试报告提供软件质量的相关信息,建立起对软件质量的信心
    • 正面测试是否充分
    • 反面测试是否充分

软件测试原则

  • 测试显示缺陷的存在 测试可以显示缺陷的存在,但不能证明系统不存在缺陷。测试可以减少软件中存在未被发现缺陷的可能性,但即使测试没有发现任何缺陷,也不能证明软件或系统是完全正确的。
  • 穷尽测试是不可能的 除了小型项目,进行完全(各种输入和前提条件的组合)的测试是不可能的。通过运用风险分析和不同系统功能的测试优先级,来确定测试的关注点,从而替代穷尽测试。
  • 测试尽早介入 在软件或系统开发生命周期中,测试活动应该尽可能早的介入,并且应该将关注点放在已经定义的测试目标上。
  • 缺陷集群性 版本发布前进行的测试所发现的大部分缺陷和软件运行失效是由于少数软件模块引起的。
  • 杀虫剂悖论 采用同样的测试用例多次重复进行测试,最后将不再能够发现新的缺陷。为了克服这种“杀虫剂悖论”,测试用例需要进行定期评审和修改,同时需要不断增加新的不同的测试用例来测试软件或系统的不同部分,从而发现潜在的更多的缺陷。
  • 测试活动依赖于测试背景 针对不同的测试背景,进行的测试活动也是不同的。比如,对安全关键的软件进行测试,与对一般的电子商务软件的测试是不一样的。
  • 不存在缺陷(就是有用系统)的谬论 假如系统无法使用,或者系统不能完成客户的需求和期望,发现和修改缺陷是没有任何意义的。

软件开发对应的软件测试过程