什么是软件测试

软件测试(英语:Software Testing),描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出之间的审核或者比较过程。

软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。

引自百度百科

当然我也有对比过wiki百科和百度百科的解释。实际上wiki对它的解释是完全包含百度对它的解释的,但是wiki对软件测试的定义,我认为是有些许偏题了。

1983年IEEE提出的软件工程标准术语中给软件测试下的定义是:

“使用人工或者自动手动来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。”

《计算机软件测试技术》- 郑子杰

软件测试测什么

可能有人会说,软件测试肯定是测试软件啊!?那软件又是什么呢 ?
软件(英语:software)是一系列按照特定顺序组织的电脑数据和指示,是电脑中的非有形部分。

引自wiki百科

在这里我们可以将“指示”理解为程序。外设硬件(鼠标,键盘或者其他)给出指令(点击,输入等),操作系统接收指令,再将指令分发给程序,程序再做出响应,反馈给操作系统,操作系统再反馈给硬件。

这是不是表示软件测试只需要测试 “数据”和“程序”呢 ?不是
软件并不一定只包括可以在计算机上运行的计算机程序,有些定义中,与计算机程序相关的文档,一般也被认为是软件的一部分。

引自wiki百科

所以可以得出结论:

软件 = 程序 + 数据 + 文档

那软件测试的测试对象便是
测试对象: 程序 数据 文档

引自百度百科

软件测试属于软件生命周期哪个阶段

需要说明的是,不同软件开发模型下软件生命周期是有差别的。我们以瀑布开发模型为例:

瀑布开发模型软件生命周期

  1. 计划(Planning)
  2. 需求分析(Requirement Analysis)
  3. 设计(Design)
  4. 编码(Coding)
  5. 测试(Testing)
  6. 运行与维护(Run and Maintenance)

可以看出,实际上测试工作是在开发人员编码完成之后才开始进行的。因为越早发现问题,修复问题的成本就越低,所以,实际工作中,测试并非在第五个阶段开始进行。而是可以推进第二个阶段,甚至第一个阶段。

  • 计划 - 计划是否合理,测试计划不合理一定程序也会影响到测试质量。比如,资源、人力安排不合理导致测试时间被压缩。
  • 需求分析 - 需求分析的输出是否有价值? 可以将测试人员看做是产品的第一批用户,他们是否认同产品的价值。需求分析是否存在缺陷或者不完善的地方,及时修改完善。
  • 设计 - 软件架构设计,数据库设计等是否只是在开发程序的角度考虑,是否考虑过这些设计的测试成本。
  • 编码 - 开发人员在还未编码前,就应该考虑程序该如何更高效的进行测试。