综合系统(System of System) 在讨论这个问题前,我们先引入一个概念:综合系统(System of System)。这个概念来自ISTQB术语,它是这样被定义的:Multiple heterogeneous,distributed systems that are embedded in networks at multiple levels and in multiple interconnected domains,addressing large-scale inter-disciplinary common problems and purposes,usually without a common management structure. 这个定义非常拗口,翻译过来大概是:植根于多层网络和错个交互的领域中的,多重异构,分布式的系统,这类系统用来解决大规模跨领域问题,一般没有通用的管理结构。现在举例说明什么是综合系统,我们拿近很火爆的物联网系统来做例子。
上图是一张物联网系统通用的部署架构图,一个常见的物联网系统将至少包含:感知层,传输层,应用层三层。要将多种软硬件系统集成起来。如常见的机场行李分拣系统,它至少要和航空公司的旅客服务系统,安检系统,机场地面服务系统,传感器管理系统(如果加入了RFID技术的话)通过网络系统连接在一起。这是一个典型的综合系统。在IT系统越来越渗入到人们工作、生活的,这样的综合系统将会越来越多,也会越来越常见,比如,你在双十一采购的时候,面对的是一个综合系统:淘宝的入口连着天猫,连着各个银行的支付接口,而淘宝网和天猫的内部又涉及大大小小的数百个子系统。 综合系统的失效 我们知道,随着系统越复杂,它产生实效的概率也越高,有时候产生的bug灾难性也越大,有时候一个环节出了问题,会波及整个系统,有时候一个环节出了问题,好久以后才会在下游系统被发现,举几个例子: 1.美国丹佛机场系统案例:导致新机场延期16个月使用,当天因为行李系统问题而瘫痪。(这让然不仅是测试问题,也是个商业失败案例,设计失败案例)详细案例: http://calleam.com/WTPF/wp-content/uploads/articles/DIABaggage.pdf 2.12年的印度三大主要电网雪崩般的崩溃案例: http://www.slideshare.net/randhir2k/analysis-of-indian-power-grid-failure 3.11年春节铁道部售票系统春运期间无数次崩溃(每个中国人都知道)。 4.某电信的Boss系统,在开发了n个新套餐后,有一些套餐的设计出了问题,导致少扣了钱,等到月底结算系统做平账的时候,发现有问题,这时候已经损失了几百万元,无法挽回。 5.某银行。。。某xx机构。。。某互联网公司。。。这样的问题几乎每天都在世界上每一个角落发生。 引发这些系统失效的原因万万千,有商务原因,有规划原因,有设计原因,有管理原因,但测试不充分是发生这些问题的必要条件。也是说发生上述问题,一定存在着测试不充分现象! 你的被测物是综合系统么? 按照一开始给出的定义去套,你会发现没有一个明显的划分边界。从我的经验来说,你的被测物是否是综合系统可以从以下几点来判断: 1.需要多个系统互动才能完成核心功能:如你要测试的某种自动售货机支持用手机上的微信支付。你的应用支持从各种类型的手机上拍照,并分享到新浪微博上去。 2.你的系统中包含了多个系统及或者技术,如:你要从多种传感器获取数据,传感器数据要通过各种类型网络传输;你使用了某种交易中间件(可能是未经过大量成功案例验证的产品)。 3.多个公司或者团队协同开发,如:你的被测系统使用某个公司开发的工作流引擎,而他们开发的工作流引擎十分复杂;银行,或者电信公司把一个大项目分包给各个公司。 符合上述条件之一:你的被测物可以被叫做综合系统了。 综合系统一定要做系统集成测试么? 答案是肯定的! 还是那句话,系统越复杂,出错概率越大,带来的损失也越大。 后续的系列文章会详细说明如何做系统集成测试。大家敬请期待。,