作者回复: 我的观点是这种情况下需要专职测试的,业务分析师的重点应该是把需求文档写清楚。
业务复杂不能成为一个借口,想想看开发人员是怎么理解需求的,难道也是业务分析师代劳?肯定也是由业务分析师写成需求文档,然后开发人员基于文档开发,当然中间少不了很多确认环节。
测试也是类似,应该专业的人来做比较好,可以有更好的测试覆盖。一开始肯定是难一点,但是一段时间业务熟悉后,会极大提升整个团队的测试效率,而你也不需要再为这个问题纠结了。
作者回复: 我觉得这也不完全是钱的事情,毕竟还需要投入很多时间在上面,对于开发人员来说,主要时间都用来实现功能和修复Bug了。
另外要做好测试,和写好代码还是有些不一样的地方,尤其是要破坏性的去测试自己写的程序,总还是要投入一些经历去学习这些专业的测试知识。
作者回复: 是的,时间是个很重要因素,大部分项目都是时间很紧很紧的。如果时间紧,首先被砍的就是自动化测试。
作者回复: 我建议你试试testrail,它的测试用例模板非常专业。
对于测试用例,几个关键的字段是:
标题、描述、优先级、分类
测试类型:功能测试、性能测试、回归测试、冒烟测试。。。
自动化状态:没有自动化、只能手动测试、只能自动化、集成CI。。。
先决条件:这个用例需要满足好什么条件
测试步骤:写清楚一步步的执行步骤
期望结果:操作完成后结果应该是什么样的
等等
作者回复: 这确实是常见的现象,核心还是多一起合作多相互了解吧,让开发人员看到测试的核心价值,就是对测试方案的设计。
我对测试人员敬佩的地方不在于他们会写自动化测试,毕竟这个我写起来还更好,而是他们总能从我没想到的角度测试出来Bug,从而帮助我提升程序质量。
可以安排一些开发人员和测试人员一起合作的事情,比如测试人员提供测试方案测试用例,开发人员按照测试用例去实现自动化测试,让开发人员明白做好测试其实不是他们想的那么容易的事。
作者回复: 你说的这种情况我有知道,不止IBM,还有微软也这样,微软有一个部门叫MCS,顾问咨询部,他们和一些外包公司合作,自己出几个顾问带队,其他都是外包公司的员工,质量层次不齐。
核心因素确实是成本。
作者回复: 测试离职率高是什么原因造成的呢?工资低?工作量大?和开发不和?
我觉得还是得花点时间考虑清楚这个问题,然后让离职率降低下来,让测试团队稳定下来,人员稳定了,很多问题就迎刃而解了。
作者回复: 这样的话,是不是程序员直接按照测试用例写自动化测试更好?
作者回复: 这个问题我就真不知道了。
有需求就有市场,只要外包或技术服务这个需求在,肯定是有市场的,但竞争多的话,利润空间已经不会太高了。作出创业初期积累,倒是比直接做产品靠谱点,就是得想好未来怎么走。
作者回复: 👍您说的观点我大部分认同!
术业有专攻,一个专业资深测试是很难被替代的,但加强开发和测试的协作是很有必要的。
“现在有许多公司都在快速发布,快速迭代,您说他们时间宽裕吗,No,只是对质量要求不高而已。”
振聋发聩!
有一点我有不同意见在于快速发布快速迭代“并不都是”代表对质量要求不高,而是一种开发模式,一种在速度和质量上达到平衡的模式。比如说现在Windows是几个月发布一个版本,质量肯定是下降了,但同时另一个角度也更快的适应了市场的需要。
作者回复: 抱歉你问的这两个我都没用过。
我建议你可以写两个简单原型分别测试以下,看看哪个更适合你。
不管怎么样,自动化测试的大方向是没有问题的!
作者回复:
对于这个问题,我觉得你可以自己先分析一下,你觉得目前哪些地方做的好,哪些地方可以有改进?
可以从几个方面分析,比如:
工具:
有没有用源代码管理工具?
有没有用持续集成跑单元测试?
有没有用Bug/任务跟踪系统?
开发流程:
多长时间一个项目周期,一个功能从开发到上线要多长时间?质量如何?
有没有做需求分析和确认?会不会做出来东西不是业务部门想要的?
有没有开发前先做简单的技术设计?
有没有写一些基础的测试用例?
有没有开发后自己测试和找业务部门帮忙测试?
线上的故障有没有一个合适的流程去处理?
有没有写一些基本的文档,如果来一个新人了能否接手?
技术实践:
有没有写自动化测试?
有没有用好的技术框架或开源组件?
有没有自动化部署?
分析出问题,知道哪些地方做的不够好以后,就可以有一个改进的计划 ,看如何将改进方案落实下来。
还有就是一个人开发,缺少向其他人合作和学习的机会,可以有意识的创造更多这样的机会,比如内部多和其他部门合作。外面可以参与一些开源项目。
作者回复: 测试驱动是一种很好的开发实践,但普及率也不算很高。
可以看到自动化测试那一篇,测试驱动写的是单元测试,并不能保证不出Bug,只是说能有效提升代码质量。
还有就是开发人员测试自己代码,很容易遗漏编码时就没考虑到的逻辑。
作者回复: 👍赞,非常好的总结分享。
作者回复: 是的,不能完全替代,只能部分替代
作者回复: 要求测试懂开发,并不是说要让测试去干开发的活,而是说让测试人员能通过技术手段,让一些本来需要手工去做的测试工作,可以通过自动化或者半自动化的方式来做,从而提升测试效率。
比如说你有个网站,每次发布后都需要做常规的注册、登录、发布等操作,这样的操作用鼠标键盘人工一个个来做,完整做一遍可能要半小时。但是你懂开发,基于NightWatch https://nightwatchjs.org/ 这样的测试框架,写一个测试脚本,估计每次10分钟不到就测试完了,而且测试过程完全不需要人工干预。
这样不仅可以提升单次测试效率,还可以极大的降低测试成本,从而可以做更多的测试,每次发布都可以完整的测试,及时发现可能存在的问题。
另外测试开发的要求和软件开发的要求是不一样的,测试开发侧重的是用技术手段自动化的去测试软件验证功能需求,要求懂测试,用好或者自己构建自动测试框架;而软件开发侧重的是构建软件,实现功能需求,要求你有开发、架构的能力。
也许过去要求测试懂开发算是高要求,现在和将来一定是基本要求,未来普通的手工测试是没什么竞争力的。
作者回复: 👍是的,专职测试是能分担很多工作的!