《功能自动化测试实施方案.docx》由会员分享,可在线阅读,更多相关《功能自动化测试实施方案.docx(11页珍藏版)》请在优知文库上搜索。
1、功能自动化测试方案1前言1.1文档目的功能自动化测试方案是为XXX系统功能测试使用自动化工具,实现以自动化测试为主的目标而编写的技术和实施方案。文档的主要目的是提供自动化测试的技术方案、实施内容、实施步骤,以及关键的技术实现手段等。本文的预期读者为测试中心相关人员.L2名词术语Sahi:是TytoSoftware旗下的一个基于业务的开源Web应用自动化测试工具.Sahi运行为一个代理服务器,并通过注入JavaScript来访问Web页面中的元素。Sahi支持HTTPS并且独立于Web站点,简单小巧却功能强大。它相对于Selenium等自动化测试工具,在动态TD元素查找和隐式页面等待处理等方面具
2、有一定的优势。选择Sahi工具来实现具体Web项目的自动化测试是一个很不错的选择。功能测试:功能测试又称正确性测试,它检查软件的功能是否符合规格说明。由于正确性是软件最重要的质量因素,所以其测试也最重要.自动化测试:使用商业提供的自动化测试工具或者自己开发的工具对目标系统进行测试。机器自动执行的测试,替代人完成重复性劳动,但不能完全取代人。自动化测试需要用到测试工具,测试工程师的参与,自动化测试技术可应用于所有的测试阶段Web测试背景:随着Web技术和互联网的发展,Web应用产品越来越丰富,基于Web页面测试的需求与日俱增.在当前全球软件都在追求高效、敏捷的开发模式的大背景下,Web自动化测试
3、成为了新一波技术探讨和研究的热潮。因为传统的手工测试不仅效率低,并且测试质量受限于测试人员的一些情绪和心情。若当一个测试人员带着烦躁情绪来测这些繁杂的大量重复性工作,测试的质量令人担忧。更何况,当这项测试工作涉及到全球化方面的测试时,多语言版本的测试工作导致该测试工作量的成倍增加,这无疑是一项巨大的考验!检查点:用来验证脚本执行结果是否达到预期。可以在录制的过程中建立检查点,也可以在录制完成之后再建立检查点。2.1实施原则功能自动化测试过程中工具不可能完成所有的工作,工具仍然是测试过程中的辅助手段。对于工具主要是解决测试过程中的重复性的工作任务。另外实施自动化的测试,对被测系统也有更高的要求,
4、总结功能自动化测试的实施原则如下:1)使用自动化工具测试,要求被测系统开发比较稳定,较少发生功能的变更;2)在自动化测试脚本录制前,被测系统的界面相对稳定;3)功能测试自动化要求测试数据环境中的测试数据相对充裕,满足多次重复回归测试的要求;4)要求被测系统的版本运行比较稳定,较少发生测试中止的情况;5)分期分步骤实施,优先选择产品功能比较稳定的系统进行;6)完善的、可复用的数据参数、脚本库是一个长期的积累过程.2.2实施功能自动化测试的优缺点功能的自动化测试与手工测试虽然有很多局限,但是同样有其优势,随着自动化测试技术和工具的发展,对于比较稳定的产品的功能测试中,自动化测试占有越来越重要的地位
5、。使用Sahi可以加快整个测试的过程,在产品的版本发布之后,可以重复使用测试脚本进行测试,具体来说:自动化测试的优点:提高测试效率,降低测试成本;重复性强的手工劳动独立用自动化实现;快速的回归测试,提高新版本发布的速度和质量;避免人工测试容易犯的错误,如:错误测试,漏测试,多测试等;很容易就实现并发性测试;测试可重用,采用脚本和数据可以很容易实现重用。自动化测试的缺点:规范的测试管理,测试需求,测试用例;不能创造性发现测试脚本没有设计的缺陷;高质量的测试用例;高素质的自动化测试工程师;对测试环境要求比较严格;测试需求变化可能引起大量的测试用例,自动测试脚本的修改、维护。3实施范围和目标3.1
6、实施范围1)工具范围:目前考虑Sahi、EXCel等工具的使用和集成;持续集成工具暂时先不考虑;2)系统范围:定位在测试中心基础测试环境中的系统;3)测试阶段的范围:局限在回归测试后期、以及上线后的功能PI归测试,目前暂不包括LT、内部测试中的功能测试部分。3.2 实施目标1 .功能自动化测试系统应该能完成集成测试、以及上线后功能的回归测试;2 .方案目标对有界面和无界面的交易测试都能完成,有界面的交易支持如下方式:a)支持字符终端界面;b)支持B/S的Web界面;c)支持C/S的Windows应用程序界面;3 .功能自动化测试方案对目前大部分应用系统都可以进行测试;4 .实现自动化脚本录制、
7、自动化脚本执行、自动化缺陷报告和管理.5 .3总体实施策略1 .首先从目前系统中选择适合自动化测试的项目和系统;2 .其次确定实施功能自动化测试的阶段和时机;3 .第三从适合的项目中选择适合自动化测试实施的功能和交易。具体实施策略参见第6节的实施管理建议.4技术方案实施内容4 .ISahi的特性和优势:当提及面向Web的自动化测试,相信许多读者会想到或者说使用过Selenium.Watir等工具,而对于Sahi就可能比较陌生。首先,让我们先来了解下Sahi工具。它是一款印度公司TytoSoftware开发的成熟的开源Web自动化测试工具。Sahi简单易用,能良好支持Ajax和Web2.0技术,
8、同时适用于敏捷和传统的不同测试模式.那么,它与其他非常流行的Web自动化测试工具有哪些不同和优势呢?让我们将其与主流自动化测试工具Selenium和Watir来进行一番对比,请参考图1:图IoSahi与其他工具的对比从上图的对比可以看出,Selenium支持的脚本语言比较丰富,且自带SeleniumTDE自动录制工具,Watir执行的速度相对其他较快。而Sahi同样具备了自带的录制器,且支持几乎所有浏览器,且对JS支持较好,拥有页面等待判断机制,内置Java异常报告,支持Ajax等优势。下面,本文将详细介绍一下Sahi的几大优势.基于上下文的页面识别机制:大多数如Selenium等Web自动化
9、测试工具或是自动化框架,都采用类似基于DOM的定位策略、Xpath定位策略和id、nameidentifier等页面元素定位策略。Identifier定位是最普遍的一种定位方式,当不能识别为其它定位方式后,默认为identifier定位。在这种策略下,第一个使用id的页面元素将被识别出来,如果没有使用指定id的元素,那么将识别第一个名字与指定条件相符的元素.例如,identifier识别username元素的定位策略:identifier=USernameId定位是在知道元素具体id特征的情况下的一种更精确定位。例如,定位页面元素IoginFrom:id=lOginFromname定位方式是去
10、识别第一个匹配名称属性的UI元素。如果多个元素拥有相同的名称属性,可以使用value过滤器来进一步优化您的定位策略。例如,定位页面元素为username:name-usernameXpath定位是在XML中定位元素的方法,而HTML可以被看作是XML的一种实现.XPath扩展了上面id和name定位方式,提供了绝对路径和相当路径两种查找方式。绝对路径:html/body/divldivldiv3divl/form/span/input1相对路径查找:divid=,fm,/form/span/input然而,在实际的情况下,页面元素并非如预期般明确。一些动态页面的DOM树常常随着Web产品的更新
11、而频繁改变。许多的元素值如ID、Name等在代码中并不是必须的,常常会缺省.并且,属性值往往不是唯一对应的,页面中有时会存在相同属性的元素。当缺省id值或是Xpath定位失效时,上述这几种查找定位方式往往显得无助和脆弱。Sahi采用了一种主动查找的机制,它不受限于特定的元素属性.在没有ID、Name值的情况下,它可以使用一些如“title,ValUe”等属性,这些都是页面可见的属性,所见即所得。同时,Sahi会通过传入这些可见可识别的属性值,来按照Sahi预设的机制进行查找识别.Sahi允许开发者对每一种元素设置不同属性和特定的查找顺序,包括那些自定义的属性名。所以Sahi相对于其他的Web自
12、动化测试工具更灵活更开放。比如,_link(wValueNamew)用来定位一个定义为valueName的link,这里的ValueName并不一定是ValUe的属性值,也可以是它的id、title等.前面提到了Sahi主动查找的机制,那么它是如何去查找DOM节点下的特定元素的呢?Sahi主要提供了三种基于上下文的元素API:_in,_near和JJnder。从字面意思上,我们不难理解,一in是指在某个DOM节点下查找某个元素,这比Xpath的不管是绝对路径或是相对路径查找都来的灵活,不会因为DOM树内部结构发生变化而导致路径失效找不到元素的问题。_near是指在某个元素附近查找相应设定规则条
13、件的最近一个元素,这对于一个页面中有多个相同属性值的情况提供了一个很好的解决方式,使查找的范围更精确._under是指在某个元素下方开始查找,找到符合条件的最近一个元素,一般.Under都适用在具有相同偏移量的同一列中。下面,我们来看一个例子,加深对Sahi这种基于上下文识别查找机制的理解:图2。案例网页假设,在图2显示的Web页面的所有textbox的name二q,那么,Sahi的侦探器通过一些标识来鉴别它们,如Jtextbox(q),_textbox(wq1)和_textbox(“q).如果,我们要定位“RubyforRails”那一行的textbox,即_textbox(ql”)。传统的
14、元素识别会遇到多个相同属性元素的问题,即使是Xpath的定位方式也会因为在它前面加了一行新的数据而导致Xpath定位失败的情况。这时Sahi可以通过near这种方式来定位:_textbox(q,_near(_cell(RubyforRails)当要定位checkbox时,我们又会发现,“RubyforRails这一行有Recommend”和Alreadyown”两个checkbox,为了更准确地定位,我们可以结合_under,例如:_checkbox(0,_near(_cell(,RubyforRails*),_under(_cell(Recommend)。如果在整个页面中存在多个这样的表格,
15、我们还可以用_in来进一步缩小范围,如:checkbox(0,near(_cel1(RubyforRails),under(_cell(wRecommend,),_in(_cell(,Cost)。同时值得一提的是,SahiAPI中的identifier参数都支持正则表达式,例如,div(name.*/)用来识别所有以某种预属性值是name开头的divo隐式页面加载响应等待机制:现在越来越多的Web应用采用Ajax的应用技术,来支持网页数据的异步请求响应。当前一般的Web自动化测试工具没有一个智能的处理机制,来判断何时可以继续下一个操作。像Selenium等自动化测试工具通常会在脚本中人为来设定一个固定的等待时间。但这往往被证实不一定是准确的。实际测试中,人是很难准确判断每一个操作请求需要的合理时间数值。因为,等待时间设置过短,下一步操作在被测应用请求还未返回就执行了,或是由于网络因素使正常的响应时间变长,都可能导致测试过程找不到相应的页面元素,从而导致整个测试用例失败的情况。而如果把时间设置过长,又会造成在一些正常响应过程中的不必要等待的时间浪费,降低了测试效率。当然,一些测试人员会在自动化测试脚本中加入一些自定义的代码.通过轮询界面上某个指定元素,来判断请求响应是否返回,进而决定