新学期开始。我开始上一门《软件测试》的课程。伴随着课程的进行,我也会在我的博客上写下自己的学习笔记。通过不断的更新博客,加深对课程知识的了解,同时也希望和大家进行学习交流。好,接下来就是我第一次的随笔,粗浅聊一聊软件测试这一门技术。
在软件开发过程中,软件测试是必不可少的环节。刚提到软件测试,许多人可能和菜鸟级别的我一样,认为软件测试就是把写完的程序跑一跑,看看编译器有没有报错,然后按要求输入、操作,看看有没有出现意料之外的情况。没错,在以往编写的小程序中,这些方法可能是适用的,但是即使我们可以想到很多极端的操作,在这种简单粗暴的测试方式下,我们总会有遗漏。记得以前在Jave课上写过一个程序,在提交程序前自己运行了很多次,觉得不会出什么错误了,果然老师检查时没有任何出现错误。后来兴起,有玩了一下自己写的程序,居然出现了Bug。即使就是几千行代码的程序,测试也是十分困难的,更别说那些工程浩大的程序了。由此可见软件测试是一门值得我们重视的学科。
首先,先来介绍一下软件测试(Software Testing)的较为标准的定义:
(1)软件测试是一种活动(activity),目的在于评价一个程序或系统的属性(attribute)或能力(capability),决定它符合它自身所需要的结果。
(2)软件测试是一种使用观察和实验(empirical investigation)方法对被测试的的产品或服务进行检查审查,并为投资者提供有关其质量的信息。信息就是我们进行软件测试后提供的测试结果,发现的问题等文档。
也就是说软件测试时贯穿整个软件开发过程的。软件测试也包括对需求和文档的测试。
然后,来百科式的罗列一下软件测试的历史:
- 1956 调试为导向的(这段时期,没有专业的测试人员,只有程序员摸着石头过河)
1957 - 1978 Demonstration导向的 (不知道这么翻译好,反正这段时期调试和测试被区分,测试是为了检测软件是否满足需求)
1978 - 1982 Destruction导向的(目的在于找到程序中的错误)
1983 - 1987 评价为导向的(测试正式加盟软件生命周期中,企业开始成立QA/SQA(质量保证/软件质量保证)部门)
1988 - 2000 预防为导向的(测试是为了验证满足功能需求,查出和防止缺陷)
2001 - Art,Empirical→ Theoretical (从需求开始验证,可执行的需求规格说明书,代码自动生成。)
最后,来写一写为什么需要软件测试
世界上没有完美的的程序员,即使是顶级的程序员,他也只能减少bug,而不能消灭bug。对于普通的我们,我们没有无法去克服避免错误,反而由于缺乏整体性的思考,我们写的乱七八糟的代码会引起更多的麻烦。只有通过合理的测试,才会解决人力所不能的问题。
今天的博客写在这里,我希望以后可以不仅是对知识的复数,还可以通过对实例的分析,来加强对学科的了解。