學(xué)習(xí)Python自動化測試前,這些問題你必須弄明白……
寫這篇文章之前,我接觸了不少的同行,因?yàn)橹八麄円恢倍紡氖率止y試,現(xiàn)在迫切的希望做自動化測試,其中不缺乏其中不乏工作5年以上的人。 本人從事軟件自動化測試已經(jīng)近10年,從server端到web端,從API到mobile,切身體會到自動化帶來的好處與痛楚,在此分享一下個人體會。想做自動化,首先得了解一下自動化測試的一些常見問題:
一、學(xué)習(xí)自動化之前,大家需要先知道自動化測試是啥?
自動化包括一切通過工具(程序)的方式來代替或輔助手工測試的行為都可以看做自動化,包括性能測試工具(LoadRunner、Jmeter),或自己所寫的一段程序,用于生成1到100個測試數(shù)據(jù)。所以實(shí)際上從廣義上來講:性能測試、接口測試等但凡用到測試工具的測試都稱為"自動化測試"。
狹義上來講,通工具記錄或編寫腳本的方式模擬手工測試的過程,通過回放或運(yùn)行腳本來執(zhí)行測試用例,從而代替人工對系統(tǒng)的功能進(jìn)行驗(yàn)證。
當(dāng)然,行業(yè)中經(jīng)常說的“自動化測試”及企業(yè)中要求的“自動化測試”大多都是“基于產(chǎn)品或項(xiàng)目UI層的自動化測試”。對于性能測試,接口測試一般不把它們歸納為自動化測試的范疇。
二、為什么要做自動化測試
根據(jù)51testing的《中國軟件測試從業(yè)人員調(diào)查報告》,手工測試占到的89% ,相對開發(fā)來說,測試的門檻底,薪資普遍較底,所要求的知識面雖然有一定廣度,但缺乏深度。這是測試的普遍現(xiàn)狀。
正因?yàn)槭止y試入門檻不高,使大量的畢業(yè)生,甚至是非專業(yè)人員涌入這個行業(yè)。從而增加了這個行業(yè)的激烈競爭。對于工作幾年扔處于手工測試的人員來說都會有強(qiáng)列的危機(jī)感。由于工作的技術(shù)含量不高,薪資的漲幅遇到瓶頸,另一方面受到新進(jìn)入者的威脅,同樣的工作公司花5K招來的人就可以做,那么就不會花8K 的招。
這個問題本不應(yīng)該出現(xiàn)討論技術(shù)的話題中,但他的確是大多測試人員不得不面對的一個問題。所以,從測試人員自身的發(fā)展來說,我其實(shí)非常需要通過自動化技術(shù)來增加自己有競爭力。
自動化測試最實(shí)在的優(yōu)勢在于——工作好找:有一個測試工程師(并不是本人)發(fā)現(xiàn)一個有趣的現(xiàn)象,她申請過的幾乎所有測試職位,在招聘時都需要自動化測試經(jīng)驗(yàn)。但當(dāng)她開始工作后,就發(fā)現(xiàn)這些公司都試圖做自動化測試,但是結(jié)果大多不怎么地。不過,盡管她參與的都是一些悲劇的項(xiàng)目,不過她總能把這些悲劇包裝成喜劇以應(yīng)對下一次面試。
三、自動化測試主要有哪些
自動化測試一般分三種:單元自動化測試,接口自動化測試,UI自動化測試。
其中單元自動化測試一般由研發(fā)人員自己進(jìn)行測試,測試人員主要進(jìn)行接口以及UI的自 動化測試,但是由于UI的需求變化比較頻繁,所以接口測試是測試人員做的最多的。
四、自動化測試的優(yōu)勢
頻繁的回歸測試 - 快速反饋 - 幾乎無限制的測試用例迭代執(zhí)行 - 支持敏捷和極限編程 - 遵循測試用例的文檔 - 自定義缺陷報告 - 能找出手工測試中沒發(fā)現(xiàn)的缺陷
五、什么項(xiàng)目適合做自動化測試?
假如你已經(jīng)決定要學(xué)習(xí)自動化測試了,如何學(xué)習(xí)是要面臨的下一個問題?這個問題以被測試產(chǎn)品為出發(fā)點(diǎn)進(jìn)行分析,假如你所學(xué)的技術(shù)不能得到應(yīng)用(驗(yàn)證),將會使你的學(xué)習(xí)過程寸步難行。
首先考考慮產(chǎn)品是否適合做自動化測試。這方法比較普遍的共識是從三個方面進(jìn)行權(quán)衡。2.6軟件需求變動不頻繁2.7測試腳本的穩(wěn)定性決定了自動化測試的維護(hù)成本。如果軟件需求變動過于頻繁,測試人員需要根據(jù)變動的需求來更新測試用例以及相關(guān)的測試腳本,而腳本的維護(hù)本身就是一個代碼開發(fā)的過程,需要修改、調(diào)試,必要的時候還要修改自動化測試的框架,如果所花費(fèi)的成本不低于利用其節(jié)省的測試成本,那么自動化測試便是失敗的。項(xiàng)目中的某些模塊相對穩(wěn)定,而某些模塊需求變動性很大。我們便可對相對穩(wěn)定的模塊進(jìn)行自動化測試,而變動較大的仍是用手工測試。項(xiàng)目周期較長
由于自動化測試需求的確定、自動化測試框架的設(shè)計(jì)、測試腳本的編寫與調(diào)試均需要相當(dāng)長的時間來完成。這樣的過程本身就是一個測試軟件的開發(fā)過程,需要較長的時間來完成。如果項(xiàng)目的周期比較短,沒有足夠的時間去支持這樣一個過程,那么自動化測試便成為笑談。
自動化測試腳本的重復(fù)使用要從三個方面來考量,一方面所測試的項(xiàng)目之間是否很大的差異性(如C/S系統(tǒng)和B/S系統(tǒng)的差異);所選擇的測試工具是否適應(yīng)這種差異;最后,測試人員是否有能力開發(fā)出適應(yīng)這種差異的自動化測試框架。
六、主流自動化測試框架
自動化測試框架
桌面程序的工具有:QTP、 AutoRunner
web應(yīng)用的工具有:QTP、AutoRunner、Robot Framework、watir、selenium
測試框架選擇
由于B/S架構(gòu)的諸多優(yōu)勢,早幾年前大量C/S架構(gòu)的應(yīng)用轉(zhuǎn)為B/S結(jié)構(gòu)。從而也推動了web開發(fā)與測試技術(shù)的發(fā)展。這也導(dǎo)致QTP框架的落寞,Selenium框架及Robot Framework框架的大量興起。
被測試有產(chǎn)品是C/S架構(gòu)的,那么推薦QTP ;
被測產(chǎn)品是B/S 結(jié)構(gòu),那么推薦selenium ;
市面主流自動化測試框架
RFS: Robot Framework + Selenium
Selenium+unittest框架
為什么不是QTP 或其它工具?因?yàn)閟elenium 對B/S應(yīng)用支持很好,更重要的一點(diǎn),它支持多語言的開發(fā),真正的試用selenium ,你所要掌握的不僅僅是一個工具而已,你還需要學(xué)習(xí)一門語言。
七、測開選擇python還是java?
從語言易學(xué)性來講: ruby、python;
從語言應(yīng)用廣度來講: python、java、C#、php;
從語言相關(guān)測試技術(shù)成熟度及資料來講: python、java、ruby;
你可以考慮整個技術(shù)團(tuán)隊(duì)主流用什么語言,然后選擇相應(yīng)的語言;
我們在這里自然選擇目前市面上最火,使用范圍廣,技術(shù)成熟度大的Python講解;
八、自動化測試學(xué)習(xí)路線
功能測試如何系統(tǒng)性轉(zhuǎn)向自動化?
大家可以參考這個視頻進(jìn)行學(xué)習(xí):Python 自動化測試學(xué)習(xí)路線指南講解

總結(jié)
這些技能將幫助測試人員在行業(yè)中獲得非常高的價值。特別是對所有最新的自動化工具以及CI/CD工具(如Jenkins或GitLab)都有適當(dāng)?shù)牧私猓敲茨悴粌H將成為團(tuán)隊(duì)中有價值的資源,而且還將成為行業(yè)中有價值的資源。
學(xué)習(xí)性能測試、自動化測試、安全測試什么的,肯定事半功倍。