企业内部实现软件测试自动化的方案探讨

发表于:2009-06-19来源:作者:点击数: 标签:软件测试自动化企业探讨方案
软件测试 是 软件工程 的一个范畴,它作为软件工程的一部分,随着软件生产的产业化运作应运而生。从20世纪70年代开始,随着计算机技术的飞速发展,计算机软件在整个社会系统中的地位也越来越重要,而计算机软件开 发的规模和复杂度也随着其需求和重要度的增
 软件测试软件工程的一个范畴,它作为软件工程的一部分,随着软件生产的产业化运作应运而生。从20世纪70年代开始,随着计算机技术的飞速发展,计算机软件在整个社会系统中的地位也越来越重要,而计算机软件开 发的规模和复杂度也随着其需求和重要度的增加而急速上升。在过去的20年里,对软件测试的最初认识只是“证明程序的正确性”,而后一系列的软件测试理论和方法被逐渐的提出,在1983年由IEEE提出了目前比较认可的软件测试定义,即:“为了检验某个应用系统的过程是否满足规定的需求,并了解预期结果和实际结果之间的差异,而使用手工和/或自动化手段来运行并验证这一过程”。按照这个定义,软件测试的目的是监测和排除缺陷,以确保软件产品在可用性,功能性,可操作性等多方面满足软件需求。

    从上世纪90年开始,产业界开始意识到被动的以监测和发现错误为目的的软件测试无法避免软件开发过程中由于软件需求和设计等方面的缺陷所带来的巨大风险,所以在整个产业界开始从软件质量控制(SQC, Software Quality Control)开始转移到软件质量保证SQA, Software Quality Assurance),从而使软件测试从单纯的缺陷检测和发现覆盖到整个软件开发过程,同时软件测试的流程软件测试技术也成为了独立研究的方向。我们已经了解到一个典型的软件过程可以分为测试需求分析测试设计,测试执行,缺陷和配置管理过程等许多个不同的阶段。在软件测试技术方面也已经被细化为单元测试集成测试系统测试,用户验收测试等不同的测试技术。


    随软件测试技术的发展和测试流程管理的需求,实现软件测试自动化的趋势已经不可逆转了。目前,软件测试自动化主要集中在软件测试流程的管理自动化,和动态测试的自动化,如功能测试自动化和性能测试自动化方面,还有是少部分的静态测试,如代码走查,它们常常比较容易从开发过程剥离出来。
相比于手工测试,测试自动化的优势是明显的。


    首先自动化测试可以提高测试效率,使测试人员更加专注于新的测试模块的建立和开发,从而提高测试覆盖率;其次,自动化测试使测试资产的管理数字化,并使测试资产得以在整个测试生命周期内得到复用,这个特点在功能测试和回归测试中尤其具有意义;此外,通过测试流程的自动化管理使机构可以通过流程的关键绩效指标(KPI, Key Performance Indicator)来衡量测试过程的有效性,从而实现了从软件质量保证软件质量管理(SQM, Software Quality Management)的进化。


    根据Oppenheimer Funds的调查,在2001年前后的3年中,全球范围内由于采用了测试自动化手段所实现的投资回报率(ROI, Return Of Investment)更高达1500%。
     
    那么,对于一个企业用户来说,什么样的软件测试自动化方案将是他们所最需要的呢?在回答这个问题之前,首先我们必须注意到,作为企业用户,在企业内部通常存在许多不同种类的应用平台,应用开发技术也不尽相同,甚至在一个应用中可能就跨越了多种平台;或由于开发时期的不同,可能导致同一应用的不同版本之间也存在技术差异。同时对于开发工作本身也可能多种形式,由内部团队开发或是开发外包等等。所以软件测试本身对于这些企业的QA和测试部门来说无疑是一个巨大的挑战,他们考虑选择软件测试自动化的最根本出发点就是为了降低这些挑战可能带来的软件产品质量和上线周期等方面的风险。根据笔者和不同企业用户的沟通和交流,他们的自动化需求往往更多的集中在:

    自动化软件测试管理流程,以达到始终一致的软件质量和可量化的,可衡量的测试过程管理。
通过实现测试自动化,以提高测试案例的复用和实现内部标准化,从而提高测试效率。


    但同时,企业用户也将综合考虑测试自动化给当前的企业部门与部门间的合作以及现有的工作流程所带来的冲击,在软件测试自动化过程中也往往选择“进化”(Evolution)方式,而不是“革命”的(Revolution)方式。
     
    企业在实现测试自动化过程中,一个有趣的现象是绝大多数的中国企业用户会选择在企业内部(In-House)实现测试自动化,他们希望参与这个自动化的过程,并且更加在乎自己来建立并管理这个自动化流程;他们不仅限于通过软件测试自动化来满足上述需求,而且希望通过自动化过程的实施也到达学习和提高团队测试技能的目的。与此相比,不在少数的欧美企业用户他们可能会选择测试自动化平台托管服务(Hosted Service),或者外包(OutSourcing),离岸(Off-Shore)和派遣(Staffing)等多种方式相结合来实现,对他们来说,更加注重的是软件测试自动化所带来的结果,而非自动化过程本身。

原文转自:http://www.ltesting.net