首先理清自動化測試的概念,廣義上講,,自動化包括一切通過工具(程序)的方式來代替或輔助手工測試的行為都可以看做自動化,,包括性能測試工具(loadrunner、jmeter),或自己所寫的一段程序,,用于生成1到100個測試數(shù)據(jù),。狹義上講,即通過工具記錄或編寫腳本的方式模擬手工測試的過程,,通過回放或運行腳本來執(zhí)行測試用例,,從而代替人工對系統(tǒng)的功能進(jìn)行驗證。 當(dāng)然,,我們更普遍的認(rèn)識把“自動化測試”看做“ 基于產(chǎn)品或項目UI層的自動化測試”,。 這個概念最近曝光度比較高,傳統(tǒng)的自動化測試更關(guān)注的是產(chǎn)品UI層的自動化測試,,而分層的自動化測試倡導(dǎo)產(chǎn)品的不同階段(層次)都需要自動化測試,。 相信從事測試行業(yè)的人對上面的金字塔并不陌生,,這不就是對產(chǎn)品開發(fā)不同階段所對應(yīng)的測試么!我們需要規(guī)范地來做單元測試,,需要相應(yīng)的單元測試框架,,如java的Junit、testNG,,C#的NUnit ,,python 的unittest、pytest 等,,幾乎所有的主流語言,,都會有其對應(yīng)的單元測試框架。 集成,、接口測試對于不少測試新手來說不太容易理解,單元測試關(guān)注代碼的實現(xiàn)邏輯,,例如一個if 分支或一個for循環(huán)的實現(xiàn),;那么集成、接口測試關(guān)注的一是個函數(shù),、類(方法)所提供的接口是否可靠呢,。例如,我定義一個add()函數(shù)用于計算兩個參數(shù)的結(jié)果并返回,,那么我需要調(diào)用add()并傳參,,并比較返回值是否兩個參數(shù)相加。當(dāng)然,,接口測試也可以是url的形式進(jìn)行傳遞,。例如,我們通過get方式向服務(wù)器發(fā)送請求,,那么我們發(fā)送的內(nèi)容作為URL的一部分傳遞到服務(wù)器端,。但比如 Web service 技術(shù)對外提供的一個公共接口,需要通過soapUI 等工具對其進(jìn)行測試,。 UI層的自動化測試,,這個大家應(yīng)該再熟悉不過了,大部分測試人員的大部分工作都是對UI層的功能進(jìn)行測試,。例如,,我們不斷重復(fù)的對一個表單提交,結(jié)果,,查詢等功能進(jìn)行測試,,我們可以通過相應(yīng)的自動化測試工具來模擬這些操作,從而解放重復(fù)的勞動,。UI層的自動化測試工具非常多,,比較主流的是QTP,,Robot Framework、watir,、selenium 等,。 為什么要畫成一個金字塔形,則不是長方形 或倒三角形呢,? 這是為了表示不同階段所投入自動化測試的比例是不一樣的,。如果一個產(chǎn)品從沒有做單元測試與接口測試,只做UI層的自動化測試是不科學(xué)的,,很難從本質(zhì)上保證產(chǎn)品的質(zhì)量,。如果你妄圖實現(xiàn)全面的UI層的自動化測試,那更是一個勞民傷財?shù)呐e動,,投入了大量人力時間,,最終獲得的收益可能會遠(yuǎn)遠(yuǎn)低于所支付的成本。因為越往上層,,其維護(hù)成本越高,。尤其是UI層的元素會時常的發(fā)生改變。所以,,我們應(yīng)該把更多的自動化測試放在單元測試與接口測試階段進(jìn)行,。 既然UI層的自動化測試這么勞民傷財,那我們只做單元測試與接口測試好了嗎,?NO! 因為不管什么樣的產(chǎn)品,,最終呈現(xiàn)給用戶的是UI層。所以,,測試人員應(yīng)該更多的精力放在UI層,。那么也正是因為測試人員在UI層投入了大量的精力,所以,,我們有必要通過自動化的方式幫助我們“部分解放”重復(fù)的勞動,。 在自動化測試中最怕的是變化,因為變化的直接結(jié)果就是導(dǎo)致測試用例的運行失敗,,那么就需要對自動化腳本進(jìn)行維護(hù),;如何控制失敗,降低維護(hù)成本對自化的成敗至關(guān)重要,。反過來講,,一份永遠(yuǎn)都運行成功的自動化測試用例是沒有價值的。 至于在金字塔中三種測試的比例要根據(jù)實際的項目需求來劃分,。在《google 測試之道》一書中,,對于google產(chǎn)品,70%的投入為單元測試,20%為集成,、接口測試,,10% 為UI層的自動化測試。 根據(jù)51testing的《中國軟件測試從業(yè)人員調(diào)查報告》,,手工測試占89% ,相對開發(fā)來說,,測試的門檻底,,薪資普遍較低,所要求的知識面有一定廣度,,但缺乏深度,。這是測試的普遍現(xiàn)狀。 正因為手工測試人門檻不高,,使得大量的畢業(yè)生,,甚至是非專業(yè)人員涌入這個行業(yè)。從而增加了這個行業(yè)的激烈競爭,。工作幾年仍處于手工測試的人員會有強(qiáng)列的危機(jī)感,。由于工作的技術(shù)含量不高,薪資的漲幅很容易遇到瓶頸,,另一方面還會受到來自新人的威脅,同樣的工作公司花5K招來的人就可以做,,那么就不會花8K,。 好吧,這個問題不應(yīng)該出現(xiàn)討論技術(shù)的話題中,,但他的確是大多測試人員不得不面對的一個問題,。所以,從測試人員自身的發(fā)展來說,,我其實非常需要通過自動化技術(shù)來提升自己的競爭力,。當(dāng)然,做到一定年限測試人員會選擇轉(zhuǎn)管理或其它崗位,,這又是另一個話題了,。 從測試行業(yè)的發(fā)展來說,國內(nèi)產(chǎn)品由于產(chǎn)品特點,,世界級的產(chǎn)品不多,,技術(shù)含量和質(zhì)量要求相對要求不高,外包國外項目,,測試人力成本低廉,,所以需要大量的手工測試人員。 所以在不遠(yuǎn)的未來,我認(rèn)為純工手測試人員的需求是遞減,,公司需要更高技術(shù)能力的測試,。質(zhì)量需要測試,所以測試行為永遠(yuǎn)不會消失,,但純手工測試人員消失是有可能的,。 你可以說測試是多么朝陽的行業(yè),我純屬在危言聳聽,。不管未來如何,,我們確實都需要提升自身的技能! 假如你已經(jīng)決定要學(xué)習(xí)自動化測試了,,如何學(xué)習(xí)是要面臨的下一個問題?這個問題以被測試產(chǎn)品為出發(fā)點進(jìn)行分析,,假如你所學(xué)的技術(shù)不能得到應(yīng)用(驗證),,將會使你的學(xué)習(xí)寸步難行。 首先考慮產(chǎn)品是否適合做自動化測試,。這方法比較普遍的共識是從三個方面進(jìn)行權(quán)衡,。 1軟件需求變動不頻繁 測試腳本的穩(wěn)定性決定了自動化測試的維護(hù)成本。如果軟件需求變動過于頻繁,,測試人員需要根據(jù)變動的需求來更新測試用例以及相關(guān)的測試腳本,,而腳本的維護(hù)本身就是一個代碼開發(fā)的過程,需要修改,、調(diào)試,,必要的時候還要修改自動化測試的框架,如果所花費的成本不低于利用其節(jié)省的測試成本,,那么自動化測試便是失敗的,。 項目中的某些模塊相對穩(wěn)定,而某些模塊需求變動性很大,。我們便可對相對穩(wěn)定的模塊進(jìn)行自動化測試,,而變動較大的仍是用手工測試。 2項目周期較長 由于自動化測試需求的確定,、自動化測試框架的設(shè)計,、測試腳本的編寫與調(diào)試均需要相當(dāng)長的時間來完成。這樣的過程本身就是一個測試軟件的開發(fā)過程,,需要較長的時間,。如果項目的周期比較短,沒有足夠的時間去支持這樣一個過程,,那么自動化測試便成為笑談,。 3自動化測試腳本可重復(fù)使用 自動化測試腳本的重復(fù)使用要從三個方面來考量,,一方面所測試的項目之間是否很大的差異性(如C/S系統(tǒng)和B/S系統(tǒng)的差異);所選擇的測試工具是否適應(yīng)這種差異,;最后,,測試人員是否有能力開發(fā)出適應(yīng)這種差異的自動化測試框架。 1選擇什么工具進(jìn)行自動化測試 假如你已經(jīng)確認(rèn)了某項目適合做自動化測試,,那么接下來你要做的就是選測試工具了,。 首先要先確認(rèn)你所測試的產(chǎn)品是桌面程序(C/S)還是web應(yīng)用(B/S)。 桌面程序的工具有: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ā)展,。假如,被測試產(chǎn)品是C/S架構(gòu)的,,那么推薦QTP ,,QTP在UI自動化測試領(lǐng)域占到了一半的試用率。足以說明QTP在自動化領(lǐng)域的強(qiáng)大,,易用性,。學(xué)習(xí)主流的工具也可以使你獲得更多的機(jī)會。市面上關(guān)于QTP的書籍也非常豐富,。當(dāng)然,,要想學(xué)好QTP ,你必須要掌握VBS腳本語言,。 如果被測產(chǎn)品是B/S 結(jié)構(gòu),那么推薦selenium ,,為什么不是QTP 或其它工具,?因為selenium 對B/S應(yīng)用支持很好,更重要的一點,,它支持多語言的開發(fā),,真正的試用selenium ,你所要掌握的不僅僅是一個工具而已,,你還需要學(xué)習(xí)一門語言,。我為什么要選擇selenium?還要學(xué)一門語言?這無疑增加了我的學(xué)習(xí)成本,。增加成本的同時,,也增加了你的競爭力,而且,在這個過程中你不單單只是學(xué)會了一個自動化工具而已,,你完全可以使用所學(xué)的語言去做更多的事情,。 假如你決定試用selenium,你又面臨了一個新的問題,選擇一門語言,。selenium 是支持java,、python、ruby,、php,、C#、JavaScript ,。 從語言易學(xué)性來講,,首選ruby ,python 從語言應(yīng)用廣度來講,,首選java,、C#、php,、 從語言相關(guān)測試技術(shù)成度(及 資料)來講:ruby ,python ,java 或者你可以考慮整個技術(shù)團(tuán)隊主流用什么語言,,然后選擇相應(yīng)的語言。 作者簡介:顏偉 |
|