軟件測試簡易自動化測試設計

發表于:2015-12-15來源:uml.org.cn作者:不詳點擊數: 標簽:自動化測試
序言:基于RFT的swing界面的自動化測試,這里不是說怎么去使用工具,而是怎么將RFT融入到自動化測試設計中,其實RFT在整個設計中,個人覺得,只是一個輔助的角色,如果時間允許的話

  序言:基于RFT的swing界面的自動化測試,這里不是說怎么去使用工具,而是怎么將RFT融入到自動化測試設計中,其實RFT在整個設計中,個人覺得,只是一個輔助的角色,如果時間允許的話,誰也不想用這么昂貴還這么不靈活的RFT,接下來,你讀完這個系列后,你就知道為什么我這么說了。

  一、簡易自動化測試架構說明

  很多人都應該了解了GUI自動化測試的通用架構劃分如下:

  1、對象層AppObject,存儲基于find()搜索控件的具體方法,我分成了兩大類,一類是通用的基本java控件、一類的不同產品線的相應的自己拓展的控件類。

  2、方法層AppLib,存儲簡單的操作函數,在這里,我分成了兩大類:Lib與Method類,Lib類用于對象的基本操作方法,Method類存儲用于一些基本的自己拓展的操作方法,例如:外部文件讀寫操作、日志寫出操作、模擬鍵盤鼠標操作(Robot類拓展)等。

  3、用例層AppCase,調用測試方法進行測試用例的組織,不同的產品線對應不同的測試集,一個簡單的測試功能模塊對應一個測試用例。

  二、簡易自動化測試架構的實例

  以下可以看一個整體的簡單實例操作:

  1、AppObject文件夾中有一個object.java文件,存儲一系列的通用的控件查找方法:

  實例如下:

////////按鈕組件//////////

  //用于搜索其上的按鈕

  //輸入:按鍵名稱

  //類別:GuiTestObject

  public GuiTestObject getButton(String buttonName)

  {

  RootTestObject root = getRootTestObject();

  TestObject[] to = root.find(atDescendant(".class","javax.swing.JButton","accessibleContext.accessibleName",buttonName));

  return new GuiTestObject(to[0]);

  }

  ///////文本框組件//////

  //用于搜索文本輸入框

  //輸入:無

  //類別:WTextField

public WTextField getTextField(String LabelName)

  {

  RootTestObject root = getRootTestObject();

  TestObject[] to = root。find(atDescendant(".class","javax.swing.JTextField",".priorLabel",LabelName));

  return new WTextField(to[0]);

  }

  說明:

  a、GuiTestObject是直接繼承于RFT的所有對象的父類TestObject,其里面包含了一些簡單的操作,而我只想用Button的click方法,所以我這里就直接返回的是GuiTestObject類。

  b、RootTestObject也是直接繼承與RFT的 TestObject,不過它與GuiTestObject類不同的是,它是直接指向被測的應用程序的,即是被測試應用程序的控件的一個全部的view,是按數據結構中的樹的方式進行儲存的,其中有方法為find(),可以基于屬性用來在這個RootTestObject中查找你所需要的控件。

  c、find()方法查找的方式有三種,我重點說一下 atChild與atDescendant,前者是在查找根節點的直接子對象、而后者是查找所有的子對象。后面當然是要查找的控件的具體的屬性了,在這里,我們可以定義一個基本不變的屬性,然后定義一些需要在測試用例中改變的屬性,例如:按鈕,這里我設計的就是基于按鈕名字來進行查找了,如果名字一樣的話,你就得用一個別的方式了,例如:index。

  d、WTextField是IBM的ITCL提供的一些控件包裹類,其實就是繼承了一些RFT的基本類,然后自己寫了一些方法而形成的類罷了,你也可以自己拓展一些控件類嘛。

  2、AppLib文件夾中有一個Lib。java的文件,其類存儲對查找到的控件對象操作的基本方法。

  實例如下:

//下面是對對象的初始化

  public AppObject.Rc_Object getObject = new AppObject.Rc_Object();

  //下面是對共同方法的實例化

  public AppLib.Rc_Method getMethod = new AppLib.Rc_Method();

  //////////////////////按鈕組件操作/////////////////////////////

  //采用動態搜索的方法進行找到Button組件,并且執行click操作

  //輸入:ButtonName


public void ChooseButton (String buttonName)

  {

  getObject.getButton(buttonName).click();

  sleep(3);

  try {

  //向外部日志寫其完成測試的步驟

  getMethod.logWriter("完成"+ buttonName + "的ChooseButton方法;");

  } catch (Exception e) {

  //可以調用異常處理模塊進行異常處理

  }

  }

  //////////////////////文本框組件操作/////////////////////////////

  //采用動態搜索的方法進行找到TextField組件,并且執行click操作

  //輸入:TextFieldName

  public void ChooseTextField (String LabelName,String TextName)

  {

  sleep(3);

  getObject.getTextField(LabelName).setText(TextName);

  //用JAVA的語句將其UserName拆分成一個一個的字符進行輸入

  try {

  getMethod.logWriter("完成" +LabelName+" ChooseTextField方法");

  } catch (Exception e) {

  //可以調用異常處理模塊進行異常處理

  }

  }

原文轉自:http://www.uml.org.cn/Test/201306243.asp

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97