selenium開源功能測試工具
1.概述 Selenium是非常非常有用的,對 Java Script支持良好的Web層 功能測試 , 集成測試 工具。 Selenium分為Core與RC(Remote Controll)兩個部分,其中Core是基礎的,直接在HTML Table里編寫測試代碼的模塊,而Remote Controll則支持用Java等語言編寫 測試用
1.概述
Selenium是非常非常有用的,對
JavaScript支持良好的Web層
功能測試,
集成測試工具。
Selenium分為Core與RC(Remote Controll)兩個部分,其中Core是基礎的,直接在HTML Table里編寫測試代碼的模塊,而Remote Controll則支持用Java等語言編寫
測試用例,并自動調用FireFox1.5來運行。
具體的語法見http://www.openqa.org/selenium-core/usage.html
2.Better Practice
1. Never use Selenium FIT mode
Selenium分為兩種運行模式,Driven Mode(現在叫Selenium Remote Control)和FIT Mode(現在叫Selenium Core)。
FIT Mode顧名思義,就是類似FIT Testing Framework那種使用方式,主要用于QA等非技術人員編寫Web應用的功能測試。FIT Mode的Selenium測試使用HTML來組織測試用例。例如我要測試一個web應用的登陸功能。我可能寫出這樣的HTML 表格。
1
2
3
open |
4
http://localhost:8080/login |
5
|
6
7
8
type |
9
id=username |
10
someuser |
11
12
13
type |
14
id=password |
15
password |
16
17
18
click |
19
id=login_button |
20
|
21
22
23
assertTextPresent |
24
Welcome to xxxx |
25
|
26
27
不同于FIT,Selenium內置了一系列的命令,如上例中的open, type, click以及assertTextPresent,因此QA可以完全拋開DEV獨立地編寫測試(FIT需要DEV提供Behavior Fixture)。因此FIT Mode是相當容易使用的,哪怕不會使用HTML的QA,也可以使用FrontPage畫出三列表格,依次填入數據。
然而對于大多數team而言——尤其是
敏捷team,FIT Mode平易的外表下是令人恐懼的泥沼。大多數團隊往往選擇使用Selenium作為功能測試和集成
測試工具而不僅僅是QA測試工具,在不同的迭代間遇到功能流程或UI變化時,必須要重構Selenium測試,或者說,Functional Test Migration。令人遺憾的是,HTML based的Selenium FIT Testing的重構竟然令人難以置信的困難。我們可以使用include等Selenium FIT擴展,使得它可以重用詳細的功能(Log in, Log out諸如此類)。即便如此,在一個真實的項目中,Selenium Test的數量往往在200-500之間(我目前所處的項目在改用Driven Mode前已達350+),對于這么大基數的Selenium測試,手工重構幾乎是不可想象的,而目前尚沒有HTML代碼重構工具。即便存在泛泛意義上的HTML重構工具,對于Selenium測試重構的有效性尚待商榷。而使用Driven Mode上述代碼可以寫為:
1 public void testShouldShowAWeclomeMessageAfterUserLoggedIn() {
2 selenium.open("http://localhost:8080/login");
3 selenium.type("id=username","someuser");
4 selenium.type("id=password", "password");
5 selenium.click("id=login_button");
6 assertTrue(selenium.isTextPresent("Welcome to xxxx"));
7}
很自然,一個訓練有素的
程序員會重構出如下代碼:
原文轉自:http://www.anti-gravitydesign.com