软件培训网

欢迎访问软件培训网!招生咨询电话与微信:15225191462(周老师)
软件培训网,专业解决学IT疑难杂症!

首页 > 软件测试/ 正文

UI测试的设计层次

2012-09-18 18:50:15

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

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

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

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

  在底层设计中LoginPage类,

Class LoginPage{
loginButton = “//div[@id='mail-nav']/ul/li[3]/a”;
void Login(username, password){
…..
Selenium.Click(loginButton);
….
}
}

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

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

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

@AddressPage(“LoginPage.xml”)
Class LoginPage{
……
}

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

//div[@id='mail-maillist']/div[2]/table/tbody/tr[{0}]/td[6]/a/span/span
sleep=2 //AliBrowserFrameA[@global='ACCNAME_BACK']

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

  在测试用例中使用:

DeskUI.Click(“loginButton”)

  工具的扩展接口:

class DeskUI:
@staticmethod
def Open(exePath, param=”"):
@staticmethod
def Click(uiPath, offset=0):

@staticmethod
def RightClick(uiPath):

@staticmethod
def Input(uiPath, value):

@staticmethod
def SendShortcut(value):

@staticmethod
def SendKey(value):

@staticmethod
def Check(uiPath):

@staticmethod
def UnCheck(uiPath):


Tags:周口web前端开发培训学校,周口适合不想上学的学生读的技术学校,许昌电脑学校口碑比较好的,许昌3加2中专技校哪家好,许昌java培训在哪里,在郑州北大青鸟学java是一种什么样的感

搜索
软件培训学校哪家好,就来软件培训网咨询
软件培训学校哪家好,就来软件培训网咨询
热门标签
软件培训学校哪家好,就来软件培训网咨询
软件培训学校哪家好,就来软件培训网咨询
软件培训学校哪家好,就来软件培训网咨询
  • QQ交谈