關於自動化測試的誤區(一)


 

  自動化測試作為軟件測試的一種技術手段,時常被大家討論。本人在自動化技術方面有過略有小成,今天聊一聊關於自動化的一些誤區,以幫助新手能正確的了解和認識自動化一些概念。

 

測試的行為本質是什么?

  為什么先從這個概念開始談起,因為對於新手來說,總是把自動化看得很高端和復雜。

  先來看看功能測試如何進行的:編寫測試用例,測試用例當中最主要的是測試步驟和預期結果;測試人員根據測試用例執行操作步驟,然后通過眼睛和思考判斷實際結果與預期結果是否相等。如果相等,測試通過;如果不相等,測試失敗。

  自動化測試要做的事情與功能測試是一致。這里的自動化主要包含三個層面的自動化,單元測試自動化,接口測試自動化和web測試自動化。當然,不同層面的自動化關注點是不一樣的。

  單元測試自動化,調用被測試的類或方法,根據類或方法的參數,傳入相應的數據。然后,得到一個返回結果。最終斷言返回的結果是否等於預期結果。如果相等,測試通過;如果不相等,測試失敗。所以,這里單元測試關注的是代碼的實現與邏輯。

  接口測試自動化,根據接口文檔,到底是傳get請求呢?還是post請呢?調用被測試的接口,構造相應的數據(id=1,name=zhangsan),得到返回值,是200成功,並返回查詢結果。還是10021,用戶名不能為空。不管輸入的參數是怎樣的,我們都將得到一個結果。最終斷言返回的結果是否等於預期結果。如果相等,測試通過;如果不相等,測試失敗。所以,接口測試關注的是數據。只要數據正確了,功能就做成大半,剩下的無非是如何把這些數據展示在頁面上。

  web測試的自動化,這種測試更貼近用戶的行為,模擬用戶點擊了某個按鈕,向個輸入框里輸入了什么。但是用戶可以看到登錄成功了,但web自動化並不知道它剛才的點擊有沒有生效。所以,要找“證據”,比如,登錄成功后頁面右上角會顯示“歡迎,xxx”。這就是登錄成功的有力“證據”。於是,當web自動化登錄成功后,就去獲取這個數據進行斷言。斷言如果相等,測試通過;如果不相等,測試失敗。所以,web自動化的關注點用戶操作形為,頁面上真正的按鈕和輸入框是否可用。

  所以,從測試的行為本質上來看,功能測試與單元自動化測試,接口自動化測試和web自動化測試並沒有區別。唯一的區別是,一個由人來執行,一個由代碼或工具執行。

 

我們時常會聽到兩個聲音:

  一種聲音,許多測試新手把自動化想象成走向人生巔峰的必備技能。只要掌握了自動化就可以當上CTO,迎娶白富美,走向人生巔峰了。時常用期盼的小眼神問:xxx 自動化多少錢一個月?如何學習自動化測試技術?推薦個書或資料或視頻吧?

  另一種聲音,略懂自動化的,被自動化坑過的,或者壓根就鄙視和抵觸自動化的,又把自動化說成屎。頁面老是變,維護成本高,這個元素TM怎么定位不到。勞民傷財,費了很大力氣也發現不了bug。而自動化用例本身到是bug不斷。什么?自動化居然不能做瀏覽器兼容性測試?什么?你們領導讓你搞自動化呀?你們領導SB

  先說前一種聲音,理論上任何技能都是為了提高效率和產出,節約公司成本為前提的。比如,以前項目要5個測試,現在用了自動化之后,3個就夠了。但如果用了自動化,還需要再招2個人來維護自動化腳本。那就沒戲。那我只為學習不行啊?我學好了找個專職做自動化的崗位不行啊?工資起碼比現在功能測試高吧!行行行!學習當然行。但方法要正確。我稍后再說正確學習自動化測試的姿勢。(左手右手一個慢動作...)但,其實我想告訴你,對於測試來說,理論上你掌握一個單一的技能是遠遠不能走上人生巔峰的。

  再說另一種聲音,這個情況一般是我們對自動化測試的期望太高了。自動化嘛,不就應該自動化腳本寫好,自動化腳本刷刷的跑。然后,喝杯茶的功夫,bug就找到了。要真這么美好,這得有多少功能測試人員得轉行去搬磚了。一般造成這個認識的,主要兩方面原因,技能不夠,有些只依賴於各種自動化測試工具,有些一只能寫寫簡單的模擬用戶操作的腳本。第二個原因,不管三七二十一上來就拿自己所測試的項目開刀。這元素咋定位?這功能怎么寫斷言?我靠,腳本運行又出錯了。你有分析你的項目是否適合做自動化了么?看到有些同學拿着只能在IE下運行的某XXX項目,艱難的定位着元素,趕緊放棄吧!!

 

學習的兩點建議

  你別BB了,你都大神了,你當然鄙視我們這些新手,你當然站着說話不腰疼。那要不,你說自動化測試咋學?你給個方法。自動化方面的資料挺多的了。我給兩點建議。

  不要迷戀自動化工具,學好開發語言。這一點我個人感受很深,理論上不管你寫的是單元測試自動化,接口測試自動化,還是web測試自動化,都屬於開發的行為,只是帶着測試的思維在寫測試代碼而已。你說,如果開發能力只停留在稍微能看懂,讓你實現個簡單的功能就大腦一片空白的水平肯定不行。代碼要多寫,寫得多了,自然思想就來了,代碼結構的設計能力也來的。不過,這是需要半年一年才能出效果。那我該學哪個語言呢?目前主流的哪個都行,你們開發用Java,你就可以學Java,你們開發用Python,你就可以學Python

  我要學自動化技術,你讓我學編程語言,我要能把語言學好,我當開發去算了。那你還想不想走向人生巔峰了?只有跨過編程能力這道坎才有希望。(當然,不走技術流的另說。)

  當你把編程學好,知道功能是如何開發出來的。很多測試的問題自然就通了。如何單元測試怎么寫,接口測試怎么做等。

  另外一點建議就是專一!專一!專一!重要的事情說三遍,如果,你經常混測試群的話,就會被各種測試技術工具吸引,今天大家討論性能測試很火啊,貌似職位工資很高。要不找點資料學學。過段時間又發現,現在移動自動化測試是方向,應該學習一下。所以,不專一是你最大的敵人,等到面試的時候。看着簡歷上寫了滿滿的技能,每個多問兩句就... 

  那有什么辦法呢?人家公司要求的必須會這些,你能不學一下?那你能把眼光放高點對標一下BAT的招聘信息么?將來是要走向人生巔峰的人,怎么只能把眼光放在那些二流的公司上面,這些公司,本來就招個功能測試,還非要求“精通LoadRunnerQTP等自動化工具”。

  從你的技術博客來看,你也不專一啊!今天更新這個技術,明天介紹點那個技能。我是有學習主線的好么?博客的更新都是我學習總結的一小部分。從大的主線來看,我近三年來重點提升的就是編程能力和自動化相關技能。

 

本來想講自動化測試認識的一些具體誤區,結果扯了這么多,剩下的放在下一篇了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM