Gate使用說明

Gate使用說明

Gate提供可視化的功能測試自動化建模工具和用例組織組和運行環境。測試自動化建模的數學理論基礎是有向圖,關於有向圖理論能夠參考 https://mathworld.wolfram.com/DirectedGraph.html Gate使用有向圖模型表達測試執行邏輯,經過變量和模型引用支持測試邏輯分層。 咱們將介紹Gate的測試建模和測試框架的的功能和使用方法,詳細內容能夠參考《Gate教程》、《Gate使用參考》。javascript

測試模型

測試模型從「Start」節點開始運行,執行完畢後根據執行狀態和鏈接條件選擇下一個執行的節點,模型執行整個過程沒有拋出異常或斷言失敗則執行成功不然執行失敗。 html

模型元素

Gate測試模型的數學模型是一個有向矢量圖,由帶有方向的邊和頂點由兩類基本元素組成,Gate測試模型中頂點單元用於存儲配置,並根據類型和配置執行預約義的操做;連線表達當前單元執行完畢後篩選下一個執行單元的條件,鏈接分爲有向和無向的,無向連線用於解釋說明其鏈接的單元不會被執行,有向連線表示執行條件,有向連線的無箭頭一側爲起點,有箭頭的一側爲終點。java

執行條件

執行條件能夠是success、fail或next。success、fail條件即爲執行單元的執行狀態,next條件無視執行狀態執行箭頭指向的單元。一個執行單元鏈接多個條件,即下一步有多個單元可能根據執行條件被執行時,執行條件存在選擇優先級,首先選擇success條件,其次選擇fail條件,最後選擇next條件。當存在兩個相同條件(如兩個success)時,選擇哪一個鏈接條件沒有肯定的規律。 web

執行單元

  • 執行單元執行某個預設的的操做,如打開某一個網頁、尋找網頁上某個元素進行點擊操做等,執行單元執行完成後結果只能是功或失敗兩個狀態。部分執行單元運行完成後還會返回字符串形式的執行結果,執行過程當中會配置某個屬性、設置某個變量。
  • JSR223採樣器支持嵌入執行一段用戶自定義代碼,支持使用javascript和groovy,JSR223採樣器和javascript、groovy語言的互相調用遵循Java JSR223規範。JSR223內置了一些預約義變量,能夠實現獲取並處理上一個採樣器的結果。JSR223採樣的內置預約義變量能夠直接使用,變量名稱和做用參考《Gate使用參考》。
  • 全部元素的可配置參數在執行時轉換成對應的Java基礎數據類型,類型轉換規則能夠參考java 語言String轉換各種數據的規則。參數配置支持基礎數據類型,若是須要使用自定義或高級數據類型可使用JSR223採樣器自定義完成。

註釋

能夠經過「note」類型連接和「comment」類型頂點能夠給模型添加註釋。「note」類型連接會被執行器忽略,「comment」單元只能和「note」連接。 chrome

模型運行

執行器

測試執行時系統會啓動多個測試模型執行器執行器執行測試模型,模型從「start」頂點開始執行,按照頂點執行狀態和執行條件順序執行,當存在知足執行條件的測試模型時,執行器被建立並開始執行測試模型,模型執行完畢執行器會被系統銷燬。執行器有最大個數限制,當到達最大個數限制時再也不分配新的執行器,若是存在知足執行條件的模型會等待已有執行器執行完畢再執行。瀏覽器

執行器最大數量在配置文件${GATE_HOME}/bin/gate.properties中的「gate.engine.test.runner.number」屬性設置緩存

變量

  • 定義和使用 變量能夠經過「user define varaible」單元中配置或在JSR223單元中使用「vars」內 置變量定義,當定義變量的單元被執行後變量生效。當定義變量的單元被執行時變量沒有被定義則生成一個變量,當定義變量的單元被執行時變量已經存在則從新賦值這個變量,變量只支持字符串一種類型。經過「${變量名}」方式使用變量,運行時「${變量名}」會被替換成變量的值。變量只有字符串一種類型,運行時會被轉換成Java基礎類型。
  • 變量做用域 變量在test Suites中的「user define varaible」被定義時,會在整個測試執行過程生效;變量在test Suite中的「user define varaible」被定義時,會在這個test suite中全部的測試模型中生效;變量在test Case中的「user define varaible」被定義時,會在這個test case模型中生效;變量在測試模型中的「user define varaible」或JSR223單元被定義時會在這個單元執行後生效。

採樣器返回值

模型的頂點有多種類型,模型執行時採樣器類型的單元執行結果會被緩存直到下一採樣器類型的單元執行完畢後替換,提取器和JSR223類型的PreResult預置變量處理的都是緩存的採樣器執行結果。 多線程

測試框架

常見自動化測試框架都提供了,用例分組、夾具、用例篩選、用例依賴、數據驅動、用例執行最終報告輸出,經過這些功能提供自動化測試組織和執行層面的支持,Gate的測試框架部分也提供了這些功能用於組織和執行測試用例。框架

用例分組

測試用例分組方式採用test suite/test case兩層結構,根節點上能夠添加test suite,test suite節點上能夠添加test case,測試用例分組信息徹底和Test樹形菜單相同。測試用例能夠在所在的test suite中用鼠標拖拽調整順序,也能夠在不一樣的分組中拖拽調整分組。 ide

夾具

夾具備setup、teardown兩種類型,能夠添加至於test suite或test suites,setup在測試用例執行以前執行,teardown在全部測試用例執行以後執行。當夾具添加在test suites及根節點上時,會在全部用例以前或以後執行,當夾具添加在test suite上時,會在所在test suite內的全部用例以前或以後執行。當同級目錄存在多個相同類型的測試夾具時,按照它們在樹的上下位置順序執行。夾具能夠被拖拽以調整執行次序,夾具能夠被啓用或禁用。

用例篩選

在圖形模式執行用例時,從圖形界面點擊綠色箭頭執行測試會篩選已經選中的test case、test suite、test suites。按下「ctrl」鍵點擊鼠標,能夠選擇多個單元, 被選中的test case會被執行,當test suites即測試樹形菜單根節點被選中時執行所有測試用例,當test suite節點被選中時會執行test suite內包含的所有用例,test suite、test case爲「enable」狀態時纔會被執行。 命令行模式執行用例時,能夠經過參數執行單元名稱前綴篩選須要執行的test suites或test cases。

用例依賴

Gate可支持測試用例級別的多線程執行,多線程執行默認是開啓的,能夠經過設置行線程的最大數量令其單線程執行。多線程執行時執行測試用例的順序並非固定的,能夠設置測試用例依賴令其在某些測試用例執行成功以後執行。測試用例只能依賴處於上方的測試用例,當被依賴的用例狀態爲「disable」時在執行前會提示錯誤。

數據驅動

測試用例單元能夠添加數據驅動單元,添加數據驅動單元至測試用例後,測試用例會根據csv data provider配置的csv文件內容迭代執行測試用例,每一個迭代讀csv中的一行數據做爲參數,生成一個數字後綴的測試用例結果,csv文件沒有下一行數據時中止迭代這個測試用例而且設置本次執行結果的狀態爲失敗。

測試執行

測試的執行過程分爲生成和執行測試計劃兩個階段,制定測試計劃時從新調整篩選出的測試用例執的執行順序並添加對應的測試夾具,執行測試計劃時會尋找知足執行條件的用例或夾具,當找到知足把用例、夾具模型分派給模型執行器,當存在多個知足執行條件的用例或夾具時會啓動多個執行器執行這些用例或夾具。

生成測試計劃

測試計劃根據篩選出的測試用例生成,測試夾具會根據篩選的測試用例自動被執行,不能指定執行測試夾具。生成測試計劃時檢查本次執行篩選的測試用例的依賴關係是否知足,當存在一個測試用例依賴不存在或禁用的測試用例時,中止並提示錯誤。所有用例的依賴關係被知足時,會依次把沒有依賴的測試用例放在有依賴的測試用例以前。

執行測試計劃

執行測試計劃時,首先執行setup夾具,所有setup執行成功後開始執行測試用例,test suite內的所有測試執行完畢後執行test suite內的teardown夾具,所有test suite內的teardownn夾具執行完畢後,開始執行test suites及根目錄內的teardown夾具。模型容器的的執行結果有成功、錯誤和失敗三種,執行錯誤可能出如今模型執行前置條件不能知足,被外部中止,或執行過程當中出現未知錯誤。 執行夾具: 執行用例階段,首先尋找並順序執行test suites包含的setup夾具,此時不會啓動多個執行器同時執行,test suites中的setup夾具共享上下文及前一個setup中定義的變量會向下傳遞。Test suites中的setup執行失敗時中止測試執行,所有順序執行成功後,開始執行每一個test suite中的setup夾具,不一樣test suite中的setup夾具可能會同時執行,可是同一個test suite中的setup夾具會保持一個執行器順序執行。

test suites及根目錄中的setup夾具的變量會向下級目錄的測試用例或夾具模型傳遞,test suite及二級目錄中setup的變量不會向同級目錄其餘模型容器傳遞。

執行測試用例: 當test suite中的所有setup夾具執行成功後,開始執行測試用例。測試用例會被分配給模型執行器執行,此時當多個用例知足執行條件時會同時啓動多個執行器執行測試用例。沒有依賴其餘用例的會被直接分配執行器並執行,依賴其餘用例執行的用例在被依賴的用例執行成功後執行,當被依賴的測試用例執行不成功及結果爲錯誤或失敗,依賴它的所有用測試用例的執行結果會被設置成錯誤。 當test suite中的setup夾具執行結果爲失敗或錯誤時,其後全部的setup夾具和測試用例都不會執行測試用例結果都會被設置爲錯誤。

執行結果

測試執行結果顯示在下方面板中的「result」頁籤中的樹形界面,測試進入執行階段時會清空上次運行的結果,測試模型執行開始時會添加一個同名的結果節點至結果樹,模型執行過程當中全部可執行單元的的執行結果做爲子節點添加到這個節點。當模型經過action執行單元引用action模型時,執行action時會在這個模型的結果節點下新增一個和action執行單元同名的結果節點,action模型的執行單元的執行結果會做爲子節點添加至action執行單元的結果節點。 Test Suites結果節點會記錄測試計劃執行的統計結果, Test suite結果節點會記錄這個test suite執行的統計信息, Test suites節點顯示執行所有用例的統計信息。

使用Selenium

  • 經過使用Selenium採樣器模型元素實現頁面自動化測試,使用Driver、Windows和Navigtion進行瀏覽器相關的操做,使用Element對頁面元素進行定位和操做,使用Selenium timeout設置全局的等待時間。
  • 使用Element單元首先根據條件對頁面元素定位並進行隱式等待,知足條件的頁面元素出現後進行操做,不知足時拋出異常模型會中止執行,當須要判斷頁面元素是否知足條件,根據判斷的結果選擇下一步執行哪一個單元時可使用Expected Conditions,Expected Conditions有更多的隱式等待條件,隱式等待超時後會以失敗狀態結束而不是拋出異常終止模型執行。 使用Element單元時,能夠根據條件對頁面的操做進行截圖,默認在執行失敗失敗時截圖,能夠在${GATE_HOME}/bin中的gate.properties中關閉截圖配置或修改成任何操做都截圖
    # Condition for when to take screens shot. The options are always, fail or never
      gate.selenium.screenshot.condition=fail
  • Selenium對應元素都有「driver_id」配置項用於支持在一個測試模型中操做多個瀏覽器,當使用Driver的Create或CreateRemote方法時會創WebDriver對象(能夠簡單理解爲瀏覽器窗口)並把WebDriver和「driver_id」中配置的值存儲前來造成一個鍵值對,其餘Selenium元組經過「driver_id」配置,能夠操做指定的WebDriver對象(瀏覽器窗口)。經過配置不一樣的「driver_id」建立多個窗體和使用不一樣的「driver_id」操做不一樣的窗體能夠實如今一個測試模型中操做多個瀏覽器。
  • 使用Deriver元的的Create方法時須要配置系統變量,能夠在${GATE_HOME}/bin中的system.properties中配置,以chrome和firefox爲例
    webdriver.chrome.driver=C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe
    webdriver.gecko.driver=C:\\Program Files (x86)\\Mozilla Firefox\\geckodriver.exe
  • GUI模式運行時,測試模型執行完畢時若是沒有執行Driver單元的quite方法會保留瀏覽器窗體,能夠經過修改gate.properties中的參數在模型執行關閉測試模型打開的窗體。CMD模式運行時會在測試用例執行完畢關閉全部測試用例打開的窗體。
  • Selenium CodeSnippet採樣器是JSR223單元的一個擴展,能夠更方便的使用Selenium API, Gate並無提供全部Selenium API的圖形化封裝,使用CodeSnippet能夠完成全部Selenium Java API操做。Code Snippet比JSR223單元預約義內置變量多了一個「driver」變量,dirver變量爲根據根據「driver_id」配置的鍵值獲取的WebDriver,經過「driver」能夠完成全部Selenium API的操做。CodeSnippet只支持使用Groovy, 因爲Groovy對Java的徹底兼容性,能夠直接使用Selenium的Java API。Selenium Java API 使用請參考Selenium相關文檔。 移動鼠標示例:
    import org.openqa.selenium.interactions.Actions;
    import org.openqa.selenium.By;  
    element = driver.findElement(By.linkText("sometext"));
    new Actions(driver).moveToElement(element).click().perform();

使用HTTP

  • 經過使用HTTP相關採樣器能夠實現發送HTTP請求或者經過HTTP協議上傳文件,HTTP採樣器使用Apache Http Client實現。當模型運行到HTTP採樣器時,首先根據URL和端口查找是否有已經建立的httpclient,若是沒有會新建一個,若是有使用已經存在的。模型執行完時執行測試用例建立所用的httpclient的close方法釋放資源。
  • Apache Http Client對「https」提供了默認的實現,具體內容請參考Apache Http Client4.5以上版本文檔。使用「https」協議須要使用指定證書時可使用"ssl manager"導入證書,GUI模式下菜單欄選擇「Options->ssl manager」,選擇須要使用的證書便可,下一次啓動GUI模式須要從新導入證書。CMD模式會讀取java系統變量,可使用"-D"也能夠在「system.properites」中對應的證書配置
    javax.net.ssl.keyStorePassword=123456
    javax.net.ssl.keyStore=D:/swdtools/2waycert/client.p12
相關文章
相關標籤/搜索