自動化測試愛恨情愁

      提起自動化測試,可謂仁者見人,智者見智,心中五味雜陳啊!你從任何一個招聘渠道來看最近兩年對測試崗位的要求,幾乎都要求會自動化測試。而很多人一直認爲手工測試纔是王道,工做中有的時候也用不到程序,幹嗎在面試的時候要求寫代碼呢?明明本身的測試能力不錯,作了多年的功能測試,爲何面試的時候四處碰壁呢?非常想不明白,難道業界最近幾年有點兒盲目推崇自動化測試了嗎?面試

      雖然我不能說徹底明白這些問題的產生的根源,不過以我這五六年的從事測試工做的經驗來分析一下這些問題的前因後果,可能也不是十分準確,但願能給迷茫的同窗帶來一些思考。docker

一,  什麼是自動化測試後端

      什麼是自動化測試呢?關於這個問題,可能沒有準確的答案。廣泛認爲的是接口自動化測試,WebUI自動化測試,App自動化測試等被冠以自動化命名的測試方案。其實否則,自動化測試是相對於手工而言的,用代碼或是藉助於第三方工具,把繁複的測試工做從手工轉化爲機器自動執行的測試方案,能夠統稱爲自動化測試。除了上面所說的三個方面的自動化測試,固然還包括日誌過濾,日誌回放,接口監控,服務監控等等,根據具體業務需求經過代碼把人力從中解放出來的代碼手段。架構

二,  爲何要作自動化測試app

       那企業或者是咱們測試人員爲何要作自動化測試呢?從工做角度來講,目前互聯網行業需求迭代很是快,人員流動也比較快,因此一個需求從提出到上線時間比較緊急,同時對於其影響的範圍也可能不太清楚,在上線以前必須對原有功能進行迴歸測試。不論是接口仍是從客戶端,都須要大量的測試工做,並且在大數據時代,測試用例量也是很是龐大的,如此繁複單調的工做讓人工來測試的話,根本不能保證效率和質量,因此必需要藉助於非人工手段來實現。從我的發展方面來說,時代在發展,對咱們的要求也愈來愈高,因此咱們要迎接變化,不斷提高本身才行。雖然你能夠堅持手工測試是基礎,是王道,但是並無企業願意爲你這個信念買單。除非你生活無憂無慮,能夠堅持本身的信念,不然你就要尊重業界發展的規律,不斷充電從而使本身更有價值。框架

三,如何實施自動化測試?前後端分離

       雖然業界比較注重自動化測試,不過永遠要記住下面一句話:「不要爲了自動化測試而作自動化測試!」無論你在測試工做如會採起什麼測試方案,測試手段,這一切都是爲了業務服務的,脫離了具體的業務,你的輔助手段再厲害也是無用的。工具

       在實施你的自動化測試工做以前,你必須對要測試的業務很是熟悉,核心業務流程,具體的功能模塊的實現,先後端如何交互,以及業務將來的發展與迭代頻率等等。而後按如下思路來進行選擇與實施你的自動化測試:學習

(1)根據業務特色,選擇自動化測試方案。你的業務是先後端分離的嗎?業務比較注重用戶交互仍是數據完整性?用戶量有多大,有沒有須要承擔的壓力等等,經過考慮業務的特色,才能選擇比較合適的方案。測試

(2)根據業務側重點,確認自動化覆蓋範圍和粒度。經過業務特色選擇了自動化測試方案,而後就須要根據業務側重點來確認範圍和粒度了。好比說,你肯定要進行Web UI自動化測試,確定不能看着頁面就去寫自動化測試用例嘛,要根據業務重點來確認。哪些業務流程是核心,必須覆蓋?哪些功能暫時有技術難點,或是變化比較快,能夠放爲二期來實現。經過對手工用例的評審,來準確肯定自動化測試的範圍,實現用例的粒度。

(3)根據自動化測試用例範圍,選擇實現框架和語言。目前業務自動化測試工具,開源框架可謂多如牛毛,讓人有點兒無從選擇,可是它們仍是各用側重點的。咱們須要根據測試用例的範圍和特色,參與人員的水平,用例的使用場景和將來的計劃來選擇合適的框架。好比說,咱們要作接口自動化測試,而參與人員大部分不會代碼 ,那選擇Python+Unittest+HtmlTestRuner+Jenkins就比選擇Java+Httpclient+TestNG+Jenkins實現起來成本更低。

(4)根據用例用途,選擇執行策略。根據咱們自動化測試的用途,是作上線前回歸,仍是觸發式迴歸?需不須要作監控?執行環境是什麼?來去確認是否作持續化集成,是否發執行結果與錯誤預警,用例或是用例集管理方案,指定維護人員等等工做! 

四,如何學習自動化測試

       既然自動化測試是手工測試提高的一個必經之路,雖然自動化測試沒有那麼高大上,但也是必不可少的。那做爲一個有理想的測試人員,應該如何去學習自動化測試呢?

(1)準肯定位本身,明確目標

      有很多同窗意識到了自動化測試的重要性,就去網上查詢資料啊,或是報培訓班學習啊,但是到最後越學越迷茫,處於會與不會之間,前路不知如何去走?這是什麼緣由呢?

這是由於你在學習自動化測試以前沒有想明白幾個問題:個人真實水平如何?若是學習一項新的技術或是語言,我願意投入的精力是多少?從如今開始學習,三個月或是半年後應該達到什麼目標?我瞭解如今業界的自動化測試類型或是體系嗎?想好這些問題再去入手學習,一定事半功倍。

(2)全面瞭解,選好切入點

      目前自動化測試方向大概有如下幾個:

     A,輔助測試腳本方向,以Shell,Python爲主來簡化重複的工做,過濾日誌等;

    B,接口自動化測試方向,Python+Unittest+HtmlTestRuner+Jenkins和Java+Httpclient+TestNG+Jenkins,固然還有不少其餘二次開發的框架或工具,不過核心是同樣的;

    C,頁面自動化方向,主要有Python+Webdrver+HtmlTestRunner+Jenkins,Java+Webdriver+TestNG+Jenkins,以及其餘的框架和工具;

    D,App自動化測試方向,以Robotium+Java+TestNG+Jenkins,Appium+Java+TestNG+Jenkins,Appium+Python+HtmlTestRunner爲主。

   固然這裏介紹的都是簡單的,最基本的實現方案,做爲入門學習比較合適。其餘五花八門的二次開發的框架,包含衆多功能的方案留待你之後提高。先從這幾方面瞭解入手,選擇一個語言體系,建議從接口自動化入後,而後再去學習頁面和app。

(3)步步爲營,不要貪多

       咱們在提高本身的時候,發現有好多東西須要學習,因而就很着急,想同時學習不少東西,其實這並很差。學的太多容易產生混淆,並且不容易消化,你仔細調研一下就會發現,不少東西都是通着呢。代碼架構,用例管理,執行策略,持續化集成思想均可以觸類旁通,關鍵是本身要動手真正實施起來,在公司如今的框架上寫用例,無論你寫多少,不瞭解總體結構都是沒有用的。

(4)拋棄工具,多用開源

      業界好像歷來不缺乏自動化測試工具,QTP,Realobot Framework,LoadRunner等等,知名不知名的數不勝數。先不說這些工具效果如何,目前大公司是歷來不用這些工具的,你們都使用開源的框架,工具進行定製化本身的測試方案。因此剛剛學習自動化測試的時候,也不要依賴工具,使用開源的Webdriver, Appium,Robotium等搭建本身的自動化測試工程。掌握一個總體的自動化工程工做原理,爲之後搭建本身的自動化工程,工具,平臺作準備。

     無論你對自動化測試是愛,是恨,它是從手工測試轉爲測試開發必經的階段。可能你瞭解到自動測試沒有用,實施起來維護成本高,執行效率低等負面信息,其實這不是自動化測試的問題。要知道,它只是一個工具,一種測試方案,最終的效果仍是由實施的人來決定的。在12,13年的時候,用Jenkins作持續化集成比較熱門,接下來幾年好像沒有那麼火了,可是近兩年docker技術的出現,又使CI,CD變得火熱起來。咱們是否是應該端正對自動化測試的態度,明確什麼纔是你想要的,找準方法,不斷提高本身呢?

相關文章
相關標籤/搜索