软件测试一定要有专业测试人员吗?

一些初入GJB5000A的组织常常会问我这样的问题:软件测试由谁来做?是不是必须得有专业的测试人员?

我的回答是肯定的。

首先让我们看看专业测试人员与普通的开发人员进行测试会有什么不同。

这里拿宝玉老师在《软件工程之美》中举的例子来说明:

假设要测试一个用户登录的功能,一个普通的程序员通常只会简单测试一下以下用例:

  • 输入正确的用户名、密码,能登录;

  • 输入错误的用户名密码,提示错误,不能登录。

而一个有经验的程序员还会测试一下其他情况,例如:

  • 用户名或者密码为空,是否提示错误;

  • 没有注册的用户名和密码,是否会提示错误。

但对于专业测试人员来说,上面这些肯定是不够的,还需要有以下这些情况的功能性测试:

  • 用户名密码是否大小写敏感;

  • 用户名或密码如果是用特殊字符,会不会导致程序异常;

  • 用户名或密码如果特别长,是不是会有异常;

  • 是不是所有主流浏览器和终端设备都能使用。

除了功能性的测试,还需要进行非功能性的测试,也就是像性能、安全性和用户体验等方面的测试。比如以下测试用例:

  • 是否可以通过发送数据包反复登录,暴力破解密码;

  • 会不会有Sql注入的风险;

  • 大量用户同时登录,页面会不会崩溃;

  • 用键盘Tab、回车键是否可以操作。

这就是专业和非专业的区别。

我在某军工单位也了解到这样的一个案例:

由于开发人员少,每个人都承担了多个软件的开发任务,没有专职的测试团队,软件测试都是由开发人员兼职的,只是将测试的软件和开发的软件交叉分开。这样的安排,使得测试效果非常不好。具体的表现是测试发现的Bug数非常之少,有价值的Bug基本没有,而且在由开发人员完成内部测试之后再进行的第三方测评仍然会发现大量的Bug。

为什么开发人员做测试会比专业测试人员的效果差这么多?可能有以下几个原因:

  1. 职责视角问题

开发人员的职责是完成用户期望的功能,这种思维方式会严重影响开发人员的测试行为,使得开发人员进行测试也只在注重功能的实现上,很少会考虑异常的测试用例和非功能性的测试用例。

而对于测试人员来说,他的职责是发现软件存在的缺陷,是挑错、找问题,所以,他的测试用例不仅仅是功能性的,而是会考虑所有可能的用户使用场景,正常的、异常的,甚至各种极端情况。

  1. 投入度问题

开发人员做测试只是兼职,他同时要负责繁重的开发任务,所以他的重心是在开发上,他在测试上投入的时间和精力肯定会比开发上少。这种投入度,测试的效果又怎会好?

  1. 测试能力问题

开发人员在测试能力上也会比专业测试人员差很多。对于测试方法的熟悉程度、对于测试工具的使用等方面,开发人员都是没有办法和专业的测试人员比。

所以,软件测试一定要有专业的测试人员来做才行。

宝玉老师也给出了FaceBook没有专业测试人员的例子,但是,那主要还是因为用户对社交类产品的Bug相对容忍度较高。

而对于军用软件来说,对一些Bug的出现是零容忍的。所以,军用软件测试必须有专业的测试团队支持。

这正是:

专业测试效果好,虽然成本有点高

军软追求高质量,选择专业才最好

作者简介:王小双,长期从事GJB5000推广、实施、评价、改进的工作,创建《软件工程之思》微信公众号,一直在《软件工程之思》分享GJB5000、CMMI、软件工程的知识和感悟。现致力于GJB5000咨询以及软件过程改进、软件工程能力提升的研究工作。

软件测试一定要有专业测试人员吗?》来自互联网,仅为收藏学习,如侵权请联系删除。本文URL:http://www.hashtobe.com/1070.html