摘要:自己寫一個程序來自動生成測試數(shù)據(jù),因為每個個人作業(yè)的要求不一樣,自動化框架無法對每種程序都生成測試數(shù)據(jù),目前只支持生成按規(guī)則生成隨機的字符串測試集。
作者:Grey
原文地址:自動化測試工具
自動化測試框架可以用于
目前,項目代碼已經(jīng)分好模塊,不僅可以測試WordCount作業(yè),對于固定輸入輸出的個人作業(yè)都可以支持,不過有了自動化測試工具,助教還需要做的事情是:
框架核心代碼,預(yù)留接口以及擴展點,常用工具類
wordcount作業(yè)測試項目,實現(xiàn)了wordcount測試的數(shù)據(jù)集準備,評分規(guī)則,導(dǎo)出csv報表規(guī)則,這個模塊依賴于autotest-core
后續(xù)每次增加一個個人作業(yè),都可以以app-wordcount為例,新建一個maven模塊,命名為: app-xxx,其中xxx就是個人作業(yè)的具體名稱。這個app-xxx模塊依賴autotest-core模塊,實現(xiàn)其接口即可。
下面以自動化測試WordCount作業(yè)為例,來說明如何使用自動化測試框架
理論上可以支持C++,Java,Python,NodeJS 任意版本的程序,因為測試程序中可以配置不同語言的執(zhí)行環(huán)境
以下是我們測試通過后的語言版本
語言 | 版本 |
---|---|
Java | 1.8 |
C++ | 3.9.2 |
Python | gc++ 6.3.0 |
NodeJS | v10.15.3 |
從指定倉庫克隆項目,由于訪問Github的網(wǎng)絡(luò)經(jīng)常不穩(wěn)定,也支持我們先預(yù)備好項目的倉庫,不從Github實時下載。
注:這里針對不同的項目需要生成的測試數(shù)據(jù)不一樣,wordcount需要生成的數(shù)據(jù)
這里的編譯和以下的運行都是有如下兩個前置要求:
作業(yè)中必須明確要求入口文件的文件名是什么,以Java為例,就是Main方法所在的類文件的文件名是什么,以WordCount作業(yè)為例,我們要求學(xué)生的主函數(shù)必須定義在src目錄下一個名叫WordCount.java文件中,因為這樣我們才知道要運行哪個文件來執(zhí)行測試用例。
助教在自己機器上運行的時候,必須要有對應(yīng)語言的編譯和運行的環(huán)境且要規(guī)定好一致的語言版本。否則編譯這一關(guān)會有很多問題導(dǎo)致無法運行學(xué)生的代碼。
編譯時候會設(shè)置對應(yīng)的超時時間,不同的語言可以設(shè)置不一樣的編譯超時時間,以Java為例,默認編譯超時時間是5秒鐘
見編譯部分提到的兩點要求。
運行的時候也會設(shè)置對應(yīng)的超時時間,不同的語言針對不一樣的測試用例可以設(shè)置不一樣的運行時間,超過這個時間,會直接將學(xué)生這個用例的耗時數(shù)設(shè)置為-2,-2表示耗時的記錄。
注:我們統(tǒng)計的耗時是運行部分的耗時,不包括編譯的耗時。
其中:
StudentNo: 表示學(xué)生學(xué)號的后五位
Score:匯總分數(shù),即Score1 + Score2 + … + Scorei 之和
Scorei:表示第i個用例的得分
Timei:表示第i個用例的耗時
commit_times:表示每個學(xué)生的提交次數(shù)
commit_details:表示每個學(xué)生的提交信息,JSON格式
目前沒有將項目打包,還是以源碼的方式運行,主要是方便調(diào)試和改代碼,后續(xù)會完善打包運行。
我們必須先規(guī)定好測試代碼的位置,以WordCount項目為例,所有同學(xué)的代碼都以學(xué)號命名收集到如下倉庫中:
https://github.com/kofyou/PersonalProject-Java.git
目錄結(jié)構(gòu)為:
PersonalProject-Java
…
克隆代碼
git clone https://github.com/GreyZeng/WordCountAutoTest.git
克隆完畢后,用Jetbrains IDEA 打開文件WordCountAutoTest,并且在WordCountAutoTest下新建download文件夾,如下圖:
在download文件夾下新建一個judge文件夾,里面放對數(shù)程序,這個對數(shù)程序的目的就是,把測試用例的答案算出來,
這個對數(shù)程序要保證正確?。。∽詈枚鄠€助教一起做一下題目,然后互相驗證沒問題了,在把對數(shù)程序放上去。
PS:對數(shù)程序請不要提交到Github,防止學(xué)生抄襲!
如上圖,我放了一個對數(shù)程序WordCount.java
將:/resources/config.default文件復(fù)制一份,重命名為:config.properties
關(guān)注并確認config.properties中的如下幾個參數(shù),其他參數(shù)可以參考注釋進行修改:
# 默認測試用例的數(shù)量TESTCASE_NUM=10# 測試文本的最少字符數(shù)TEXT_MIN_LENGTH=100# 測試文本的最大字符數(shù)量TEXT_MAX_LENGTH=1000000# 是否需要對數(shù)程序解答,如果準備好了case和答案,則可以把這個選項設(shè)置為falseNEED_ANSWER=true# 是否需要克隆,如果設(shè)置為true,則會使用CLONE_URL到一個目錄進行操作# 如果設(shè)置為false,則會使用LOCAL_URINEED_CLONE=false# 需要clone的學(xué)生倉庫地址CLONE_URL=https://github.com/kofyou/PersonalProject-Java.git# 本地準備好的倉庫地址:例如: "D://git//WordCountAutoTest//download//1615421924089//PersonalProject-Java"# 同時需要在這個倉庫的父目錄,即:"D://git//WordCountAutoTest//download//1615421924089" 新建兩個文件夾,分別是cases和answers# 并且在cases文件夾和answers文件夾準備好TESTCASE_NUM數(shù)量的測試用例和對應(yīng)答案,文件名稱從1.txt,2.txt ... n.txt 開始命名# 比如TESTCASE_NUM = 3, 那么# D://git//WordCountAutoTest//download//1615421924089//cases 下有三個txt文件: 1.txt, 2.txt, 3.txt# D://git//WordCountAutoTest//download//1615421924089//answers 下也有三個txt文件,1.txt, 2.txt, 3.txt 分別對應(yīng)cases下面的三個文件的答案LOCAL_URI=C://git//autotest//download//1616838383549//PersonalProject-JavaJUDGE_PROGRAM=C://git//autotest//download//judge
修改好配置參數(shù)后,直接在IDEA里面Run Client.java,等待執(zhí)行完畢即可。
說明:運行的時候,會在之前download的目錄以當前時間戳建一個文件夾,這樣做的目的是保證每次運行不會有文件夾沖突。
執(zhí)行完畢后,按如下目錄找需要的信息:
目錄 | 說明 |
---|---|
download/時間戳/cases/ | 存放用例的位置 |
download/時間戳/answers/ | 存放答案的位置 |
download/時間戳/PersonalProject-Java/ | 項目目錄 |
download/時間戳/PersonalProject-Java/學(xué)號/output/ | 每個學(xué)號的學(xué)生的執(zhí)行用例的輸出文件夾 |
download/時間戳/result/result.csv | 本次測評的csv文件 |
WordCountAutoTest/log | 日志記錄文件夾 |
使用的是moss 組件,需要申請一個moss賬號
使用方法,參考:
QuickStart.java
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/122094.html
摘要:正確合理地實施自動化測試,能夠快速全面地對軟件進行測試,從而提高軟件質(zhì)量,節(jié)省經(jīng)費,縮短產(chǎn)品發(fā)布周期。自動化測試工具能實現(xiàn)百分之百的測試覆蓋率。年題以下測試項目不適合采用自動化測試的是。故正確答案為年題自動化測試的優(yōu)勢不包括。 自動化測試是近些年的一個熱點,為了更加快速、有效地對軟件進行測試,提高軟件產(chǎn)品的質(zhì)量,必然會利用...
摘要:事實上,自動化測試是相對于手動的。減少人為的錯誤自動化測試是機器完成,不存在執(zhí)行過程中人為的疏忽和錯誤,測試設(shè)計完全決定了測試的質(zhì)量,可以降低減少人為造成的錯誤。而接口自動化測試,主要是對接口進行測試。 今年6月份,由于經(jīng)濟壓力讓我下定決心進階自動化測試,已經(jīng)24的我做了3年功能測試,坐標廣...
摘要:而現(xiàn)實是,很多團隊在實施自動化測試的過程中,并未取得良好的質(zhì)量效果,這主要是因為學(xué)習(xí)自動化測試有兩大難點自動化測試本身擁有一定的技術(shù)門檻最大的難點是需要大量的實戰(zhàn)經(jīng)驗。 ...
摘要:自動化測試工具可能是網(wǎng)頁應(yīng)用中最流行的開源自動化測試框架。證書商業(yè)是一個開源的自動化測試框架,它實現(xiàn)了關(guān)鍵字測試驅(qū)動來實現(xiàn)測試驅(qū)動開發(fā)。 showImg(https://segmentfault.com/img/bVYz7D?w=1200&h=627); 簡評:軟件開發(fā)實踐一直以來都在變化,工具和技術(shù)也是如此。這些改變都是為了提高生產(chǎn)率,質(zhì)量,讓客戶滿意,縮短交付時間,以及交付成功的產(chǎn)...
這兩天和朋友談到軟件測試的發(fā)展:這一行的變化確實蠻大,從開始最基礎(chǔ)的功能測試,到現(xiàn)在自動化、性能、安全乃至于以后可能出現(xiàn)的大數(shù)據(jù)測試、AI測試崗位需求逐漸增多。我也在軟件測試這行摸爬滾打了十年了,正好有朋友問我:如何快速成為互聯(lián)網(wǎng)時代優(yōu)秀的測試工程師呢?趁著最近終于有了些閑余時間,遂總結(jié)了下自動化測試的成長線路圖和職業(yè)必備技能,希望可以幫助各位少走彎路、破繭成蝶、邁向成功。 下面我來分享下自動化測...
閱讀 2930·2021-11-25 09:43
閱讀 1148·2021-10-11 10:57
閱讀 2620·2020-12-03 17:20
閱讀 3889·2019-08-30 14:05
閱讀 2525·2019-08-29 14:00
閱讀 2058·2019-08-29 12:37
閱讀 1757·2019-08-26 11:34
閱讀 3298·2019-08-26 10:27