本自動化測試的程序用於自動化測試WordCount做業,採用Java開發(基於jdk1.8+),基於Maven來管理項目。java
語言 | 進度 |
---|---|
Java | 已測試並投入運行 |
C++ | 開發完畢,待測試 |
Python | 開發中 |
NodeJS | 待開發 |
從指定倉庫克隆項目,因爲訪問Github的網絡常常不穩定,也支持咱們先預備好項目的倉庫,不從Github實時下載。git
這裏的編譯和如下的運行都是有以下兩個前置要求:github
編譯時候會設置對應的超時時間,不一樣的語言能夠設置不同的編譯超時時間,以Java爲例,默認編譯超時時間是5秒鐘bash
見編譯部分提到的兩點要求。服務器
運行的時候也會設置對應的超時時間,不一樣的語言針對不同的測試用例能夠設置不同的運行時間,超過這個時間,會直接將學生這個用例的耗時數設置爲-2,-2表示耗時的記錄。網絡
注:咱們統計的耗時是運行部分的耗時,不包括編譯的耗時。多線程
其中:函數
StudentNo: 表示學生學號的後五位測試
Score:彙總分數,即Score1 + Score2 + … + Scorei 之和線程
Scorei:表示第i個用例的得分
Timei:表示第i個用例的耗時
commit_times:表示每一個學生的提交次數
commit_details:表示每一個學生的提交信息,JSON格式
目前沒有將項目打包,仍是以源碼的方式運行,主要是方便調試和改代碼,後續會完善打包運行。
咱們必須先規定好測試代碼的位置,以WordCount項目爲例,全部同窗的代碼都以學號命名收集到以下倉庫中:
https://github.com/kofyou/PersonalProject-Java.git
目錄結構爲:
PersonalProject-Java
…
克隆代碼
git clone https://github.com/GreyZeng/WordCountAutoTest.git
克隆完畢後,用Jetbrains IDEA 打開文件WordCountAutoTest,而且在WordCountAutoTest下新建download文件夾,以下圖:
在download文件夾下新建一個judge文件夾,裏面放對數程序,這個對數程序的目的就是,把測試用例的答案算出來,
這個對數程序要保證正確!!!最好多個助教一塊兒作一下題目,而後互相驗證沒問題了,在把對數程序放上去。
PS:對數程序請不要提交到Github,防止學生抄襲!
如上圖,我放了一個對數程序WordCount.java
關注並確認Client.java類中的以下幾個參數,其餘參數能夠參考註釋進行修改,通常不須要改:
參數名稱 | 備註 |
---|---|
NEED_CLONE | 設置爲true,會不斷重試clone代碼倉庫 |
CLONE_URL | 改爲對應的地址,例如:https://github.com/kofyou/PersonalProject-Java.git |
JUDGE_PROGRAM | 改爲對數程序的絕對路徑地址,例如:"D:\git\WordCountAutoTest\download\judge" |
TESTCASE_NUM | 默認測試用例的數量,默認10個 |
TEXT_MIN_LENGTH | 測試文本的最少字符數,默認100個字符 |
TEXT_MAX_LENGTH | 測試文本的最大字符數量,默認1000000個字符 |
修改好配置參數後,直接在IDEA裏面Run Client.java,等待執行完畢便可。
說明:運行的時候,會在以前download的目錄以當前時間戳建一個文件夾,這樣作的目的是保證每次運行不會有文件夾衝突。
執行完畢後,按以下目錄找須要的信息:
目錄 | 說明 |
---|---|
download/時間戳/cases/ | 存放用例的位置 |
download/時間戳/answers/ | 存放答案的位置 |
download/時間戳/PersonalProject-Java/ | 項目目錄 |
download/時間戳/PersonalProject-Java/學號/output/ | 每一個學號的學生的執行用例的輸出文件夾 |
download/時間戳/result/result.csv | 本次測評的csv文件 |
WordCountAutoTest\log | 日誌記錄文件夾 |