序言:上篇文章說的“自動化例行測試有效性策略”,在又一次進行例行測試的時候,安排了一個不懂腳本的測試人員進行了例行測試操作,結果這是最迅速的一次,而且還發現了一些產品問題,效果不錯,驗證發現,其有效性還是得到了一些提高。所以說,有時候,做自動化測試很害怕的是“完美主義”與“盲目主義”,局限于一些誤區,所以一定要以“測試價值”為導向,不時的跳出來看一看其自動化測試的應用價值是不是進入了誤區。這次,對一些不同的自動化測試方式的應用進行了策略分析,不同的自動化測試方式應用不同的場景,不管如何應用,提高效率則是最佳應用。
一、自動化幾種測試方式
這次,自動化測試幾種方式,我暫時按測試類型分成:
1、界面自動化測試
C/S架構(或者桌面類型)界面自動化測試:包括桌面界面測試類型,當然有windows方面的軟件界面、跑在windows操作系統上的虛擬機方式的界面,例如java swing。前者采取的方式可以調用操作系統本身的API來構建自動化測試、后者可以采用虛擬機內的事件處理機制來完成了。
B/S架構(或者web類型)界面自動化測試:其實現原理之一可以依靠JS來進行客戶端的操作,然后尋找對象是采用了DOM解析技術,將web方面的節點進行解析定位。
手機方面(嵌入式產品)界面自動化測試:其實現原理之一也是可以依靠其相關系統提供的API來完成。例如:安卓的monkey就是安卓提供的一個提供動作操作的一個工具。
2、命令行自動化測試
CLI自動化測試:即嵌入式的產品很都基于嵌入式操作系統完成,例如:電信產品中的ciso路由器就是最早的代表,而系統測試人員的測試大都應用命令行進行測試,所以,其自動化測試實現可以基于CLI的腳本控制實現。當然,對數據庫SQL命令行的操作也可以歸為此類。
3、API自動化測試
API(Application Programming Interface,應用程序編程接口)是一些預先定義的函數,目的是提供應用程序與開發人員基于某軟件或硬件的以訪問一組例程的能力,而又無需訪問源碼,或理解內部工作機制的細節,其實就是軟件中的封裝性的思想。個人認為,API測試是用來驗證組成軟件的那些單個方法的正確性,其可以包括為單元測試、單個組件測試以及接口測試。一者是對單個模塊功能測試、另外一者是對測試系統組件間接口的一種測試。但本質上都是調用其API來驗證相應相應功能實現或者交互。
二、自動化測試不同方式策略分析
以前總在思考如何能夠最大化的應用界面自動化測試與CLI自動化測試或者API自動化測試的不同特點去實現各自的自動化測試最大利用率:
1、界面自動化測試的特點在于:
1)操作方式復雜,需模擬出不同的手工操作。
2)其界面元素結構層次變動性較大。
3)其容錯性查,如果某單個測試用例中途遇到問題,則造成其單個測試用例無法進行下去。且與軟件性能關系較大,容易造成軟件測試中斷。
4)錯誤定位方面,需要靠直觀的方式進行定位。
所以,綜上,策略為:
1)界面自動化測試需要進行架構的分層,對于界面控件的查找需要基于一定的屬性搜索定位,而常用的錄制方式一般是依靠結構層次定位。
2)盡量將測試用例按測試模塊細分,在中途出現問題,則可以進行down掉,再進行下一個測試用例即可,而且測試用例越細分清楚,則錯誤定位越簡單。
3)當然,大范圍做的話需采用框架,但小范圍回歸測試的話,則采用錄制+二次開發的方式會比較高效。所以,不同的方式采用不同的策略是很重要的。
2、命令行或者API測試特點在于:
1)操作方式單一,都是進行命令行的輸入。
2)其命令行變化小,但是不同設備有不同命令行集成,腳本數量多,命令行更改也容易造成維護量大。
3)容錯性較好,一般命令行自動化測試都是采用輸入+回顯判斷的方式,所以,不易造成測試中斷。
4)錯誤定位方面,靠日志記錄的方式即可。
所以,綜上,策略為:
1)由于其單一操作性,對于一些簡單的回歸測試,則可以采用CLI錄制的方式,生成一些簡單的回歸腳本,這樣,測試人員也可以進行簡單的自動化測試回歸設計,輔助提高測試人員的測試效率。
2)對于需要大規模進行例行環境建設方面,更多的是考慮維護量方面的問題,則可以采用關鍵字驅動的思想,將設備映射成一系列的關鍵字對象,將其屬性進行封裝,這樣,可以提高重用性和降低維護量。
總之,個人覺得,自動化測試應用的最大策略就是“因地制宜”,主要是抓住其測試方式的特點,然后以不同的策略去對待,這樣,才能真正快速應用自動化測試提高測試效率。否則,很容易陷入了“為做自動化測試而自動化測試”的陷阱。