昨天是軟體測試這門課第一次上機,有一個來自oracle公司的學長給我們簡單介紹了一下ANT這個開源軟體,講了兩個小時,其實也就懂了皮毛而已,配置和運行稀裡糊塗的學會了,可現在還是不太懂這個軟體對我們的.NET下開發的網站有什麼作用。算了,還是先說說ANT學習過程吧。
下載不用多說,去官網就能下到。下載下來以後建議直接放在D盤根目錄下,然後就解壓在這裡(無須安裝,解壓即可),這樣以後會很省事,這個是學長說的,其實我也不清楚省事在哪裡,可能就是好找吧。JDK需要下載,這個是必須的,建議去安裝最新的JDK1.6.0_20(學長說是最新的),安裝的時候選擇預設選項就好,裝在C盤我覺得沒什麼不好,這種重要的東西還是放在C盤為好。
下面就是配置系統內容變數了,估計學過JAVA的人都知道如何配置,我在這裡就說一下要填什麼東西,相信大家都知道在哪裡能配置環境變數(我的電腦右擊—>XXX–>XXX),直接在使用者變數上面配置,建立ANT_HOME,JDK_HOME,JAVA_HOME項然後修改PATH,具體內容如下
ANT_HOME:D:/SeleniumFramework_BIT/apache-ant-1.8.1 (這個路徑是ANT檔案夾所在路徑,這裡是學長給的檔案包,僅僅是一個例子而已)
JAVA_HOME:C:/Program Files/Java/jdk1.6.0_20
JDK_HOME:C:/Program Files/Java/jdk1.6.0_20
PATH:%ANT_HOME%/bin;%JAVA_HOME%/bin;%JAVA_HOME%/jre/bin
配置好以後,進入CMD模式下,輸入ANT,當提示出現
就表面配置成功了。
在昨天的配置環節沒有學過JAVA的童鞋耗費了過多時間,以至於後面內容進展緩慢。在ANT的使用這裡,學長給了我們一個例子(他說是他自己寫的),其實在網上也有很多類似的例子,比如ANT入門。這裡我就有學長給的例子為例。
可以看到這裡有xml檔案,txt檔案還有幾個檔案夾以及其他檔案,但真正與ANT運行直接相關的其實是三個而已(其他的可能是需要的包或者被調用的檔案),分別是src檔案夾,para.xml,test.xml。在啟動並執行時候輸入:
ant -buildfile (這裡填你的檔案路徑名) 我這裡是 ant -buildfile D:/SeleniumFramework_BIT/ocscore/projects/qa-nls/bcentral/selenium/test.xml
這樣就能build這個工程了,在build的過程中,ant首先是運行src檔案夾下的程式(該例子中只有一個JAVA檔案),這裡給出src檔案下的LoginLogoffTest.java代碼
這樣就能build這個工程了,在build的過程中,ant首先是運行src檔案夾下的程式(該例子中只有一個JAVA檔案),這裡給出src檔案下的LoginLogoffTest.java代碼
package oracle.ocs.selenium;import org.apache.tools.ant.taskdefs.WaitFor;import com.thoughtworks.selenium.*;import java.awt.Robot;import java.awt.event.KeyEvent;import java.io.File;import java.io.FileInputStream;import java.util.Properties;import java.io.FileNotFoundException;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.*;import com.oracle.qafunc.*;import oracle.ocs.qa.framework.junit.OcsTimeOutTestCase;import oracle.ocs.qa.framework.junit.annotation.Area;import oracle.ocs.qa.framework.junit.annotation.Level;import oracle.ocs.qa.framework.junit.annotation.Owner;import oracle.ocs.qa.framework.junit.annotation.TestLevel;import oracle.ocs.qa.framework.junit.annotation.TestType;import oracle.ocs.qa.framework.junit.annotation.Type;@Owner(“mingzhu.niu@oracle.com“)@Area(“Mail -> test”)@Level(TestLevel.SANITY)@Type(TestType.FUNCTIONAL)public class LoginLogoffTest extends OcsTimeOutTestCase{public oracle.ocs.qa.framework.junit.OcsTestResult testResult;private Selenium selenium;private Properties config;private Robot rb;private Mail mail;private String testname = null;public static int PASS;public static int FAIL;private String testArea=null;public LoginLogoffTest(String name){super(name, 8000000);}protected void setUp() throws Exception {super.setUp();init();selenium.start(“captureNetworkTraffic=true, addCustomRequestHeader=true”);selenium.setSpeed(“4000″);System.out.println(“Start successfully!”);}public void init() throws Exception {System.out.print(getCfgParam(“browser”));config = parseArgs();testResult = m_result;mail = new Mail(config, testResult);PASS = getCfgIntParam(“pass”);FAIL = getCfgIntParam(“fail”);rb = new Robot();rb.setAutoDelay(100);String browser = null;if (getCfgParam(“browser”).equalsIgnoreCase(“ie”)) {browser = “*iexploreproxy”;} else if (getCfgParam(“browser”).equalsIgnoreCase(“firefox”)) {browser = “*firefox”;} else if (getCfgParam(“browser”).equalsIgnoreCase(“chrome”)) {browser = “*chrome”;} else if (getCfgParam(“browser”).equalsIgnoreCase(“iehta”)) {browser = “*iehta”;}else if (getCfgParam(“browser”).equalsIgnoreCase(“Safari”)) {browser = “*safari”;}else if (getCfgParam(“browser”).equalsIgnoreCase(“custom”)) {browser = “*custom”;} elsebrowser = “*chrome”;selenium = new DefaultSelenium(“localhost”, getCfgIntParam(“seleniumServerPort”) , browser + ” “+getCfgParam(getCfgParam(“browserVersion”)), “http://”+getCfgParam(“server”)+”:”+getCfgParam(“port“));testname = getCfgParam(“testname”);Date nowTime = new Date();testname = testname + nowTime.toString();System.out.println(“Init selenium.”);}public Properties parseArgs() throws Exception {Properties result = new Properties();result.setProperty(“user”, getCfgParam(“user”));result.setProperty(“server”, getCfgParam(“server”));result.setProperty(“mode”, getCfgParam(“mode”));result.setProperty(“testname”, getCfgParam(“testname”));result.setProperty(“password”, getCfgParam(“password”));//result.setProperty(“email”, getCfgParam(“email”));result.setProperty(“browser”, getCfgParam(“browser”));result.setProperty(“port”, getCfgParam(“port”));//result.setProperty(“Logoff_link_XPath”, getCfgParam(“Logoff_link_XPath”));return result;}public void checkErrorDialog() {if (!mail.checkErrorDialog(selenium, rb)) {fail(“Error Dialog come out!”);}}@Area(“Test”)@Level(TestLevel.SANITY)@Type(TestType.FUNCTIONAL)public void testLogin() throws Throwable {testArea=”Login”;System.out.println(“enter testmail”);selenium.open(“/”);//selenium.waitForPageToLoad(“30000″);System.out.println(“open the mail”);System.out.println(“user” + getCfgParam(“user”));//—————login——————————–mail.loginMail(selenium);mail.verifyLogin(selenium);}protected void tearDown() throws Exception {super.tearDown();selenium.stop();}}
在該檔案下,通過調用para.xml檔案下的參數,實現了值的傳遞,可能是把值傳到test.xml檔案下。然後這個工程就能跑起來了。所有一個ANT工程執行過程應該是
src下的各種JAVA檔案(可能調用其他檔案擷取值)——>build.xml
說實話,我對ANT也是不太瞭解,進階的東西肯定不會,只能上網查了。正如昨天學長和我們說的那樣,在公司裡,老闆不會教你如何去做,只是把任務交給你而已,管你用什麼方式完成,只要你能完成就好。所以還是自學吧。
下面摘錄網上的一篇關於ANT學習文章的最後一段送給大家:
如何繼續學習
掌握了上邊的那些內容之後,你就知道如何去寫一個好的ant,但是你會發現當你真的想去做的時候,你不能馬上作出好的build.xml,因為你知道太少的ant的預設提供的命令.這個時候如果你想完成任務,並提高自己,有很多辦法:
1,很多開源的程式都帶有build.xml,看看它們如何寫的
2,ant的document,裡邊詳細列寫了ant的各種預設命令,及其豐富
3,google,永遠不要忘記它
ok,在這之後隨著你寫的ant build越來越多,你知道的命令就越多,ant在你的手裡也就越來越強大了。
這個是一個慢慢積累的過程。
至於如何用ANT進行.net網站測試,希望星期日下午上機的時候學長會給我們講清楚