學習自動化測試的一些感悟

ai測試發表於2017-05-25

這個話題比較大,相信大家也都有自己的想法,我在這裡寫一些我自己的看法,請大家指教。

1、什麼叫做自動化測試工程師?

首先,要會使用自動化測試工具;

接下來,對於高手來說,要能寫一些獨立的測試指令碼甚至測試工具;

更高的高手則是能把指令碼和工具和實際工作緊密結合起來,解決工作中遇到的問題。

 

2、自動化測試工程師應該具有開發能力嗎?

通過上述內容,應該可以看得出來,自動化測試人員一定要有開發能力,而這恰恰是測試人員目前所欠缺的。沒有開發能力的測試人員雖然也可以做一些所謂的自動化,但是僅僅是一些皮毛,沒有辦法做到活學活用。根據某機構的調查資料,目前所有從事測試工作的人中,90%的人都沒有任何開發能力。根據目前的市場行情,如果在精通一門開發語言,能夠從純手工測試轉型為自動化測試工程師,月薪至少增加3~5k。

 

3、自動化測試的層級

一般來說,自動化測試分為三個層級:單元測試、介面測試、UI測試,這三層成一個金字塔形狀分佈。最底層是單元測試,介面測試在中間,UI測試在最上層。

 

單元測試

單元測試無疑是最適合做自動化的,但是,大多數單元測試都是由研發人員自己完成。單元測試的程式碼行覆蓋率能夠達到70%,就是一個非常不錯的程度了。

單元測試框架

單元測試常用的框架——XUnit,比如Java的JUnit,PHP的PHPUnit,Python的unittest等等;

一個測試用例通常由三部分組成——setUp,測試邏輯,tearDown。setUp用於準備測試資料,tearDown用於清理資料;一般單元測試框架都支援裝飾器設計模式的註解,比如跳過執行,測試套件的組織,測試用例依賴管理等等。

單元測試框架可以無縫地在UI測試和介面測試中使用,它們的基本思想都是相通的。

 

介面測試

介面的自動化是目前最適合測試工程師進行自動化的一層。介面不但變化小,執行速度快,受益高,還有著出現問題後能夠很快定位的優點。

 

UI測試

目前,大眾眼中關注的比較多的是UI的自動化測試,這是由大家的思維慣性導致的。傳統的測試行業,測試工程師都是從UI下手,來完成所有的測試工作,所以到自動化領域,大家也理所當然的喜歡從UI層來進行自動化。做UI自動化,最重要的是要能有一個好的自動化測試框架,這裡有一些框架的基本設計思路供大家參考:

分散式——case增加到一定程度後,如何快速的執行所有的case,這就涉及到分散式的概念。行為驅動——也就是常說的Cucumber,這個領域筆者沒有太多的涉足,不誤導大家;

關鍵字驅動——由『操作物件』、『操作』、『資料』關鍵字組合成測試用例,框架來把關鍵字解析為指令碼並執行。這種框架最大的優點就是可以提供給不懂程式碼的測試人員使用,典型的代表是Robot framwork;

資料驅動——同一段程式碼的業務邏輯通過更換資料輸入來生成多個測試用例,我們只需維護測試資料就可以維護case,這種框架思想在很多測試工具中都有實現;

關鍵字和資料混合驅動——目前最高階的框架,將上述兩種框架結合起來。

當然,這些思路不僅僅能用在UI層的自動化。

對於UI自動化,我個人的建議是隻做冒煙測試用例的自動化,這樣既可以從UI的角度來重複性的驗證主業務主流程沒有問題,又可以降低維護成本。

 

4、什麼時候最適合做自動化

首先,自動化測試從來都不是用來發現新的bug的,它更多的是用來驗證原有功能是沒問題的,新的修改對原有程式碼邏輯沒有影響。所以,當一個專案相對穩定之後,以後的專案都是基於原有程式碼進行迭代,這個時候自動化的介入是非常有效的。

另外,如果某個用例需要有大量的輸入項,做手工測試比較繁瑣,我們也可以引入自動化的手段做區域性的自動化。比如,驗證某個使用者登入1000次是否能夠登入成功,這種情況使用手工的方式基本是不可能的。

 

5、自動化測試工具推薦

功能測試:Selenium(開源),TestWriter(零編碼,易上手)

效能測試:Jmeter(趨勢)

 

相關文章