序言:一說到自動化測試工具,大家很多人都會想到的是QTP、LR或者selenium之類的工具,要大家一開始設計一個這樣的工具,其實確實很有難度,因為其包含的功能細節太過龐大。當年的我,開始設計開發工具的過程中,走了很多彎路,例如:做工具的界面技術的歷程,剛開始用tcl/tk腳本語言,用tcl寫底層框架,用tk寫圖形界面,后來發現tk雖然構造圖形方便,但可拓展性實在太差。就開始學用java的swing寫界面,當時傻傻的從界面的布局,到界面的MVC框架,然后是各種圖形的數據結構都是自己一點一點寫出來的,但確實鍛煉了能力,后來就開始掌握一些現成的圖形框架,例如:java里的RCP、python的WxPython和PyQT。到現在更喜歡的是簡單web框架,所以,現在將自己的工具開發之路簡單分享一下,希望過來人不要走我的彎路,這篇文章雖說是說工具開發之路,但更多的是是一種學習思路,而且這一段旅程還很漫長,我也繼續探索,也希望大家能得到一點啟示,互相學習。
一、自動化測試工具淺析
在做自動化測試的這段日子里,現在也單獨設計開發了一些公司對內和對外級別的工具,也設計開發過C/S和WEB方面的自動化測試平臺,回首看來,從之前很簡陋的工具,到現在客戶應用級別的工具,真的頗覺時光飛逝。
1、界面自動化測試工具,我們往往入門的時候都是用的商業或者開源的工具,例如:QTP、RFT之類,這些都是界面級別的自動化測試,界面自動化測試的有一定開發難度,但是確有不少的開源庫可以提供,你完全可以基于以上庫開發,或者有一些開源的工具很成熟了,你所做的就是基于以上進行一下更改。例如:測試java界面的工具就有aboot、swbot、mathron等開源工具,測試web界面的有selenium、watin等,測試移動端的有robotium、monkey等。要能二次開發這些工具,主要是需要理解抓取對象和回放的原理,然后是一些配置文件的處理,對象庫里主要是XML的處理,一般錄制功能我覺得可以忽略。
2、白盒測試工具,一些代碼級別的測試工具,例如:對代碼覆蓋率的分析、對代碼質量的分析等,這方面涉及較淺,就不隨便造次了。
3、接口自動化測試工具,接口自動化測試工具在開發的時候,首先需要明確業務接口類型,然后掌握一定的接口工具的應用方式,一般的接口工具都是會解析某種接口定義文件,然后將接口文件以界面的形式展現出來,可以通過對界面接口的操作:對某個接口填寫參數,然后發送到服務器端,查看響應,或者直接get接口返回值。例如:SoapUI工具是針對WebService系統的測試,主要是解析WSDL接口定義文件。Jmeter和LR也可以做接口測試工具,例如:java接口和HTTP接口等。之前,開發過的接口工具包括:SNMP接口和corba接口工具,其原理也是解析mib和IOR接口定義文件,然后可以對接口進行set與get操作。所以,開發這類的工具,一定要明確什么是軟件接口、然后接口描述文件是什么,最后是如何去對接口進行操作,日志和結果的展現等,還有一些就是額外的功能了,例如:錄制,將測試人員對接口的操作錄制下來,成為工作流等。
4、性能自動化測試工具,看到性能測試工具,大家很容易想到LR、Jmeter之類,這方面的工具,我用的較少,但是會基于自己公司內部的產品一些特殊性能場景方面的測試,會專門開發一些這樣的工具,例如:開發一個發送SNMP網絡報文的工具,模擬告警最大接收和并發性能,開發一個網元模擬器,能夠模擬大量不同IP的網元,可以在公司網元管理器上測試同時管理的最大網元等。所以,性能測試首先要與業務場景相結合,然后掌握一定的性能基礎和指標,分析好相關的接口協議和需要模擬的業務,就可以快速開發相應的工具了。
5、系統應用級別的自動化測試工具,這種工具需要明確應用場景,即明確需求,例如:我之前開發一些部門內部工具集合,專門提供給測試人員進行腳本錄制()、公司級別的有采集和巡檢工具。(對外支持),這部分工具帶來的效益是很大的。所以說,千萬不要將自動化測試局限在測試方面,其實提高測試與開發的人員的效率、以及對公司產品的質量保障方面的工具都是能給公司帶來直接效益的。也許幾行代碼也是一個能提升效率的好的工具。
當然,還有很多方面的測試工具,因了解有限,就無法一一列舉了,大家可以補充。
二、如何快速開發一個自動化測試工具
1、定位自己,發現目標:首先要看,你是否對軟件開發感興趣,其實我們測試人員往往把開發看得太深,所以很容易就因為覺得困難而不敢開始,如果你對軟件確實有一些興趣,何嘗不試試,我們做的,不是要去開發一個多大的系統,我們的目標是能夠做提高我們工作效率的事情,讓我們的工作變得更高效、更有樂趣,學習知識的同時,還能帶來價值,何樂不為。
2、簡單開始,立即上手:首先,在工作中積極發現需求,需求不需要太大,有時候一個點即可,找到需求點后,你可以向領導提出來自己的想法,然后進行可行性分析和立項,另外,很多人都擔心因為不懂技術無法得到領導的認可,其實在首先最重要的是你的熱情和決心,然后自己平時簡單學一點入門知識就可以了,如果第一次嘗試開發一個工具,千萬不要一開始就把面鋪太大,很多時候,我們總會被漫天的資料給淹沒,天天在看書學習中渡過。我在公司帶著測試人員做自動化測試項目時,往往告訴他們的是,不用害怕,直接上手,不會了再反過來查詢資料或者咨詢別人,千萬不要一開始就拿著一本資料從頭學到尾,這是我們大學應試帶給我們的弊端,讓我們往往忽視了實踐中學習。當然,這是在有人帶的情況下,如果沒有人帶你,那么你就找一個簡單的語言,開始從最簡單的實踐起,大學我不是學計算機專業的,當年工作是從tcl腳本開始的,用tcl實現了簡單的線性測試腳本、簡單的測試框架開發等等,當時我采取的策略就是明確需求,然后拿著教程,一點一點開始攻克,困難肯定是有的,挨過去就好了。
3、適合自己的流程才是好流程:我現在一般開發工具、平臺都是采用流程為,需求分析+設計流程+設計模塊+接口定義+開始開發,在開發中調整具體架構和細節。記得當年剛學到軟件建模的時候,很喜歡用UML來定義我的開發流程,結果后來發現,小型的系統和工具,采用這種方式其實更是浪費了時間,UML的主要好處是團隊溝通和交互,將系統抽象到大家都能理解的地步。所以,后來我明白了,不同的環境采用不同的流程,適合自己的開發流程才是好流程。
原文轉自:http://www.anti-gravitydesign.com