一、背景
  我从毕业到现在, 曾在大小不同的三个公司职: 有民营的、有外资的、也有上市公司。 但以前大多都是做项目,从事软件开发工作,绝大部分公司对测试都不重视,即使有也没有成规模, 更谈不上建立测试体系。总之,重开发轻测试的管理思想在中国延续了几十年、并且还要继续,看看他们给测试工程师开的低工资和老师在课堂上讲到测试时一笔带过知道测试被中国的老板所忽略。
  近两年,我从事CRM软件产品的测试、项目管理工作。 由于公司对软件的质量要求特别高, 这必然引起了大家对测试工作的重视,不但要求有强大的测试团队,该团队必须具备在业务方面、测试技能方面的专业水平, 而且在软件开发过程方面经常由于测试而作持续不断地调整。
  幸运的是,随着软件开发技术和工具的提高,软件工程和软件过程实践的推广, 软件测试日益得到重视和专业化。 我从事测试工作期间,一直研究CMM、测试理论、自动化测试工具,并建立了一套完整的测试体系。
  在此并不介绍整个测试体系,而是介绍测试方面值得探讨的部分:持续集成与测试自动化。目的是与大家共同进步。当然已经有很多关于持续集成和自动化测试方面的介绍,但我要介绍的不只是持续集成,也不只是自动化测试,而是测试如何的自动化.
  二、测试自动化
  自动化测试是希望能够通过自动化测试工具或其他手段,按照测试工程师的预定计划进行自动的测试,目的是减轻手工测试的劳动量,从而达到提高软件质量的目的。自动化测试的目的在于发现老缺陷。而手工测试的目的在于发现新缺陷。
  测试自动化涉及到测试流程、测试体系、自动化化编译、持续集成、自动发布测试系统以及自动化测试等方面整合。也是说要让测试能够自动化,不仅是技术、工具的问题,更是一个公司和组织的文化问题。首先公司从资金、管理上支持您,其次要有专门的测试团队去建立适合自动化测试的测试流程、测试体系;其次是把原代码从受控库中取出、编译、集成、发布可运行系统、进行自动化的单元测试和自动化的功能测试的过程。
  (一)、自动化测试的好处
  1、 对新版本执行回归测试--测试每个特征
  对于产品型的软件,每发布一个新的版本,其中大部分功能和界面都和上一个版本相似或完全相同,这部分功能特别适合于自动化测试, 从而可以让测试达到测试每个特征的目的。
  2、 更多更频繁的测试--沉闷、耗时
  我们的产品向市场的发布周期是3个月,也是我们的开发周期只有短短的3个月,而在测试期间是每天/每2天都要发布一个版本供测试人员测试,一个系统的功能点有几千个上万个,人工测试是非常的耗时和繁琐,这样必然会使测试效率低下。
  3、替代手工测试的困难--300个用户有些非功能性方面的测试:压力测试、并发测试、大数据量测试、崩溃性测试,用人来测试是不可能达到的。 在没有引入自动化测试工具之前,为了测试并发,研发中心的一、两百号人在研发经理的口令:1-、2-、3!, 大家同时按下同一个按钮。回想起这中情景也蛮有意思的。
  4、具有一致性和可重复性
  由于每次自动化测试运行的脚本是相同的, 所以每次执行的测试具有一致性, 人是很难做到的. 由于自动化测试的一致性,很容易发现被测软件的任何改变。