我在微软和亚马逊上过班。就这两个公司谈谈我的经验。
微软作为第一家纯软件公司,有非常完整和传统的开发流程。需求分析、设计、实现、测试、部署、运维每一个阶段都有明确分工。途中有Manager, leader, SDE, SDET 等完成。这样做的好处是各司其职,大家都只需要操心分内的事情。缺点是开发周期较长。
这种工作模式下的测试人员是专职测试,有足够的精力和动机把测试做得很到位。特例总是找得到,但个人经验是SDET对产品质量是有明显的促进作用的。同时SDE和SDET的分工配合,减少了开发者的心理负担。因为需要操心的任务数量减少了。从人道主义的角度是非常不错的。
弊端也很明显,那就是成本。资本家的目的就是收割剩余价值,因此恨不得让你把操心所有事都操心完。因为我对股东没有忠诚度,所以只要允许,我一定会想要SDET在队伍里的。SDE是矛,SDET是盾,一攻一防,各有所长。
亚马逊作为新兴互联网公司,没有那么久的传统,大家多少都还有一些摸着石头过河的感觉。亚马逊这类的互联网公司,更倾向于所谓的敏捷开发还有continuous deployment。特点就是从设计一直到部署运维都由个人负责。Agile开发的假设条件之一就是每一个组员都是full stack developer,全程都可以做。这样做的好处是,开发周期短,bug和新feature可以最快推到prod。缺点是员工的注意力分散。
这种工作模式下,unit/integ test都由搞开发的SDE亲自写。就好比自攻自防一样。个人经验是,这种工作方式十分灵活,可以跳过测试直接prod。也可以几周时间专门做测试。但一个趋势是SDE潜意识会削减测试的时间,在出事故过后又花过多的时间补测试。另外,我个人的经验是,抠门到不请SDET的公司,通常也不会慷慨到雇专门的运维。这样做是可以省成本,但也大大加重了员工的身心负担。
最后,一些软件部署周期本来就长(如Photoshop/Visual Studio这样的桌面商业软件),长时间不会有用户反馈。个人认为实践上不可能不用专职SDET。即使在亚马逊,一些特定的部门因为产品性质,还是会有专职测试。那样的产品通常fix bug的成本很高。
因此说白了,专职Test的重要性还是由产品性质和预算成本来决定的。微软有钱烧,大部分组都有专职test。亚马逊是出了名的血汗码农场,别说专职test,连运维都要dev上。
— 完 —
本文作者:李瞬生
【知乎日报】
你都看到这啦,快来点我嘛 Σ(▼□▼メ)
此问题还有 13 个回答,查看全部。
延伸阅读:
互联网产品如何进行测试?
软件测试有哪些前景?