国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于白箱測試的C語言代碼在線評測系統(tǒng)的研究與實現(xiàn)

2016-12-21 11:38:17衛(wèi)軍超薛鵬鵬
電子技術(shù)與軟件工程 2016年20期

衛(wèi)軍超++薛鵬鵬

摘 要 在程序設(shè)計語言教學(xué)過程中,教師往往運用手把手教學(xué)的方式對學(xué)生的源代碼編程進(jìn)行審核,這類傳統(tǒng)的教學(xué)模式效率低下,也不便于學(xué)生之間的交流。構(gòu)建一個基于白箱測試的建立在C語言基礎(chǔ)上的教學(xué)平臺,提高師生互動,促進(jìn)大家學(xué)習(xí)交流,簡化程序的評測過程,提高學(xué)習(xí)的效率。

【關(guān)鍵詞】白箱測試 在線評測 C語言

高校程序設(shè)計類課程傳統(tǒng)的手工評測方式有許多難以克服的弊端,對教學(xué)效果和學(xué)生編程能力的提高造成了許多障礙。隨著計算機技術(shù)的發(fā)展,特別是Internet技術(shù)的普遍應(yīng)用, 源代碼在線評測系統(tǒng)應(yīng)運而生,應(yīng)用于各高校程序設(shè)計類課程的輔助教學(xué),同時還可以當(dāng)做程序編程設(shè)計等競賽的模擬系統(tǒng),和傳統(tǒng)的手工測評方式相比較而言,優(yōu)勢明顯。

1 研究內(nèi)容

在分析和總結(jié)前人研究工作的基礎(chǔ)上,本研究基于白箱測試實現(xiàn)對C語言源代碼的評測,使其能夠應(yīng)用在具體教學(xué)實踐中。

1.1 評測系統(tǒng)的關(guān)鍵技術(shù)

評測系統(tǒng)要用到以下幾個關(guān)鍵技術(shù):操作 My SQL 數(shù)據(jù)庫;編譯源代碼;執(zhí)行被測試的數(shù)據(jù);測試運行結(jié)果;獲取評測時間等。

1.2 代碼安全性檢測

代碼安全檢測是研究的核心內(nèi)容。一旦源代碼使用者提供了錯誤的惡意性質(zhì)的代碼,必然會影響服務(wù)器的正常運行。所以確保代碼的安全性是保障系統(tǒng)正常使用的核心,需要及時對用戶提供的源代碼進(jìn)行安全性檢測,以白箱測試中的靜態(tài)分析技術(shù)為前提,設(shè)計這一模塊,針對C語言源代碼常見的安全漏洞機械能給你檢測,分析。重點研究存儲越界錯誤、動態(tài)內(nèi)存分配錯誤、內(nèi)存泄漏、類型不一致錯誤、數(shù)組越界、死循環(huán)等類六類安全漏洞的檢測方法。

1.3 代碼剽竊檢測

分析常見的代碼剽竊的幾種方式,及目前國內(nèi)外代碼剽竊檢測技術(shù)的發(fā)展情況。代碼剽竊檢測這項技術(shù)的最終要的計算方法就是代碼相似度的檢測。檢測兩種代碼的相似情況的主要方法有兩種,屬性計數(shù)和結(jié)構(gòu)度量。結(jié)合實際教學(xué)環(huán)境,選擇合適的代碼相似度計算機方法,提出解決學(xué)生在日常的編程、考試中代碼剽竊自動檢測的設(shè)計方案。

2 評測技術(shù)的關(guān)鍵技術(shù)

本研究主要是對實現(xiàn)評測系統(tǒng)的技術(shù)進(jìn)行研究,主要包括以下幾個方面:評測系統(tǒng)的關(guān)鍵技術(shù)、代碼安全檢測、代碼剽竊檢測。

2.1 評測系統(tǒng)關(guān)鍵技術(shù)

(1)采用C語言操作MySQL數(shù)據(jù)庫。用到的API主要有:MYSQL*mysql_init(MYSQL*mysql),用來實現(xiàn)初始化一個MySQL對象。

MYSQL* mysql_connect(MYSQL*mysql,const char*host,const*user,const char*passwd),用來實現(xiàn)連接數(shù)據(jù)庫。

int mysql_query(MYSQL *mysql,const char*query),實現(xiàn)對SQL語句的執(zhí)行操作。

(2)對源代碼進(jìn)行編譯,實現(xiàn)對源代碼的編譯要用到以下主要參數(shù):

-o out_file:表示將編譯后的可執(zhí)行文件存儲為out_file。如out_file為空,則則編譯后的可執(zhí)行文件存儲為a.out;

-O2:在編譯的過程中會采取優(yōu)化處理方式;

-Wall:在編譯時,程序會及時輸出警告信息;

-Im:-I編譯時,鏈接庫會被連接;-I后面會出現(xiàn)需要要鏈接的庫名。-Im表示會鏈接數(shù)學(xué)庫;

-Static:在編譯過程中,進(jìn)行連接鏈接庫時,會使用靜態(tài)鏈接庫進(jìn)行連接,及時避免連接動態(tài)的鏈接庫。

(3)源代碼文件編譯通過之后,會生成一個名為“main”的文件接下來的工作是測試程序的正確性,源代碼的正確性測評采用的是黑盒測試,執(zhí)行被測試程序的過程如下:重定向輸入輸出文件;創(chuàng)建一個子進(jìn)程;設(shè)置資源限制;用函數(shù)調(diào)用要執(zhí)行的程序。

(4)用來檢測程序運行情況的思路是這樣的:在對待評測程序進(jìn)行評測時,要使用標(biāo)準(zhǔn)的輸入文件,把標(biāo)準(zhǔn)文件輸出的數(shù)據(jù)和待評測程序輸出的數(shù)據(jù)比較分析,假設(shè)待評測程序的結(jié)果和標(biāo)準(zhǔn)的一樣,那么久可以判斷此待評測程序編碼是正確的,如果有出入,就認(rèn)為待評測程序是錯誤的,當(dāng)然,在檢測和對照的過程中,要確保時間合適,注意監(jiān)視內(nèi)存情況,假設(shè)超出時間和內(nèi)存的限制就需要及時返回錯誤代碼,測評時間就是看測試前后系統(tǒng)時間差。

2.2 代碼安全檢測

在檢測代碼安全性之前,要檢查C語言是否存在安全漏洞,如果有,就好及時分析,在安全漏洞中破壞性較大的、典型很難發(fā)現(xiàn)的的一共有六種。

(1)存儲越界錯誤;

(2)動態(tài)內(nèi)存分配錯誤:

(3)內(nèi)存泄漏;

(4)類型不一致錯誤;

(5)指針錯誤;

(6)死循環(huán)。

針對對內(nèi)存泄漏和數(shù)組越界兩大類漏洞找到合適的檢測方法。

2.3 代碼剽竊檢測

作為代碼剽竊檢測的最重要的技術(shù)就是計算兩個代碼的相似度,也就是通過一種檢測手段來衡量兩個代碼是否具有相似性,代碼相似度計算的方法一共有兩種,分別是:屬性技術(shù);結(jié)構(gòu)度量。在代碼剽竊檢測的初始階段,屬性技術(shù)的方法被最早被提出和使用,結(jié)構(gòu)度量的方式是后來才出現(xiàn)的。這兩中度量的方式共同點是在對相應(yīng)的程序代碼做分析后,歸納出數(shù)字化的特征,運用特征這一向量把不同的屬性綜合起來,表征程序。兩種度量方法的區(qū)別在于,前者僅僅處理各種代碼的統(tǒng)計屬性,忽略其內(nèi)部結(jié)構(gòu);但是后者主要是針對程序的內(nèi)部結(jié)構(gòu)進(jìn)行度量,通過對分析控制流和嵌套深度的整理,運用得出的度量值分析程序特征向量。所以,結(jié)構(gòu)度量法比屬性計數(shù)法應(yīng)用的更加廣泛,或者可以將兩者結(jié)合起來檢測代碼剽竊軟件。

針對學(xué)校學(xué)生的實際情況,考慮采用屬性計數(shù)法采計算代碼相似程度,且投入較少、易于實現(xiàn),也方便拓展到不同的語言。在完成代碼相似度的計算以后,根據(jù)計算結(jié)果判斷代碼是否是剽竊嫌疑,將所有嫌疑代碼及涉嫌學(xué)生明確列出,供教師進(jìn)行進(jìn)一步審查?;玖鞒倘鐖D1。

3 結(jié)束語

該文提出了一個基于白箱測試的C語言在線評測系統(tǒng)設(shè)計方法,并解決了在搭建系統(tǒng)過程中遇到的一些列問題,方便了教師和學(xué)生對于源代碼的評測。當(dāng)然此平臺上基本實現(xiàn)了代碼的自動評測,下一步要做的工作是改進(jìn)剽竊檢測模塊,以適用教學(xué)需求。

參考文獻(xiàn)

[1]苑文會.黑盒測試技術(shù)在輔助教學(xué)系統(tǒng)中的應(yīng)用[J].計算機工程與設(shè)計,2006,27(23):4604-4606.

[2]呂鵬,戴冠中.Linux下Ptrace()調(diào)用的安全分析[J].計算機應(yīng)用研究,2005,22(08):102-104.

作者單位

西安交通工程學(xué)院 陜西省西安市 710300

清水县| 吉水县| 尼木县| 孝义市| 鲁甸县| 云梦县| 沽源县| 天镇县| 开封县| 都兰县| 治县。| 巴青县| 天祝| 长白| 海安县| 龙州县| 仁寿县| 潼关县| 银川市| 沧源| 西藏| 沁阳市| 抚顺市| 文山县| 上虞市| 北京市| 红原县| 东阿县| 密山市| 安宁市| 左云县| 中方县| 乳源| 正镶白旗| 渝中区| 姜堰市| 吉安县| 福贡县| 兴仁县| 卫辉市| 商河县|