Software-Testing-Intro
  • 简介
  • 第零章-写在前面
    • 为什么是这本书?
    • 来源与版权信息
  • 第一章-软件测试简介
    • 走进软件测试
    • 软件测试的基本概念
    • 你将收获到的东西
  • 第二章-基础(1)黑盒白盒测试
    • 白盒静态-代码审查
    • 白盒动态-结构覆盖
    • 黑盒测试
  • 第三章-基础(2)软件开发过程中的测试方法
    • 单元-集成-系统测试
    • 冒烟-回归-Alpha-Beta测试
  • 第四章-基础(3)软件特性方面的测试方法
    • 软件运行效率测试
    • 软件可靠性与安全性的测试
    • 软件用户友好性的测试
  • 第五章-进阶(1)特殊软件测试方法
  • 番外篇-也谈兼容性测试
由 GitBook 提供支持
在本页
  • 互动例子
  • 题目
  • 答案
  • 小结
  • 关于软件缺陷

这有帮助吗?

  1. 第一章-软件测试简介

走进软件测试

Testing can only prove the presence of bugs, not their absence. -- Edsger W. Dijkstra

本小节主要介绍软件测试的重要性和困难所在。

互动例子

通过一个简单的互动例子带你走进软件测试。

题目

找一位身边或网络上的朋友,让他写一段程序。

  • 可以用自然语言描述,也可以采用你们都熟悉的某种编程语言

  • 这个程序应该满足以下要求:

    1. 输入3个正整数x, y, z,代表一个三角形的三边。

    2. 程序应当判断这个三角形的类型:是等腰三角形,等边三角形,还是普通三角形?

写好之后,共同为这段程序找bug。

在完成之前,请不要查看以下内容。

答案

以下是一些提示:

  1. 能否有效识别正确的输入?

    1. 能否有效识别不规则三角形?

    2. 能否有效识别等边三角形?

    3. 能否有效识别不同情况下的等边三角形?

  2. 能否有效识别正确但输入数值特殊的输入?

    1. 如果用的是C语言等强类型语言,怎么处理用户输入的非常大的数字?(大于任何一种内置类型可存储的范围)

    2. 如果用户输入的数值不是整数,如何处理?(如浮点数)

  3. 能否有效处理不正确的输入?

    1. 如果用户输入的不是数值?

    2. 如果某个输入为0/负数?

    3. 如果三边不能构成三角形?

小结

这是一个非常简单的程序,但未必能保证程序的功能性指标符合要求。软件测试的主要目的是保证软件质量,而软件质量可以分为很多不同的方面,包括但不仅限于: 1. 功能性 2. 效率 3. 兼容性 4. 易用性 5. 可维护性 ......

相信你已经能感受到,想要保证软件质量,并不是一件非常简单的事情。具体地说,只有穷尽测试(Exhaustive Testing)能够保证上述的程序是完全正确的。而对于一个输入3个int类型为参数的三角形判断函数,如果每个整数都使用 32 bit 表示,三个输入变量约有10的28次方种输入组合。而宇宙中恒星的数量约为10的24次方 。通常来说没有足够的时间来进行穷尽测试。因此软件测试无法完全保证程序的正确性。

关于软件缺陷

  • 软件缺陷普遍存在,且影响广泛。

  • 软件缺陷的形成过程可以用图直观地表达,早期引入的错误将会影响整个软件生命周期。

  • 在软件生命周期的全过程中,软件缺陷的代价是不一样的:软件在从需求、设计、编码、测试一直到交付用户公开使用后的过程中,都有可能产生和发现缺陷。随着整个开发过程的时间推移,更正缺陷或修复问题的费用呈几何级数增长。

上一页第一章-软件测试简介下一页软件测试的基本概念

最后更新于4年前

这有帮助吗?