微信号:infoqchina

介绍:有内容的技术社区媒体

第三只眼:懒菜杂谈——互联网公司与软件公司中的测试

2014-01-20 21:44 杨赛

相比传统的软件公司,互联网公司开发模式的一个很大的特点就是迭代非常快——线上生产环境的代码每天都可能进行十几次甚至更多次的小变更,重要的feature也会比较频繁的推送。对于互联网业务而言,时间就是生命,因此有这样的研发频率才能支撑业务的生存能力。但是也很明显的是,这样的交付频率意味着软件上线之前很难经过完整的测试覆盖。


上周去深圳,跟腾讯的工程师们聊了一圈,最大的感触就是他们的灰度发布策略。无论任何一条产品线——QQ后台也好,QQ空间也好,手机浏览器也好,还是云计算平台也好,其主要的测试都是发生在灰度发布这一阶段,而在上线之前的“内部”测试并没有投入太大的人力和时间。腾讯的监控系统做的十分全面和完善,在灰度发布的前期,如果监控到异常的系统指标(比如内存占用过高)或运营指标(比如某个功能的用户量明显下滑),则停止继续发布,回滚进行修改。可以说,这套线上的监控系统就是腾讯的核心测试系统。


先推出去给用户用了再说,这是现在非常流行的思想。传统的软件公司也纷纷往这种思路转变,用类似的思路做起了SaaS的业务,大幅提升产品交付的频率。但是,不是所有的软件都适合用这种模式。这里有两个维度:

  1. 软件发布者对发布出去的软件的掌控程度

  2. 软件用户对failure的容忍程度

网站是掌控程度最高的软件类型,因为所有运行中的代码都在开发者的服务器上,需要做什么改动,开发者直接上去修改即可。相对而言,iOS或Android的App则是掌控程度偏低的软件类型,开发者发布出去的软件运行在用户手上的终端之上,如果要做改动,需要发布一个新版本的App到商店,然后骚扰用户让他们更新。iOS App的上线审核速度还特别慢,这期间如果你的老版本App有比较严重的bug,你会收获很多的一颗星评价。掌控程度最低的软件类型莫过于操作系统以及更贴近硬件的固件,这种软件一旦分发出去,开发者对用户安装的时候选择哪些参数、用户什么时候升级,可以说是一点掌控能力都没有,这种软件发布真好比泼出去的水,如果里面有严重问题,基本相当于自杀了。


对failure的容忍程度则主要看用户类型和业务类型。大部分社交网站都是failure容忍度较高的软件,反正网站访问不了只不过是不能发帖看帖,生活还会继续。打电话断线,这种容忍度相对是比较低的,所以现在虽然网络语音的产品很多,但重要的通话还是会通过电话进行。金融、支付类业务是failure容忍度极低的,一旦出事,网站的信用会崩盘,几乎没有改过再来的机会。至于火箭发射、飞机导航系统之类的软件,对failure几乎是零容忍,因为失败成本极高,而且涉及到人身安全。


公有云是掌控程度很高的软件,从这个层面来看,公有云软件是可以采用“推出去给人用了再说”这样的思路。但,这种思路也存在极高的危险性,因为虽然公有云的早期用户主要是开网站的或者做游戏的,但是那些更加严肃的业务也都是公有云的潜在客户,他们对failure的容忍程度很低,对丢数据这种事更加是不可以接受的。如果公有云业务发展早期有过丢数据的记录,那么这些用户接受公有云的时间至少会被推迟三五年。打折促销可能对有些用户有吸引力,但对这些用户则根本没用。


云计算市场未来是会细分的,现在已经有这样的趋势。但就云存储来说,有的专门做图片存储,有的专门做冷数据备份,有的致力于提供性能和可靠性可以跟企业级存储同台竞争的存储服务,进一步还有直接提供关系数据库、非关系数据库、或者数据仓库的服务。有一种思路是把对价格敏感的客户当做小白鼠,系统跑稳定了之后再发展对稳定性敏感的客户,这可能是一种方法。对于那些一开始就打算给严肃用户提供服务的开发者,他们会采取更加严格的测试流程,在把服务交付出去之前就心里有数,而不是采取“推出去给人用了再说”的思路,这也是一种思路,而且严肃的用户可能会对这种方式更加认可。


现在中国云计算市场的热钱不少,各种背景的小伙伴们都跑进来做。如果产品本身做的有特点,得到了某一类用户认可,那就是创造了价值。如果只是做了一个跟其他家差不多的东西,想靠运营来吸引客户,那估计只能当炮灰了。


“第三只眼”:

主要由InfoQ编辑专门为微信公众账号自编自写的一个栏目,旨在表明编辑态度及表述平日见闻和思考,期望成为和读者沟通的桥梁。亦接受投稿:spark@cn.infoq.com

 

今日专栏作者:

杨赛(@lazycai),InfoQ中文站编辑。到处串门的互联网信徒,相信规则的力量。

 

***********************************

本文来自InfoQ微信公众账号:infoqchina

1、回复“今日新闻”,查看今天更新的新闻;

2、回复“今日英文”,查看今天英文站的更新;

3、回复“文章 +关键词”,搜索关键词相关内容;

4、回复“QCon”,了解QCon大会相关信息;

5、回复“活动”,了解最近InfoQ组织的线下沙龙;

6、回复“架构师”,获取《架构师》下载地址;

7、回复“投稿”,了解投稿和加入编辑团队的流程。

***********************************

 
InfoQ 更多文章 Facebook如何实现PB级别数据库自动化备份 学术派Google软件工程师Matt Welsh谈移动开发趋势 Spotify为什么要使用一些“无聊”的技术? 妹纸们放假了,汉纸们做啥? 大多数重构可以避免
猜您喜欢 QTest团建的那些事儿 iOS、OS X没有受到“心脏出血”的影响 神剪辑,揭秘程序员加班内幕,不能看,看完想笑又想哭! 平安金融科技移动技术周报(第二十期) 人生苦旅