當下,自動化測試越來越成爲主流的趨勢,很多公司都已經在開始使用或者已經使用了好多年。在職場上,不管公司是否真的打算開展自動化測試、是否適合開展自動化測試,都習慣性的把自動化測試寫在招聘要求當中,在面試過程中也多多少少會問到一些。所以瞭解和學習自動化測試時非常有必要的。
而在自動化測試領域,Selenium和QTP是市場的主流工具,但現在Selenium越來越佔據主導地位,在這裏,咱們暫不討論兩個工具的優劣,着重介紹一下基於Selenium的自動化測試。
1、Selenium簡介
Selenium 是 ThroughtWorks 公司一個強大的開源 Web 功能測試工具系列,包括 Selenium-IDE、Selenium-RC、Selenium-Webdriver 以及 Selenium-Grid。其中,Selenium-IDE和Selenium-Webdriver二者的結合使用,能夠使我們取得事半功倍的效果。
Selenium 2.0 的主要新功能是集成了 Webdriver 的 API。Webdriver 的設計提供一個更簡單、更簡潔的編程接口以及解決的 Selenium-RC API 中的一些限制。SeleniumWebdriver 的開發是爲了更好地支持動態網頁的頁面元素可能已經更改,但本身不被重新加載的頁面。 Webdriver 的目標是提供一個設計良好的面向對象的 API、提供更好的支持,爲 Web 應用程序測試問題
2、自動化實施目的 :
自動執行重複性工作量較大的迴歸測試;
Web系統在不同操作系統和瀏覽器下的兼容性測試;
與CI服務集成,作爲持續集成實踐的一部分。
自動化測試之所以能在很多大公司實施起來,就是有它適合自動化測試的特點和高的投資回報率。
3、適用於自動化測試的情形
1. 產品型項目
產品型的項目,每個項目只改進少量的功能,但每個項目必須反反覆覆的測試那些沒有改動過的功能。這部分測試完全可以讓自動化測試來承擔,同時可以把新加入的功能的測試也慢慢地加入到自動化測試當中。
2. 增量式開發、持續集成項目
由於這種開發模式是頻繁的發佈新版本進行測試,也就需要自動化測試來頻繁的測試,以便把人從中解脫出來測試新的功能。
3. 能夠自動編譯、自動發佈的系統
要能夠完全實現自動化測試,必須能夠具有自動化編譯,自動化發佈系統進行測試的功能。當然,不能達到這個要求也可以在手工干預下進行自動化測試。
4. 迴歸測試
迴歸測試是自動化測試的強項,它能夠很好的確保你是否引入了新的缺陷,老的缺陷是否修改過來了。在某種程度上可以把自動化測試工具叫做迴歸測試工具。
5. 多次重複、機械性動作
自動化測試最喜歡測試:多次重複、機械性動作,這樣的測試對它來說從不會失敗。比如要向系統輸入大量的相似數據來測試壓力和報表。
6. 需要頻繁運行測試
在一個項目中需要頻繁的運行測試,測試周期按天算,就能最大限度的利用測試腳本,提高工作效率。
7. 將煩瑣的任務轉化爲自動化測試。
4、不適用於自動化測試的情形
自動化測試不是適合所有的公司、所有的項目。
1. 定製型項目(一次性的)
爲客戶定製的項目,維護期由客戶方承擔的,甚至採用的開發語言、運行環境也是客戶特別要求的,即公司在這方面的測試積累就少,這樣的項目不適合做自動化測試。
2. 項目週期很短的項目
項目週期很短,測試周期很短,就不值得花精力去投資自動化測試,好不容易建立起的測試腳本,不能得到重複的利用是不現實的。
3. 業務規則複雜的對象
業務規則特別複雜的對象,有很多的邏輯關係、運算關係,工具就很難測試。
4. 美觀、聲音、易用性測試
人的感觀方面的:界面的美觀、聲音的體驗、易用性的測試,也只有人來測試 。
5. 測試很少運行
測試很少運行,對自動化測試就是一種浪費。自動化測試就是讓它不厭其煩的、反反覆覆的運行纔有效率。
6. 軟件不穩定
軟件不穩定,則會由於這些不穩定因素導致自動化測試失敗。只有當軟件達到相對的穩定,沒有界面性嚴重錯誤和中斷錯誤才能開始自動化測試。
7. 涉及物理交互
工具很難完成與物理設備的交互,比如刷卡的測試等。
5、自動化測試所使用的的工具和環境
在自動化測試代碼的開發過程中,常用的集成環境爲:Eclipse + Selenium + testng + ant + Jenkins
Eclipse:集成開發工具,用來編寫測試代碼。
Selenium:是 ThoughtWorks 專門爲 Web 應用而開發的自動化測試工具,適合進行功能測試、驗收測試,選用 2.0 版本 WebDriver。
Testng: TestNG 是一種基於註釋的測試框架,通過添加諸如靈活的裝置、測試分類、參數測試和依賴方法等特性來克服 JUnit 的一些不足之處。
Ant:是一個將軟件編譯、測試、部署等步驟聯繫在一起加以自動化的一個工具,大多用於 java 環境中的軟件開發,其作用是可以脫離開發環境,編譯和運行程序。
Jenkins: 之前叫做 Hudson,是基於 Java 開發的一種持續集成工具,用於監控秩序重複的工作,包括:持續的軟件版本發佈/測試項目、監控外部調用執行的工作。
至於整個集成環境的搭建,將會在後續的文章中逐步分享,最終實現Eclipse + Selenium + testng + ant + Jenkins 的開發環境的完全搭建成功。