基于白箱測試的C語言代碼在線評(píng)測系統(tǒng)的研究與實(shí)現(xiàn)_第1頁
基于白箱測試的C語言代碼在線評(píng)測系統(tǒng)的研究與實(shí)現(xiàn)_第2頁
基于白箱測試的C語言代碼在線評(píng)測系統(tǒng)的研究與實(shí)現(xiàn)_第3頁
基于白箱測試的C語言代碼在線評(píng)測系統(tǒng)的研究與實(shí)現(xiàn)_第4頁
基于白箱測試的C語言代碼在線評(píng)測系統(tǒng)的研究與實(shí)現(xiàn)_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、    基于白箱測試的c語言代碼在線評(píng)測系統(tǒng)的研究與實(shí)現(xiàn)    衛(wèi)軍超+薛鵬鵬摘 要 在程序設(shè)計(jì)語言教學(xué)過程中,教師往往運(yùn)用手把手教學(xué)的方式對(duì)學(xué)生的源代碼編程進(jìn)行審核,這類傳統(tǒng)的教學(xué)模式效率低下,也不便于學(xué)生之間的交流。構(gòu)建一個(gè)基于白箱測試的建立在c語言基礎(chǔ)上的教學(xué)平臺(tái),提高師生互動(dòng),促進(jìn)大家學(xué)習(xí)交流,簡化程序的評(píng)測過程,提高學(xué)習(xí)的效率?!娟P(guān)鍵詞】白箱測試 在線評(píng)測 c語言高校程序設(shè)計(jì)類課程傳統(tǒng)的手工評(píng)測方式有許多難以克服的弊端,對(duì)教學(xué)效果和學(xué)生編程能力的提高造成了許多障礙。隨著計(jì)算機(jī)技術(shù)的發(fā)展,特別是internet技術(shù)的普遍應(yīng)用, 源代碼在線評(píng)測系統(tǒng)

2、應(yīng)運(yùn)而生,應(yīng)用于各高校程序設(shè)計(jì)類課程的輔助教學(xué),同時(shí)還可以當(dāng)做程序編程設(shè)計(jì)等競賽的模擬系統(tǒng),和傳統(tǒng)的手工測評(píng)方式相比較而言,優(yōu)勢明顯。1 研究內(nèi)容在分析和總結(jié)前人研究工作的基礎(chǔ)上,本研究基于白箱測試實(shí)現(xiàn)對(duì)c語言源代碼的評(píng)測,使其能夠應(yīng)用在具體教學(xué)實(shí)踐中。1.1 評(píng)測系統(tǒng)的關(guān)鍵技術(shù)評(píng)測系統(tǒng)要用到以下幾個(gè)關(guān)鍵技術(shù):操作 my sql 數(shù)據(jù)庫;編譯源代碼;執(zhí)行被測試的數(shù)據(jù);測試運(yùn)行結(jié)果;獲取評(píng)測時(shí)間等。1.2 代碼安全性檢測代碼安全檢測是研究的核心內(nèi)容。一旦源代碼使用者提供了錯(cuò)誤的惡意性質(zhì)的代碼,必然會(huì)影響服務(wù)器的正常運(yùn)行。所以確保代碼的安全性是保障系統(tǒng)正常使用的核心,需要及時(shí)對(duì)用戶提供的源代碼進(jìn)行

3、安全性檢測,以白箱測試中的靜態(tài)分析技術(shù)為前提,設(shè)計(jì)這一模塊,針對(duì)c語言源代碼常見的安全漏洞機(jī)械能給你檢測,分析。重點(diǎn)研究存儲(chǔ)越界錯(cuò)誤、動(dòng)態(tài)內(nèi)存分配錯(cuò)誤、內(nèi)存泄漏、類型不一致錯(cuò)誤、數(shù)組越界、死循環(huán)等類六類安全漏洞的檢測方法。1.3 代碼剽竊檢測分析常見的代碼剽竊的幾種方式,及目前國內(nèi)外代碼剽竊檢測技術(shù)的發(fā)展情況。代碼剽竊檢測這項(xiàng)技術(shù)的最終要的計(jì)算方法就是代碼相似度的檢測。檢測兩種代碼的相似情況的主要方法有兩種,屬性計(jì)數(shù)和結(jié)構(gòu)度量。結(jié)合實(shí)際教學(xué)環(huán)境,選擇合適的代碼相似度計(jì)算機(jī)方法,提出解決學(xué)生在日常的編程、考試中代碼剽竊自動(dòng)檢測的設(shè)計(jì)方案。2 評(píng)測技術(shù)的關(guān)鍵技術(shù)本研究主要是對(duì)實(shí)現(xiàn)評(píng)測系統(tǒng)的技術(shù)進(jìn)行

4、研究,主要包括以下幾個(gè)方面:評(píng)測系統(tǒng)的關(guān)鍵技術(shù)、代碼安全檢測、代碼剽竊檢測。2.1 評(píng)測系統(tǒng)關(guān)鍵技術(shù)(1)采用c語言操作mysql數(shù)據(jù)庫。用到的api主要有:mysql*mysql_init(mysql*mysql),用來實(shí)現(xiàn)初始化一個(gè)mysql對(duì)象。mysql* mysql_connect(mysql*mysql,const char*host,const*user,const char*passwd),用來實(shí)現(xiàn)連接數(shù)據(jù)庫。int mysql_query(mysql *mysql,const char*query),實(shí)現(xiàn)對(duì)sql語句的執(zhí)行操作。(2)對(duì)源代碼進(jìn)行編譯,實(shí)現(xiàn)對(duì)源代碼的編譯要用到

5、以下主要參數(shù):-o out_file:表示將編譯后的可執(zhí)行文件存儲(chǔ)為out_file。如out_file為空,則則編譯后的可執(zhí)行文件存儲(chǔ)為a.out;-o2:在編譯的過程中會(huì)采取優(yōu)化處理方式;-wall:在編譯時(shí),程序會(huì)及時(shí)輸出警告信息;-im:-i編譯時(shí),鏈接庫會(huì)被連接;-i后面會(huì)出現(xiàn)需要要鏈接的庫名。-im表示會(huì)鏈接數(shù)學(xué)庫;-static:在編譯過程中,進(jìn)行連接鏈接庫時(shí),會(huì)使用靜態(tài)鏈接庫進(jìn)行連接,及時(shí)避免連接動(dòng)態(tài)的鏈接庫。(3)源代碼文件編譯通過之后,會(huì)生成一個(gè)名為“main”的文件接下來的工作是測試程序的正確性,源代碼的正確性測評(píng)采用的是黑盒測試,執(zhí)行被測試程序的過程如下:重定向輸入輸出

6、文件;創(chuàng)建一個(gè)子進(jìn)程;設(shè)置資源限制;用函數(shù)調(diào)用要執(zhí)行的程序。(4)用來檢測程序運(yùn)行情況的思路是這樣的:在對(duì)待評(píng)測程序進(jìn)行評(píng)測時(shí),要使用標(biāo)準(zhǔn)的輸入文件,把標(biāo)準(zhǔn)文件輸出的數(shù)據(jù)和待評(píng)測程序輸出的數(shù)據(jù)比較分析,假設(shè)待評(píng)測程序的結(jié)果和標(biāo)準(zhǔn)的一樣,那么久可以判斷此待評(píng)測程序編碼是正確的,如果有出入,就認(rèn)為待評(píng)測程序是錯(cuò)誤的,當(dāng)然,在檢測和對(duì)照的過程中,要確保時(shí)間合適,注意監(jiān)視內(nèi)存情況,假設(shè)超出時(shí)間和內(nèi)存的限制就需要及時(shí)返回錯(cuò)誤代碼,測評(píng)時(shí)間就是看測試前后系統(tǒng)時(shí)間差。2.2 代碼安全檢測在檢測代碼安全性之前,要檢查c語言是否存在安全漏洞,如果有,就好及時(shí)分析,在安全漏洞中破壞性較大的、典型很難發(fā)現(xiàn)的的一共有

7、六種。(1)存儲(chǔ)越界錯(cuò)誤;(2)動(dòng)態(tài)內(nèi)存分配錯(cuò)誤:(3)內(nèi)存泄漏;(4)類型不一致錯(cuò)誤;(5)指針錯(cuò)誤;(6)死循環(huán)。針對(duì)對(duì)內(nèi)存泄漏和數(shù)組越界兩大類漏洞找到合適的檢測方法。2.3 代碼剽竊檢測作為代碼剽竊檢測的最重要的技術(shù)就是計(jì)算兩個(gè)代碼的相似度,也就是通過一種檢測手段來衡量兩個(gè)代碼是否具有相似性,代碼相似度計(jì)算的方法一共有兩種,分別是:屬性技術(shù);結(jié)構(gòu)度量。在代碼剽竊檢測的初始階段,屬性技術(shù)的方法被最早被提出和使用,結(jié)構(gòu)度量的方式是后來才出現(xiàn)的。這兩中度量的方式共同點(diǎn)是在對(duì)相應(yīng)的程序代碼做分析后,歸納出數(shù)字化的特征,運(yùn)用特征這一向量把不同的屬性綜合起來,表征程序。兩種度量方法的區(qū)別在于,前者僅

8、僅處理各種代碼的統(tǒng)計(jì)屬性,忽略其內(nèi)部結(jié)構(gòu);但是后者主要是針對(duì)程序的內(nèi)部結(jié)構(gòu)進(jìn)行度量,通過對(duì)分析控制流和嵌套深度的整理,運(yùn)用得出的度量值分析程序特征向量。所以,結(jié)構(gòu)度量法比屬性計(jì)數(shù)法應(yīng)用的更加廣泛,或者可以將兩者結(jié)合起來檢測代碼剽竊軟件。針對(duì)學(xué)校學(xué)生的實(shí)際情況,考慮采用屬性計(jì)數(shù)法采計(jì)算代碼相似程度,且投入較少、易于實(shí)現(xiàn),也方便拓展到不同的語言。在完成代碼相似度的計(jì)算以后,根據(jù)計(jì)算結(jié)果判斷代碼是否是剽竊嫌疑,將所有嫌疑代碼及涉嫌學(xué)生明確列出,供教師進(jìn)行進(jìn)一步審查?;玖鞒倘鐖D1。3 結(jié)束語該文提出了一個(gè)基于白箱測試的c語言在線評(píng)測系統(tǒng)設(shè)計(jì)方法,并解決了在搭建系統(tǒng)過程中遇到的一些列問題,方便了教師和學(xué)生對(duì)于源代碼的評(píng)測。當(dāng)然此平臺(tái)上基本實(shí)現(xiàn)了代碼的自動(dòng)評(píng)測,下一步要做的工作是改進(jìn)剽竊檢測模塊,以適用教學(xué)需求。參考文獻(xiàn)1苑文會(huì).黑盒測試技術(shù)在輔助教學(xué)系統(tǒng)中的應(yīng)用j

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論