要不要選用 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
|
|
其他考量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 程式,缺一不可。
透過 nose 的 HTML plug-inScreenshot 的產生則透過 webdriver所提供的函數
—-nose的什么模组
您好 謝謝關注詢問
nose 安裝完之後, 再安裝 nose 套件即可
pip install nose-htmloutput
相關套件參考
https://pypi.python.org/pypi/nose-htmloutput
https://pypi.python.org/pypi/nose-html-reporting
https://github.com/ionelmc/nose-htmloutput
https://github.com/openstack-infra/nose-html-output
https://github.com/cboylan/nose-html-output
thank you
但我想在nose-htmloutput上加上失败的截图,有方案吗?
如果用 Robot Framework 本身有類似的機制
https://github.com/robotframework/Selenium2Library/pull/477
或是參考筆者這段範例程式
http://www.qa-knowhow.com/?p=1554
RF发展到现在,不用它的理由越来越少了,熟悉RF的语法和IDE是个简单的事情,只是对于程序员来说本身熟悉了eclipse等IDE后,不愿意花时间再去熟悉其他的IDE,哪怕是小开销,另外关键字驱动在RF IDE中可以很好的维护与关联,甚至查看关键字的Doc。使用RF对于一个测试工程师来说是最实用最考虑生产的一个选择。
感谢分享
我們專案採用了RobotFamework大概8~9年,寫出來的東西好不好維護這個是相依於測試工程師的素質。起初並沒有去規範寫法,目前我們要求使用gherkin style去撰寫測試,這對於測試案例的第一眼影響非常大。以keyword的設計來說,較無經驗的工程師設計出來的東西並不容易被reuse,因此keyword的設計必須經過review。
.
除此之外,我覺得RobotFramework就是提供一個整合許多工具的框架,並提供了友善的報表。有不足的部分,我可以透過java or python去實做test library。
.
因此如果需要測試的東西並非單一測試工具可以涵蓋的,我覺得可以考慮RobotFrameowkr;但假如以單一需求,例如我只是要測試web,我可以選擇其他工具來做。
感謝分享