软件测试由谁来做?是不是必须得有专业的测试人员?
这个回答是肯定的。
首先让我们看看专业测试人员与普通的开发人员进行测试会有什么不同。
假设要测试一个用户登录的功能,一个普通的程序员通常只会简单测试一下以下用例:
● 输入正确的用户名、密码,能登录;
● 输入错误的用户名密码,提示错误,不能登录。
而一个有经验的程序员还会测试一下其他情况,例如:
● 用户名或者密码为空,是否提示错误;
● 没有注册的用户名和密码,是否会提示错误。
但对于专业测试人员来说,上面这些肯定是不够的,还需要有以下这些情况的功能性测试:
● 用户名密码是否大小写敏感;
● 用户名或密码如果是用特殊字符,会不会导致程序异常;
● 用户名或密码如果特别长,是不是会有异常;
● 是不是所有主流浏览器和终端设备都能使用。
除了功能性的测试,还需要进行非功能性的测试,也就是像性能、安全性和用户体验等方面的测试。比如以下测试用例:
● 是否可以通过发送数据包反复登录,暴力破解密码;
● 会不会有Sql注入的风险;
● 大量用户同时登录,页面会不会崩溃;
● 用键盘Tab、回车键是否可以操作。
这就是专业和非专业的区别。
有的公司,由于开发人员少,每个人都承担了多个软件的开发任务,没有专职的测试团队,软件测试都是由开发人员兼职的,只是将测试的软件和开发的软件交叉分开。这样的安排,使得测试效果非常不好。具体的表现是测试发现的Bug数非常之少,有价值的Bug基本没有,而且在由开发人员完成内部测试之后再进行的第三方测评仍然会发现大量的Bug。
为什么开发人员做测试会比专业测试人员的效果差这么多?可能有以下几个原因:
1.职责视角问题
开发人员的职责是完成用户期望的功能,这种思维方式会严重影响开发人员的测试行为,使得开发人员进行测试也只在注重功能的实现上,很少会考虑异常的测试用例和非功能性的测试用例。
而对于测试人员来说,他的职责是发现软件存在的缺陷,是挑错、找问题,所以,他的测试用例不仅仅是功能性的,而是会考虑所有可能的用户使用场景,正常的、异常的,甚至各种极端情况。
2.投入度问题
开发人员做测试只是兼职,他同时要负责繁重的开发任务,所以他的重心是在开发上,他在测试上投入的时间和精力肯定会比开发上少。这种投入度,测试的效果又怎会好?
3.测试能力问题
开发人员在测试能力上也会比专业测试人员差很多。对于测试方法的熟悉程度、对于测试工具的使用等方面,开发人员都是没有办法和专业的测试人员比。
所以,软件测试一定要有专业的测试人员来做才行。