刚入行的朋友或渴望入行软件测试的朋友,许多人对软件测试认识不足,感到些许迷茫,对软件测试这份工作存在许多误区,阻碍软件测试职业的发展。今天我们就来谈一谈软件测试明显的误区,给刚入行或需要转行的朋友重新认识软件测试。
其实软件测试包含的范围非常广,近些年随着互联网行业的发展,入门门槛和薪资待遇也在逐步提高。在整个it行业来说测试、运维和一般的开发薪资差距已经越来越小,只是在高薪的梯队上略逊于开发人员。当前软件测试的大方向包含web端测试,移动端测试,大数据测试,物联网测试,智能终端测试、测试开发、测试管理等,每个方向的测试技术栈和内容都不相同,需要学习的内容较多,因此入门之后需要锁定一个发展方向保持持续学习,提高自己的硬技能。
一:任何人都可以从事软件测试,软件测试没有前途
软件测试只适合女孩子,男孩子不适合做软件测试;软件测试入门门槛非常低,只要认识字就行,每天工作内容就是点点点,没有任何技术含量;软件测试在公司就是给开发打杂的,不受公司重视和领导待见,公司只重视开发人员。
有这种想法的朋友大都还没有真正入行软件测试,也许是道听途说,对测试行业还不是很了解,其实测试和开发在公司都是属于研发部门,只是负责的环节、分工不一样而已。并且大部分公司测试人员男生比女生多,不存在从事软件测试工作都是女生的情况。测试的目标就是尽可能早的找出软件缺陷并修复他们,测试同时担任质量保证的角色,大公司测试都有一票否决权,只要产品没有通过测试的验收就不能风险上线。
二:如果有足够的时间或增加更多的测试人员,可以找到所有Bug
我们都知道测试用例无法覆盖所有的测试情况,换种说法只要测试不完全就存在潜在的风险,测试人员的目的是尽可能将风险降到最低。另一方面项目也是有进度和成本的,不同的产品在发布时容许少许的不重要的缺陷,一个项目不可能投入公司全部的测试资源,还需要考虑测试收益。
测试人员和测试资源的投入是根据测试策略评估决定的。所以如果盲目的增加测试人员和测试时间,对测试质量没有任何保证,还延长产品上线的进度,得不偿失。
三:手工测试会被自动化测试取代
自动化测试可以提高测试效率,但是目前自动化永远无法完全取代手动测试。主要的原因是自动化也需要投入大量人力和资源来开发脚本和工具,后期还需要人工维护,对于需求变化大的项目、测试轮次少、测试结果需要主观判断的等情况下,手工测试才是最好的选择。因此,项目的测试自动化要根据项目情况具体分析,做好前期评估,不能盲目的推崇测试自动化。
如果认为自动化测试无所不能,无论什么测试都想转自动化测试是不现实的。自动化测试也有局限性,适合需求变动少、项目周期长、手工测试无法胜任、人力资源充足的情况下可以考虑测试自动化。目前如单元测试、性能测试、回归测试、接口测试都适合测试自动化。
四:测试用例可以找出所有的bug
如同增加测试人员和时间可以找出所有的Bug一样,不能完全依赖测试用例查找出所有的Bug。从测试用例的设计方法等价类划分和边界值分析知道不可能做到穷尽测试。测试用例可以完全覆盖常规场景的功能性需求,但是往往用户的使用场景非常复杂,总会发生我们意想不到的情况,而测试用例很难百分之百覆盖。
另外,测试用例的设计还跟测试人员的业务了解程度、测试经验相关,一个经验丰富的测试人员写出的测试用例肯定能覆盖更多的场景,同时一个对测试对象功能非常熟悉的执行人员能够做更多的探索性测试发现更多的潜在缺陷。测试用例的好处是针对一般的执行人员的,经验丰富的执行人员完全可以脱离测试用例而发现更多的缺陷。指望仅通过测试用例发现产品所有的缺陷是不现实的,也许对简单的功能非常有用。
五:测试人员的目的是证明所测对象不存在缺陷的过程
软件测试是为发现错误而执行程序的过程。如果我们的测试目标是证明测试对象不存在错误,那潜意识就会倾向于选择可能较少的导致测试对象失效的测试数据。如果我们的测试目标是为了找出测试对象存在的缺陷,我们设计的测试数据就可能更多的发现问题。显然测试更应该倾向于证明测试对象一定存在错误的目标思想,这样更能体现测试人员的价值。
六:项目开始阶段测试人员无需提前介入
如果等到软件开发完成之后测试人员才介入开始测试,测试就比较被动,因为这个时候留给测试时间不多,很难达到开始规定的测试覆盖率和测试质量要求。另一方面,缺陷越早被发现,修复缺陷的风险和成本就越低。
我们知道一个完整的项目主要有以下几个阶段:用户需求收集、需求分析转化成需求目标、系统设计、编码和实现、测试和维护。其中从需求分析转化成需求目标开始,测试人员就提前介入。在需求分析阶段可以了解产品实现的目标、与产品人员就需求达成一致理解、及时发现不合理的需求、将需求及时转化为可执行的测试用例。同时可以加深对需求的理解之后制定合理的测试策略,提高测试的质量。