要不要選用 Robot Framework 作自動化測試?

要不要選用 Robot Framework 作自動化測試?

筆者公司很多的專案都採用 Robot Framework 進行自動化測試,

到底怎樣的專案適合採用 Robot Framework ,採用或是不採用的主要考量有哪些呢?

這篇文章我們針對 Robot Framework 與一般自動化測試架構的選用考量做一個經驗分享。

 

什麼是 Robot Framework?

自動化測試的架構有很多。Robot Framework 相當於下列的集合

  • 1. Data Driven Testing
  • 2. Behavior Driven Development
  • 3. Acceptance Testing
  • 4. Python + Selenium
  • 5. Reporting + Screenshot

其中採用 Robot Framework 最主要的考量通常是 1, 2, 3。

因為採用 Robot Framework 後,測試程式就會長成這樣

*** Test Cases ***
Valid Login
    Open Browser To Login Page
    Input Username    demo
    Input Password    mode
    Submit Credentials
    Welcome Page Should Be Open
    [Teardown]    Close Browser

這就是所謂的 Keyword driven。必須要定義許多的 keyword 背後運作的程式。

例如 Input Username 相對應的 python程式

例如 Open Browser 相對應的程式

另外,這又稱為 Gherkin-style behaviour-driven test development

 

因為整體的語句就像是 user story 一般,

user Story  = test case  =  automation testing scripts = testing reports

也因此這樣測試的結果報告,大家(PM, RD, non-QA)都會比較看得懂,自動化測試執行了什麼

不用Robot Framework 可以達到同樣的目的嗎?

可以的。如果不用 robot framework 的話,依據每一種程式語言的不同,可以採用不同的模組。

  • 1. Data Driven Testing
  • 2. Behavior Driven Development
  • 3. Acceptance Testing
  • 4. Python + Selenium
  • 5. Reporting + Screenshot
Java Python
DDTData Driven Testing TestNG 內建這樣的功能 DDT 模組
BBDAcceptance Testing Cucumber Behave 模組
Keyword Driven 通常透過物件導向的方式自行實作定義keyword例如:Page Object 通常透過物件導向的方式自行實作定義keyword例如:Page Object
Reporting TestNG 內建報表Screenshot 的產生則透過 webdriver所提供的函數 透過 nose 的 HTML plug-inScreenshot 的產生則透過 webdriver所提供的函數

 

Robot Framework 缺點?

既然Robot Framework 有這麼多好處,那麼為什麼不用呢?

開發環境 IDE

要定義這樣的 Test Cases 與 keyword,Robot Framework 提供的 IDE RIDE 很簡略。

相對於 Java 可以使用的 Eclipse 或是 Python 的 pyCharm 或是其它IDE來說,

在開發 Robot Framework 的測試程式會因為 IDE 的關係,在開發會有些困難與門檻。

由於這些”關鍵字”有些是 Robot Framework 內建,有些是需要自己定義,

因此,要學習另一套 Robot Framework 所定義的關鍵字與程式結構 (Test Cases,  Keyword)

每一個對應的 keyword 背後其實需要對應 Python 的程式碼。

相對來說程式的寫法與維護,筆者認為是會更大的。

另外,這次定義的 “Open Browser To Login Page”,如果下次寫成 “Open Browsers to visit Login Pages”

Robot Framework 就不認得了! 因為這些關鍵字就像是使用者定義的另外一種程式語言。

*** Test Cases ***
Valid Login
    Open Browser To Login Page
    Input Username    demo
    Input Password    mode
    Submit Credentials
    Welcome Page Should Be Open
    [Teardown]    Close Browser

 

*** Keywords ***
Open Browser To Login Page
    Open Browser    ${LOGIN URL}    ${BROWSER}
    Maximize Browser Window
    Set Selenium Speed    ${DELAY}
    Login Page Should Be Open

Robot Framework 使用與不使用的考量

使用 Robot Framework 主要原因 不使用的考量
User story = Test Case = Automation testing Scripts

  • 因為測試個案的寫法接近 user story ,因此測試報告很容易可以讓整個團隊了解
  • 測試程式就是測試個案
  • 測試告報內建 screenshot (這是很多 unitTest framework 沒有的喔!)
  • 程式開發與維護的負擔。需要額外學習Robot Framework 所定義的語法與關鍵字。
  • 熟悉 Robot Framework的開發環境 IDE
  • 關鍵字的可再被使用性

其他考量Robot Framework的迷思?

Q: Robot framework 執行會比較快?

Robot framework 底層也是包 Selenium + python,所以並不會比較快。這個絕對不是要不要選用 Robot framework 主要考量

Q: Robot framework 有支援 Windows UI 的測試?

Robot framework 也是額外呼叫AutoIT,所以這也不是要用或是不要用 Robot Framework 的主要原因。

Q: Robot framework 比較好維護比較好讀? 不需要程式背景?

前提是要熟悉 Robot Framework  的關鍵字跟Robot framework 很簡略的IDE。如果要定義其它關鍵字還是需要 Python 的基礎。

是不是比較好維護? 筆者保留。因為要維護關鍵字、 testing cases 與相對應的 python 程式,缺一不可。

 

8 thoughts on “要不要選用 Robot Framework 作自動化測試?

  1. RF发展到现在,不用它的理由越来越少了,熟悉RF的语法和IDE是个简单的事情,只是对于程序员来说本身熟悉了eclipse等IDE后,不愿意花时间再去熟悉其他的IDE,哪怕是小开销,另外关键字驱动在RF IDE中可以很好的维护与关联,甚至查看关键字的Doc。使用RF对于一个测试工程师来说是最实用最考虑生产的一个选择。

  2. 我們專案採用了RobotFamework大概8~9年,寫出來的東西好不好維護這個是相依於測試工程師的素質。起初並沒有去規範寫法,目前我們要求使用gherkin style去撰寫測試,這對於測試案例的第一眼影響非常大。以keyword的設計來說,較無經驗的工程師設計出來的東西並不容易被reuse,因此keyword的設計必須經過review。
    .
    除此之外,我覺得RobotFramework就是提供一個整合許多工具的框架,並提供了友善的報表。有不足的部分,我可以透過java or python去實做test library。
    .
    因此如果需要測試的東西並非單一測試工具可以涵蓋的,我覺得可以考慮RobotFrameowkr;但假如以單一需求,例如我只是要測試web,我可以選擇其他工具來做。

Leave a Reply

Your email address will not be published. Required fields are marked *