Fault管理和自动化,咋一看上去,是两个不想干的事情。但是,却是息息相关。
Fault管理有很多工作需要做,很重要的是Release管理,风险管理,进度管理,流程管理。整体是比较繁琐的,而管理的重心是沟通与流程,与各种各样的人沟通。而Fault管理中除了与人沟通之外以及相关流程的制定、监控之外,其他大部分的时间是花在绩效信息汇报、Release信息填写、Fault的相关的流程上操作。而往往这些事情中很多步骤是重复的,可以自动化的。如果自动化后,可以将省下的effort让Fault Manager更好地从事沟通管理、流程分析与优化、质量管理上来。
我自己的经验是:发各种各样的绩效信息占用我10%的时间,而其他Fault管理中以及标准化的流程相关的事情则是将近30%左右的时间。而很多流程相关的事情像填写Correction的版本相关信息、测试人员测试通知、Bug超时计算与通知等其他很多步骤是重复、机械化的,完全可以自动化。
那如何识别哪些可以自动化的工作呢?以及如何自动化呢?
首先是需要进行相关的工作流程进行分析,看哪些工作室**重复性高、创造性以及情感性低**。而这些工作往往就是可以流程化、标准化的。而其中很大一部分工作就可以自动化,让机器帮助我们执行重复化的工作。
我们FCO Team有很大一部分的工作是把带有Correction的release信息填写到Fault管理系统中,然后让对应的测试部门开始测试。而这个基本上是重复性高、完全流程化以及创造性和情感性极低的工作。而我们在这里投入了很多的时间。
那我们在识别完了可以自动化的工作后,我们接下来就需要进行规划自动化。其实就是将相关可以自动化的工作列出来,然后一个个进行设计和分析。像我上面所说的工作,就是需要机器帮助我们实现下面的标准化步骤:
1. 获取相关Correction的对应的版本信息
2. 找到Correction对应的Fault管理系统页面
3. 更新相关版本信息
4. 通知测试人员
而其他工作也是类似。同时在规划过程中,我们需要评估这自动化的cost和benefit的比率。如果太大,那么就需要放弃。毕竟自动化的目的是让自动化带来更高的收益,同时实现成本要不高才行。
当需求已经澄清后,范围已经确定。接下来就是自动化的实现了。其实这个才是最耗时间的地方。在软件测试中,很多测试工作已经自动化了,而且给企业带来的收益很大。而我们的自动化过程也是参考了很多软件自动化测试方面的经验。而测试自动化很多用到是脚本语言以及很多的自动化框架。这个我们在参考过程中收益良多。
向上面我列出来的一个例子。我们就使用了网页测试自动化的一个Python框架Mechanize。通过借鉴开源工具的,我们自动化的成本大大降低,同时带来的Benefit的是看的见的。现在我们FCO Team三个人,基本上不用为了版本信息的更新而烦恼。同时我们还将Bug超时时间提醒进行自动化,大大减少FCO和工程师的时间。让FCO和工程师能及时地处理问题同时不让问题堆积起来。
自动化一些工作之后,Fault管理的大部分工作则是集中在协调、沟通、风险管理以及进度管理上。由于是在做核心的事情,这使得我们的生产力大大提高。
原文地址:http://blog.csdn.net/neilhhw/article/details/45897919