自動化測試開源策略

寒凝雪發表於2017-07-03

序言:不知道有多少人對開源社群真的很有了解,個人以為在自動化測試中,開源也是一個很好的利器,往往商業性的工具針對普遍人群,而自動化測試是“定製型”的,不一定特別適合,而且自動化測試是預言型的,所以一般而言,可以考慮開源。因為可以快速應用其提高效率,我個人覺得:自動化測試在追求發展過程中,要學會藉助各種工具提高效率,而不是僅僅侷限於一種。還是那句話,能提高測試效率和工作效率的才是王道,“摘花折草即可傷人也”。

  一、自動化測試中的開源軟體分類

  開源工具因為其零許可費以及開放和自由的理念逐漸得到了大家的認可和廣泛的傳播,而且由於自動化測試的差異性,其開源軟體的靈活性更能在自動化測試中很好的體現,而且隨著開源軟體和自動化測試的發展,其開源工具在自動化測試中也形成了一股應用的趨勢。其實,在工作中,我們都在不斷的與自動化測試打著交道。

  在自動化測試過程中,我們與之打交道的開源工具,可以分為

  1、程式語言與平臺,即在自動化測試過程中應用的語言和作業系統

  1)Andriod,大家應該都有所瞭解,其是以Liunx為核心底層來支援不同硬體,並在其上搭建一個類java的執行環境,其大概有幾層,包括:linux核心、底層庫、JAVA框架(包括其API)、Andriod應用程式。

  2)LINUX,大家熟知的開源作業系統。

  3)指令碼語言:Python、ruby、perl等,這些都是在自動化測試中因為其簡便性與動態性多有用到的程式語言。這些語言的維護、開發和發展都是通過開源社群和開源標準組織(例如ISO和Ecma)進行的,所以它們稱為開源語言。而java因為受Oracle支配,所以稱得上開源不開源,我也不是很清楚…

  4)Flex:是在FLASH基礎上做的一層封裝,提供了元件庫,開發人員可以直接編寫MXML,即在FLEX中佈局使用者介面元件的一種XML語言來搭建使用者介面。同時,完成負責資料邏輯的ActionScript指令碼,最好程式設計成FLASH檔案。所以,有些使用者介面是用FLEX開發的。

  ……

  2、開源開發工具

  1)Eclipse,這個用過java的一般都很熟悉吧,是一款很好的IDE。其是基於”OSGi”的“即插即用”理念,所有功能以元件形式存在。其理念我覺得非常好,其外掛只要遵循其平臺的規範,就能整合到其中應用。例如:Pydev是一款python的外掛,jython是一款Java與python整合的外掛,還有andriod、ant等整合的外掛,當然,我覺得可以的話,最好先應用一下獨立版,再去在eclipse中應用,這樣,可以更好的瞭解其運作原理。

  而且,我覺得這種理念在自動化測試中也可以很好的應用,使得各個工具之間能夠在一個平臺上作為模組互相通用,而且也能獨自使用。其IBM rational開發的jazz平臺也是基於一種這麼理念的。

  2)Ant,這個大家也許不是很熟悉,但是開發過java應用程式或者做個持續整合的也有有所瞭解,它就是一款構建的工具,即用XML描述任務的形式,自動完成其定義的工作,例如:可以幫助開發人員自動完成編譯、單元測試、打包、釋出等工作。

  3)Maven,Java開源專案的開發管理工具,涵蓋了專案構建、文件管理、報告生成等方面,與Ant功能類似,其差別在於ant每一個專案需要獨立維護一個XML構建描述檔案,而Maven能夠幫助快速搭建一個專案框架,而無需從頭編寫,其是一種“約定勝於配置”的理念,即先抽象出一個原型。這理念也可應用在自動化測試中的,即先提供一個指令碼模板,然後根據這個模板,搭建一定的測試流程。

  4)版本管理工具,例如:SVN和CVS,其都能夠應用指令碼控制其程式碼版本的簽入和簽出,在其自動化測試中也能有一定應用,方便管理指令碼與程式碼程式。

  5)Bugzilla,缺陷管理工具,可以管理和跟蹤缺陷,即,可以在自動化測試中應用來管理相應結果或者缺陷跟蹤等。

  6)Junit,大家都恨熟知的吧,單元測試的一款工具,即事先規定好單元測試模板,開發人員只需去根據被測試程式碼,搭建其測試程式碼即可。

  7)TestNG,與junit類似。在自動化測試中也能有所應用。

  3、程式設計及測試框架與庫

  1)在J2EE開發中,大家熟知的SSH,即Spring、Struts、Hibernate。具體的大家可以去查閱相關資料,我想說的是,如果大家深入學習的話,會發現,其開發理念和自動化測試思想很相似,像Struts的MVC思想,與自動化測試的分層理念可以很好的結合。Hibernate的資料庫持久層思想也可以用於自動化測試的資料管理應用,總之,瞭解這些軟體設計框架,對於加強自動化測試思想的理解很有幫助。

  2)Selenium,大家都很清楚的web自動化測試框架,很多人都說這是一種工具,其實說工具也行,框架也一樣,其提供了一種測試web的自動化思想,即採用繞過web中“同源策略”的方法,用JS來控制web的操作。你可以編寫指令碼應用其API,來控制web的相應控制元件的操作。一般是整合在你的自動化測試管理框架或者系統平臺中的。

  3)Robutium,andriod UI測試的一個自動化測試框架,理念類似,只是應用場合不一樣。

 4)Abbot,測試java UI的一個自動化測試框架,其錄製的測試用例是用XML進行描述,其只能用錄製的方式生成XML檔案,而且其abbot只能去讀取XML,所以你可以自己寫一個指令碼庫去生成相應的XML去控制aboot,其在測試java UI方面的穩定性還是不錯的。

  當然,還有各種各樣的程式設計框架與自動化測試框架,但是隨著接觸的多了,你會發現其理念都是一樣的,所以要學會自己從各個工具中提煉其思想與共性。

  4、應用伺服器軟體

  1)web伺服器,舉一個例子,大家熟知的Tomcat,其中也繼承了J2EE中的servlet,其web伺服器的作用主要是提供HTTP協議操作,將web客戶端提交的頁面請求進行處理後,然後動態返回相應的HTML頁面即可。

  2)資料庫,MySQL,開源的關聯式資料庫系統,在一般的中小型專案還是很好用的,資料庫設計在自動化測試中,個人認為也很重要,如果將自動化測試設計成一個平臺的話,需要涉及大量的測試用例與指令碼、測試使用者許可權的管理等。所以,資料庫設計需要在自動化測試平臺設計之前,定義好表以及表之間的聯絡,方便以後擴充使用。

  二、如何去保證開源工具的應用

  1、在自動化測試開展過程中,首先要對其測試需求以及對自動化測試的開展程度進行分析,包括自動化測試的規模、自動化測試的緊急程度以及實際需要應用程度、自動化測試的成本考慮等因素。

  2、之後,就去根據相應的需求,在不同方面採用不同的測試軟體或者工具,不需要侷限和死專於一種,哪種能提高效率,就儘快採用。

  3、總之,在這些軟體或者工具的基礎上,如果要規模化的話,你需要有一個自己定義好的平臺進行規範,各個工具軟體框架都可以以模組化的形式存在,當然,我建議最好要慎重考慮其“高內聚、低耦合”的思想。

  三、開源工具的應用策略

  我大概想了一下,其在自動化測試應用中,這些工具都扮演著不同的角色,對推動這個測試,甚至說軟體行業都起到很大作用。

  1)常規的開發和測試流程

  當然這個自動化測試不會起到主要性的作用,但是能提高一定的效率。

  2)持續整合的流程

  需要搭配單元測試框架、構建工具、以及持續整合管理工具(例如:cruisecontrol)

  3)敏捷開發與測試流程

  敏捷開發中我覺得自動化測試是很重要的一個角色,其能夠快速保證其釋出週期。

  4)雲端測試流程

  現在出來的雲端提交測試,需要自動化形式提交以及進行相應的處理,其都是在web上面進行提交與返回的。

  總之,“預先善其事,必先利其器”,但是,在眾多的自動化測試軟體工具和框架中,我們要保持一個清醒的思想,要能夠去抓到本質,真正能為我所用,就像武俠小說裡面似的,俠客之路,從手中有劍到手中無劍、從有招到無招,從無心到有心。共勉之。

本文出自seven的測試人生公眾號最新內容請見作者的GitHub頁:http://qaseven.github.io/


相關文章