寫這篇文章之前,我接觸了不少的同行,因為之前他們一直都從事手工測試,現在迫切的希望做自動化測試,其中不缺乏其中不乏工作5年以上的人。 本人從事軟件自動化測試已經近5年,從server端到web端,從API到mobile,切身體會到自動化帶來的好處與痛楚,在此分享一下個人體會。想做自動化,首先得了解一下自動化測試的一些常見問題:
廣義
上來講,自動化包括一切通過工具(程序)的方式來代替或輔助手工測試的行為都可以看做自動化,包括性能測試工具(LoadRunner、Jmeter),或自己所寫的一段程序,用於生成1到100個測試數據。所以實際上從廣義上來講:性能測試、接口測試等但凡用到測試工具的測試都稱為"自動化測試"。
狹義上來講,通工具記錄或編寫腳本的方式模擬手工測試的過程,通過回放或運行腳本來執行測試用例,從而代替人工對系統的功能進行驗證。
當然,行業中經常說的“自動化測試”及企業中要求的“自動化測試”大多都是“基於產品或項目UI層的自動化測試”。對於性能測試,接口測試一般不把它們歸納為自動化測試的范疇。
根據51testing的《中國軟件測試從業人員調查報告》,手工測試占到的89% ,相對開發來說,測試的門檻底,薪資普遍較底,所要求的知識面雖然有一定廣度,但缺乏深度。這是測試的普遍現狀。
正因為手功測試入門檻不高,使大量的畢業生,甚至是非專業人員湧入這個行業。從而增加了這個行業的激烈競爭。對於工作幾年扔處於手工測試的人員來說都會有強列的危機感。由於工作的技術含量不高,薪資的漲幅遇到瓶頸,另一方面受到新進入者的威脅,同樣的工作公司花5K招來的人就可以做,那麼就不會花8K 的招。
這個問題本不應該出現討論技術的話題中,但他的確是大多測試人員不得不面對的一個問題。所以,從測試人員自身的發展來說,我其實非常需要通過自動化技術來增加自己有競爭力。
自動化測試最實在的優勢在於——工作好找:有一個測試工程師(並不是本人)發現一個有趣的現象,她申請過的幾乎所有測試職位,在招聘時都需要自動化測試經驗。但當她開始工作後,就發現這些公司都試圖做自動化測試,但是結果大多不怎麼地。不過,盡管她參與的都是一些悲劇的項目,不過她總能把這些悲劇包裝成喜劇以應對下一次面試。
自動化測試一般分三種:單元自動化測試,接口自動化測試,UI自動化測試。
其中單元自動化測試一般由研發人員自己進行測試,測試人員主要進行接口以及UI的自 動化測試,但是由於UI的需求變化比較頻繁,所以接口測試是測試人員做的最多的。
頻繁的回歸測試 - 快速反饋 - 幾乎無限制的測試用例迭代執行 - 支持敏捷和極限編程 - 遵循測試用例的文檔 - 自定義缺陷報告 - 能找出手工測試中沒發現的缺陷
假如你已經決定要學習自動化測試了,如何學習是要面臨的下一個問題?這個問題以被測試產品為出發點進行分析,假如你所學的技術不能得到應用(驗證),將會使你的學習過程寸步難行。
首先考考慮產品是否適合做自動化測試。這方法比較普遍的共識是從三個方面進行權衡。2.6軟件需求變動不頻繁2.7測試腳本的穩定性決定了自動化測試的維護成本。如果軟件需求變動過於頻繁,測試人員需要根據變動的需求來更新測試用例以及相關的測試腳本,而腳本的維護本身就是一個代碼開發的過程,需要修改、調試,必要的時候還要修改自動化測試的框架,如果所花費的成本不低於利用其節省的測試成本,那麼自動化測試便是失敗的。項目中的某些模塊相對穩定,而某些模塊需求變動性很大。我們便可對相對穩定的模塊進行自動化測試,而變動較大的仍是用手工測試。項目周期較長
由於自動化測試需求的確定、自動化測試框架的設計、測試腳本的編寫與調試均需要相當長的時間來完成。這樣的過程本身就是一個測試軟件的開發過程,需要較長的時間來完成。如果項目的周期比較短,沒有足夠的時間去支持這樣一個過程,那麼自動化測試便成為笑談。
自動化測試腳本的重復使用要從三個方面來考量,一方面所測試的項目之間是否很大的差異性(如C/S系統和B/S系統的差異);所選擇的測試工具是否適應這種差異;最後,測試人員是否有能力開發出適應這種差異的自動化測試框架。
桌面程序的工具有:QTP、 AutoRunner
web應用的工具有:QTP、AutoRunner、Robot Framework、watir、selenium
由於B/S架構的諸多優勢,早幾年前大量C/S架構的應用轉為B/S結構。從而也推動了web開發與測試技術的發展。這也導致QTP框架的落寞,Selenium框架及Robot Framework框架的大量興起。
被測試有產品是C/S架構的,那麼推薦QTP ;
被測產品是B/S 結構,那麼推薦selenium ;
RFS: Robot Framework + Selenium
Selenium+unittest框架
為什麼不是QTP 或其它工具?因為selenium 對B/S應用支持很好,更重要的一點,它支持多語言的開發,真正的試用selenium ,你所要掌握的不僅僅是一個工具而已,你還需要學習一門語言。
從語言易學性來講: ruby、python;
從語言應用廣度來講: python、java、C#、php;
從語言相關測試技術成熟度及資料來講: python、java、ruby;
你可以考慮整個技術團隊主流用什麼語言,然後選擇相應的語言;
我們在這裡自然選擇目前市面上最火,使用范圍廣,技術成熟度大的Python講解;
功能測試如何系統性轉向自動化?下面我整合了一些企業中常用必備的點給大家做一個分享:
一、先學習一門編程語言,建議python【注意圖片沒有全部展示出來,包括下方所有未全部展示的學習路線圖原圖,需要的朋友可以點此處「查看公告處」加入我的自動化測試交流群下載,(←可點擊直達公告處)】
由於文章篇幅不能過長,所有節點沒有展現出來,有需要的朋友可以加入我的技術交流群自行下載
二、Python自動化測試框架應用
三、自動化測試篇 - Web UI 自動化
四、自動化測試篇 - 移動端UI 自動化
五、自動化測試篇 - 接口自動化測試
六、自動化測試篇 - 持續集成Git、jenkins、Docker
七、自動化測試篇 - 性能測試LoadRunner、jmeter、app性能
八、自動化測試篇 - WEB安全測試、滲透測試、漏洞掃描
九、自動化測試篇 - RobotFramework、AirTest
10、測試開發篇-自動化測試平台開發
11、互聯網高薪測試拓展知識、Redis、MongoDB、Nginx集群實戰
更希望想自學的你一樣,通過我的分享可以少走一些彎路,可以形成一條自己的體系,並應用到實際中。當然,也真心的希望你們升職加薪,因為有面包才會有更好的生活追求。
這些技能將幫助測試人員在行業中獲得非常高的價值。特別是對所有最新的自動化工具以及CI/CD工具(如Jenkins或GitLab)都有適當的了解,那麼你不僅將成為團隊中有價值的資源,而且還將成為行業中有價值的資源。
學習性能測試、自動化測試、安全測試什麼的,肯定事半功倍。