UI测试的设计层次

上一篇 / 下一篇  2012-06-21 10:28:18 / 个人分类:测试经验

根据我做UI测试的经验,将自己做UI测试的理解总结如下(这里UI测试指Web应用UI自动化测试或者桌面UI自动化测试,这些UI有一个特点是UI元素间的关系都是父子关系或者兄弟关系,能组成一个UI树):51Testing软件测试网&Cu-`_Cc l

  第一层次:在测试用例中,直接使用Selenium或者UI工具的API,

0\s&eU0Udh.i0
Selenium.Click(“//div[@id='mail-nav']/ul/li[3]/a”)
51Testing软件测试网@5RHoj~

  第二层次:将UI地址直接写在测试用例中,会导致UI地址重复率增大,而且不好根据UI地址来维护。按照UI页面或者模块将对地址操作分化到测试底层中,测试用例层只管测试逻辑,如:51Testing软件测试网kL'RL!^s,y t2K

%p j5U%F/q H4w%^A0  在底层设计中LoginPage类,

7eHz3O qh0
Class LoginPage{51Testing软件测试网 \"j IJo|x
loginButton = “//div[@id='mail-nav']/ul/li[3]/a”;
@*gz`1\O8d0void Login(username, password){51Testing软件测试网1i2HM1y3N)J
…..51Testing软件测试网-a5JhNL,U:O&Y
Selenium.Click(loginButton);51Testing软件测试网-p/o1@aV
….51Testing软件测试网)Rhj(]l[J(r
}
p k].fs9I u/g0}

{(H [SgU0  在测试用例中,就见不到对UI地址的操作了,如:

jsc ]6CW0
loginPage.Login(“name”,”defpassword”)

Q(@ P0c}xv St5X8q0  第三层次:将UI地址hardcode到代码中不好的地方是,UI地址一旦变化,就必须要重新编译源代码,因此建立地址库,将UI地址存放在xml或者json等文件中。其好处是只要测试需求或逻辑不变,即使页面变化了,也无需更改代码,只需维护地址库文件,如:

wB q[pa0
@AddressPage(“LoginPage.xml”)51Testing软件测试网"`u,V~dL?
Class LoginPage{51Testing软件测试网f;f6Msg
……51Testing软件测试网+JGp*vsA3MJ1~9u
}

r9aAI.~\j0  第四层次:以上三个层次主要在解决UI地址随UI界面变化而极易变化,导致测试用例维护增大,但UI测试每一个对UI的操作都可能失败,是极不稳定的。因此,扩展Xpath或者UI工具提供的定位机制,并且在每操作UI前,先判定UI是否存在,如不存在再等待一段时间。如:

+W5L? ]k*]0
//div[@id='mail-maillist']/div[2]/table/tbody/tr[{0}]/td[6]/a/span/span
Ly7Ai^6_/T]0sleep=2 //AliBrowserFrameA[@global='ACCNAME_BACK']

M`0o@;Ec0  第五层次:扩展工具,基于UI工具做二次开发,将UI操作抽象为如下几个操作,并且能动态加载地址库与生成地址库51Testing软件测试网L'cK"d1Sn P_

51Testing软件测试网6h'V9ZlR

  在测试用例中使用:

g:l!e v+?%d!a,?0
DeskUI.Click(“loginButton”)
51Testing软件测试网%|!o"V6[#W*AXo7{V

  工具的扩展接口:

:Te8~P0Ddb%cMN0
class DeskUI:
8k)tQLui-Jd V0@staticmethod51Testing软件测试网 y4H8a-^ l6jnuH5wvzB
def Open(exePath, param=”"):51Testing软件测试网n|u{5f,nH9f
@staticmethod51Testing软件测试网 R7L)OF5jn'dZ
def Click(uiPath, ffset=0):
51Testing软件测试网uPv,b$wVzN2{

@staticmethod51Testing软件测试网B~1i Q'H&[X
def RightClick(uiPath):

9W:G'c sJ\f051Testing软件测试网2n#L{5l!r~

@staticmethod51Testing软件测试网8p6gSiW{I5l
def Input(uiPath, value):
51Testing软件测试网a|~_F HAV5H#c

s#c G7\t ?0@staticmethod51Testing软件测试网 ^GgAzu-{`
def SendShortcut(value):

*e2}~u W051Testing软件测试网6w6B[ F0wr

@staticmethod51Testing软件测试网!ue.{&y&R y
def SendKey(value):

x$_^'BL-o+N0

5H&yI#Dt%V$Xt"u0@staticmethod
n/t(R?6b`1k2C0def Check(uiPath):
51Testing软件测试网r"g;d4C NC"w

51Testing软件测试网b#W.L:[ rft

@staticmethod51Testing软件测试网qmJIR.O"DH
def UnCheck(uiPath):

rz`Y)e1|:A0

TAG:

 

评分:0

我来说两句

Open Toolbar