浅谈软件测试中自动化测试初探

[来源] 达内    [编辑] 达内   [时间]2012-06-19

本文介绍[1]了软件测试中的自动化测试,讨论了什么是自动化测试、自动化测试的基本工作过程、自动化测试的应用范围以及自动化测试与手工测试的优点和缺点,最后总结了自动化测试的未来发展方向。

   摘要:本文介绍[1]了软件测试 中的自动化测试,讨论了什么是自动化测试、自动化测试的基本工作过程、自动化测试的应用范围以及自动化测试与手工测试的优点和缺点,最后总结了自动化测试的未来发展方向。

  关键字:软件测试;自动化测试;手工测试

  1引言

  无论采用哪种开发模型所开发出来的软件系统,由于客观系统的

  复杂性,加上人的主观认识不可能完美,每个阶段的技术复审也不可能毫不遗漏地查出和纠正所有的错误,再加上编码阶段也必须会引起新的错误,所以在软件使用以前必须经过严格的 软件测试,通过测试尽可能找出软件开发各阶段的错误,从而得到高质量的软件。它不只是为了保证软件系统本身高质量,也保证整个软件开发过程是高质量的。不仅如此,软件测试 还为风险评估准备信息,给开发人员或程序经理提供反馈信息。

  软件测试可用手工来完成,目前大部分都是采用此测试方法。但是,软件测试的工作量很大,据统计,测试会占用到40的开发时间;一些可靠性要求非常高的软件,测试时间甚至占到开发时间的60。而测试中的许多操作是重复性的、非智力性的和非创造性的,并要求做准确细致的工作,计算机就最适合于代替人工去完成这样的任务。这种让计算机来代替人的部分手工测试工作的测试方法,我们称之为自动化测试。它的准确定义是使用一种自动化测试工具来验证各种软件测试的需求,它包括测试活动的管理与实施,测试脚本的开发与执行。自动化测试使测试过程简单并有效率,使测试过程更为快捷,没有延误。这就好比进行一项商业交易,我们已经知道了交易的具体过程,而我们所要做的是设计一套自动化的方法,使交易过程更简单,成本更低。

  2自动化测试完成的工作

  2.1前期准备工作

  在对一个软件系统进行测试之前,我们可以先改进被测试的产品,使它更容易被测试。有很多改进措施可以帮助测试人员更好的使用产品,也可以帮助测试人员更好的测试产品。比如一些产品很难安装,可以直接改进产品的安装程序,或者是开发一套自动安装程序,目前有很多专门制作安装程序的商用工具。

  我们也可以利用工具在测试执行的日志中查找错误,利用手工查找报错的方法容易让人感到乏味且易遗漏。这时我们可以仔细了解日志中记录的错误信息格式,写出一个错误扫描程序,使查错自动化。

  2.2需求分析

  正如软件生命周期有需求分析阶段一样,在制定测试方案之前也需要收集需求。定义自动化测试项目的需求要求我们全面地、清楚地考虑各种情况,然后给出权衡后的需求,并且可以使测试相关人员更加合理的提出自己对自动化测试的期望。

  开发管理者、测试管理者和测试人员实现自动化测试的目标常常是有差别的。除非三者之间达成一致,否则很难定义什么是成功的自动化测试。为了避免这种情况,需要在自动化测试需求上保持一致。应该有一份自动化测试需求,用来描述需要测试什么。测试需求应该在测试设计阶段详细描述出来,自动化测试需求描述了自动化测试的目标。

  2.3自动化测试工具的选择

  我们可以自己根据要测试的软件系统自己开发一个测试工具,但花费代价较大,鉴于此我们可以使用已成熟的测试工具。对于测试工具的选择,要有专人针对不同的自动化测试,去评估究竟该使用哪种测试工具比较好。自动化测试工具又分单元测试工具、功能自动化工具和性能自动化工具,其中又分开源的和商业工具。究竟哪种工具更适合自己平台的测试,还需要有专业人员进行评估。

  2.4自动化测试方案的制定

  自动化测试方案包括指明测试中需要什么样的数据,并给出设计数据的完整方法;需要明确测试设计的细节描述,还应该描述测试的预期结果;完成测试设计文档,需要描述清楚测试设计的思路;编写测试脚本。对于脚本的开发我们需注意以下问题:

  第一、开发脚本必须遵循一些规范化,就类似于程序员编程规范一样。我们的测试脚本就好比是我们测试人员的程序,同样要形成一个编写规范。因为养成这样的好习惯,是为了能方便维护脚本,避免增加后期的维护量和方便使用者使用;

  第二、保证开发的脚本回放没有问题的基础上,适当增加出错处理来增强脚本;

  第三、后期还可以在脚本中加入检查点,这样做的好处可以把原来需要人工去校验的地方让脚本去做;

  第四、在脚本中增加数据驱动方法,使脚本能覆盖更多的分支路径,进一步提高脚本的集成度。因为前面已经说过了,脚本是不会执行那些没有被编写进去的功能点的,所以说后期测试人员一旦发现这个地方有必要让脚本来代替手工进行执行,就可以不断的增强我们的自动化脚本。

  2.5可行性分析

  可行性分析是指验证自动化测试项目的可行性,尽可能快地验证你采用的测试工具和测试方法的可行性,站在产品的角度验证产品采用自动化测试的可行性。同时要

  确定测试工具和测试方法对于被测试的产品和测试人员是否合适。选择一个快速,有说服力的测试套,它是评估测试工具的最好的方式,它可以证明你所选测试工具和测试方法的正确性。

  2.6自动化测试的维护和扩充

  自动化测试是一个长期的过程,为了与产品新版本的功能和其他相关修改保持一致,自动化测试需要不停的维护和扩充。自动化测试设计中考虑自动化在未来的可扩充性是很关键的,不过,自动化测试的完整性也是很重要的 。如果自动化测试程序报告测试用例执行通过,测试人员应该相信得到的结果,测试执行的实际结果也应该是通过了。其实,有很多存在问题的测试用例表面上执行通过了,实际上却执行失败了,并且没有记录任何错误日志, 就是失败的自动化。这种失败的自动化会给整个项目带来灾难性的后果,而当测试人员构建的测试自动化采用了很糟糕的设计方案或者由于后来的修改引入了错误,都会导致这种失败的测试自动化。失败的自动化通常是由于没有关注自动化测试的性能或者没有充分的自动化设计导致的。

  3自动化测试应用的范围

  自动化测试并不是要求全程自动化,使用自动化测试代价也非常之高。自动化测试主要是用在存在大量重复性的手工测试项目和测试时间比较长的项目。很多测试小组都是在回归测试中采用自动化测试。所谓回归测试指在修改了原软件后,对其重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。它通常使用相同的测试用例和测试方法,自动化测试方法最适合。关于系统中模块的测试,对那些最有可能出问题或者不会破坏原先设计的重构任务进行自动化测试,性价比最高。

资源下载