CMMI(Capability Maturity Model Integration,能力成熟度模型集成)
将各种CMM(即SW-CMM、Systems Eng-CMM、People CMM和Acquisition CMM)整合到一个体系中,由此形成由软件工程、系统工程和软件采购等在内的集成化的CMM,从而覆盖更为广泛的评价体系。目前CMMI已经从CMU剥离出来,单独成立“CMMI研究所”机构( CMMI Institute LLC)运作,软件公司认证的最新版本是CMMI-DEV v1.3 (Staged,阶段性的过程改进模型用于认证,还有连续模型用于自己改进,不能用于认证),目前正在推出2.0版本,详细可以参考后面链接[1-2]。国内在2011-2013年,每年大概有8~10家公司通过了最高等级(Level 5)的认证,见表1,而最近几年势头没有因为敏捷实施而降低,而是高速发展,根据官方[3] 公布的2015年以来通过认证的公司还是很多,达到7000家左右,如表2所示(想获取清单,请关注公众号,输入“CMMI-list” 获取。顺便测试了excel 性能,20000多行数据,Excel性能已经很差了),平均每年在2000多家以上,如果每家认证费是10万,一年市场份额在2亿元,是一个很不错的生意。通过Level 5认证的中国公司(可能是某公司的某个部门,一家公司的多个分公司按多个被认证的单位计算),2015年是55(家/分支机构)、2016年是101、2017年160、2018年大约是80(截止6月1日,见图1),每年增长率是60%~100%,增长很快,惊奇吧?
表1 2011-2013通过CMMI Level 5认证的部分公司
表2 2015-2018通过CMMI认证的列表之末尾表格显示
(看到不少 ZTE 了吗?)
图1 2018年通过CMMI Level 5 的部分查询结果截图
一般成功应用的软件工程模型,离不开优秀的商业运作(虽然号称是非赢利机构),包括敏捷Scrum的成功推广。
(TMMi 模型示意图)
TMMi 也分为五级(Levels):初始级、可管理级、已定义级、已度量级和持续优化级。从面向项目的Level 2看,Test policy 放在这里很不合适,应该是在组织层次才有测试方针。针对项目,测试策略(Test Strategy)也应在planning(测试计划之中),因为在基于测试目标、测试需求、测试风险等分析之后,才能决定测试策略。而互为评审(Peer Review)、非功能性测试(Non-Functional testing)不应该放在Level 3,而应该放在Level 2, 非功能性测试(性能、安全性测试)在一个项目中应该是最基本的测试要求之一。缺陷预防很重要,做起来也不是特别困难,而且也是培训的好素材,就可以放在Level 3这个层次上。如果认为,缺陷预防应该建立在度量之上,但今天工具那么发达,况且咱们就是做软件的(一切已经是数字化的),度量不是很难的东西,虽然不能一触而就。度量意义的缺陷预防是统计意义上的活动,可以针对当个的严重缺陷进行事后根因分析,进行缺陷预防,“缺陷预防”做得越早做越好。关键是在Level 4, 还冒出一个“高级评审(Peer Reviews)”, 其实里面还是在谈peer reviews(而评审有三种主要形式:peer review、walk-through、Inspection,peer review可以经常开展,但walk-through、Inspection更正式),
而且有不应该把“Advanced Reviews”等同于“static testing(静态测试)”。
静态测试中工具扫描代码,一般不叫review,而是analysis(分析),而且今天更应强调代码的工具分析。需求评审、设计评审,通常不用peer review,而是更多地采用Inspection(会议评审)形式的分析 。针对静态分析,而且可以在更早Level进行,也是软件测试的基本形式之一,所以静态测试可以更早开展(在需求、设计阶段),有利于降低劣质成本(自然降低开发成本)、缩短开发周期。
质量控制,不是一个关键域,反而是,软件测试是“质量控制”的子集,质量控制的范围比软件测试大,怎么可以把“质量控制”放在TMMi之中?测试活动倒可以放在质量控制成熟度模型(如果有的话)之中。从Level 2、3、4到Level 5,就是测试过程改进的历程,所以在Level 5也不应该存在“Test Process Improvement”。在CMMi Level 5中提倡“技术革新”,难道测试的技术革新不重要吗?在整个TMMi没看到自动化、自动化测试框架,自动化测试不重要吗?测试成熟度不能从使用工具、开发工具到测试框架的开发,不断成熟吗?技术解决问题,多数情况下比流程更有效、更彻底,测试工程师更乐意去做,不是吗? 只有在Level 2 有一个“测试环境”,但今天更应该提测试基础设施(Test Infrastructure),这根本不是“测试环境”这个概念所能包含的!测试过程模型TMap Next 就去掉“准备”阶段内的测试环境,将测试基础设施独立为贯穿整个测试生命周期的基础。TMMi Level 5的定义,说重些,就是一塌糊涂!从上面简单分析看,虽然不能说TMMi 千疮百孔,但问题还是很多的,这也就是它很难推广的原因(下面有数字证明)。
在市场上,TMMi和CMMI相比,小巫见大巫了。TMMi一共只认证了48家企业(或机构),与CMM/CMMI 全球认证的公司/机构的数字相比,目前只是它的千分之几(仅2017年CMMI 认证的企业接近3000家,仅我国通过Level 5的就有160家)。如果TMMi能到达其百分之几甚至十分之一(因为软件测试占整个软件研发的成本在30~40%),从市场看,未来太有想象空间了。那为什么TMMi现在只有48家通过认证?原因可能是多方面的:
-
TMMi 本身模型就有问题(前面已简单分析)
-
CMMI 覆盖了软件研发,也就覆盖了测试,测试是开发的一部分。
-
CMM/CMMI 诞生早、先入为主
-
CMM/CMMI 出身正统,有CMU、DoD这样有实力的机构支撑
-
......
TMMi侧重为那些独立的测试服务机构、测试中心等服务。
目前通过TMMi认证的48家机构,分布在全球13个国家,如表3所示,但主要分布在三个国家:英国、马来西亚和我国,为什么?因为TMMi有四种评估方法:
-
德国埃森哲公司开发的TMMi评估方法
-
英国Experimentus公司开发的TMMi评估方法
-
法国Cognizant公司开发的TMMi评估方法
-
西班牙MTP公司使用的TMMi评估方法
但目前最有市场的则是英国的Experimentus公司开发的TMMi评估方法,而马来西亚曾属于英国殖民地,是英国的势力范围,就是在Experimentus公司推动下,获得世界第二的位置,而马来西亚的软件实力(测试实力)在全球没有什么位置吧?再一次证明,商业运作见效果。美国最有实力,只有一家Dell,而Dell的软件/测试能力在美国也是处于相对落后的地位,来自美国的“测试之道”属于微软、Google(大家看过相应的著作),对吧?。印度外包服务很强,要么不做,要做就是最高水平(Level 5),虽然只有三家,但全在Level 5,而且都是IT服务公司(纯测试服务机构),没有银行或其它企业。我国为何能和马来西亚比列第二呢?因为我国有三家公司在推动这个TMMi认证市场,而且国有企业偏多,九家(实际只有8家,有一家通过了Level 3、4)中有7家来自银行、保险业。另外一家,知道是谁吗?HP(中国)公司交付部门,提供测试外包服务,而且是国内通过Level 5唯一的一家机构。
从行业分布看,如表4所示,IT服务排第一,这是很容易理解的,做服务外包,需要一个第三方的证书来证明自己,它们想获得认证是无可厚非的。排在第2名的银行,这其中大部分来自我国,如表5所示。如果去掉我国的数字(6),也就等于5,比电信/制造业略高,没有现在这么大的差异。
表4 通过TMMi认证的公司之行业分布情况
看到上面这些数据和分析,剩下的,留给读者自己去思考。
参考:
[1] https://en.wikipedia.org/wiki/Capability_Maturity_Model_Integration
[2] https://www.cmmiinstitute.com/cmmi
[3] https://sas.cmmiinstitute.com/pars/pars.aspx
[4] https://www.tmmi.org
[5] 随想曲:如何改进测试过程?