Clayton Neal在軟件測試和質量保證方面有超過13年的經驗,當中有八年的Windows, web,和移動應用程序的測試本身主動化經驗。他在測試領域的所有等級都工做過。近期他在Bloomberg and Misys擔任QA經理。同一時候他仍是Sogeti的本身主動化測試顧問。Clayton對本身主動化測試超迷戀,還見識了怎樣親自成功實施測試本身主動化。 |
?html
測試本身主動化的優勢咱們都很是清楚,更快地反饋問題,下降手工測試,持續集成就是當中隨口可舉的。測試團隊成員越多,公司使用本身主動化越多,就越好。爲此,咱們必須脫離實施測試本身主動化的技術方面,而去考慮編寫和執行本身主動化測試的非技術員工層面。無論開發團隊是否在作敏捷驗收測試驅動開發(ATDD),敏捷行爲驅動開發(BDD)或使用傳統的瀑布方法,團隊可用來進行本身主動化的成員越多,本身主動化測試覆蓋範圍就越廣。
keyword驅動測試是一種由本身主動化project師開發被測應用程序內可反覆使用行爲的方法。而後非技術用戶就可以用不論什麼輸入參數將所得的可反覆使用的keyword行爲庫進行排序,肯定測試用例。比方,一個keyword可以是點擊button(在一個button控件上點擊)或輸入文本(在一個文本框控件中輸入文本),而後這些keyword就可以被用來填寫一個登陸表格並點擊 OKbutton。該方法的優勢是:本身主動化project師集中幹他們擅長的,即開發keyword的測試本身主動化的腳本或編程;非技術測試員和企業用戶使用這些keyword並基於他們的領域和產品知識來編寫測試用例,最後使得本身主動化更加有效。
?機器人框架是一個通常的基於keyword的測試本身主動化框架,它不依賴於不論什麼一個特定的本身主動化工具(如:QTP, Ranorex, TestComplete, Selenium等),卻讓本身主動化project師插入用這類本身主動化工具的keyword。機器人已經安裝了不少keyword並擁有一個很成熟的功能集,包含:keyword的條件運行
? 測試用例和測試集的[setup]和[teardown]
? 數據驅動keyword文件,文件夾及流程管理的FOR循環
? HTML測試報告
?詹金斯CI集成將變量變爲一個keyword並從測試用例keyword的keyword標註返回
?最後列出的功能就能夠以在現有keyword上建立keyword,確保如圖1所看到的的「keyword金字塔」的增加。web
金字塔最底層是由本身主動化project師開發的技術keyword構成:最頂端是應用程序內進行單個功能行爲的功能keyword:最後,咱們將基於功能keyword的業務流程keyword總結爲在應用程序內構建業務流程。這樣的分層的一個樣例如表1所看到的。編程
表1. keyword分層框架
這裏,技術keyword是基於執行帶有展現控件的本身主動化行爲;功能keyword在應用程序中執行單個功能步驟;更高層的業務流程測試應用程序內端到端的流程。
即用機器人框架可以從Python和Java庫中載入新的keyword;爲了使用在.NET中開發的keyword,就要利用遠程服務界面。該界面是XMLRPC界面,機器人框架在上面給一個遠程服務發送請求,運行一個keyword。固然這樣的遠程服務可以用不論什麼一種支持XMLRPC的語言來開發。尤爲是,一個遠程服務可以用.NET開發讓機器人框架運行keyword裝配中的基於.NET的keyword。這種方法如圖2所看到的。工具
圖2. 遠程服務結構圖google
N機器人遠程(見http://code.google.com/p/nrobotremote/)是一個可以創建.NETkeyword庫並經過XMLRPC協議將之公開給機器人框架的.NET機器人框架遠程server。結合了N機器人遠程的機器人框架可以讓最初的本身主動化工做用來計劃哪些測試需要被本身主動化以及這些測試需要開發什麼keyword,而不是在本身主動化測試計劃可以開始前設計編寫一個本身主動化框架。爲N機器人遠程開發.NETkeyword只就是開發一個公開方法的類。每個方法都被視做一個keyword——好比:spa
該keyword類公開了兩個keyword:ClickButton和EnterText。經過在N機器人遠程中建立keyword類並把機器人框架指向XMLRPC地址,這些都可以用選擇的本身主動化測試工具實現且可以經過機器人框架來調用。如圖3所看到的。設計
圖3.使用N機器人遠程的機器人框架測試用例3d
在上面這個樣例裏,設置一列告訴機器人框架,http://localhost:8271上有一個遠程keyword服務(注意:除了本地主機,也多是在還有一機器上),且來自遠程server的keyword將有前綴N機器人遠程(不論什麼前綴都可以)。測試用例一列則定義了一個叫作管理員登陸的測試用例,調用keywordEnterText去輸入username和password,keywordClickButton去點擊OK。這樣一個測試有多是在開發早期一個非技術測試員或企業用戶所寫的。keyword庫自己可以被視做被測應用程序的域模型之上的薄薄一層。比方,假設使用selenium頁面對象,那麼keyword層就可以如圖4所看到的,按順序調用頁面對象和方法。code
圖4. keyword和域層
這樣的抽象概念在被測應用程序變化時提供了靈活性,經常,當應用程序變化時,僅僅有域模型和keyword實施隨之改變。測試用例實施並不需一直不變,因爲它建在更高層。使用機器人框架和.NETkeyword也可以使不一樣的本身主動化工具在測試用例水平彼此整合,讓本身主動化project師可以靈活地爲所需keyword行爲選擇最佳本身主動化工具。好比,假設在一家更大的公司,幾支本身主動化團隊已經被選去使用針對不一樣產品模塊的不一樣本身主動化工具,每隊就可以用他們各自的開發語言爲其模塊開發一個域模型,如機器人框架可以載入Python,Java和(經過N機器人遠程).NETkeyword。測試用例編寫者也相同可以在他們的測試用例裏使用來自所有本身主動化團隊的keyword。
總結
經過贊成非技術用戶在開發各個階段編寫測試用例,將本身主動化行爲從抽象變爲可以傳給非技術測試員和業務用戶以下降本身主動化project師的瓶頸的可複用keyword。機器人框架,做爲一個成熟的通常性的keyword框架,贊成本身主動化項目一開始集中研究本身主動化測試和所需keyword,而不是設計並實施一個測試框架。使用機器人框架和N機器人遠程將keyword測試本身主動化擴大到.NET,贊成keyword利用.NET框架和.NET中本身主動化工具的優點,並贊成把來自Python和Java的keyword與一樣的測試用例相結合。
版權聲明:本文出自 SPASVO澤衆軟件測試網:http://www.spasvo.com/news/html/2014101194841.html
原創做品,轉載時請務必以超連接形式標明本文原始出處、做者信息和本聲明,不然將追究法律責任。