当前位置:文档之家› 自动化测试框架的实现

自动化测试框架的实现

自动化测试框架的实现
自动化测试框架的实现

自动化测试框架的实现

、背景

为什么要做自动化测试?

1.提高测试效率和降低测试成本

2.实现快速的回归测试,加快测试进度从而加快产品发布进度

3.更多的测试,提高测试覆盖率

4.提高测试的可靠性,避免人为因素

为什么要做自动化测试框架

实现自动化就是为了能够提升测试效率,不具备可维护性、复用性差将成为告知自动化测试失败的最致命因素,付出巨大代价但起到的效果甚微。基于以上因素并结合行业发展思路,在正式实施自动化之前,必须搭建一套适合的自动化测试框架,将脚本能够有效的组织、连贯应用起来,提高测试脚本的可维护性和可读性。

二、实现思路

1、分层设计

进行测试的时候,首先保证基本功能点走通,验证页面功能点,然后测试系统流程的正确性,最后保证符合系统满足业务要求。对于自动化脚本,采用分层的思想,先实现最底层的操作组件,通过调用操作组件进行组合,实现对业务流程的验证。不同的业务流程,对于底层的操作组件是可以复用的,只是调用的业务逻辑的差异,或者是测试数据的差异性。例如,可以将摸个模块的增加操作作为一个底层的操作组件,实现流程测试的时候,可以将这些操作组件组合起来。

尽可能做到各脚本之间具备独立性,不相互依赖,便于进行各种基本场景的组合运行。

2、脚本分离设计

对某个功能进行自动化测试,实际上就是对这个功能涉及的对象进行操作,输入测试数据来验证其结果的正确性,复杂的验证点需要编写业务逻辑。如果全部用脚本的方式编写,针对每一条测试数据就需要编写一份脚本,脚本量相当巨大,同时任何改动(程序、测试用例、GUI对象)都需要调整大量的脚本。

为了达到可维护性、可复用性,将对象、操作、测试数据、业务逻辑剥离、分开管理,通过调用关系去组合实现不同的测试用例。

3、封装基础函数、基本的业务逻辑

通过对基本业务逻辑的封装、调用,实现快速的脚本开发,如每个脚本都需要连接数据库,或读取CSV,或给出测试报告,这些基础函数,可以封装起来,不同的页面需要调用的时候,只需要传入这个页面相应的对象名称,调用封装的函数执行即可。可以大大减少脚本量,也更易于维护。

又如一个模块不同页面,都包含增删改查,可以将这些基本的业务逻辑封装起来,脚本中重复调用的时候,也是可以调用对象名,实现重复的操作,这样可以大大减少脚本量,也更易于维护。

4、执行体系

有效的执行体系可以批量、定制执行、自动运行,自动化测试真正达到提升测试效率,需要实现无人的情况下批量自动执行,并且可以定制执行。

5、异常处理

脚本执行过程中,因程序错误或环境问题、脚本自身问题经常会出现非预期的错误:如意料外的弹出窗口、发现错误的数据、未找到对象等,有些情况下当前用例出错,并不影响后续用例的执行,需要支持异常处理机制,终止执行或者终止当前用例,继续后续用例的执行,亦或者跳过当前步骤,继续执行后续操作,并输出当前的错误报告。

6数据还原

自动化测试执行后,需要不断循环,执行测试后,应该将测试数据删除,恢复到初始状态,不影响接下来的测试工作。

7、脚本管理

自动化脚本比较多,需要进行脚本管理,随着版本的更新,自动化脚本也需要不断的增加和更新,这样需要对脚本进行管理。

8、测试数据调用

由于自动化测试需要反复执行,调用大量的测试数据,通过读取CSV的方

式,批量的调用测试数据,从而实现数据的参数化。

9、结果体系

针对每个测试用例,输出测试用例内容和执行结果,也可以考虑输出执行日志,从而能更详细的看到执行过程

三、自动化测试框架

模型

流程

I.ecii pse来写测试代码

2.提交svn (测试代码check,可选)

3.hudson会检测(svn是否有更新),检测到更新就通过同步更新到其它slave 机器(也可以每天定时执行。

4.maven执行test

5.grid把test分发到各个slave测试机(有不同的浏览器)

6.报告显示在指定的html页面,包括测试用例,测试结果,测试时间等信息。

机器部署

n

S ■ n\?r(-li|LJ :

狗PJC 狀:T F 亿F i 2fq ?诵」-h "E 宀乳皿m M Gri rJ ■

'^nt *M"v<;n

支持的系统平台和浏览器 MU

MnSU 机:

SVN, HudsoT

■X.

fi

S ;HVV 4)12. ---

棚烧瞪:II II -H 1 卜'\ Ef0K 込[:hrcime, Stifci ril! Cr I 站

Elrowscr Selenium lUC I ijcfo* Record 3hd ?s?

f rrfoi J Record 2nd pfuFtMth tc3i3

f refox i

Tr 1

IE T

Tffjp cKrtiuHon only via cel^.m BC *

Te^f fK^Mhen "片 g S 雯E RC*

S.'fflrii 4

Tfflt f ifrriijiUftT rn^.沁 Mr n-fiC Tfi ■-占K*Guhi>r *n(v

MT

jn=RC

■-)!

14* *KYunfcw firth 2

had* I im-pf

?■屮 rfPCIMhftri poly Vk"

(Jifctne l*sr ^tf^uhon rm 片 vi# 伸nd?罔

T K * ** jftf im r

jm-KC

四、编写测试代码

「f

找 1]览器;「匚也 Fi refoxZ* Oircxiic, ? ■Gi

ill 'At 1(. tSLiviMi

selenium nc Olpcrabnq Sy 口口 ms

iurt Drc**^flr iw 严ndews. jjnujCf t?益 HJ 匚

5tort JjTCft-cr run iWridcws, JRJX.

test

P JC

grt brcw^cr nj/n

严n*w 乩 _iz*

mts

MJC

5l3iT her w-?-^r rvrb

I'/VflxfcWT

tfliE

SBrt bfcim^er mn Wndew?

tesls

Sr^rt i5

t4CCE

Sr3rt 肮料峠#t, inm 籽詬c

TOCB

SMrt brf 删■?:出r 呎』

MAC

htsrr Me 丹jnR Mjr

tecs

SMrt rrd wfiflr^ nm

鬥 nW 叱 J izh” 1?SC9

心C

GrM 吸丹吗*匸n?rt

11 ifttn.

tests

Lat

srsrT hrr^'Aj'r mm

严刖册曲iiin?E,

tilts

Mac sr^Rft 曰■” nm

fftnflrw*

Tests

P 打Z =iipp*irt

pOCEIiDtC^*

1.用firefox中的selenium IDE录制最初的脚本,然后导出为JAVA代码,在

Jun it里进行进一步的开发;

2.编写代码

打开测试站点

P ublic void setU p( throws Exce pti on {

//打开测试站点addr代表服务器地址port代表端口号browser代表服务器web 代表测试站点地址

sele nium = new DefaultSele nium( “addr", port.“ browser",

“web";

//打开测试站点

sele niu m.start(;

Case测试搜索功能,打开网站,输入

hello,点击搜索,验证打开页面标题是否正确。P ublic void testHello( throws Exce ptio n

sele nium.open ("/";

sele niu m.click("kw";

sele nium.ty pe("kw", "hello";

sele nium.click("su";

assertEquals( “ hello ”

相关主题
文本预览
相关文档 最新文档