UI测试的设计层次

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

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

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

~8DTl1_ j0
Selenium.Click(“//div[@id='mail-nav']/ul/li[3]/a”)

*~[v#T)L.y.b ?0  第二层次:将UI地址直接写在测试用例中,会导致UI地址重复率增大,而且不好根据UI地址来维护。按照UI页面或者模块将对地址操作分化到测试底层中,测试用例层只管测试逻辑,如:

3c:P,[}*M2\7RL U1N9Ip `0

,i|O#B `#YJ0  在底层设计中LoginPage类,

3_Y%K]$b#[\(X0
Class LoginPage{51Testing软件测试网*t;E3p]5a&fU
loginButton = “//div[@id='mail-nav']/ul/li[3]/a”;51Testing软件测试网*A;EbJ4q:P6jRq9q
void Login(username, password){
iX([2qNE0…..51Testing软件测试网"m b%g:`sD wr6e
Selenium.Click(loginButton);
V6L\ E%Xqnr`0….51Testing软件测试网M;j1D&w|HF"l"x
}
#wTjPLu3Pn%A.G0}

"@Bk|;N0  在测试用例中,就见不到对UI地址的操作了,如:51Testing软件测试网0nS` o#X1r

loginPage.Login(“name”,”defpassword”)

)H@{1L t}gk0  第三层次:将UI地址hardcode到代码中不好的地方是,UI地址一旦变化,就必须要重新编译源代码,因此建立地址库,将UI地址存放在xml或者json等文件中。其好处是只要测试需求或逻辑不变,即使页面变化了,也无需更改代码,只需维护地址库文件,如:51Testing软件测试网@cR'W SAj

@AddressPage(“LoginPage.xml”)51Testing软件测试网0E&v5Ur ij{$a4Z
Class LoginPage{51Testing软件测试网)U(epac*b9sC
……
aG V@\-`1eRw0}

aNrk:L)vC]0  第四层次:以上三个层次主要在解决UI地址随UI界面变化而极易变化,导致测试用例维护增大,但UI测试每一个对UI的操作都可能失败,是极不稳定的。因此,扩展Xpath或者UI工具提供的定位机制,并且在每操作UI前,先判定UI是否存在,如不存在再等待一段时间。如:51Testing软件测试网4m8RN"FPEH ?

//div[@id='mail-maillist']/div[2]/table/tbody/tr[{0}]/td[6]/a/span/span51Testing软件测试网(e?tt+d `x4mm
sleep=2 //AliBrowserFrameA[@global='ACCNAME_BACK']

6F Y1p^.KH9R0  第五层次:扩展工具,基于UI工具做二次开发,将UI操作抽象为如下几个操作,并且能动态加载地址库与生成地址库

0p3|h*t3hZ"UhM051Testing软件测试网0mQ?]3}dL

  在测试用例中使用:51Testing软件测试网I6NeQk K2fA4`

DeskUI.Click(“loginButton”)

c4`|)N)\?'b|/\P_0  工具的扩展接口:

y8yQ^&Z3x1F3T'~c0
class DeskUI:
&y1n)]7R|sE0@staticmethod
j1o y7j#@@G0def Open(exePath, param=”"):
]e{NU&P0@staticmethod51Testing软件测试网b~/H;ZH)j
def Click(uiPath, ffset=0):
51Testing软件测试网{.u*IYQ[i5[B

@staticmethod51Testing软件测试网+kY)Q.tfx)M tJX
def RightClick(uiPath):
51Testing软件测试网w0OWCFGz2Iu;a

J(T G9oN/G0@staticmethod51Testing软件测试网/\Ht3L8m3s9`
def Input(uiPath, value):
51Testing软件测试网0j'i0o,_+q6x#J

{m~9AdY0@staticmethod
D%bB]#N ?L)ZN0def SendShortcut(value):

4{m&jTk+OY5d-e0

4^2F,W Cq0@staticmethod
O.@Fpotrc0def SendKey(value):

%H+g"q,v:Sy$p0

w/~ g{j*e0@staticmethod51Testing软件测试网D+YQ|#T.h!i
def Check(uiPath):
51Testing软件测试网+[ Nz0u`:ED

(^nah$y1m%b.kd]0@staticmethod51Testing软件测试网a5IC-K1ps3_1r
def UnCheck(uiPath):
51Testing软件测试网 T&f?!W f)n5|


TAG:

 

评分:0

我来说两句

Open Toolbar