如何本身開發軟件測試工具?

序言:一說到自動化測試工具,你們不少人都會想到的是QTP、LR或者selenium之類的工具,要你們一開始設計一個這樣的工具,其實確實頗有難度,由於其包含的功能細節太過龐大。當年的我,開始設計開發工具的過程當中,走了不少彎路,例如:作工具的界面技術的歷程,剛開始用tcl/tk腳本語言,用tcl寫底層框架,用tk寫圖形界面,後來發現tk雖然構造圖形方便,但可拓展性實在太差。就開始學用java的swing寫界面,當時傻傻的從界面的佈局,到界面的MVC框架,而後是各類圖形的數據結構都是本身一點一點寫出來的,但確實鍛鍊了能力,後來就開始掌握一些現成的圖形框架,例如:java裏的RCP、python的WxPython和PyQT。到如今更喜歡的是簡單web框架,因此,如今將本身的工具開發之路簡單分享一下,但願過來人不要走個人彎路,這篇文章雖然說是說工具開發之路,但更多的是是一種學習思路,並且這一段旅程還很漫長,我也繼續探索,也但願你們能獲得一點啓示,互相學習。
  1、自動化測試工具淺析
  在作自動化測試的這段日子裏,如今也單獨設計開發了一些公司對內和對外級別的工具,也設計開發過C/S和WEB方面的自動化測試平臺,回首看來,從以前很簡陋的工具,到如今客戶應用級別的工具,真的頗覺時光飛逝。
一、界面自動化測試工具,咱們每每入門的時候都是用的商業或者開源的工具,例如:QTP、RFT之類,這些都是界面級別的自動化測試,界面自動化測試的有必定開發難度,可是確有很多的開源庫能夠提供,你徹底能夠基於以上庫開發,或者有一些開源的工具很成熟了,你所作的就是基於以上進行一下更改。例如:測試java界面的工具就有aboot、swbot、mathron等開源工具,測試web界面的有selenium、watin等,測試移動端的有robotium、monkey等。要能二次開發這些工具,主要是須要理解抓取對象和回放的原理,而後是一些配置文件的處理,對象庫裏主要是XML的處理,通常錄製功能我以爲能夠忽略。
二、白盒測試工具,一些代碼級別的測試工具,例如:對代碼覆蓋率的分析、對代碼質量的分析等,這方面涉及較淺,就不隨便造次了。
三、接口自動化測試工具,接口自動化測試工具在開發的時候,首先須要明確業務接口類型,而後掌握必定的接口工具的應用方式,通常的接口工具都是會解析某種接口定義文件,而後將接口文件以界面的形式展示出來,能夠經過對界面接口的操做:對某個接口填寫參數,而後發送到服務器端,查看響應,或者直接get接口返回值。例如:SoapUI工具是針對WebService系統的測試,主要是解析WSDL接口定義文件。Jmeter和LR也能夠作接口測試工具,例如:java接口和HTTP接口等。以前,開發過的接口工具包括:SNMP接口和corba接口工具,其原理也是解析mib和IOR接口定義文件,而後能夠對接口進行set與get操做。因此,開發這類的工具,必定要明確什麼是軟件接口、而後接口描述文件是什麼,最後是如何去對接口進行操做,日誌和結果的展示等,還有一些就是額外的功能了,例如:錄製,將測試人員對接口的操做錄製下來,成爲工做流等。
四、性能自動化測試工具,看到性能測試工具,你們很容易想到LR、Jmeter之類,這方面的工具,我用的較少,可是會基於本身公司內部的產品一些特殊性能場景方面的測試,會專門開發一些這樣的工具,例如:開發一個發送SNMP網絡報文的工具,模擬告警最大接收和併發性能,開發一個網元模擬器,可以模擬大量不一樣IP的網元,能夠在公司網元管理器上測試同時管理的最大網元等。因此,性能測試首先要與業務場景相結合,而後掌握必定的性能基礎和指標,分析好相關的接口協議和須要模擬的業務,就能夠快速開發相應的工具了。
五、系統應用級別的自動化測試工具,這種工具須要明確應用場景,即明確需求,例如:我以前開發一些部門內部工具集合,專門提供給測試人員進行腳本錄製()、公司級別的有采集和巡檢工具。(對外支持),這部分工具帶來的效益是很大的。因此說,千萬不要將自動化測試侷限在測試方面,其實提升測試與開發的人員的效率、以及對公司產品的質量保障方面的工具都是能給公司帶來直接效益的。也許幾行代碼也是一個能提高效率的好的工具。
  固然,還有不少方面的測試工具,因瞭解有限,就沒法一一列舉了,你們能夠補充。
  2、如何快速開發一個自動化測試工具
一、定位本身,發現目標:首先要看,你是否對軟件開發感興趣,其實咱們測試人員每每把開發看得太深,因此很容易就由於以爲困難而不敢開始,若是你對軟件確實有一些興趣,未嘗不試試,咱們作的,不是要去開發一個多大的系統,咱們的目標是可以作提升咱們工做效率的事情,讓咱們的工做變得更高效、更有樂趣,學習知識的同時,還能帶來價值,何樂不爲。
二、簡單開始,當即上手:首先,在工做中積極發現需求,需求不須要太大,有時候一個點便可,找到需求點後,你能夠向領導提出來本身的想法,而後進行可行性分析和立項,另外,不少人都擔憂由於不懂技術沒法獲得領導的承認,其實在首先最重要的是你的熱情和決心,而後本身平時簡單學一點入門知識就能夠了,若是第一次嘗試開發一個工具,千萬不要一開始就把面鋪太大,不少時候,咱們總會被漫天的資料給淹沒,每天在看書學習中渡過。我在公司帶着測試人員作自動化測試項目時,每每告訴他們的是,不用懼怕,直接上手,不會了再反過來查詢資料或者諮詢別人,千萬不要一開始就拿着一本資料從頭學到尾,這是咱們大學應試帶給咱們的弊端,讓咱們每每忽視了實踐中學習。固然,這是在有人帶的狀況下,若是沒有人帶你,那麼你就找一個簡單的語言,開始從最簡單的實踐起,大學我不是學計算機專業的,當年工做是從tcl腳本開始的,用tcl實現了簡單的線性測試腳本、簡單的測試框架開發等等,當時我採起的策略就是明確需求,而後拿着教程,一點一點開始攻克,困難確定是有的,捱過去就行了。
三、適合本身的流程纔是好流程:我如今通常開發工具、平臺都是採用流程爲,需求分析+設計流程+設計模塊+接口定義+開始開發,在開發中調整具體架構和細節。記得當年剛學到軟件建模的時候,很喜歡用UML來定義個人開發流程,結果後來發現,小型的系統和工具,採用這種方式其實更是浪費了時間,UML的主要好處是團隊溝通和交互,將系統抽象到你們都能理解的地步。因此,後來我明白了,不一樣的環境採用不一樣的流程,適合本身的開發流程纔是好流程。
四、技術應用,步步深刻:剛開始,不須要掌握多好的框架細節、多好的設計模式、多強的算法、多好的分佈式和並行,也許剛開始,只須要線性編程,一步一個腳印便可,也能夠儘量的使用一些現成的框架,不須要太專研到框架的細節中去,例如:RCP界面框架可讓不用面對更少的界面佈局的狀況,讓你的工具界面和eclipse相似,或者C++的MFC足以讓你應對不少工具。固然,隨着後面的工具難度的增強,你須要開始積累本身的知識,例如:專門有一個本身的庫,包括收集和應用一些開源的庫,例如:做業調度庫、界面框架庫、持久層映射庫、日誌和結果處理庫等。還有一些本身的算法和功能庫等。隨着後來,建議能夠多看看web系統方面的東西,畢竟這是個趨勢。而後,多站在標準化和接口層次考慮問題。因此,我講究的是順其天然,踏踏實實,打好底層基礎,對待新技術和框架,少追風,多思考。這樣就會逐漸造成本身獨特看法。
五、抓準測試:一個工具開發過程當中,你也須要進行版本管理和配置管理,你能夠學會利用git和svn進行代碼管理,學會利用maven和ant進行build,學會在開發工具的同時也學會一些開發和測試自動化流程。而在測試過程當中,由於開發的工具不是很是系統化,因此能夠主要從功能點(按照需求列好功能點測試)、異常分析(例如:合法性測試、異常操做測試等)、兼容性(以前寫的C/S工具,因操做系統不一樣會有一些問題,而B/S工具,會由於瀏覽器的問題,而出現一些展現方面的問題,因此須要明確應用和測試環境)
六、快速發佈:千萬不要將工具作到很完美才想着發佈,沒有什麼是完美,咱們所作的就是利用迭代的思想,一步一步去完善。因此,定義好階段,快速發佈,而後在發佈中收集問題。畢
  竟是內部使用,因此可以及時反饋。java

相關文章
相關標籤/搜索