http://www.cnblogs.com/fnng/p/5410772.html
2016
繼續(xù)胡說(我真姓‘胡’?。。ψ詣踊瘻y試的一些看法,上一篇文章講得比較模糊,這一篇就具體講講在做自動化測試時的一些誤區(qū),主要針對已經(jīng)在開始學(xué)習(xí)自動化的同學(xué)。當(dāng)然,我這里主要指的是webUI自動化以及使用selenium工具的情況下。
數(shù)據(jù)驅(qū)動:因為數(shù)據(jù)的改變導(dǎo)致結(jié)果的改變。說人話就是,因為我在百度里搜索的是“selenium”導(dǎo)致結(jié)果就是包含了“seleniumhq.org”。因為我登錄時候輸入的是“zhangsan”導(dǎo)致的結(jié)果就是登錄之后頁面右上角顯示“歡迎,zhangsan”。你自己體會一下,我說的也不一定對。
曾幾何時,不知哪位測試大牛說的,數(shù)據(jù)一定要放在excel表格里才逼格滿滿。再后來就演變成元素的定位一定要放到excel里才夠“數(shù)據(jù)驅(qū)動”,才是玩自動化測試的高級境界。
抱歉,可能我姿勢不對!因為我不知道你們是如何想像著把元素定位放到excel表格里面的。
但我認(rèn)為這樣做純屬多此一舉。
1、讀excel有多麻煩,你知道么?不知道的百度一下,“python讀取excel ” 或 “java 讀取excel”。你想像一下,每個用例的每一步元素定位之前,先讀一下excel是有多麻煩。
2、這樣好維護!誰告訴你的?你能記清excel第125行第2列對應(yīng)的哪個頁面上的哪個元素的定位?因某個頁面上多加一個元素,我又在excel第32行下面插入一行元素定位,從33行往的所有元素的行號都變了,你那些讀取excel中元素定位的操作都要跟著改吧???
那你給說道說道,什么情況下需要excel管理用例,在我看還真沒想到什么場景必須excel管理。不過,有什么條件可以參考:
1、這個數(shù)據(jù)有點多,比如這個輸入框限制500字,我輸入501個字提交看是否會提示錯誤。這500字寫代碼里有點多了。可以建立個文件讀取。
2、這個數(shù)據(jù)經(jīng)常改動,比如自動化測試用例通過個哪個環(huán)境執(zhí)行,哪款瀏覽器運行,運行哪個項目下的用例。這個配置是需要我經(jīng)常改的,可以創(chuàng)建一個專門的配置文件來保存。
3、這個數(shù)據(jù)作用于多個地方,比如系統(tǒng)的登錄用戶名密碼,可能很多條測試用例都用一個賬號登錄。那我不可能每個用例,都寫一遍這個賬號,假如想統(tǒng)一更換賬號還得每個用例都改一下,這個時候也可以對這個數(shù)據(jù)獨立保存。
你看!你看!元素的定位也挺符合你的第2、3條的,經(jīng)常變動,一個元素定位可能被多個用例用到。那你為什么不研究一個Page Ojbect 設(shè)計模式?專門解決元素變化問題的。
對了,前兩天有人給我留言:你這個web自動化書吧挺好的(書在本博客面右上?。?,就是沒有關(guān)于數(shù)據(jù)庫的操作!親,你不是在做web自動化,應(yīng)該是在做性能自動化吧???那我要碰到很多數(shù)據(jù)的情況下怎么存?這一定是你意淫出來的情況。那我在頁面上插入了一條數(shù)據(jù),我需要查詢數(shù)據(jù)庫表檢查對不對呀?
你確定你是在做web自動化么?web自動化是基于UI的自動化測試,是模擬用戶操作的。你家用戶這么高端,在你們的網(wǎng)站上買了個商品,還要跑到你家數(shù)據(jù)庫里去查一查,剛才買的商品有沒有寫到xxx表里?
那自動化怎么知道商品對沒有沒插入到xxx表?那我反問一下用戶怎么知道自己有沒有購買成功,一定是他在“已購買”的商品欄里看到自己的商品。你不會獲取這信息做斷言???
說往數(shù)據(jù)庫里存數(shù)據(jù)那位,你家用戶在使用你們的系統(tǒng)的時候,自己要先準(zhǔn)備幾千條數(shù)呀?你說用戶用excel存數(shù)據(jù)我信,你說用戶上傳excel數(shù)據(jù)文件我信,你說用戶弄個數(shù)據(jù)庫存幾千數(shù)據(jù),我不信!
什么樣的系統(tǒng)不太適合web自動化?以查詢報表為主的系統(tǒng),就是以插入,查詢,刪除,編輯為主的xx管理系統(tǒng)。如查你還不清楚的話,下圖僅供參考。
我此言一出,估計你要灰心了!我家系統(tǒng)就是這種的,添加,查詢,編輯。這種系統(tǒng)一般定位起來也比較麻煩,要寫又臭又長的xpath。(估計你現(xiàn)在已經(jīng)和我產(chǎn)生共鳴了。)
這種系統(tǒng)的核心就是數(shù)據(jù),其后臺實現(xiàn)就是各種查詢接口。功能可用就好,一般這系統(tǒng)不講究用戶體驗之類的。關(guān)鍵是數(shù)據(jù)得正確。尤其是針對金融領(lǐng)域相關(guān)的系統(tǒng),那少算一個數(shù)、一個零、一個小數(shù)點,事可就大了。但在我看來做web自動化的實際意義并不大。或者這類系統(tǒng)要自動化的并不是系統(tǒng)最重要的部分。當(dāng)然,我并不是說系統(tǒng)的功能不重要。
最主要的是這種系統(tǒng)不太好斷言結(jié)果,你想,你的數(shù)據(jù)是查詢出來的,今天查詢出來“張三”在第一頁,后面這個查詢數(shù)據(jù)增加,“張三”跑后第五頁了,再后來跑到第170頁,你說怎么用固定的信息斷言? 沒有斷言,你怎么知道查詢的結(jié)果對不對?
我可以查數(shù)據(jù)庫呀,我前面說了,查數(shù)據(jù)庫的就不是web自動化了。
其實,這類系統(tǒng)非常適合做接口自動化測試。關(guān)于,接口自動化的學(xué)習(xí)和需要掌握的技能,我會放到下一篇介紹(這一篇要還沒啥閱讀量,我就不寫了^_^,畢竟這些吐槽也挺無聊的)。
有同學(xué)說了,那我學(xué)自動化還有什么用?我家系統(tǒng)就是這種的。
1、首先,我并不是說這類系統(tǒng)不能自動化,拿來練習(xí)web自動化還是可以的嘛。再說了,web自動化也是測試人員必備技能之一嘛,以后為你跳槽加薪好處也是大大地嘛。
2、你學(xué)習(xí)的技能并沒有白費:
2.1、編程能力提升了吧!那編程語言能干的事情可以多了去了。
2.2、單元測試框架學(xué)會了吧!這框架還可以用來寫單元測試和接口測試呢!
2.3、自動化測試的思想學(xué)到了吧!移動自動化也是這么玩的,只是把selenium換成appium而已。
那我就好奇了,蟲師,你家系統(tǒng)是什么樣的?怎么就適合做web自動化了?知道你會這么想(問),我以前寫過一個私有云的自動化(類似百度云盤),去年寫過一個bbs社區(qū)的自動化,當(dāng)然也都不算太成功(羞射...)。碰到更多的就是如上圖的,所以,從去年底在開發(fā)的幫助下改去寫接口自動化了。