您现在的位置: 中国IT实验室 >> 软件测试 >> 测试管理 >> 文章正文
持续集成与测试自动化
来源:中国IT实验室整理 时间:2007-4-12 作者:佚名

    一、背景

    我从毕业到现在, 曾在大小不同的三个公司就职: 有民营的、有外资的、也有上市公司。 但以前大多都是做项目,从事软件开发工作,绝大部分公司对测试都不重视,即使有也没有成规模, 更谈不上建立测试体系。总之,重开发轻测试的管理思想在中国延续了几十年、并且还要继续,看看他们给测试工程师开的低工资和老师在课堂上讲到测试时一笔带过就知道测试被中国的老板所忽略。

    最近两年,我从事CRM软件产品的测试、项目管理工作。 由于公司对软件的质量要求特别高, 这必然引起了大家对测试工作的重视,不但要求有强大的测试团队,该团队必须具备在业务方面、测试技能方面的专业水平, 而且在软件开发过程方面经常由于测试而作持续不断地调整。

    幸运的是,随着软件开发技术和工具的提高,软件工程和软件过程实践的推广, 软件测试日益得到重视和专业化。 我从事测试工作期间,一直研究CMM、测试理论、自动化测试工具,并建立了一套完整的测试体系。

    在此并不介绍整个测试体系,而是介绍测试方面最值得探讨的部分:持续集成与测试自动化。目的是与大家共同进步。当然已经有很多关于持续集成和自动化测试方面的介绍,但我要介绍的不只是持续集成,也不只是自动化测试,而是测试如何的自动化。

    二、测试自动化

    自动化测试就是希望能够通过自动化测试工具或其他手段,按照测试工程师的预定计划进行自动的测试,目的是减轻手工测试的劳动量,从而达到提高软件质量的目的。自动化测试的目的在于发现老缺陷。而手工测试的目的在于发现新缺陷。

    测试自动化涉及到测试流程、测试体系、自动化化编译、持续集成、自动发布测试系统以及自动化测试等方面整合。也就是说要让测试能够自动化,不仅是技术、工具的问题,更是一个公司和组织的文化问题。首先公司从资金、管理上支持您,其次要有专门的测试团队去建立适合自动化测试的测试流程、测试体系;其次就是把原代码从受控库中取出、编译、集成、发布可运行系统、进行自动化的单元测试和自动化的功能测试的过程。

    (一)、自动化测试的好处

    1、 对新版本执行回归测试——测试每个特征

    对于产品型的软件,每发布一个新的版本,其中大部分功能和界面都和上一个版本相似或完全相同,这部分功能特别适合于自动化测试, 从而可以让测试达到测试每个特征的目的。

    2、 更多更频繁的测试——沉闷、耗时

    我们的产品向市场的发布周期是3个月,也就是我们的开发周期只有短短的3个月,而在测试期间是每天/每2天都要发布一个版本供测试人员测试,一个系统的功能点有几千个上万个,人工测试是非常的耗时和繁琐,这样必然会使测试效率低下。

    3、替代手工测试的困难——300个用户有些非功能性方面的测试:压力测试、并发测试、大数据量测试、崩溃性测试,用人来测试是不可能达到的。 在没有引入自动化测试工具之前,为了测试并发,研发中心的一、两百号人在研发经理的口令:1-、2-、3!, 大家同时按下同一个按钮。回想起这中情景也蛮有意思的。

    4、具有一致性和可重复性

    由于每次自动化测试运行的脚本是相同的, 所以每次执行的测试具有一致性, 人是很难做到的。 由于自动化测试的一致性,很容易发现被测软件的任何改变。

    5、更好的利用资源——周未/晚上

    理想的自动化测试能够按计划完全自动的运行, 在开发人员和测试人员不可能实行三班倒的情况下, 自动化测试可以胜任这个任务, 完全可以在周末和晚上执行测试。 这样充分的利用了公司的资源,也避免了开发和测试之间的等待。

    6、解决测试与开发之间的矛盾

    通常在开发的末期,进入集成测试阶段, 由于每发布一个版本的初期,测试系统的错误比较少,这时开发人员有等待测试人员测试出错误的时间。 事实上在叠代周期很短的开发模式中,存在更多的矛盾, 但自动化测试可以解决其中的主要矛盾。

    7、增加软件信任度

    总之,自动化测试的好处和收益是很明显的,但也只有顺利事实了自动化测试才能从中获得它的益处。

    (二)、 自动化测试—— 误区、限制自动化化测试好处很多,但也有很多的局限,也正因为很多老板对自动化测试的期望太高,所以有很多执行自动化测试失败的例子。

    1、 期望自动化测试能取代手工测试

    不能期望自动化测试来取代手工测试, 测试主要还是要靠人工的。

    2、期望自动测试发现大量新缺陷

    同样不能期望自动化测试去发现更多新的缺陷, 事实证明新缺陷越多,自动化测试失败的几率就越大。发现更多的新缺陷应该是手工测试的主要目的。测试专家James Bach总结得 85%的缺陷靠手工发现,而自动化测试只能发现15%的缺陷。

    其实我认为自动化测试能够很好的发现老缺陷。

    3、工具本身不具有想象力

    工具毕竟是工具,出现一些需要思考、体验、界面美观方面的测试,自动化测试工具无能为力。

    4、技术问题、组织问题、脚本维护

    自动化测试的推行,有很多阻力,比如组织是否重视, 是否成立这样的测试团队,是否有这样的技术水平,对于测试脚本的维护工作量也挺大的,是否值得维护等等问题都必须考虑。

    (三)、 不适合自动化测试情况

    自动化测试不是适合所有的公司、所有的项目。

    1、定制型项目(一次性的)

    为客户定制的项目,维护期由客户方承担的,甚至采用的开发语言、运行环境也是客户特别要求的,即公司在这方面的测试积累就少,这样的项目不适合作自动化化测试。

    2、项目周期很短的项目

    项目周期很短,测试周期很短,就不值得花精力去投资自动化测试,好不容易建立起的测试脚本,不能得到重复的利用是不现实的。

    3、业务规则复杂的对象

    业务规则复杂的对象,有很多的逻辑关系、运算关系,工具就很难测试。

    4、美观、声音、易用性测试

    人的感观方面的:界面的美观、声音的体验、易用性的测试,也只有人来测试

    5、测试很少运行:一个月只运行一次

    测试很少运行,对自动化测试就是一种浪费。自动化测试就是让它不厌其烦的、反反复复的运行才有效率。

    6、软件不稳定

    软件不稳定,则会由于这些不稳定因素导致自动化测试失败。只有当软件达到相对的稳定,没有界面性严重错误和中断错误才能开始自动化测试。

    7、涉及物理交互

    工具很难完成与物理设备的交互,比如刷卡的测试等。

    (四)、什么样的情况适合自动化测试自动化测试之所以能在很多大公司实施起来,就是有它适合自动化测试的特点和高的投资回报率。

    1、产品型项目

    产品型的项目,每个项目只改进少量的功能,但每个项目必须反反复复的测试那些没有改动过的功能。这部分测试完全可以让自动化测试来承担, 同时可以把新加入的功能的测试也慢慢地加入到自动化测试当中。

    2、增量式开发、持续集成项目

    由于这种开发模式是频繁的发布新版本进行测试,也就需要自动化测试来频繁的测试,以便把人从中解脱出来测试新的功能。

    3、能够自动编译、自动发布的系统

    要能够完全实现自动化测试,必须能够具有自动化编译,自动化发布系统进行测试的功能。 当然,不能达到这个要求也可以在手工干预下进行自动化测试。

    4、回归测试

    回归测试试自动化测试的强项,它能够很好的确保你是否引入了新的缺陷,老的缺陷是否修改过来了。在某种程度上可以把自动化测试工具叫做回归测试工具。

    5、多次重复、机械性动作

    自动化测试最喜欢测试:多次重复、机械性动作,这样的测试对它来说从不会失败。比如要向系统输入大量的相似数据来测试压力和报表。

    6、需要频繁运行测试

    在一个项目中需要频繁的运行测试,测试周期按天算,就能最大限度的利用测试脚本,提高工作效率。

    7、将烦琐的任务转化为自动化测试

[1] [2] 下一页  



相关文章
TestNG使Java单元测试轻而易举
C语言单元测试框架-Check
自动进行团队构建和单元测试过程
java的单元自动化测试---jtest
使用NUnit在.Net编程中进行单元测试
防御性编码和单元测试“交通规则”
数据库程序的单元测试
单元测试的基本方法
为什么要进行单元测试?
单元测试和事先测试开发
推荐文章


测试技术 测试工具 测试管理 测试质量
·TestNG使Java单元测试轻而易举04-29
·C语言单元测试框架-Check04-29
·自动进行团队构建和单元测试过程04-29
·java的单元自动化测试---jtest04-29
·使用NUnit在.Net编程中进行单元测试04-29
·防御性编码和单元测试“交通规则”04-29
·数据库程序的单元测试04-29
·单元测试的基本方法04-29
·为什么要进行单元测试?04-28
·单元测试和事先测试开发04-28
·单元测试------理论篇04-28
·强大的Web开源测试工具—Selenium04-19
·测试工具:Pure Software vs Appliance04-12
·开源Web自动化测试框架——Watir试用手记04-12
·Java开源测试工具汇总04-12
·开源测试工具的完整解决方案04-12
·Logiscope测试机理04-12
·测试工具的选择04-12
·testview测试工具详介04-12
·用webload进行web application性能测试04-12
·Optimizeit Thread Debugger概览04-12
·开放源代码的软件测试工具04-12
·从CMM角度考虑需求管理计划04-17
·软件测试实践之测试环境的规划与管理04-12
·缺陷漏测分析:测试过程改进04-12
·软件测试的组织与管理04-12
·T-Plan 测试过程管理工具技术摘要04-12
·软件测试过程的监控方法04-12
·成功测试管理的九大原则04-12
·谈项目管理和软件测试过程04-12
·如何制定软件项目测试计划04-12
·软件测试需要一个怎样的过程?04-12
·软件测试应遵循的八条原则04-12
·CMMI混合型表达方式04-18
·以技术采用工具推进CMMI实施04-18
·CMMI-2级必需的和期望的模型要素04-18
·CMM/CMMI/SPCA业务介绍04-18
·过程“奥林匹克”——CMM的目的04-17
·软件市场的通行证——CMM04-17
·软件企业如何有效地推行CMM04-17
·CMM是解决软件出口壁垒的有效途径04-17
·CMM培训需要特别注意两大问题04-17
·源自美国的安全模型SSE-CMM04-17
·CMM软件过程改进—软件企业的BPR04-17
  培训中心
  ITLab技术交流平台: