亚马逊高级开发经理、酷壳博主陈皓( @左耳朵耗子)发布了一条文章引用的微博,提出:大多数开发团队不需要独立的测试角色。 EMC 中国研究院推荐了一篇 Highly Scalable Blog 的文章,探讨一个大型电子购物网站的架构与设计。
陈皓在这条微博写道:“关于测试和测试人员 http://t.cn/zOyfLi4 大多数的开发团队并不需要一个独立的测试角色。即使有一个,他的所有的开发时间比上所有的测试时间应该 >20:1。光看看一些从古至今最成功的软件开发团队就知道了。”
他又继续引用了文章的内容:“‘开发人员应该测试自己的代码。没什么可说的。背后的道理并不重要。这包括单元测试,全覆盖的自动化测试或手工测试或组合测试。如果你的开发人员不能 / 不愿意或认为这“不归我管”,那你需要更好的程序员。’”
他还在回复中提到:“亚马逊就是这么做的。⋯Furthermore,亚马逊的运维都是开发人员自己干,从需求一直干到运维,还要干招聘,项目自管理等与技术无关的事。而团队大小只有 8 个人左右,自称 pizza team,一张 Pizza 可以喂饱团队。”
大家的评论和反馈如下:
可惜我是程序猿:首先要看决策者是不是这么认为的,否则是很难推的,开发不重视测试,尤其是单测,那是天性,当然最好有类似 SQA 的组织赋予改进流程的权力来推动开发自测,并制定自测指标列入考核,这样驱动力更强~
KT 刘世军:观点有道理,但不符合“国情”。很多时候,开发团队缺失的是合格的开发人员,还根本谈不上优秀的开发人员。
左耳朵耗子:我认为,没有合格的开发人员, 就不可能有合格的测试人员。测试人员本来就是来自懂测试的开发人员。另,这与国情无关。
@其 - 龙:我现在越来越赞同自测试,而且是完备的自动化测试。现在很多时候测试和开发之间就是将责任弄到模糊不清,就是看谁弱势而已。
welkinwalker :这里面的挺多话都说到点子上了。 每个人都要对自己的代码负责,不管你是开发工程师,还是测试工程师。 开发人员应该完成大部分的测试工作,但又不能完全没有测试工程师来保证 overall 的产品质量。 覆盖率的立意是好的,但是在实践中关于这个东西的追求经常是被异化的,成了一种噱头,狗屎一坨。
程序员邹欣:回复 @左耳朵耗子: 我也写了一些感想: http://t.cn/zOCU8nT 请各位指教一二。
左耳朵耗子:先回复一点,分工最大的问题是责任不清,出了问题互相扯皮互相推,但最终解决问题的人还是 DEV。
EMC 中国研究院发布了一篇微博:“Highly Scalable Blog 经常出高质量Blog,这篇也不例外: http://t.cn/zOKBysL 。博主 Ilya Katsov 最近参与了一个大型电子购物网站的架构和设计,他总结了项目里面用的设计原则和主要技术,干货很多。强烈推荐大家读一下这篇文章,与以往一样,如果大家翻墙不方便,请点击图片附件看全文。”
罗翅膀 716 :1. 树形数据应该用 WITH RECURSIVE 搞定。2. Facet 应该用 hstore 搞定。百万级别的商品,都用不着分表。
@utopia_ZhouHang : 后台使用的 Oracle Coherence 来做 cache 和 message bus,对于这种应用没有看到可以媲美 Coherence 的开源产品 ( http://t.cn/zOKrpXh ),看到过几次 Hazelcast, 但是它的 Elastic Memory 并不免费
Launch_Bruce : 认真研读以兼收并蓄。读后感: 1. 提供路由和负载均衡的 IMDG 很重要,事件驱动的 Map-Reduce 更先进,分布式更好 ; 2. 大数据应用,全分布式缓存是灾难,即使只是 index,需分布式 DB 和 Cache 并重; 3. 海量特征的数据的 faceted search 挑战更大; 4. 大数据应用,index 计算是性能瓶颈,传统企业应用是 DB;5. 面向互联网的大规模企业应用,CDN 确实是问题,不用无法保证畅通访问,用,数据太个性化,很难聚类; 6. 设计大型应用,use case 的全面很重要,更难的是明天的 use case,做平台,更重要,离不开 964 原则; 7. 大型产品的架构,性能、伸缩性、可靠性重要,部署、测试、维护一样重要。
今日微博推荐
推荐理由:善于阅读开源代码,前后阅读过的开源项目将近 15 个,同时深入了解 HBase 和 NoSQL,他的源代码阅读心得,可以在他的博客中看到。
评论