關(guān)鍵字:集成測試工具
國內(nèi)大部分公司還依靠QA組的MM看著測試用例文檔來手工測試,如果錢人有限,又想改變現(xiàn)狀,實在的建議是先編寫直接訪問數(shù)據(jù)庫的商業(yè)層UnitTest和基于Selenium的集成測試這兩種實用性高的測試。
在徐昊指導(dǎo)下,SpringSide2.0 已經(jīng)全面應(yīng)用Selenium。
Selenium 能被選為好集成測試、回歸測試方案,是因為:
1.Selenium IDE ,一個FireFox plugin,能自動記錄用戶的操作,生成測試腳本。
2. 生成的測試腳本可以用Selenium Core手工執(zhí)行,也能基于Selenium RC放入Java,C#,Ruby的單元測試用例中自動運行。
3. 測試用例調(diào)用實際的瀏覽器(如IE、FireFox)來執(zhí)行測試。和有些開源方案自行實現(xiàn)Web解釋引擎相比,實際的瀏覽器能模擬更多用戶交互和JS語法,順便還可以測試各瀏覽器兼容性。
4. 測試腳本語法非常簡單,見后。
1. 使用Selenium IDE生成腳本
Selenium IDE 是一個Firefox1.5插件,下載后用Firefox將其打開。
工具->Selenium IDE,點擊紅色的recorder按鈕開始錄制,在網(wǎng)站中亂點時可以即時看到每個動作的腳本。
切換Format:顯示 HTML,Java,C#,Ruby 語法的腳本。 option里還可以設(shè)定Java里Selenium變量的名稱,如user。
2.測試用例與測試腳本
測試用例在Selenium IDE生成->Copy Paste的流程下非常的容易。
public class UserManagerTest extends TestCase
{
private Selenium user;
public void setUp() throws Exception {
user= new DefaultSelenium("localhost", SeleniumServer.DEFAULT_PORT, "*iexplore", "http://localhost:8080");
user.start();
}
protected void tearDown() throws Exception {
user.stop();
}
public void testUserEdit() {
user.open("/helloworld");
user.click("//a[contains(@href, ’user.do?id=0’)]");
user.waitForPageToLoad("3000");
user.type("user.name", "calvin");
user.click("save");
user.waitForPageToLoad("3000");
assertTrue(user.isTextPresent("calvin"));
}
留意setUp中的"*iexplore"參數(shù),設(shè)定使用IE作為測試瀏覽器;如果設(shè)為"*firefox",會在PATH中查找*firefox.exe。
注意,Selenium使用IE時的Proxy機制比較特殊,如果你同時在本機ADSL modem撥號上網(wǎng),要先斷網(wǎng)。
腳本中按徐昊的指導(dǎo),使用user 作為Selenium的變量名,使用例更加易讀。
Selenium提供了非常豐富的用戶交互函數(shù),但Selenium RC里并沒有為Java單列一個函數(shù)參考手冊,需要閱讀公共的Selenium Refrences,再使用同名對應(yīng)的java函數(shù)。
所有函數(shù)都是一個locator參數(shù),將操作付諸某個頁面上的對象。支持ID,DOM語法,XPath語法,CSS selector語法等,詳見參考手冊。
如果不會寫,好的老師還是Selenium IDE 。比如那句點擊 修改,是用IDE得到user.click("//a[contains(@href, ’user.do?id=0’)]")的XPath語句。
3.Ant的運行腳本
我寫的Ant測試腳本一個重要特征是使用 并行容器節(jié)點,一邊同時打開tomcat 和selenium server,一邊等待兩者打開后執(zhí)行JUnit。
如果不使用并行節(jié)點,而是用spawn=yes屬性后臺啟動tomcat,屏幕里看不到tomcat信息,如果測試意外終止的話,不能關(guān)閉tomcat,很不方便!
MINUTE" CHECKEVERY="1" CHECKEVERYUNIT="SECOND">
4.SpringSide 中的FunctionalTestCase基類
SpringSide中抽象了一個FunctionalTestCase基類,抽取了setUp() ,tearDown()函數(shù)中selenium server 開閉操作。
其中瀏覽器類型默認(rèn)為"*iexplore", 基本url默認(rèn)為http://localhost:8080
用戶可以在selenium.properties 中重新設(shè)定selenium.explorer 和selenium.baseurl 變量。