如何定义软件测试?

虽然做测试好几年了,但是如果面试中被问到“什么是软件测试”,我可能一时回答不上来,或者说不知道怎么用合适的语言来回答。

在网上搜索一下,发现各种定义都有,五花八门,眼花瞭乱,越看越糊涂了。

可能很多人会有跟我一样的情况,所以这篇文章就专门说说这个问题。

一、主流定义

关于软件测试比较主流的定义是下面两种:

1、经典定义

 软件测试(Software Testing):在规定条件下对程序进行操作,以发现错误,对软件质量进行评估。

2、IEEE(国际电子电器工程协会)定义:

软件测试:使用人工或者自动的手段来运行或测量软件系统的过程,以检验软件系统是否满足规定的要求,并找出与预期结果之间的差异。

这两种定义有什么区别呢?

经典定义中,主要指手工操作,只强调了测试程序、发现错误,有一定的局限性。

因为软件包括程序、数据和文档,所以,软件测试并不仅仅是程序测试,还包括对数据和文档的测试。

在IEEE定义中,补充了人工或自动的手段,加入测量软件系统的概念,补充了测试的目的。

二、软件测试的发展历程

软件测试是逐步发展完善起来的,我总结了主要的发展历程:

从上图可以很清晰的看到软件测试的发展变化历程,从最开始的“调试”,一步步上升到软件开发的整个生命周期过程。

其中提到的几本经典书籍都对软件测试研究的理论化和体系化产生了巨大影响,尤其是《软件测试的艺术》--作为软件测试领域的第一本最重要的专著,一直到现在还是非常好的入门书籍。

三、软件测试的未来展望

虽然近20年来软件测试技术发展很快,但是速度仍落后于软件开发技术,还面临着很大的挑战:

1、随着软件规模越来越大,功能越来越复杂,如何进行充分而有效的测试成为难题。

2、面向对象的开发技术越来越普及,但是对应的测试技术却刚刚起步。

3、对于分页式系统的整体性能、实时系统等,缺乏有效的测试手段。

4、随着安全问题日益突出,信息系统的安全性如何进行有效的测试与评估,已经成为了世界性的难题。

总体来说,软件测试行业还有很多问题要解决,还有很大的发展空间,对于测试人员的要求也会越来越高。

猜你喜欢

转载自blog.csdn.net/lijing742180/article/details/83987428