最近園子裏不少作軟件測試的朋友問我,如何學習自動化測試(Automation test)。 有些人說日常的測試工做很枯燥無味,沒有技術含量,迷失了方向。 還有的說閒得要命,想學點自動化測試。html
自動化測試是咱們高級軟件測試人員必備的技能。高級軟件測試人員不光會作測試,還會作開發。web
我從本身8年的經驗出發,總結了下我對自動化測試的見解。若有不對的地方, 還請你們糾正。正則表達式
閱讀目錄數據庫
大概步驟以下:編程
1. 作好手工測試(瞭解各類測試的知識)-> 2. 學習編程語言-> 3. 學習Web基礎(HTML,HTTP,CSS,DOM,Javascript)或者 學習Winform瀏覽器
-> 4. 學習自動化測試工具 ->5. 學習自動化測試框架 -> 6. 實現自動化測試用例 -> 7. 開發自動化測試工具 ->8. 開發自動化測試框架
框架
自動化測試的最高境界是: 開發測試工具,設計自動化測試框架, 讓別人用。編程語言
自動化測試的本質是:用程序測試程序。 也就是說學習「編程語言」是學習自動化測試的基礎。工具
不少人問小坦克我學自動化測試,應該去學什麼自動化工具。 個人回答是,第一步:應該先學習編程語言,之後再去學自動化測試工具post
自動化測試是必定要寫代碼的, 編程語言水平的高低決定了自動化測試水平的高低, 有了紮實的編程技術,幹什麼均可以。
學習編程語言時, 要把本身當作開發人員, 系統地學習各類編程知識。
不少新手一開始,就學習複雜的自動化測試工具, 我以爲這樣是本末倒置了。
若是不先理解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的, 因此咱們說的自動化測試,大部分都是針對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