公司的一个小要求难倒了我:生产环境的所有变更,都要在变更完后出具验证报告。这个报告应该谁出?是测试人员出,还是运维人员处?到底是谁的职责?
我花了4个小时,才把运维和测试的职责梳理清楚。
第一个问题:为什么软件在生产环境上安装完要验证呢?
测试人员不是已经在测试环境测试完了么,测试报告也写了,还要在生产上测啥呢?
因为无论你测试多么完善,你没有在生产环境测试过,你无法保证软件安装到生产环境就是ok的,软件安装到生产,必须测试一遍。闭着眼升级,生产不做测试,任何人都无法接受的。
既然一定要在生产环境测试,那还在测试环境上测什么?直接到生产测试吧。
因为软件功能可能有bug,客户会投诉,或者可能把生产环境搞崩溃。
那测试就活该干脏活累活,测试环境和生产环境各测一次,一模一样的内容测两遍?测试经理肯定不干的,而且成本也高,你不可能为了质量把成本直接增加一倍。
矛盾点就是,在生产测试则成本加倍;不测试则无法保证功能。
第二个问题:按“转维”划分工作,和按职责划分工作,是冲突的。
按职责来讲,测试人员是测bug的,那在测试环境都测完了,你总不能留着bug到生产测吧,所以软件安装到生产后,应该运维来测。
然后,刚变更完的软件,还没到“转维”,那运维就不应该运维来测。
你说到底谁来测?
这两个问题让我很是头疼,以至于我怀疑,软件这个行业是怎么发展出来的,所有涉及研发的行业又是怎么发展的。
但是你看现实中的行业,它们过得却好好的。而且它们的玩法还不一样。
比如手机APP,你下载下载点击安装就行了,你的手机就是生产环境,这个生产环境中没有任何测试。
比如公有云,一个局点安装好后,可能要测试几周,才能开放。
显然,手机APP和公有云,都解决了上述两个问题,而方法又完全不一样。
为什么会有这个现象?
我想只有用成本来解释。
APP和公有云有个巨大的区别,那就是数量。两者安装次数可以相差6个数量级,比如APP可以安装1亿次,公有云一般安装不到100次。同样是生产环境的测试,需要单次测试时间分别乘以1亿和100。那么怎么做才能降低成本?APP一定把测试放在生产安装前,生产环境安装后不做任何测试。公有云一定是把部分(甚至很多)测试留到安装后,安装前可以少测点。
我所考虑的角度,都是理想化的流程、角色分工,可能导致高昂的成本,现实的行业并不会采用。
APP就是在发布前就测试完毕,生产环境不做任何测试,不管你什么风险,因为成本太高。公有云就是要把部分测试放到生产环境搭建好之后,不管你说把问题留到了先网,同样是因为成本高。新功能上线次数少,所以测试人员得到生产测,就要去生产找bug;bug修复次数多,所以就直接变更,不用在生产再测一遍。凡事皆有成本。
因为测试是非常耗费资源的,测试软件,数据模拟,测试环境,仿真。。。这些都是真金白银砸下去的,你把这套体系搭建好,用1亿次,成本才能均摊下来,只用100次,就是亏本的。
假如情况变了,银河系有100万颗地球,每个地球要装100次公有云,要安装1亿次。可以肯定一定会有一个公有云的自动安装工具出现,一键安装免测试。因为让测试人员测1亿次成本太高了呀。
介于俺公司的环境还不到100个,所以我们还是采用类似公有云的模式。即大特性上线要测试人员在测试环境和生产环境测两遍,而bug修复变更则只要测在测试环境测一遍,升级到生产环境就直接转维,运维人员接手。