最近園子里很多做軟件測試的朋友問我,如何學習自動化測試(Automation test)。 有些人說平常的測試工作很枯燥無味,沒有技術含量,迷失了方向。 還有的說閑得要命,想學點自動化測試。
自動化測試是我們高級軟件測試人員必備的技能。高級軟件測試人員不光會做測試,還會做開發。
我從自己8年的經驗出發,總結了下我對自動化測試的看法。如有不對的地方, 還請大家糾正。
閱讀目錄
軟件自動化測試的學習步驟
大概步驟如下:
1. 做好手工測試(了解各種測試的知識)-> 2. 學習編程語言-> 3. 學習Web基礎(HTML,HTTP,CSS,DOM,Javascript)或者 學習Winform
-> 4. 學習自動化測試工具 ->5. 學習自動化測試框架 -> 6. 實現自動化測試用例 -> 7. 開發自動化測試工具 ->8. 開發自動化測試框架
自動化測試的最高境界是: 開發測試工具,設計自動化測試框架, 讓別人用。
自動化測試的本質
自動化測試的本質是:用程序測試程序。 也就是說學習“編程語言”是學習自動化測試的基礎。
很多人問小坦克我學自動化測試,應該去學什么自動化工具。 我的回答是,第一步:應該先學習編程語言,以后再去學自動化測試工具
自動化測試是一定要寫代碼的, 編程語言水平的高低決定了自動化測試水平的高低, 有了扎實的編程技術,干什么都可以。
學習編程語言時, 要把自己當做開發人員, 系統地學習各種編程知識。
自動化測試學習的誤區
很多新手一開始,就學習復雜的自動化測試工具, 我覺得這樣是本末倒置了。
如果不先理解HTTP協議, 就不會理解Jemeter, LoadRunner, Fiddler, SoapUI這些工具的。
如果不先理解HTML,DOM, 就不會理解Firebug 這種工具的
如果不先理解Win32 API, 就不會理解Windows 窗體自動化測試的原理的。
如果自己沒有開發過網站, 就不會理解網站的各個方面,測試起來難免有遺漏。
總之學習自動化測試,需要循序漸進, 把基礎打好。
自動化測試的職位
自動化測試工程師的職位叫做: (SDET) Software Development Engineer in Test. 專注於自動化測試
手動測試工程師叫: (STE)Software test enginer. 專注於手動測試
在微軟有很多SDET的職位,但是沒有STE的職位, STE職位一般都是外包給外包公司的, 目前自動化測試還是非常吃香的。
自動化測試分類
自動化測試也有非常多的種類,
- 對Web UI 的自動化測試程序
- 對Windows 窗體UI的自動化測試程序
- API測試, 比如(測試WCF service, Web API 等)
- 數據庫測試, 比如測試存儲過程
- 接口測試 (這種只能用自動化測)
- 單元測試
- 性能測試, 性能測試都需要用到自動化
Web自動化測試分類
目前大部分項目都是Web的, 所以我們說的自動化測試,大部分都是針對Web程序的自動化測試, Web自動化測試分兩類:
第一類是:模擬用戶真實操作,比如,模擬點擊鼠標,鍵盤輸入,等,去操作瀏覽器上的控件。 (代表框架有selenium-webdriver, VS Coded UI)
這類的自動化測試的是通過高級語言(C#, JAVA, Python 等)來調用selenium的一些工具來操作瀏覽器,幫助我們實行Web UI自動化
第二類是:模擬HTTP請求。 類似於這種【12306火車票網站自動登錄工具】, 這方面的知識,目前市面上資料比較少。 (以后我會出一個系列的教程)
自動化測試的知識點
應該像開發人員一樣的心態去學習技術, 自動化測試需要掌握以下的知識:
了解Javascript, CSS的知識。
熟練掌握DOM和HTML知識, (用來解析Web界面)
熟練掌握XML技術,(需要用XML保存測試數據,用XML展現測試報告)
熟練使用C# P/inoke技術調用Windows API (可以用來操作Winform 窗口)
熟練掌握窗體"句柄"的概念
熟練使用C# 操作Windows 注冊表
熟練使用C# 中的Process 類
熟練掌握數據庫的基本操作語句 (測試數據庫肯定要用到)
熟練掌握HTTP協議的知識 (請參考我的 HTTP系列博客 [HTTP協議詳解])
熟練掌握C# 中的HttpWebRequest 類的用法 (用於模擬HTTP請求)
熟練掌握正則表達式
自動化測試的書籍推薦
關於軟件自動化測試的書,真心不多, 我查過市面上所有關於自動化測試的書,只找到下面這邊書, 掌握了這邊書,基本上自動化測試就入門了。
自動化測試工具
測試套件工具: JUnit, Nunit, MSTest, 這幾個工具功能都一樣學起來比較簡單。
性能測試工具: JMeter, VSTS 負載測試, LoadRunner(收費), QTP(收費)
Web UI 測試框架:WebDriver/Selenium, VSTS Coded UI, Watri
Windows UI 測試框架:VSTS Coded UI
其他工具: firebug, Fiddler
