天天看點

小米測試總監自述開發自動化測試工具

Time will tell.

我們一說到

自動化測試工具

,會想到的都是

LR

selenium

之類的工具,一開始設計一個這樣的工具确實很有難度,因為包含的功能細節太過龐大。在做自動化測試的日子裡,也單獨設計開發了一些對内對外級别的工具,也設計開發過

C/S

WEB

方面的自動化測試平台。回首看來,從之前簡陋的工具,到現在客戶應用級别的工具,真的頗覺時光飛逝。

小米測試總監自述開發自動化測試工具

一、自動化測試工具解析

1、界面自動化測試工具,我們往往入門的時候都是用的商業或者開源的工具,如QTP、RF之類,這些都是界面級别的自動化測試,界面自動化測試的有一定開發難度,但是确有不少的開源庫可以提供,你完全可以基于以上庫開發,或者有一些開源的工具很成熟了,你所做的就是基于以上進行一下更改。例如:測試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的主要好處是團隊溝通和互動,将系統抽象到大家都能了解的地步。是以,後來我明白了,不同的環境采用不同的流程,适合自己的開發流程才是好流程。

4、技術應用,步步深入

  • 剛開始,不需要掌握多好的架構細節、多好的設計模式、多強的算法、多好的分布式和并行,也許剛開始,隻需要線性程式設計,一步一個腳印即可,也可以盡可能的使用一些現成的架構,不需要太專研到架構的細節中去,例如:RCP界面架構可以讓不用面對更少的界面布局的情況,讓你的工具界面和eclipse類似,或者C++的MFC足以讓你應對很多工具。當然,随着後面的工具難度的加強,你需要開始積累自己的知識,例如:專門有一個自己的庫,包括收集和應用一些開源的庫,例如:作業排程庫、界面架構庫、持久層映射庫、日志和結果處理庫等。還有一些自己的算法和功能庫等。随着後來,建議可以多看看web系統方面的東西,畢竟這是個趨勢。然後,多站在标準化和接口層次考慮問題。是以,我講究的是順其自然,踏踏實實,打好底層基礎,對待新技術和架構,少追風,多思考。這樣就會逐漸形成自己獨特見解。

5、抓準測試

  • 一個工具開發過程中,你也需要進行版本管理和配置管理,你可以學會利用git和svn進行代碼管理,學會利用maven和ant進行build,學會在開發工具的同時也學會一些開發和測試自動化流程。而在測試過程中,因為開發的工具不是非常系統化,是以可以主要從功能點(按照需求列好功能點測試)、異常分析(例如:合法性測試、異常操作測試等)、相容性(之前寫的C/S工具,因作業系統不同會有一些問題,而B/S工具,會因為浏覽器的問題,而出現一些展示方面的問題,是以需要明确應用和測試環境)

6、快速釋出

  • 千萬不要将工具做到很完美才想着釋出,沒有什麼是完美,我們所做的就是利用疊代的思想,一步一步去完善。是以,定義好階段,快速釋出,然後在釋出中收集問題。畢竟是内部使用,是以能夠及時回報。

三、結尾

我覺得,測試也好,開發也好,都是為了提高效率、找到價值感而努力。但是很多時候,我們往往隻是想而不做,因為總是把事情想得太複雜或太簡單,這也是我們的必經曆程。如果我們迷惑了,就該果斷開始行動,隻因相信我們做的是有價值的,最後在不知不覺中挨過了很多困難,也獲得了很多東西。

最後在這裡推薦一個Python自動化資料學習裙:175317069。有各項已整理好的測試學習資源,也有行業深潛多年的技術人分析講解。