成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

自動(dòng)化測(cè)試工具

tuniutech / 984人閱讀

摘要:自己寫(xiě)一個(gè)程序來(lái)自動(dòng)生成測(cè)試數(shù)據(jù),因?yàn)槊總€(gè)個(gè)人作業(yè)的要求不一樣,自動(dòng)化框架無(wú)法對(duì)每種程序都生成測(cè)試數(shù)據(jù),目前只支持生成按規(guī)則生成隨機(jī)的字符串測(cè)試集。

作者:Grey

原文地址:自動(dòng)化測(cè)試工具

自動(dòng)化測(cè)試框架可以用于

  • 自動(dòng)克隆項(xiàng)目
  • 編譯項(xiàng)目
  • 執(zhí)行項(xiàng)目
  • 評(píng)分(需要實(shí)現(xiàn)自定義接口)
  • 性能測(cè)試(需要規(guī)定在同一個(gè)人的電腦上執(zhí)行所有同學(xué)的程序,否則會(huì)因?yàn)殡娔X配置不一樣導(dǎo)致結(jié)果不一樣)
  • 生成CSV格式報(bào)表(需要實(shí)現(xiàn)自定義接口)
  • 查重(需要申請(qǐng)moss賬戶,且只支持特定的語(yǔ)言:c, cc, java, ml, pascal, ada,lisp, schema, haskell, fortran, ascii, vhdl, perl, matlab, python, mips, prolog, spice, vb, csharp, modula2, a8086, javascript,plsql)

目前,項(xiàng)目代碼已經(jīng)分好模塊,不僅可以測(cè)試WordCount作業(yè),對(duì)于固定輸入輸出的個(gè)人作業(yè)都可以支持,不過(guò)有了自動(dòng)化測(cè)試工具,助教還需要做的事情是:

  1. 作業(yè)要求中必須規(guī)定好語(yǔ)言版本,如果要支持查重,語(yǔ)言只能限制在moss支持的語(yǔ)言列表中。
  2. 自己實(shí)現(xiàn)一版?zhèn)€人作業(yè)作為對(duì)數(shù)器。
  3. 自己寫(xiě)一個(gè)程序來(lái)自動(dòng)生成測(cè)試數(shù)據(jù),因?yàn)槊總€(gè)個(gè)人作業(yè)的要求不一樣,自動(dòng)化框架無(wú)法對(duì)每種程序都生成測(cè)試數(shù)據(jù),目前只支持生成按規(guī)則生成隨機(jī)的字符串測(cè)試集。
  4. 要制定評(píng)分規(guī)則(自動(dòng)化框架已經(jīng)預(yù)留了接口,實(shí)現(xiàn)Judge接口即可)
  5. 制定最后報(bào)表的格式(自動(dòng)化框架已經(jīng)預(yù)留了接口,實(shí)現(xiàn)ReportData接口即可)
  6. 申請(qǐng)一個(gè)moss賬號(hào),用于查重,具體可見(jiàn):Use MOSS On Your Computer- 如何使用MOSS代碼剽竊檢測(cè)系統(tǒng)

代碼結(jié)構(gòu)說(shuō)明

  • autotest
    • autotest-core

      框架核心代碼,預(yù)留接口以及擴(kuò)展點(diǎn),常用工具類(lèi)

    • app-wordcount

      wordcount作業(yè)測(cè)試項(xiàng)目,實(shí)現(xiàn)了wordcount測(cè)試的數(shù)據(jù)集準(zhǔn)備,評(píng)分規(guī)則,導(dǎo)出csv報(bào)表規(guī)則,這個(gè)模塊依賴(lài)于autotest-core

后續(xù)每次增加一個(gè)個(gè)人作業(yè),都可以以app-wordcount為例,新建一個(gè)maven模塊,命名為: app-xxx,其中xxx就是個(gè)人作業(yè)的具體名稱(chēng)。這個(gè)app-xxx模塊依賴(lài)autotest-core模塊,實(shí)現(xiàn)其接口即可。

下面以自動(dòng)化測(cè)試WordCount作業(yè)為例,來(lái)說(shuō)明如何使用自動(dòng)化測(cè)試框架

支持的語(yǔ)言

理論上可以支持C++,Java,Python,NodeJS 任意版本的程序,因?yàn)闇y(cè)試程序中可以配置不同語(yǔ)言的執(zhí)行環(huán)境

以下是我們測(cè)試通過(guò)后的語(yǔ)言版本

語(yǔ)言版本
Java1.8
C++3.9.2
Pythongc++ 6.3.0
NodeJSv10.15.3

實(shí)現(xiàn)的功能

克隆項(xiàng)目

從指定倉(cāng)庫(kù)克隆項(xiàng)目,由于訪問(wèn)Github的網(wǎng)絡(luò)經(jīng)常不穩(wěn)定,也支持我們先預(yù)備好項(xiàng)目的倉(cāng)庫(kù),不從Github實(shí)時(shí)下載。

生成測(cè)試數(shù)據(jù)

  • 可以生成指定長(zhǎng)度的隨機(jī)ASCII碼字符串
  • 可以將我們指定長(zhǎng)度的測(cè)試數(shù)據(jù)寫(xiě)入指定位置的指定數(shù)量的文本文件中,這些文本文件將作為后續(xù)的測(cè)試用例文件。

注:這里針對(duì)不同的項(xiàng)目需要生成的測(cè)試數(shù)據(jù)不一樣,wordcount需要生成的數(shù)據(jù)

編譯

這里的編譯和以下的運(yùn)行都是有如下兩個(gè)前置要求:

  1. 作業(yè)中必須明確要求入口文件的文件名是什么,以Java為例,就是Main方法所在的類(lèi)文件的文件名是什么,以WordCount作業(yè)為例,我們要求學(xué)生的主函數(shù)必須定義在src目錄下一個(gè)名叫WordCount.java文件中,因?yàn)檫@樣我們才知道要運(yùn)行哪個(gè)文件來(lái)執(zhí)行測(cè)試用例。

  2. 助教在自己機(jī)器上運(yùn)行的時(shí)候,必須要有對(duì)應(yīng)語(yǔ)言的編譯和運(yùn)行的環(huán)境且要規(guī)定好一致的語(yǔ)言版本。否則編譯這一關(guān)會(huì)有很多問(wèn)題導(dǎo)致無(wú)法運(yùn)行學(xué)生的代碼。

編譯時(shí)候會(huì)設(shè)置對(duì)應(yīng)的超時(shí)時(shí)間,不同的語(yǔ)言可以設(shè)置不一樣的編譯超時(shí)時(shí)間,以Java為例,默認(rèn)編譯超時(shí)時(shí)間是5秒鐘

運(yùn)行

見(jiàn)編譯部分提到的兩點(diǎn)要求。

運(yùn)行的時(shí)候也會(huì)設(shè)置對(duì)應(yīng)的超時(shí)時(shí)間,不同的語(yǔ)言針對(duì)不一樣的測(cè)試用例可以設(shè)置不一樣的運(yùn)行時(shí)間,超過(guò)這個(gè)時(shí)間,會(huì)直接將學(xué)生這個(gè)用例的耗時(shí)數(shù)設(shè)置為-2,-2表示耗時(shí)的記錄。

評(píng)分

  • 每個(gè)用例的得分以及匯總得分
  • 執(zhí)行每個(gè)用例的耗時(shí)

注:我們統(tǒng)計(jì)的耗時(shí)是運(yùn)行部分的耗時(shí),不包括編譯的耗時(shí)。

導(dǎo)出結(jié)果到CSV

  • 分?jǐn)?shù)
  • 耗時(shí)
  • Git提交記錄
    • 提交次數(shù)
    • 每次提交的commit信息

效果預(yù)覽

其中:

StudentNo: 表示學(xué)生學(xué)號(hào)的后五位

Score:匯總分?jǐn)?shù),即Score1 + Score2 + … + Scorei 之和

Scorei:表示第i個(gè)用例的得分

Timei:表示第i個(gè)用例的耗時(shí)

commit_times:表示每個(gè)學(xué)生的提交次數(shù)

commit_details:表示每個(gè)學(xué)生的提交信息,JSON格式

使用方式

目前沒(méi)有將項(xiàng)目打包,還是以源碼的方式運(yùn)行,主要是方便調(diào)試和改代碼,后續(xù)會(huì)完善打包運(yùn)行。

我們必須先規(guī)定好測(cè)試代碼的位置,以WordCount項(xiàng)目為例,所有同學(xué)的代碼都以學(xué)號(hào)命名收集到如下倉(cāng)庫(kù)中:

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

目錄結(jié)構(gòu)為:

PersonalProject-Java

  • 學(xué)號(hào)1
    • src
      • WordCount.java
  • 學(xué)號(hào)2
    • src
      • WordCount.java
      • Lib.java
  • 學(xué)號(hào)3
    • src
      • WordCount.java

克隆代碼

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

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

在download文件夾下新建一個(gè)judge文件夾,里面放對(duì)數(shù)程序,這個(gè)對(duì)數(shù)程序的目的就是,把測(cè)試用例的答案算出來(lái),

這個(gè)對(duì)數(shù)程序要保證正確?。?!最好多個(gè)助教一起做一下題目,然后互相驗(yàn)證沒(méi)問(wèn)題了,在把對(duì)數(shù)程序放上去。

PS:對(duì)數(shù)程序請(qǐng)不要提交到Github,防止學(xué)生抄襲!

如上圖,我放了一個(gè)對(duì)數(shù)程序WordCount.java

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

關(guān)注并確認(rèn)config.properties中的如下幾個(gè)參數(shù),其他參數(shù)可以參考注釋進(jìn)行修改:

# 默認(rèn)測(cè)試用例的數(shù)量TESTCASE_NUM=10# 測(cè)試文本的最少字符數(shù)TEXT_MIN_LENGTH=100# 測(cè)試文本的最大字符數(shù)量TEXT_MAX_LENGTH=1000000# 是否需要對(duì)數(shù)程序解答,如果準(zhǔn)備好了case和答案,則可以把這個(gè)選項(xiàng)設(shè)置為falseNEED_ANSWER=true# 是否需要克隆,如果設(shè)置為true,則會(huì)使用CLONE_URL到一個(gè)目錄進(jìn)行操作# 如果設(shè)置為false,則會(huì)使用LOCAL_URINEED_CLONE=false# 需要clone的學(xué)生倉(cāng)庫(kù)地址CLONE_URL=https://github.com/kofyou/PersonalProject-Java.git# 本地準(zhǔn)備好的倉(cāng)庫(kù)地址:例如: "D://git//WordCountAutoTest//download//1615421924089//PersonalProject-Java"# 同時(shí)需要在這個(gè)倉(cāng)庫(kù)的父目錄,即:"D://git//WordCountAutoTest//download//1615421924089" 新建兩個(gè)文件夾,分別是cases和answers# 并且在cases文件夾和answers文件夾準(zhǔn)備好TESTCASE_NUM數(shù)量的測(cè)試用例和對(duì)應(yīng)答案,文件名稱(chēng)從1.txt,2.txt ... n.txt 開(kāi)始命名# 比如TESTCASE_NUM = 3, 那么# D://git//WordCountAutoTest//download//1615421924089//cases 下有三個(gè)txt文件: 1.txt, 2.txt, 3.txt# D://git//WordCountAutoTest//download//1615421924089//answers 下也有三個(gè)txt文件,1.txt, 2.txt, 3.txt 分別對(duì)應(yīng)cases下面的三個(gè)文件的答案LOCAL_URI=C://git//autotest//download//1616838383549//PersonalProject-JavaJUDGE_PROGRAM=C://git//autotest//download//judge

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

說(shuō)明:運(yùn)行的時(shí)候,會(huì)在之前download的目錄以當(dāng)前時(shí)間戳建一個(gè)文件夾,這樣做的目的是保證每次運(yùn)行不會(huì)有文件夾沖突。

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

目錄說(shuō)明
download/時(shí)間戳/cases/存放用例的位置
download/時(shí)間戳/answers/存放答案的位置
download/時(shí)間戳/PersonalProject-Java/項(xiàng)目目錄
download/時(shí)間戳/PersonalProject-Java/學(xué)號(hào)/output/每個(gè)學(xué)號(hào)的學(xué)生的執(zhí)行用例的輸出文件夾
download/時(shí)間戳/result/result.csv本次測(cè)評(píng)的csv文件
WordCountAutoTest/log日志記錄文件夾

查重

使用的是moss 組件,需要申請(qǐng)一個(gè)moss賬號(hào)

使用方法,參考:

QuickStart.java

源碼地址

Github

CSDN

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/122094.html

相關(guān)文章

  • #yyds干貨盤(pán)點(diǎn)# 動(dòng)化測(cè)試

    摘要:正確合理地實(shí)施自動(dòng)化測(cè)試,能夠快速全面地對(duì)軟件進(jìn)行測(cè)試,從而提高軟件質(zhì)量,節(jié)省經(jīng)費(fèi),縮短產(chǎn)品發(fā)布周期。自動(dòng)化測(cè)試工具能實(shí)現(xiàn)百分之百的測(cè)試覆蓋率。年題以下測(cè)試項(xiàng)目不適合采用自動(dòng)化測(cè)試的是。故正確答案為年題自動(dòng)化測(cè)試的優(yōu)勢(shì)不包括。 自動(dòng)化測(cè)試是近些年的一個(gè)熱點(diǎn),為了更加快速、有效地對(duì)軟件進(jìn)行測(cè)試,提高軟件產(chǎn)品的質(zhì)量,必然會(huì)利用...

    不知名網(wǎng)友 評(píng)論0 收藏0
  • 100天漲薪4k!從功能測(cè)試動(dòng)化測(cè)試,我整理的超全學(xué)習(xí)指南!

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

    TwIStOy 評(píng)論0 收藏0
  • 動(dòng)化測(cè)試框架指南

    摘要:基于各種測(cè)試的理想測(cè)試自動(dòng)化框架的主要組成部分是測(cè)試庫(kù)單元測(cè)試單元測(cè)試庫(kù)可用于塑造任何測(cè)試自動(dòng)化框架的重要組成部分。構(gòu)建工具旨在幫助您從源代碼和支持庫(kù)開(kāi)發(fā)自動(dòng)化軟件,并運(yùn)行測(cè)試。 ...

    tulayang 評(píng)論0 收藏0
  • 程序人生:軟件測(cè)試工程師,如何從手工測(cè)試轉(zhuǎn)成動(dòng)化測(cè)試?這可能是每個(gè)測(cè)試要走的路...

    摘要:而現(xiàn)實(shí)是,很多團(tuán)隊(duì)在實(shí)施自動(dòng)化測(cè)試的過(guò)程中,并未取得良好的質(zhì)量效果,這主要是因?yàn)閷W(xué)習(xí)自動(dòng)化測(cè)試有兩大難點(diǎn)自動(dòng)化測(cè)試本身?yè)碛幸欢ǖ募夹g(shù)門(mén)檻最大的難點(diǎn)是需要大量的實(shí)戰(zhàn)經(jīng)驗(yàn)。 ...

    Reducto 評(píng)論0 收藏0
  • 2018 最好的動(dòng)化測(cè)試工具(Top 10 回顧)

    摘要:自動(dòng)化測(cè)試工具可能是網(wǎng)頁(yè)應(yīng)用中最流行的開(kāi)源自動(dòng)化測(cè)試框架。證書(shū)商業(yè)是一個(gè)開(kāi)源的自動(dòng)化測(cè)試框架,它實(shí)現(xiàn)了關(guān)鍵字測(cè)試驅(qū)動(dòng)來(lái)實(shí)現(xiàn)測(cè)試驅(qū)動(dòng)開(kāi)發(fā)。 showImg(https://segmentfault.com/img/bVYz7D?w=1200&h=627); 簡(jiǎn)評(píng):軟件開(kāi)發(fā)實(shí)踐一直以來(lái)都在變化,工具和技術(shù)也是如此。這些改變都是為了提高生產(chǎn)率,質(zhì)量,讓客戶滿意,縮短交付時(shí)間,以及交付成功的產(chǎn)...

    waltr 評(píng)論0 收藏0
  • 3年軟件測(cè)試經(jīng)驗(yàn)突顯迷茫...不知道我這種測(cè)試人員是不是被淘汰???

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

    fasss 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<