国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

自動化測試工具

tuniutech / 977人閱讀

摘要:自己寫一個程序來自動生成測試數據,因為每個個人作業的要求不一樣,自動化框架無法對每種程序都生成測試數據,目前只支持生成按規則生成隨機的字符串測試集。

作者:Grey

原文地址:自動化測試工具

自動化測試框架可以用于

  • 自動克隆項目
  • 編譯項目
  • 執行項目
  • 評分(需要實現自定義接口)
  • 性能測試(需要規定在同一個人的電腦上執行所有同學的程序,否則會因為電腦配置不一樣導致結果不一樣)
  • 生成CSV格式報表(需要實現自定義接口)
  • 查重(需要申請moss賬戶,且只支持特定的語言:c, cc, java, ml, pascal, ada,lisp, schema, haskell, fortran, ascii, vhdl, perl, matlab, python, mips, prolog, spice, vb, csharp, modula2, a8086, javascript,plsql)

目前,項目代碼已經分好模塊,不僅可以測試WordCount作業,對于固定輸入輸出的個人作業都可以支持,不過有了自動化測試工具,助教還需要做的事情是:

  1. 作業要求中必須規定好語言版本,如果要支持查重,語言只能限制在moss支持的語言列表中。
  2. 自己實現一版個人作業作為對數器。
  3. 自己寫一個程序來自動生成測試數據,因為每個個人作業的要求不一樣,自動化框架無法對每種程序都生成測試數據,目前只支持生成按規則生成隨機的字符串測試集。
  4. 要制定評分規則(自動化框架已經預留了接口,實現Judge接口即可)
  5. 制定最后報表的格式(自動化框架已經預留了接口,實現ReportData接口即可)
  6. 申請一個moss賬號,用于查重,具體可見:Use MOSS On Your Computer- 如何使用MOSS代碼剽竊檢測系統

代碼結構說明

  • autotest
    • autotest-core

      框架核心代碼,預留接口以及擴展點,常用工具類

    • app-wordcount

      wordcount作業測試項目,實現了wordcount測試的數據集準備,評分規則,導出csv報表規則,這個模塊依賴于autotest-core

后續每次增加一個個人作業,都可以以app-wordcount為例,新建一個maven模塊,命名為: app-xxx,其中xxx就是個人作業的具體名稱。這個app-xxx模塊依賴autotest-core模塊,實現其接口即可。

下面以自動化測試WordCount作業為例,來說明如何使用自動化測試框架

支持的語言

理論上可以支持C++,Java,Python,NodeJS 任意版本的程序,因為測試程序中可以配置不同語言的執行環境

以下是我們測試通過后的語言版本

語言版本
Java1.8
C++3.9.2
Pythongc++ 6.3.0
NodeJSv10.15.3

實現的功能

克隆項目

從指定倉庫克隆項目,由于訪問Github的網絡經常不穩定,也支持我們先預備好項目的倉庫,不從Github實時下載。

生成測試數據

  • 可以生成指定長度的隨機ASCII碼字符串
  • 可以將我們指定長度的測試數據寫入指定位置的指定數量的文本文件中,這些文本文件將作為后續的測試用例文件。

注:這里針對不同的項目需要生成的測試數據不一樣,wordcount需要生成的數據

編譯

這里的編譯和以下的運行都是有如下兩個前置要求:

  1. 作業中必須明確要求入口文件的文件名是什么,以Java為例,就是Main方法所在的類文件的文件名是什么,以WordCount作業為例,我們要求學生的主函數必須定義在src目錄下一個名叫WordCount.java文件中,因為這樣我們才知道要運行哪個文件來執行測試用例。

  2. 助教在自己機器上運行的時候,必須要有對應語言的編譯和運行的環境且要規定好一致的語言版本。否則編譯這一關會有很多問題導致無法運行學生的代碼。

編譯時候會設置對應的超時時間,不同的語言可以設置不一樣的編譯超時時間,以Java為例,默認編譯超時時間是5秒鐘

運行

見編譯部分提到的兩點要求。

運行的時候也會設置對應的超時時間,不同的語言針對不一樣的測試用例可以設置不一樣的運行時間,超過這個時間,會直接將學生這個用例的耗時數設置為-2,-2表示耗時的記錄。

評分

  • 每個用例的得分以及匯總得分
  • 執行每個用例的耗時

注:我們統計的耗時是運行部分的耗時,不包括編譯的耗時。

導出結果到CSV

  • 分數
  • 耗時
  • Git提交記錄
    • 提交次數
    • 每次提交的commit信息

效果預覽

其中:

StudentNo: 表示學生學號的后五位

Score:匯總分數,即Score1 + Score2 + … + Scorei 之和

Scorei:表示第i個用例的得分

Timei:表示第i個用例的耗時

commit_times:表示每個學生的提交次數

commit_details:表示每個學生的提交信息,JSON格式

使用方式

目前沒有將項目打包,還是以源碼的方式運行,主要是方便調試和改代碼,后續會完善打包運行。

我們必須先規定好測試代碼的位置,以WordCount項目為例,所有同學的代碼都以學號命名收集到如下倉庫中:

https://github.com/kofyou/PersonalProject-Java.git

目錄結構為:

PersonalProject-Java

  • 學號1
    • src
      • WordCount.java
  • 學號2
    • src
      • WordCount.java
      • Lib.java
  • 學號3
    • src
      • WordCount.java

克隆代碼

git clone https://github.com/GreyZeng/WordCountAutoTest.git

克隆完畢后,用Jetbrains IDEA 打開文件WordCountAutoTest,并且在WordCountAutoTest下新建download文件夾,如下圖:

在download文件夾下新建一個judge文件夾,里面放對數程序,這個對數程序的目的就是,把測試用例的答案算出來,

這個對數程序要保證正確!!!最好多個助教一起做一下題目,然后互相驗證沒問題了,在把對數程序放上去

PS:對數程序請不要提交到Github,防止學生抄襲!

如上圖,我放了一個對數程序WordCount.java

將:/resources/config.default文件復制一份,重命名為:config.properties

關注并確認config.properties中的如下幾個參數,其他參數可以參考注釋進行修改:

# 默認測試用例的數量TESTCASE_NUM=10# 測試文本的最少字符數TEXT_MIN_LENGTH=100# 測試文本的最大字符數量TEXT_MAX_LENGTH=1000000# 是否需要對數程序解答,如果準備好了case和答案,則可以把這個選項設置為falseNEED_ANSWER=true# 是否需要克隆,如果設置為true,則會使用CLONE_URL到一個目錄進行操作# 如果設置為false,則會使用LOCAL_URINEED_CLONE=false# 需要clone的學生倉庫地址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數量的測試用例和對應答案,文件名稱從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 分別對應cases下面的三個文件的答案LOCAL_URI=C://git//autotest//download//1616838383549//PersonalProject-JavaJUDGE_PROGRAM=C://git//autotest//download//judge

修改好配置參數后,直接在IDEA里面Run Client.java,等待執行完畢即可。

說明:運行的時候,會在之前download的目錄以當前時間戳建一個文件夾,這樣做的目的是保證每次運行不會有文件夾沖突。

執行完畢后,按如下目錄找需要的信息:

目錄說明
download/時間戳/cases/存放用例的位置
download/時間戳/answers/存放答案的位置
download/時間戳/PersonalProject-Java/項目目錄
download/時間戳/PersonalProject-Java/學號/output/每個學號的學生的執行用例的輸出文件夾
download/時間戳/result/result.csv本次測評的csv文件
WordCountAutoTest/log日志記錄文件夾

查重

使用的是moss 組件,需要申請一個moss賬號

使用方法,參考:

QuickStart.java

源碼地址

Github

CSDN

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/122094.html

相關文章

  • #yyds干貨盤點# 動化測試

    摘要:正確合理地實施自動化測試,能夠快速全面地對軟件進行測試,從而提高軟件質量,節省經費,縮短產品發布周期。自動化測試工具能實現百分之百的測試覆蓋率。年題以下測試項目不適合采用自動化測試的是。故正確答案為年題自動化測試的優勢不包括。 自動化測試是近些年的一個熱點,為了更加快速、有效地對軟件進行測試,提高軟件產品的質量,必然會利用...

    不知名網友 評論0 收藏0
  • 100天漲薪4k!從功能測試動化測試,我整理的超全學習指南!

    摘要:事實上,自動化測試是相對于手動的。減少人為的錯誤自動化測試是機器完成,不存在執行過程中人為的疏忽和錯誤,測試設計完全決定了測試的質量,可以降低減少人為造成的錯誤。而接口自動化測試,主要是對接口進行測試。 今年6月份,由于經濟壓力讓我下定決心進階自動化測試,已經24的我做了3年功能測試,坐標廣...

    TwIStOy 評論0 收藏0
  • 動化測試框架指南

    摘要:基于各種測試的理想測試自動化框架的主要組成部分是測試庫單元測試單元測試庫可用于塑造任何測試自動化框架的重要組成部分。構建工具旨在幫助您從源代碼和支持庫開發自動化軟件,并運行測試。 ...

    tulayang 評論0 收藏0
  • 程序人生:軟件測試工程師,如何從手工測試轉成動化測試?這可能是每個測試要走的路...

    摘要:而現實是,很多團隊在實施自動化測試的過程中,并未取得良好的質量效果,這主要是因為學習自動化測試有兩大難點自動化測試本身擁有一定的技術門檻最大的難點是需要大量的實戰經驗。 ...

    Reducto 評論0 收藏0
  • 2018 最好的動化測試工具(Top 10 回顧)

    摘要:自動化測試工具可能是網頁應用中最流行的開源自動化測試框架。證書商業是一個開源的自動化測試框架,它實現了關鍵字測試驅動來實現測試驅動開發。 showImg(https://segmentfault.com/img/bVYz7D?w=1200&h=627); 簡評:軟件開發實踐一直以來都在變化,工具和技術也是如此。這些改變都是為了提高生產率,質量,讓客戶滿意,縮短交付時間,以及交付成功的產...

    waltr 評論0 收藏0
  • 3年軟件測試經驗突顯迷茫...不知道我這種測試人員是不是被淘汰???

    這兩天和朋友談到軟件測試的發展:這一行的變化確實蠻大,從開始最基礎的功能測試,到現在自動化、性能、安全乃至于以后可能出現的大數據測試、AI測試崗位需求逐漸增多。我也在軟件測試這行摸爬滾打了十年了,正好有朋友問我:如何快速成為互聯網時代優秀的測試工程師呢?趁著最近終于有了些閑余時間,遂總結了下自動化測試的成長線路圖和職業必備技能,希望可以幫助各位少走彎路、破繭成蝶、邁向成功。 下面我來分享下自動化測...

    fasss 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<