有時候在交流群里經常會看到這樣的問題,selenium能進行性能測試嗎?selenium1和selenium2有什么區別等等問題,在這里談一下自己學習和工作以后對selenium的認識。我所記錄的東西都是自己學習和工作中實際學習用到的,不會為了寫博客而去搜文字什么的,通俗易懂。
selenium是什么?在我看來它是個封裝起來的API,提供給你各種各樣的方法去對web頁面進行操作,它是一個自動化測試框架,它能做的就是把你從頁面上的操作轉化為代碼,你能在頁面上做什么,就能用selenium提供的接口方法去操作web頁面。
selenium1包括 seleniumIDE seleniumRC seleniumGrid ,放張selenium1組成圖

1. seleniumIDE是火狐瀏覽器的一個插件,可以錄制下在瀏覽器上進行的操作,然后可以導出一個各種開發語言的腳本,還可以回放錄制的操作等等。
2. seleniumRC是selenium1的核心部分,可以利用seleniumRC編寫自動化測試腳本,然后通過seleniumRC的服務器作為代理服務器去訪問應用。
3. seleniumGrid是可以支持在多台機器上不同瀏覽器不同操作系統測試環境中進行測試,通過一個主機控制並行的執行測試用例。
雖然selenium1已經不怎么用了,但是學習使用一個東西該了解的也要了解,不能簡單的會用就行了。態度決定一切。selenium3早就出來了,我還沒學習和研究,先說下selenium2吧,selenium2簡單來說是selenium1+WebDriver,更為准確的說應該是seleniumRC+webdriver,selenium2的主要特性就是將webdriverAPI集成進seleniumRC當中。
那么seleniumRC和webdriver的區別又是什么呢?有的小伙伴面試的時候遇到了這個問題,webdriver是利用瀏覽器原生的API,直接操作頁面里的元素甚至是瀏覽器本身,例如最大化呀,控制瀏覽器的前進后退,截屏啊,設置插件等等等等,這樣就可以更快速的操作頁面元素。seleniumRC則是將操作web元素的API調用轉化為一段段javascript,在selenium內核啟動瀏覽器后將javascript注入,通過javascript來調用操作頁面元素,這樣進行頁面操作的速度和質量是不穩定的,因為這要依賴於selenium內核對翻譯成的javascript的質量的高低。上圖中的core就是代表了一段段javascript代碼。
----------------------------------------------------------關於selenium的其它問題--------------------------------------------
問題一:我怎么用selenium測試瀏覽器的兼容性啊,selenium可以做性能測試嗎?
答:總結來說就是不知道selenium是做什么的。selenium是一個測試框架,是做web自動化測試的,從selenium衍生出的appium可以做移動端的自動化測試。它是可以自動化的執行一些操作,但是如果用selenium來做性能是很差很差的。自動化測試主要是自動化執行頁面操作,完成一個個測試案例,如果要測試瀏覽器的兼容性,本質上跟selenium是沒有半毛錢關系的。當然也可以將案例在不同瀏覽器上單獨跑來看下兼容,但是測試結果一般着重顯示的是整個業務邏輯流程的通過與否,與測試瀏覽器兼容性關聯不大。
問題二:我怎么用selenium進行反向測試,異常場景測試啊
答:自動化測試是為了減少手工測試的重復勞動,但並不是可以完全取代手工測試,所以自動化測試一般用於回歸測試和冒煙測試,例如:產品上線前將一些基本的業務用自動化跑一遍,確保沒有問題;開發修改了一個業務流程中的某個地方,我們單獨測試完修改的模塊,用自動化測試做個回歸測試,確保這個修改的功能模塊沒有問題,對涉及到這個功能模塊的業務都沒有問題,或者可以直接用自動化進行測試。從這我們可以看到自動化測試針對的是正向流程的測試。我們在進行自動化測試的時候要考慮到腳本的開發與維護,如果一個異常場景手工測試幾分鍾就可以了,但是寫腳本為了生成不同場景,並且判斷所產生的測試結果等等可能要付出的時間等成本要更高。更重要的一點,這些異常場景一般是不會重復測試的,這就沒法保證測試腳本的重復使用,造成浪費。
那么我們可以總結出要寫自動化測試腳本的時候應該考慮哪些東西:
1.測試腳本的復雜程度。腳本的復雜程度,亦或者說是業務測試的復雜程度,再或者是測試案例設計的復雜程度,它們決定了腳本開發的難度,腳本開發的成本,腳本維護的成本,如果這個成本遠遠高於手工測試,那么自動化測試的意義何在?
2.測試腳本的重復利用。如果一個腳本寫出來就為了測試一個功能,比如登陸密碼的校驗,我們辛辛苦苦寫出各種場景的密碼校驗,測試完成后難道每次登陸都要測試密碼的不同種輸入等等異常狀況嗎?一定要保證寫出的腳本可以重復利用。
當然這只是決定了要開始做自動化測試寫腳本的時候要考慮的,在開始進行自動化測試之前我們還需要對整個項目進行評估,看它是否需要,是否適合進行自動化測試。這些東西網上一搜一大堆,就不在這里贅述了。以上都是平時自己遇到的,還有交流群里見到的各種各樣的問題的我自己一些見解,不對的地方還請指正批評。
