论文部分内容阅读
[摘要]研究与设计以Selenium测试工具为基础,运用关键字驱动技术,web应用的自动化测试框架。
[关键词]关键字驱动WebSelenium
中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)1220051-01
一、自动化测试技术概述
(一)Web测试概述。随着互联网和Web技术的进步,Web应用频繁出现在人们工作生活中。作为用户,优秀的Web应用为工作与生活带来了很多便利与快乐。作为软件开发测试人员,Web应用系统的测试、确认和验收是一项重要而富有挑战性的工作。Web的系统测试与传统的软件测试不同,它不但需要檢查和验证是否按照设计的要求运行,而且还要测试系统在不同用户的浏览器端的显示是否合适。重要的是,还要从最终用户的角度进行安全性和可用性测试。
(二)自动化测试技术的发展。软件自动化测试技术的发展一般分为3代:
第一代:录制和回放。由测试工具记录你所做的每一步操作,加以录制并回放出来。测试工具起到了一个录像机的作用,虽然操作异常简单,并且可以达到自动化测试的基本要求,但是缺少灵活性,自身没有判断能力,容易记录一些无用操作,并且维护费用比较高,一旦界面改变,脚本就将重新制作。
第二代:数据驱动。从专有的数据文件中读取数据,并将这些测试数据放入测试脚本中,不同的数据文件对应不同的测试用例。和第一代相比,提高了脚本的利用率,但是同样受到被测软件界面变化的影响。
第三代:关键字驱动。关键字驱动测试是数据驱动测试的一种改进类型,它将测试逻辑按照关键字进行分解,形成数据文件,关键字对应封装的业务逻辑。主要关键字包括三类:被操作对象(Item)、操作(OperatiOn)
和值(value),用面向对象形式可将其表现为Item.operation(value)。
关键字驱动的主要思想是:脚本与数据分离、界面元素名与测试内部对象名分离、测试描述与具体实现细节分离。
(三)Selenium介绍。Selenium是ThoughtWorks公司开发的一套基于Web应用的测试工具,直接运行在浏览器中,模拟客户操作,所见即所得,就像真实用户所做的一样。Selenium的核心,是用Javascript编写的。这使得测试脚本可以在所有支持Javascript的浏览器中运行。支持多操作系统(如Windows,Mac OS,Linux等)和各种浏览器(如Internet Explorer,Firefox等),更容易发现浏览器的兼容性问题。
二、自动化测试框架概述
为了实现基于关键字驱动的web自动化测试框架,主要实现有4个基本功能模块,分别为脚本生成模块,Selenium模块,执行模块以及结果分析模块。框架基本运行流程如下图。
测试用例,通过测试脚本模块的分析,生成可测试的脚本,由执行模块控制Selenium,运行脚本,并将结果返回给结果分析模块分析,最后生成测试结果,完成整个测试。
三、功能模块设计与实现
本文以通过搜索引擎查找并返回结果页面为用例,说明相关模块的具体功能。
(一)测试用例的编写方式。根据关键字驱动的原则,测试用例编写应注意将测试步骤按被操作对象(Item)、操作(Operation)和值(value)进行划分。如:
该测试用例清楚的表达了每个测试步骤的对象和行为,实现对象,行为和数据的分离。测试用例可根据实际情况,选择不同的方式来存储。简单的文本文件、表格式的Excel文件、便于管理的数据库,等等。其中,对于大量测试用例,数据库存储将、有着易于管理,易于存档等诸多优势。
(二)Selenium模块。本文主要使用Selenium RC模块。Selenium RC使用起来非常简单,仅仅运行一个可执行的jar文件,便可通过默认端口连接Selenium Server。当然,也可以设定参数来运行,包括更改默认端口,具体的可以参考Selenium参考文档。Selenium RC支持多种语言,如Java,C#,Perl,Python,Ruby,Html等,可以根据不同的环境和需要进行选择。
(三)脚本生成模块。脚本生成模块的主要作用是对关键字数据文件进行分析,生成组织Selenium可执行的脚本的文件,提供给执行模块运行。脚本文件的生成,主要使用模块化的处理方式。根据关键字驱动的原则,模块以测试步骤为单位,可以根据具体情况来进行改动,对于相对固定,使用频率高的测试用例也可将其模块化。如本文用例,搜索引擎的界面已经相对稳定,且该测试用例使用频繁,则可以将整个用例作为一个测试模块,不仅降低了测试成本,同时提高的测试效率。模块以类的方式存在,简单的模块也可以以函数的方式存在,根据不同的关键字,使用不同的模块,而把值作为类成员或参数传入。
(四)执行模块。执行模块是测试框架的核心,基本作用在于控制Selenium Server启动与终止,设置所需要的环境变量并运行测试脚本,得到返回信息并交予结果分析模块等。该模块的可以根据各种测试环境和测试规模的要求,开发扩展各种测试功能,如Selenium Server参数设置,查看控制测试脚本的运行状态等等。
(五)结果分析模块。结果分析模块用于处理执行模块传回的结果并生成可查看的log文件,供测试人员分析评估。如本文例,通过对搜索引擎返回的HTML文件的分析,检查搜索是否成功,获取搜索结果。
四、总结
本文仅给出以关键字驱动为核心,Selenium为工具的自动化测试框架模块的基本功能,其中可以完善与扩展的方面还有很多。同时,Web应用的测试环境与用例复杂多样,要实现完整统一的自动化测试框架,并良好的控制测试框架开发的成本,还需要进一步的探索和研究。
参考文献:
[1]Patton,R.著、张小松等译,软件测试,北京:机械工业出版社,2006.
[2]Selenium项目组,Selenium参考文档,http://seleniumhq.org/docs/.
[关键词]关键字驱动WebSelenium
中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)1220051-01
一、自动化测试技术概述
(一)Web测试概述。随着互联网和Web技术的进步,Web应用频繁出现在人们工作生活中。作为用户,优秀的Web应用为工作与生活带来了很多便利与快乐。作为软件开发测试人员,Web应用系统的测试、确认和验收是一项重要而富有挑战性的工作。Web的系统测试与传统的软件测试不同,它不但需要檢查和验证是否按照设计的要求运行,而且还要测试系统在不同用户的浏览器端的显示是否合适。重要的是,还要从最终用户的角度进行安全性和可用性测试。
(二)自动化测试技术的发展。软件自动化测试技术的发展一般分为3代:
第一代:录制和回放。由测试工具记录你所做的每一步操作,加以录制并回放出来。测试工具起到了一个录像机的作用,虽然操作异常简单,并且可以达到自动化测试的基本要求,但是缺少灵活性,自身没有判断能力,容易记录一些无用操作,并且维护费用比较高,一旦界面改变,脚本就将重新制作。
第二代:数据驱动。从专有的数据文件中读取数据,并将这些测试数据放入测试脚本中,不同的数据文件对应不同的测试用例。和第一代相比,提高了脚本的利用率,但是同样受到被测软件界面变化的影响。
第三代:关键字驱动。关键字驱动测试是数据驱动测试的一种改进类型,它将测试逻辑按照关键字进行分解,形成数据文件,关键字对应封装的业务逻辑。主要关键字包括三类:被操作对象(Item)、操作(OperatiOn)
和值(value),用面向对象形式可将其表现为Item.operation(value)。
关键字驱动的主要思想是:脚本与数据分离、界面元素名与测试内部对象名分离、测试描述与具体实现细节分离。
(三)Selenium介绍。Selenium是ThoughtWorks公司开发的一套基于Web应用的测试工具,直接运行在浏览器中,模拟客户操作,所见即所得,就像真实用户所做的一样。Selenium的核心,是用Javascript编写的。这使得测试脚本可以在所有支持Javascript的浏览器中运行。支持多操作系统(如Windows,Mac OS,Linux等)和各种浏览器(如Internet Explorer,Firefox等),更容易发现浏览器的兼容性问题。
二、自动化测试框架概述
为了实现基于关键字驱动的web自动化测试框架,主要实现有4个基本功能模块,分别为脚本生成模块,Selenium模块,执行模块以及结果分析模块。框架基本运行流程如下图。
测试用例,通过测试脚本模块的分析,生成可测试的脚本,由执行模块控制Selenium,运行脚本,并将结果返回给结果分析模块分析,最后生成测试结果,完成整个测试。
三、功能模块设计与实现
本文以通过搜索引擎查找并返回结果页面为用例,说明相关模块的具体功能。
(一)测试用例的编写方式。根据关键字驱动的原则,测试用例编写应注意将测试步骤按被操作对象(Item)、操作(Operation)和值(value)进行划分。如:
该测试用例清楚的表达了每个测试步骤的对象和行为,实现对象,行为和数据的分离。测试用例可根据实际情况,选择不同的方式来存储。简单的文本文件、表格式的Excel文件、便于管理的数据库,等等。其中,对于大量测试用例,数据库存储将、有着易于管理,易于存档等诸多优势。
(二)Selenium模块。本文主要使用Selenium RC模块。Selenium RC使用起来非常简单,仅仅运行一个可执行的jar文件,便可通过默认端口连接Selenium Server。当然,也可以设定参数来运行,包括更改默认端口,具体的可以参考Selenium参考文档。Selenium RC支持多种语言,如Java,C#,Perl,Python,Ruby,Html等,可以根据不同的环境和需要进行选择。
(三)脚本生成模块。脚本生成模块的主要作用是对关键字数据文件进行分析,生成组织Selenium可执行的脚本的文件,提供给执行模块运行。脚本文件的生成,主要使用模块化的处理方式。根据关键字驱动的原则,模块以测试步骤为单位,可以根据具体情况来进行改动,对于相对固定,使用频率高的测试用例也可将其模块化。如本文用例,搜索引擎的界面已经相对稳定,且该测试用例使用频繁,则可以将整个用例作为一个测试模块,不仅降低了测试成本,同时提高的测试效率。模块以类的方式存在,简单的模块也可以以函数的方式存在,根据不同的关键字,使用不同的模块,而把值作为类成员或参数传入。
(四)执行模块。执行模块是测试框架的核心,基本作用在于控制Selenium Server启动与终止,设置所需要的环境变量并运行测试脚本,得到返回信息并交予结果分析模块等。该模块的可以根据各种测试环境和测试规模的要求,开发扩展各种测试功能,如Selenium Server参数设置,查看控制测试脚本的运行状态等等。
(五)结果分析模块。结果分析模块用于处理执行模块传回的结果并生成可查看的log文件,供测试人员分析评估。如本文例,通过对搜索引擎返回的HTML文件的分析,检查搜索是否成功,获取搜索结果。
四、总结
本文仅给出以关键字驱动为核心,Selenium为工具的自动化测试框架模块的基本功能,其中可以完善与扩展的方面还有很多。同时,Web应用的测试环境与用例复杂多样,要实现完整统一的自动化测试框架,并良好的控制测试框架开发的成本,还需要进一步的探索和研究。
参考文献:
[1]Patton,R.著、张小松等译,软件测试,北京:机械工业出版社,2006.
[2]Selenium项目组,Selenium参考文档,http://seleniumhq.org/docs/.