天天看點

RF自動化測試系列-第一篇 前言

用RF來自動化測試你的系統 - 前言

    • 背景介紹
    • 自動化測試發展史
    • TDD與ATDD
    • Robot Framework測試架構
版權聲明:部落客原創,轉載請注明原作者及出處。

背景介紹

Nokia在大家的印象中是不是已經淡忘了呀?其實也正常,自從Nokia手機業務失利以來就慢慢的淡出公衆視線。但是她一直都在默默的努力,專心緻志耕耘電信裝置市場,為全球移動營運商提供裝置和服務。目前市場佔有率是僅次于華為的第二大電信裝置商。 扯遠了:),回歸正題,大家也許知道Robot Framework最初是Nokia 網絡部門設計開發的,那時手機部門還是如日中天,網絡部門就是負責電信裝置這塊。為了适應當時的靈活開發,測試需要做回歸和持續內建,自動化需求變得很迫切。Robot 在那時便應運而生并得到大家的一緻喜愛,後推廣至全公司乃至現在開源到全社群。在國外各大軟體廠商也得到廣泛應用,但是在國内貌似知道和使用的人并不是很多, 這跟國内大多數中小企業不太重視測試有關吧,尤其是從開發到打包到內建到測試到釋出全自動的一體化流水線不是每個企業都願意投入人力物力。

自動化測試發展史

自動化測試,顧名思義是指軟體測試的自動化。是把以人力驅動的測試行為轉化為機器執行的一種過程。通常,在設計了測試用例并通過評審之後,由測試人員根據測試用例中描述的規程一步步執行測試,得到實際結果與期望結果的比較。在此過程中,為了節省人力、時間或硬體資源,提高測試效率,便引入了自動化測試的概念。自動化經曆了下面一些階段:

一、記錄回放。記錄回放的方式流行于商業工具之中,無需程式設計技能即可快速上手。然而這種方法相對脆弱,一旦被測試對象發生變化測試就會受到影響,分散的腳本不可重用且難以維護,而且系統在測試前必須可用,這也就意味着無法使用驗收測試驅動(ATDD)的開發方法。是以這種方法并不适合大型自動化測試。

二、線性腳本。線性腳本允許使用各種語言來編寫非結構化腳本,腳本直接與被測系統互動。能夠快速上手,靈活性強。但是編寫腳本需要程式設計技能,測試腳本本身的品質也沒有别的測試系統保證。被測系統中一個改動通常會影響多個腳本,沒有經過子產品化或重用的大量腳本難以維護。是以這種方法适合簡單任務,不适合大型自動化。

三、子產品化腳本。子產品化腳本由兩部分組成:驅動腳本執行測試,測試庫函數完成與被測系統互動。驅動腳本編寫起來非常簡單,這樣可以更快地建立新測試,容易維護。然而需要花時間和程式設計技能建立測試庫,并将測試資料嵌入腳本,建立新測試就需要新的測試腳本。是以,隻要擁有程式設計技能,這種方法還是适合大型項目,但不适合非程式設計人員。

四、資料驅動方法。将資料與測試腳本分離,基于子產品化的測試庫,一個驅動腳本可以執行多個相似測試,這樣非常容易建立新測試。維護工作可以分離,測試人員負責資料,程式員負責寫測試庫。然而,不同類型測試仍需要新的驅動腳本,初始建立資料解析器和重用元件需要花人力。這種方法适合大型項目,隻需要較少的程式設計技能。

五、關鍵字驅動。将資料與關鍵字結合來描述如何使用資料執行測試。這種方法具備資料驅動的優勢,同時非程式設計人員也能建立新類型測試。所有測試由同一個架構來執行,無需不同的驅動腳本。然而初始成本很大,但是可以使用開源方案。是以非常适合大型項目。

TDD與ATDD

TDD – 測試驅動開發(Test-Driven Development),是靈活開發中的一項核心實踐和技術,也是一種設計方法論。指在開發功能代碼之前,根據需求先編寫具體的測試用例,而後編寫産品代碼使測試用例成功執行。進而用測試用例來驅動編寫什麼樣的産品代碼。這種開發方法能有效避免送出一些不是為了某個需求而寫的備援代碼。

ATDD - 驗收測試驅動開發(Acceptance test–driven development),是指使用者或産品經理、 開發、測試三方在開發軟體之前一起讨論制定出每個需求的驗收标準,并總結提取出一組驗收測試用例。然後開發根據測試用例用TDD方式編寫産品代碼。與此同時,測試人員也根據測試用例編寫自動化測試腳本或手動測試步驟。當産品代碼通過了所有的測試用例就表示這個需求開發完成。

TDD一般隻涉及開發者本人以及和他結對的開發人員。如果開發人員對業務需求了解不正确,寫出的測試用例也是錯誤的。 ATDD是使用者、開發、測試三方大家一起讨論出的驗收标準和測試用,能有效的保證大家對業務需求的一緻了解。

Robot Framework測試架構

Robot是踐行ATDD的利器,是一個基于Python編寫的關鍵字驅動的自動測試架構。他具有良好的擴充性,端到端的ATDD驗收測試驅動開發的自動化架構。可以用于UI界面、接口、服務、web應用等各種常見軟體系統的自動化測試工作。下面是一些Robot的主要特性:

  • 友善好用的基于表格方式建立測試用例
  • 能夠基于現有的關鍵字建立使用者自定義的關鍵字
  • 能對測試用例打不同的标簽進行分類,以便于在不同的測試級别跑不同的用例
  • 測試報告用HTML分級方式呈現,易于閱讀檢查。
  • 支援建立資料驅動的測試用例
  • 可以運作于各種作業系統和應用平台
  • 開放的測試庫開發接口。使用者可以用java或python建立自己的測試庫。
  • 提供指令行運作接口和XML格式的測試報告,易于和各種持續內建平台內建。實作送出代碼後自動觸發運作測試并快速傳回測試報告。
  • 支援用Selenium進行web測試、Java圖形界面、Telnet、SSH等的測試

前言就說到這裡吧,下一節預告:RF系統架構介紹