1. 程式人生 > 實用技巧 >帶有機器人框架的.NET自動化測試

帶有機器人框架的.NET自動化測試

>>> hot3.png

  Clayton Neal在軟體測試和質量保證方面有超過13年的經驗,其中有八年的Windows, web,和移動應用程式的測試自動化經驗。他在測試領域的所有等級都工作過。最近他在Bloomberg and Misys擔任QA經理。同時他還是Sogeti的自動化測試顧問。Clayton對自動化測試超迷戀,還見識瞭如何親自成功實施測試自動化。

?

  測試自動化的好處我們都很清楚,更快地反饋問題,減少手工測試,持續整合就是其中隨口可舉的。測試團隊成員越多,公司使用自動化越多,就越好。為此,我們必須脫離實施測試自動化的技術方面,而去考慮編寫和執行自動化測試的非技術員工層面。無論開發團隊是否在做敏捷驗收測試驅動開發(ATDD),敏捷行為驅動開發(BDD)或使用傳統的瀑布方法,團隊可用來進行自動化的成員越多,自動化測試覆蓋範圍就越廣。

   關鍵字驅動測試是一種由自動化工程師開發被測應用程式內可重複使用行為的方法。然後非技術使用者就可以用任何輸入引數將所得的可重複使用的關鍵字行為庫進行排序,確定測試用例。比如,一個關鍵字可以是點選按鈕(在一個按鈕控制元件上點選)或輸入文字(在一個文字框控制元件中輸入文字),然後這些關鍵字就可以被用來填寫一個登入表格並點選 OK按鈕。該方法的好處是:自動化工程師集中幹他們擅長的,即開發關鍵字的測試自動化的指令碼或程式設計;非技術測試員和企業使用者使用這些關鍵字並基於他們的領域和產品知識來編寫測試用例,最後使得自動化更加有效。
   ?機器人框架是一個一般的基於關鍵字的測試自動化框架,它不依賴於任何一個特定的自動化工具(如:QTP, Ranorex, TestComplete, Selenium等),卻讓自動化工程師插入用這類自動化工具的關鍵字。機器人已經安裝了許多關鍵字並擁有一個非常成熟的功能集,包括:關鍵字的條件執行

   ? 測試用例和測試集的[setup]和[teardown]
   ? 資料驅動關鍵字檔案,目錄及流程管理的FOR迴圈
   ? HTML測試報告
   ?詹金斯CI整合將變數變為一個關鍵字並從測試用例關鍵字的關鍵字標註返回
   ?最後列出的功能即能夠在現有關鍵字上建立關鍵字,確保如圖1所示的“關鍵字金字塔”的增長。

  金字塔最底層是由自動化工程師開發的技術關鍵字構成:最頂端是應用程式內進行單個功能行為的功能關鍵字:最後,我們將基於功能關鍵字的業務流程關鍵字總結為在應用程式內構建業務流程。這種分層的一個例子如表1所示。

表1. 關鍵字分層

  這裡,技術關鍵字是基於執行帶有展示控制元件的自動化行為;功能關鍵字在應用程式中執行單個功能步驟;更高層的業務流程測試應用程式內端到端的流程。

   即用機器人框架可以從Python和Java庫中載入新的關鍵字;為了使用在.NET中開發的關鍵字,就要利用遠端服務介面。該介面是XMLRPC介面,機器人框架在上面給一個遠端服務傳送請求,執行一個關鍵字。當然這種遠端服務可以用任何一種支援XMLRPC的語言來開發。尤其是,一個遠端服務可以用.NET開發讓機器人框架執行關鍵字裝配中的基於.NET的關鍵字。這個方法如圖2所示。

圖2. 遠端服務結構圖

  N機器人遠端(見http://code.google.com/p/nrobotremote/)是一個可以建立.NET關鍵字型檔並通過XMLRPC協議將之公開給機器人框架的.NET機器人框架遠端伺服器。結合了N機器人遠端的機器人框架可以讓最初的自動化工作用來計劃哪些測試需要被自動化以及這些測試需要開發什麼關鍵字,而不是在自動化測試計劃可以開始前設計編寫一個自動化框架。為N機器人遠端開發.NET關鍵字僅僅就是開發一個公開方法的類。每個方法都被視作一個關鍵字——例如:

  該關鍵字類公開了兩個關鍵字:ClickButton和EnterText。通過在N機器人遠端中建立關鍵字類並把機器人框架指向XMLRPC地址,這些都可以用選擇的自動化測試工具實現且可以通過機器人框架來呼叫。如圖3所示。

圖3.使用N機器人遠端的機器人框架測試用例

  在上面這個例子裡,設定一列告訴機器人框架,http://localhost:8271上有一個遠端關鍵字服務(注意:除了本地主機,也可能是在另一機器上),且來自遠端伺服器的關鍵字將有字首N機器人遠端(任何字首都可以)。測試用例一列則定義了一個叫做管理員登入的測試用例,呼叫關鍵字EnterText去輸入使用者名稱和密碼,關鍵字ClickButton去點選OK。這樣一個測試有可能是在開發早期一個非技術測試員或企業使用者所寫的。關鍵字型檔本身可以被視作被測應用程式的域模型之上的薄薄一層。比如,如果使用selenium頁面物件,那麼關鍵字層就可以如圖4所示,按順序呼叫頁面物件和方法。

圖4. 關鍵字和域層

  這種抽象概念在被測應用程式變化時提供了靈活性,經常,當應用程式變化時,只有域模型和關鍵字實施隨之改變。測試用例實施並不需一直不變,因為它建在更高層。使用機器人框架和.NET關鍵字也可以使不同的自動化工具在測試用例水平彼此整合,讓自動化工程師可以靈活地為所需關鍵字行為選擇最佳自動化工具。例如,如果在一家更大的公司,幾支自動化團隊已經被選去使用針對不同產品模組的不同自動化工具,每隊就可以用他們各自的開發語言為其模組開發一個域模型,如機器人框架可以載入Python,Java和(通過N機器人遠端).NET關鍵字。測試用例編寫者也同樣可以在他們的測試用例裡使用來自所有自動化團隊的關鍵字。

  總結
   通過允許非技術使用者在開發各個階段編寫測試用例,將自動化行為從抽象變為可以傳給非技術測試員和業務使用者以減少自動化工程師的瓶頸的可複用關鍵字。機器人框架,作為一個成熟的一般性的關鍵字框架,允許自動化專案一開始集中研究自動化測試和所需關鍵字,而不是設計並實施一個測試框架。使用機器人框架和N機器人遠端將關鍵字測試自動化擴大到.NET,允許關鍵字利用.NET框架和.NET中自動化工具的優勢,並允許把來自Python和Java的關鍵字與相同的測試用例相結合。

版權宣告:本文出自 SPASVO澤眾軟體測試網:http://www.spasvo.com/news/html/2014101194841.html

原創作品,轉載時請務必以超連結形式標明本文原始出處、作者資訊和本宣告,否則將追究法律責任。

轉載於:https://my.oschina.net/spasvo/blog/332774