赵森
(江南机电设计研究所,贵州 贵阳 550009)
摘要:软件测试过程是很有可能实现自动化的过程,而实现测试的自动化无论对提高软件的质量还是减少开发成本都有现实意义。文章介绍了基于关键字的自动化测试,以曾所做过的关键字驱动的自动化框架设计为例进行讲解,并介绍了其他常见的自动化测试框架以及两个在自动化测试中常用的工具。
关键词:软件测试;自动化测试;驱动测试;框架设计
中图分类号:TP311文献标识码:A文章编号:1009-2374(2014)22-0026-02随着IT技术的快速革新,软件的规模逐步变大,软件开发人员希望在将投入运行之前,质量能得到保障,而测试则是保证系统正确性的一个必要手段,通常测试人员是软件的第一个用户,而且也是检验产品质量的重要人员。据统计,测试在软件开发总成本中往往要占到40%~50%甚至更多。在以往的开发和测试过程中,通过经验积累发现,测试过程是极有可能实现自动化的,而实现测试的自动化无论对提高软件的质量还是对减少开发成本都有很大的帮助。自动化软件测试的目的在于通过有效的利用时间和资源来提高测试效率,把测试用例转化为自动的执行,把人从繁琐的体力测试中解放出来。自动化测试能做一些手工难以完成的测试,比如压力测试,特别是在回归测试中有很大的帮助,所以研究如何实现软件测试的自动化是有意义而且是很有必要的。
1常用的自动化测试技术简介
自动化测试技术历经了多个发展阶段,从最初的录制回放技术到后来的数据驱动的测试技术,再到现在着重介绍的关键字驱动的自动化测试技术,它们都有各自的适用之处。一般而言,后发展的技术是对以往技术的继承和发展,具备向后兼容特性。关键字驱动的测试技术以它独到的性能受到了业内人士的青睐,并在一些领域得到了很大程度上的应用。关键字驱动测试技术是以预先设计好的关键字作为依据来驱动测试事件的,并且使用关键字编写的测试脚本简单易读并且可维护性强。以上几类自动化测试手段在各个领域都得到了很好的应用,但是都存在各自的优缺点,不能完全满足不同领域的需求。
2自动化测试常用工具选取
俗话说工欲善其事,必先利其器,在框架设计中可以应用一些优秀工具来辅助框架的开发。自动化测试的辅助工具不胜枚举,并被应用到不同领域,本文主要介绍在后面框架设计中用到的STAF和Selenium两个开源的工具,两个工具对于自动化软件测试具有诸多优势,在此不作详细说明。
3关键字驱动的自动化测试框架设计
以曾开发过框架为例,该框架是测试一款产品型软件,每个版本发布前测试的功能点很多都和上个甚至更早版本测试点相同,但都需要测试,避免新功能的引入对老的功能产生影响,如果采用人工测试,需要花费大量的精力做相同的测试,以及在做回归测试都要花费大量的时间,为了节约成本,减少枯燥重复的测试,采用自动化测试的方法,这种方法不仅能解决上述问题,还能提高测试的准确性,缩短软件开发周期,在空闲时间运行自动化的用例,工作时间查看结果报告,这样就有效的利用时间和资源,提高了测试的效率,如果一旦实施开来,预计可以减少1/4的费用。
3.1关键字驱动自动化测试的单元结构
整个自动化测试的单元组成分为两个部分,一个是测试控制端,一个是安装产品的服务端。测试控制端放的就是我们的测试数据,脚本代码,测试工具等我们测试所用到的一切东西,而服务端就是我们安装产品的地方,里面还包括产品的依附的软件、软件所需要的数据信息、数据库信息等一切与产品有关的信息,主要是做到测试环境的隔离。如果涉及到要对产品直接的操作可以通过STAF这个软件使得控制端能对服务端文件等进行远程操作,对于UI方面我们借助selenium这个工具。
3.2关键字驱动
关键字不仅为测试提供参考依据,而且被解释执行。当在执行测试数据的文件时,如果遇到关键字则调用对应的关键字支持脚本,通过关键字支持脚本的执行,将实际输出与数据表格中的期望结果进行比较,一致则通过,否则报错,并将测试结果写入测试日志文件。这样,数据文件包含测试的逻辑内容用来指定需要执行的测试用例、测试步骤和测试数据信息,而支持脚本包含对被测试软件的认识,关键字的解析等,这样就实现了脚本、测试数据、测试逻辑的相互独立。
关键字驱动测试中,每一个关键字能解释执行相应的脚本,通过不同的测试数据,在这个测试框架中可以通过很少的代码来产生大量的测试用例。同样的代码在用数据表来产生各个测试用例的同时被复用。
3.3关键字库的设计
要做关键字驱动,就要设计关键字,而关键字设计是很重要的一步,我们在设计关键字时,应该充分考虑到其扩展性,可读性,稳定性等,切忌过多的设计关键字,造成关键字信息冗余,更不能遗漏设计关键字,致使某些需实现的功能无法得到精确的描述,总之一切要以特定的项目实现为原则来确定关键字地设计。
3.4自动化测试框架
图1关键字驱动的自动化测试框架
如图1所示就是一个自动化测试的结构图,第二层是脚本代码,第三层是业务逻辑层,最高层,就是一些执行文件。
脚本代码,逻辑,数据都分离开,并且在一个文件里存储执行的步骤,里面按逻辑顺序放了一个用例的关键字,这些关键字会调用相应的脚本代码,而脚本代码里的数据又从数据的文件里调取,各层各司其职,相互独立。当执行某一个用例的时候,我们就调用执行文件,执行文件执行相应的脚本,解析文件里面存储的关键字,将其解析执行相应的脚本代码。
3.5自动化测试框架的总体设计
图2自动化测试的流程
自动化测试也是一个开发的过程,务须按照软件开发的流程来设计:
第一阶段为需求调研分析的阶段,第二阶段可以概括为设计阶段,第三阶段为编码阶段,第四为测试阶段,然后就是评审验收。
设计成三部分:环境准备,测试执行,结果监控并发送结果报告。框架如图2所示。
环境准备部分主要是对测试环境进行初始化,还原成一个“干净”的环境,因为整个过程需要自动化,所以我们就需要自动执行测试前的一些操作,先自动选择最新产品版本进行安装,自动生成测试所需用户信息,自动更新SVN数据,自动根据配置文件更改与环境相关的数据等。
测试执行部分采用分层设计使测试数据与脚本分离,脚本与逻辑步骤分离。根据测试用例,分离出步骤,抽象成一个个的关键字,每个关键字就是一个具体的步骤,对于web的操作选用可以selenium软件来辅助测试,远程执行选用可以选用STAF辅助实现。
结果监控并发送结果报告部分主要是实时监控测试过程,首先设计一个监控程序对自动化过程全程监控,每几分钟就刷新一下监控数据,显示当然每个模块的测试状态、测试情况等;发送报告部分,是在测试结束后自动生成测试全部测试结果的报告发给指定的人,并能自动计算出测试的通过率。
4结语
在IT行业测试是一个重要的流程,但现阶段很多公司仍采用传统的手工测试的方案,不过我们有理由相信以后,自动化测试的必将有占据很大的市场,因为在市场要求软件产品不断的提高可靠性和可用性的情况下,需要更快更便宜的交付,而测试在时间,成本和质量检测占有很大的比重,所以传统的测试如果不作改变,就意味着软件项目很难满足发展需要。总之自动化测试技术提供了一个减少软件测试时间成本,提高软件质量(一致性、可重复性),同时提高软件测试程序的可测性的机会,相信随着软件技术的演变,自动化测试的又会出现许多更好的框架设计,自动化测试必将是以后软件测试中常用的方法。
参考文献
[1] Elfriende Dustinde(美),余昭辉,范春霞.自动化
软件测试实施指南[M].北京:机械工业出版社,
2010.
[2] 商宇.基于STAF的自动化测试工具的研究和设计
[J].云南民族大学学报(自然科学版),2009,18
(3).
[3] Selenium官方网站.http://docs.seleniumhq.org/.
2013-4-28.
[4] 董贤伟.关键字驱动的自动化软件测试的研究[D].
南京理工大学硕士论文,2009.
(江南机电设计研究所,贵州 贵阳 550009)
摘要:软件测试过程是很有可能实现自动化的过程,而实现测试的自动化无论对提高软件的质量还是减少开发成本都有现实意义。文章介绍了基于关键字的自动化测试,以曾所做过的关键字驱动的自动化框架设计为例进行讲解,并介绍了其他常见的自动化测试框架以及两个在自动化测试中常用的工具。
关键词:软件测试;自动化测试;驱动测试;框架设计
中图分类号:TP311文献标识码:A文章编号:1009-2374(2014)22-0026-02随着IT技术的快速革新,软件的规模逐步变大,软件开发人员希望在将投入运行之前,质量能得到保障,而测试则是保证系统正确性的一个必要手段,通常测试人员是软件的第一个用户,而且也是检验产品质量的重要人员。据统计,测试在软件开发总成本中往往要占到40%~50%甚至更多。在以往的开发和测试过程中,通过经验积累发现,测试过程是极有可能实现自动化的,而实现测试的自动化无论对提高软件的质量还是对减少开发成本都有很大的帮助。自动化软件测试的目的在于通过有效的利用时间和资源来提高测试效率,把测试用例转化为自动的执行,把人从繁琐的体力测试中解放出来。自动化测试能做一些手工难以完成的测试,比如压力测试,特别是在回归测试中有很大的帮助,所以研究如何实现软件测试的自动化是有意义而且是很有必要的。
1常用的自动化测试技术简介
自动化测试技术历经了多个发展阶段,从最初的录制回放技术到后来的数据驱动的测试技术,再到现在着重介绍的关键字驱动的自动化测试技术,它们都有各自的适用之处。一般而言,后发展的技术是对以往技术的继承和发展,具备向后兼容特性。关键字驱动的测试技术以它独到的性能受到了业内人士的青睐,并在一些领域得到了很大程度上的应用。关键字驱动测试技术是以预先设计好的关键字作为依据来驱动测试事件的,并且使用关键字编写的测试脚本简单易读并且可维护性强。以上几类自动化测试手段在各个领域都得到了很好的应用,但是都存在各自的优缺点,不能完全满足不同领域的需求。
2自动化测试常用工具选取
俗话说工欲善其事,必先利其器,在框架设计中可以应用一些优秀工具来辅助框架的开发。自动化测试的辅助工具不胜枚举,并被应用到不同领域,本文主要介绍在后面框架设计中用到的STAF和Selenium两个开源的工具,两个工具对于自动化软件测试具有诸多优势,在此不作详细说明。
3关键字驱动的自动化测试框架设计
以曾开发过框架为例,该框架是测试一款产品型软件,每个版本发布前测试的功能点很多都和上个甚至更早版本测试点相同,但都需要测试,避免新功能的引入对老的功能产生影响,如果采用人工测试,需要花费大量的精力做相同的测试,以及在做回归测试都要花费大量的时间,为了节约成本,减少枯燥重复的测试,采用自动化测试的方法,这种方法不仅能解决上述问题,还能提高测试的准确性,缩短软件开发周期,在空闲时间运行自动化的用例,工作时间查看结果报告,这样就有效的利用时间和资源,提高了测试的效率,如果一旦实施开来,预计可以减少1/4的费用。
3.1关键字驱动自动化测试的单元结构
整个自动化测试的单元组成分为两个部分,一个是测试控制端,一个是安装产品的服务端。测试控制端放的就是我们的测试数据,脚本代码,测试工具等我们测试所用到的一切东西,而服务端就是我们安装产品的地方,里面还包括产品的依附的软件、软件所需要的数据信息、数据库信息等一切与产品有关的信息,主要是做到测试环境的隔离。如果涉及到要对产品直接的操作可以通过STAF这个软件使得控制端能对服务端文件等进行远程操作,对于UI方面我们借助selenium这个工具。
3.2关键字驱动
关键字不仅为测试提供参考依据,而且被解释执行。当在执行测试数据的文件时,如果遇到关键字则调用对应的关键字支持脚本,通过关键字支持脚本的执行,将实际输出与数据表格中的期望结果进行比较,一致则通过,否则报错,并将测试结果写入测试日志文件。这样,数据文件包含测试的逻辑内容用来指定需要执行的测试用例、测试步骤和测试数据信息,而支持脚本包含对被测试软件的认识,关键字的解析等,这样就实现了脚本、测试数据、测试逻辑的相互独立。
关键字驱动测试中,每一个关键字能解释执行相应的脚本,通过不同的测试数据,在这个测试框架中可以通过很少的代码来产生大量的测试用例。同样的代码在用数据表来产生各个测试用例的同时被复用。
3.3关键字库的设计
要做关键字驱动,就要设计关键字,而关键字设计是很重要的一步,我们在设计关键字时,应该充分考虑到其扩展性,可读性,稳定性等,切忌过多的设计关键字,造成关键字信息冗余,更不能遗漏设计关键字,致使某些需实现的功能无法得到精确的描述,总之一切要以特定的项目实现为原则来确定关键字地设计。
3.4自动化测试框架
图1关键字驱动的自动化测试框架
如图1所示就是一个自动化测试的结构图,第二层是脚本代码,第三层是业务逻辑层,最高层,就是一些执行文件。
脚本代码,逻辑,数据都分离开,并且在一个文件里存储执行的步骤,里面按逻辑顺序放了一个用例的关键字,这些关键字会调用相应的脚本代码,而脚本代码里的数据又从数据的文件里调取,各层各司其职,相互独立。当执行某一个用例的时候,我们就调用执行文件,执行文件执行相应的脚本,解析文件里面存储的关键字,将其解析执行相应的脚本代码。
3.5自动化测试框架的总体设计
图2自动化测试的流程
自动化测试也是一个开发的过程,务须按照软件开发的流程来设计:
第一阶段为需求调研分析的阶段,第二阶段可以概括为设计阶段,第三阶段为编码阶段,第四为测试阶段,然后就是评审验收。
设计成三部分:环境准备,测试执行,结果监控并发送结果报告。框架如图2所示。
环境准备部分主要是对测试环境进行初始化,还原成一个“干净”的环境,因为整个过程需要自动化,所以我们就需要自动执行测试前的一些操作,先自动选择最新产品版本进行安装,自动生成测试所需用户信息,自动更新SVN数据,自动根据配置文件更改与环境相关的数据等。
测试执行部分采用分层设计使测试数据与脚本分离,脚本与逻辑步骤分离。根据测试用例,分离出步骤,抽象成一个个的关键字,每个关键字就是一个具体的步骤,对于web的操作选用可以selenium软件来辅助测试,远程执行选用可以选用STAF辅助实现。
结果监控并发送结果报告部分主要是实时监控测试过程,首先设计一个监控程序对自动化过程全程监控,每几分钟就刷新一下监控数据,显示当然每个模块的测试状态、测试情况等;发送报告部分,是在测试结束后自动生成测试全部测试结果的报告发给指定的人,并能自动计算出测试的通过率。
4结语
在IT行业测试是一个重要的流程,但现阶段很多公司仍采用传统的手工测试的方案,不过我们有理由相信以后,自动化测试的必将有占据很大的市场,因为在市场要求软件产品不断的提高可靠性和可用性的情况下,需要更快更便宜的交付,而测试在时间,成本和质量检测占有很大的比重,所以传统的测试如果不作改变,就意味着软件项目很难满足发展需要。总之自动化测试技术提供了一个减少软件测试时间成本,提高软件质量(一致性、可重复性),同时提高软件测试程序的可测性的机会,相信随着软件技术的演变,自动化测试的又会出现许多更好的框架设计,自动化测试必将是以后软件测试中常用的方法。
参考文献
[1] Elfriende Dustinde(美),余昭辉,范春霞.自动化
软件测试实施指南[M].北京:机械工业出版社,
2010.
[2] 商宇.基于STAF的自动化测试工具的研究和设计
[J].云南民族大学学报(自然科学版),2009,18
(3).
[3] Selenium官方网站.http://docs.seleniumhq.org/.
2013-4-28.
[4] 董贤伟.关键字驱动的自动化软件测试的研究[D].
南京理工大学硕士论文,2009.
(江南机电设计研究所,贵州 贵阳 550009)
摘要:软件测试过程是很有可能实现自动化的过程,而实现测试的自动化无论对提高软件的质量还是减少开发成本都有现实意义。文章介绍了基于关键字的自动化测试,以曾所做过的关键字驱动的自动化框架设计为例进行讲解,并介绍了其他常见的自动化测试框架以及两个在自动化测试中常用的工具。
关键词:软件测试;自动化测试;驱动测试;框架设计
中图分类号:TP311文献标识码:A文章编号:1009-2374(2014)22-0026-02随着IT技术的快速革新,软件的规模逐步变大,软件开发人员希望在将投入运行之前,质量能得到保障,而测试则是保证系统正确性的一个必要手段,通常测试人员是软件的第一个用户,而且也是检验产品质量的重要人员。据统计,测试在软件开发总成本中往往要占到40%~50%甚至更多。在以往的开发和测试过程中,通过经验积累发现,测试过程是极有可能实现自动化的,而实现测试的自动化无论对提高软件的质量还是对减少开发成本都有很大的帮助。自动化软件测试的目的在于通过有效的利用时间和资源来提高测试效率,把测试用例转化为自动的执行,把人从繁琐的体力测试中解放出来。自动化测试能做一些手工难以完成的测试,比如压力测试,特别是在回归测试中有很大的帮助,所以研究如何实现软件测试的自动化是有意义而且是很有必要的。
1常用的自动化测试技术简介
自动化测试技术历经了多个发展阶段,从最初的录制回放技术到后来的数据驱动的测试技术,再到现在着重介绍的关键字驱动的自动化测试技术,它们都有各自的适用之处。一般而言,后发展的技术是对以往技术的继承和发展,具备向后兼容特性。关键字驱动的测试技术以它独到的性能受到了业内人士的青睐,并在一些领域得到了很大程度上的应用。关键字驱动测试技术是以预先设计好的关键字作为依据来驱动测试事件的,并且使用关键字编写的测试脚本简单易读并且可维护性强。以上几类自动化测试手段在各个领域都得到了很好的应用,但是都存在各自的优缺点,不能完全满足不同领域的需求。
2自动化测试常用工具选取
俗话说工欲善其事,必先利其器,在框架设计中可以应用一些优秀工具来辅助框架的开发。自动化测试的辅助工具不胜枚举,并被应用到不同领域,本文主要介绍在后面框架设计中用到的STAF和Selenium两个开源的工具,两个工具对于自动化软件测试具有诸多优势,在此不作详细说明。
3关键字驱动的自动化测试框架设计
以曾开发过框架为例,该框架是测试一款产品型软件,每个版本发布前测试的功能点很多都和上个甚至更早版本测试点相同,但都需要测试,避免新功能的引入对老的功能产生影响,如果采用人工测试,需要花费大量的精力做相同的测试,以及在做回归测试都要花费大量的时间,为了节约成本,减少枯燥重复的测试,采用自动化测试的方法,这种方法不仅能解决上述问题,还能提高测试的准确性,缩短软件开发周期,在空闲时间运行自动化的用例,工作时间查看结果报告,这样就有效的利用时间和资源,提高了测试的效率,如果一旦实施开来,预计可以减少1/4的费用。
3.1关键字驱动自动化测试的单元结构
整个自动化测试的单元组成分为两个部分,一个是测试控制端,一个是安装产品的服务端。测试控制端放的就是我们的测试数据,脚本代码,测试工具等我们测试所用到的一切东西,而服务端就是我们安装产品的地方,里面还包括产品的依附的软件、软件所需要的数据信息、数据库信息等一切与产品有关的信息,主要是做到测试环境的隔离。如果涉及到要对产品直接的操作可以通过STAF这个软件使得控制端能对服务端文件等进行远程操作,对于UI方面我们借助selenium这个工具。
3.2关键字驱动
关键字不仅为测试提供参考依据,而且被解释执行。当在执行测试数据的文件时,如果遇到关键字则调用对应的关键字支持脚本,通过关键字支持脚本的执行,将实际输出与数据表格中的期望结果进行比较,一致则通过,否则报错,并将测试结果写入测试日志文件。这样,数据文件包含测试的逻辑内容用来指定需要执行的测试用例、测试步骤和测试数据信息,而支持脚本包含对被测试软件的认识,关键字的解析等,这样就实现了脚本、测试数据、测试逻辑的相互独立。
关键字驱动测试中,每一个关键字能解释执行相应的脚本,通过不同的测试数据,在这个测试框架中可以通过很少的代码来产生大量的测试用例。同样的代码在用数据表来产生各个测试用例的同时被复用。
3.3关键字库的设计
要做关键字驱动,就要设计关键字,而关键字设计是很重要的一步,我们在设计关键字时,应该充分考虑到其扩展性,可读性,稳定性等,切忌过多的设计关键字,造成关键字信息冗余,更不能遗漏设计关键字,致使某些需实现的功能无法得到精确的描述,总之一切要以特定的项目实现为原则来确定关键字地设计。
3.4自动化测试框架
图1关键字驱动的自动化测试框架
如图1所示就是一个自动化测试的结构图,第二层是脚本代码,第三层是业务逻辑层,最高层,就是一些执行文件。
脚本代码,逻辑,数据都分离开,并且在一个文件里存储执行的步骤,里面按逻辑顺序放了一个用例的关键字,这些关键字会调用相应的脚本代码,而脚本代码里的数据又从数据的文件里调取,各层各司其职,相互独立。当执行某一个用例的时候,我们就调用执行文件,执行文件执行相应的脚本,解析文件里面存储的关键字,将其解析执行相应的脚本代码。
3.5自动化测试框架的总体设计
图2自动化测试的流程
自动化测试也是一个开发的过程,务须按照软件开发的流程来设计:
第一阶段为需求调研分析的阶段,第二阶段可以概括为设计阶段,第三阶段为编码阶段,第四为测试阶段,然后就是评审验收。
设计成三部分:环境准备,测试执行,结果监控并发送结果报告。框架如图2所示。
环境准备部分主要是对测试环境进行初始化,还原成一个“干净”的环境,因为整个过程需要自动化,所以我们就需要自动执行测试前的一些操作,先自动选择最新产品版本进行安装,自动生成测试所需用户信息,自动更新SVN数据,自动根据配置文件更改与环境相关的数据等。
测试执行部分采用分层设计使测试数据与脚本分离,脚本与逻辑步骤分离。根据测试用例,分离出步骤,抽象成一个个的关键字,每个关键字就是一个具体的步骤,对于web的操作选用可以selenium软件来辅助测试,远程执行选用可以选用STAF辅助实现。
结果监控并发送结果报告部分主要是实时监控测试过程,首先设计一个监控程序对自动化过程全程监控,每几分钟就刷新一下监控数据,显示当然每个模块的测试状态、测试情况等;发送报告部分,是在测试结束后自动生成测试全部测试结果的报告发给指定的人,并能自动计算出测试的通过率。
4结语
在IT行业测试是一个重要的流程,但现阶段很多公司仍采用传统的手工测试的方案,不过我们有理由相信以后,自动化测试的必将有占据很大的市场,因为在市场要求软件产品不断的提高可靠性和可用性的情况下,需要更快更便宜的交付,而测试在时间,成本和质量检测占有很大的比重,所以传统的测试如果不作改变,就意味着软件项目很难满足发展需要。总之自动化测试技术提供了一个减少软件测试时间成本,提高软件质量(一致性、可重复性),同时提高软件测试程序的可测性的机会,相信随着软件技术的演变,自动化测试的又会出现许多更好的框架设计,自动化测试必将是以后软件测试中常用的方法。
参考文献
[1] Elfriende Dustinde(美),余昭辉,范春霞.自动化
软件测试实施指南[M].北京:机械工业出版社,
2010.
[2] 商宇.基于STAF的自动化测试工具的研究和设计
[J].云南民族大学学报(自然科学版),2009,18
(3).
[3] Selenium官方网站.http://docs.seleniumhq.org/.
2013-4-28.
[4] 董贤伟.关键字驱动的自动化软件测试的研究[D].
南京理工大学硕士论文,2009.