https://www.cnblogs.com/sunada2005/archive/2013/12/22/3486314.html
UI Automatic Testing
1. 什么樣的項目適合自動化測試?
2. 常見的自動化測試工具簡介
3. Selenium介紹
4. Selenium的工作原理
1. 什么樣的項目適合自動化測試?
定義:把人為驅動的測試轉化為機器執行的一種過程,重點在於持續集成這個概念;
優勢:節約人力和時間成本;
如上圖所示,真正工作中無法全部滿足以上條件,所以需要作出權衡,一般來說,只需要滿足以下幾點,就可以對項目開展自動化測試(圖中紅色框標注的選項):
①需求穩定,不會頻繁變更
自動化測試最大的挑戰就是需求的變化,而自動化腳本本身就需要修改、擴展、debug,去適應新的功能,如果投入產出比太低,那么自動化測試也失去了其價值和意義;
折中的做法是選擇相對穩定的模塊和功能進行自動化測試,變動較大、需求變更較頻繁的部分用手工測試;
②多平台運行,組合遍歷型、大量的重復任務
測試數據、測試用例、自動化腳本的重用性和移植性較強,降低成本,提高效率和價值;
③軟件維護周期長,有生命力
自動化測試的需求穩定性要求、自動化框架的設計、腳本開發與調試均需要時間,這其實也是一個軟件開發過程,如果項目周期較短,沒有足夠的時間去支持這一過程,那自動化測試也就不需要了;
④被測系統開發較為規范,可測試性強
主要出於這幾點考慮:被測試系統的架構差異、測試技術和工具的適應性、測試人員的能力能否設計開發出適應差異的自動化測試框架;
2. 常見的自動化測試工具簡介
UFT(Unified Functional Testing)
即原來的QTP(Quick Test Professional Software)與ST(Service Test)合並而來,由HP公司開發,是一個企業級的商業自動化測試工具,提供了強大易用的錄制回放功能,
同時兼容對象識別模式與圖像識別模式,支持B/S和C/S兩種架構的軟件測試;
Robot Framework
一款基於python語言編寫的自動化測試框架工具,具備良好的擴展性,支持關鍵字驅動,支持多種類型的客戶端和接口,可進行分布式測試;
Selenium
應用於web的自動化測試工具,支持多平台、多瀏覽器、多語言來實現自動化,優點如下:
①開源、免費;
②多瀏覽器支持:chrome、Firefox、IE、Edge等;
③多平台支持:Linux、Windows、MAC;
④多語言支持:java、python、Ruby、C#、JavaScript、C++;
⑤對web界面有良好的支持;
⑥簡單(API簡單)、靈活(開發語言驅動);
⑦支持分布式測試用例執行;
3. Selenium介紹
SeleniumIDE,Selenium 1.xx時代,是Firefox、Chrome的擴展插件,支持用戶錄制和回訪測試。錄制/回訪模式存在局限性,並不能很好的兼容多種瀏覽器;
Selenium WebDriver,Selenium 1.0 + Webdirver,提供了各種語言環境的API來支持更多控制權和編寫符合標准軟件開發實踐的應用程序。
4. Selenium的工作原理
webdriver是按照server–client的經典設計模式設計的:
1、server端就是remote server,可以是任意的瀏覽器:我們的腳本啟動瀏覽器后,該瀏覽器就是remote server,它的職責就是等待client發送請求並做出相應;
2、client端簡單說來就是我們的測試代碼:們測試代碼中的一些行為,比如打開瀏覽器,轉跳到特定的url等操作是以http請求的方式發送給被server端(也就是被測瀏覽器)server接受請求,並執行相應操作,並在response中返回執行狀態、返回值等信息;
簡單介紹一下webdriver的工作原理:
1、啟動瀏覽器后,selenium-webdriver會將目標瀏覽器綁定到特定的端口,啟動后的瀏覽器則作為webdriver的remote server。
2、客戶端(也就是測試腳本),借助ComandExecutor發送HTTP請求給sever端(通信協議:The WebDriver Wire Protocol,在HTTP request的body中,會以WebDriver Wire協議規定的JSON格式的字符串來告訴Selenium我們希望瀏覽器接下來做什么事情)。
3、Sever端需要依賴原生的瀏覽器組件,轉化Web Service的命令為瀏覽器native的調用來完成操作。
注:
the WebDriver Wire Protocol是Selenium自己設計定義的協議,這套協議非常之強大,幾乎可以操作瀏覽器做任何事情,包括打開、關閉、最大化、最小化、元素定位、元素點擊、上傳文件等。
WebDriver Wire協議是通用的,也就是說不管FirefoxDriver還是ChromeDriver,啟動之后都會在某一個端口啟動基於這套協議的Web Service。
例如FirefoxDriver初始化成功,默認從http://localhost:7055開始,IE則是http://localhost:52432
Selenium官網
https://www.seleniumhq.org/
開源中國Selenium社區
https://www.oschina.net/question/tag/selenium?show=time
public class TestDriver {
public static void main(String args[]) throws InterruptedException {
System.setProperty("webdriver.ie.driver", ".\\Tools\\IEDriverServer.exe");
WebDriver driver = new InternetExplorerDriver();
System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
System.setProperty("webdriver.Firefox.driver", ".\\Tools\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.get("http://www.baidu.com");
String s = driver.getTitle();
System.out.print(s);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
Thread.sleep(1000);
driver.close();
}
}
各個版本的Selenium standalone 下載鏈接
https://selenium-release.storage.googleapis.com/index.html
各個版本的chrome流浪器下載鏈接
http://npm.taobao.org/mirrors/chromedriver/
IEDriver
FireFox下載鏈接
做UI自動化測試,需要什么技能
①前端相關技術
HTML、XML、JavaScript、TCP/IP協議等
②一門編程語言
就像前面說的,selenium支持多種語言,根據個人情況以及項目的開發語言酌情選擇;
③合適的工具選型
比如selenium,比如UTF等;
④需求分析
項目類型,特質,生命周期,是否適合開展自動化測試等;