代码改变世界

【转载】【缺陷预防技术】自动错误预防(AEP)

2012-03-02 16:15  Tester Chen  阅读(500)  评论(0编辑  收藏  举报

AEP Automated Error Prevention,简称AEP,是指通过在整个软件开发周期中自动地预防错误来提高产品质量。
AEP是基于质量大师戴明的质量模型的基础上加入了自动化的元素。戴明提倡质量改进应该通过分析错误根源和消除错误原因。但是对于软件行业,这种手工的质量改进方式很难实现,需要花费大量时间和精力,因此有必要引入自动化的实现方式。
AEP Methodology 是一种改进软件质量、提高软件开发生命周期效率的新方法。它基于 AEP 概念,此概念的核心,在于从自身及其它人的错误中吸取教训,然后将学到的东西应用到软件生命周期中,使软件成功运行。

AEP 概念提倡以下五个特定过程的自动化,可以把这五个过程组合起来,以改进生产流程、并预防错误:
1.识别错误。
2.找到错误原因。
3.定位产品产生错误的地方。
4.修改现有的实践(或者添加一些新的)、以确保相同的错误不再出现。
5.监视流程。

至于如何应用 AEP 概念的例子,请想象您有一个n层的系统,包括客户机、用 Java 编写的中间件、以及数据库。假定负载测试显示系统由于负载过重而停止了工作。在经过详细分析之后,您发现资料从开放式连接泄漏到了数据库中。通常,您只需修改代码以关闭连接。不过,如果您要从 AEP 的角度来解决此问题,则还应设法确定如何预防错误再次出现。在将问题单独处理为开放式连接之后,您可以确定流程中出现错误的原因,在于某个开发人员编写代码打开了连接、但没有关闭该连接。然后,您可能会设法采取一项措施,以确保编写的打开连接代码中始终伴随有关闭该连接的代码,从而避免再次出现此类错误。
实现此措施的一种方法,在于建立一条 Java 代码规范,要求每个打开连接的类必须有一个finalize ( ) 方法,使用finally块来关闭连接。如果代码遵循此规则,那么错误就不会再次出现。但您如何能实施该项措施呢?您可以通过让团队进行代码复审来实施该项措施。不过,这缺乏效率,因为团队需要人工审查和分析所有的代码,以确定是否所有连接都已关闭。更有效率的策略,是将产品整合到流程中,该产品会自动检查代码规范,然后让该产品分析您的代码,自动识别违反此代码规范的情况。
这就是 AEP 概念所蕴含的原理。您在负载测试期间发现一条错误,然后将来自于 Java 中间件内开放式连接的错误源码,作为资料泄露单独处理出来。您发现 Java 代码缺少finally块和finalize ( ) 方法,于是定义了一个代码规范,规定将来应该如何编写代码,并使流程自动化,以确保遵循此项标准。通过此方式,可以预防所有这一类的性能问题。

AEP Methodology 有五条主要原则,该方法提供了一个经过良好测试的蓝图,用以在团队环境中实现五步AEP概念:

1.应用行业最佳实践来防止普遍错误,并建立全寿命周期的错误预防基础。
2.按需修改的方法,以预防特殊的错误。
3.确保每个小组都能正确并始终如一地执行 AEP。
  a.按小组逐个引入 AEP。
  b.确保每个组都有一个合适的支持体系。
  c.建立小组的工作流程,以确保错误预防被恰当地执行。
4.循序渐进地采用每一个实践。
5.利用统计来稳定每一个过程,让它发挥价值。
为让 AEP 产生最大效益,必须向整个团队提供必需的技术、体系和培训,正确并始终如一地执行错误预防实践。

From:www.51Testing.com