若干年前,网络上对于软件开发是否需要专职测试有过一次讨论,代表文章有:左耳朵耗子老师写的《我们需要专职的 QA 吗?》,然后邹欣老师对此回复《测试 QA 的角色和分工》。
从这些年业界发展趋势来看,看起来很多公司都不需要专职测试了,只需要开发兼任测试工作就可以了。比如,Facebook 号称自己没有专职测试工程师,Google 和 Amazon 虽然有专职的测试工程师,但都是开发人员对质量负责,开发人员写大量的自动化测试代码。但这样真的可行吗?
在回答这个问题之前,我们还是先来看看,软件测试的主要工作是什么?只有搞清楚软件测试的工作,才能搞清楚这部分工作是否可以由开发来替代,是否需要专职测试。
软件测试的主要工作是什么?
在前面开发篇内容的学习中,我们对开发的工作已经比较了解了:在需求确定后,开发人员开始针对需求进行架构设计,然后编码,最后对发现的 Bug 进行修复,保障线上稳定运行。
而软件测试也类似,也是从需求开始,在需求确定后要去对需求进行分析,然后做测试设计。
如果说架构设计是对业务需求在技术方面的抽象,那么测试设计更像是对业务需求的具象,把业务需求分解成一个个具体的用户操作步骤,也就是测试用例。然后在开发完成后,按照设计好的测试用例进行逐一的测试验证,将发现的 Bug 报告给开发人员,并跟踪 Bug 的修复。
如果对软件测试的工作简单总结一下,就是发现 Bug,报告 Bug,跟踪 Bug。
软件测试怎么发现 Bug?
这里面最难的就是发现 Bug,尤其是如何尽早、尽可能全面地发现 Bug。
举个例子来说,如果现在你需要开发一个用户登录的功能,你在开发完成后会怎么测试?
一个普通的程序员通常只会简单测试一下以下用例:
- 输入正确的用户名、密码,能登录;
- 输入错误的用户名密码,提示错误,不能登录。
而一个有经验的程序员还会测试一下其他情况,例如:
- 用户名或者密码为空,是否提示错误;</