基本信息
- 項目名稱:
- C程序在線測試平臺的研究與實現(xiàn)
- 小類:
- 信息技術(shù)
- 大類:
- 科技發(fā)明制作B類
- 簡介:
- 為了培養(yǎng)學(xué)習(xí)者的程序設(shè)計能力,以C程序為測試對象,設(shè)計并實現(xiàn)了一種程序在線測試方法。該方法基于開源GCC(GNU Compiler Collection)程序編譯器,通過更改進程管道將程序運行結(jié)果與測試用例進行比較驗證其正確性,對測試程序采用懸停操作提高服務(wù)器的CPU并發(fā)使用率??蓤?zhí)行文件PE代碼節(jié)的MD5值提取技術(shù)解決了源碼相似性檢測的問題,并實現(xiàn)了文件操作程序的測試。
- 詳細介紹:
- C程序在線測試方法需實現(xiàn)客戶端和服務(wù)端兩方面內(nèi)容,主要思路是:服務(wù)端接收來自客戶端瀏覽器提交的程序代碼;服務(wù)端對所提交的代碼進行編譯,如無語法錯誤在服務(wù)端生成用于測試的可執(zhí)行程序文件,否則向客戶端返回語法錯誤信息;服務(wù)端對可執(zhí)行程序文件進行測試用例的輸入,并捕獲執(zhí)行程序文件的輸出,然后對執(zhí)行文件的輸出與答案預(yù)定輸出進行比對,向客戶端返回判斷結(jié)果;服務(wù)端在測試可執(zhí)行程序期間,同時要對測試程序的運行時間、硬件資源占用及源碼相似性給予檢測,必要時需給出處理方法,并將結(jié)果反饋給客戶端。
作品專業(yè)信息
設(shè)計、發(fā)明的目的和基本思路、創(chuàng)新點、技術(shù)關(guān)鍵和主要技術(shù)指標(biāo)
- 設(shè)計、發(fā)明的目的:為了培養(yǎng)學(xué)習(xí)者的程序設(shè)計能力,以C程序為測試對象,設(shè)計并實現(xiàn)了一個C程序在線測試平臺[1]。該平臺可提供不同類型試題的測試、隨機組卷及程序源碼相似性檢測等服務(wù)。 基本思路: 程序測試以開源GCC(GNU Compiler Collection)[3]作為程序編譯器,通過更改進程管道將程序運行結(jié)果與測試用例進行比較驗證其正確性,對測試程序采用懸停操作以提高服務(wù)器的CPU并發(fā)使用率。隨機組卷采用分段隨機組卷策略避免試題被重復(fù)抽取。程序源碼相似性檢測通過提取程序可執(zhí)行文件PE代碼節(jié)的MD5值判定源碼是否雷同。文件操作題測試是把對文件的操作映射成對計算機屏幕的操作,以便防止被測試程序?qū)ο到y(tǒng)的非法操作。 創(chuàng)新點: (1)可對同一試題的C程序源碼是否相似進行檢測。 (2)支持對C文件操作題的測試。 (3)采用分段隨機組卷策略,組卷效率高,效果好。
科學(xué)性、先進性
- 作品的科學(xué)性及先進性: 本作品引入正則表達式匹配、用例實模運行等策略對C程序進行測試,具有工作效率高,測試過程人性化的特點。前人對程序相似性研究主要集中在源碼的相似度檢測,常見方法為屬性計數(shù)法和結(jié)構(gòu)度量法[4-6]。前者對代碼的各種統(tǒng)計屬性進行處理,后者則對程序內(nèi)部結(jié)構(gòu)進行分析,大多數(shù)程序相似性檢測系統(tǒng)將兩種方法結(jié)合在一起,如斯坦福大學(xué)的Moss[7。與上述方法相比,我們提出的定性檢測源碼相似性方法具有定位準(zhǔn)確率高,可用性強的特點。主要思路是:提取可疑代碼exe文件PE(Protable Executable)結(jié)構(gòu)的.text代碼節(jié)的md5值,通過比較提取的md5值判斷它們對應(yīng)的源碼是否雷同,其依據(jù)是:源碼中定義的變量名及變量數(shù)目不同只會對PE結(jié)構(gòu)的.data數(shù)據(jù)節(jié)產(chǎn)生影響,一般不會影響到.text代碼節(jié)。此外,注釋在程序編譯過程中將被過濾掉,不會影響到.text代碼節(jié)內(nèi)容。所以,對.text代碼節(jié)進行md5值的提取與比較可容易地識別代碼是否雷同。
獲獎情況及鑒定結(jié)果
- 2010年 10月已在《電腦知識與技術(shù)》第 6 卷第28 期發(fā)表科技論文1篇,題目:一種C程序在線測試方法的研究與實現(xiàn)(見研究報告的附錄一) 2011年3月,作品在遼寧交通高等??茖W(xué)校(道橋系)進行了初步應(yīng)用,反映良好。(見研究報告的附錄二)
作品所處階段
- 中試階段
技術(shù)轉(zhuǎn)讓方式
- 無
作品可展示的形式
- 實物、產(chǎn)品 現(xiàn)場演示 圖片 錄像
使用說明,技術(shù)特點和優(yōu)勢,適應(yīng)范圍,推廣前景的技術(shù)性說明,市場分析,經(jīng)濟效益預(yù)測
- 技術(shù)特點和優(yōu)勢: 以C程序為測試對象,實現(xiàn)了程序編譯及運行、硬件資源占用監(jiān)測、運行時間獲取等在線測試功能,具有以下優(yōu)勢:(1)本作品提出的定性判斷程序相似性,易于實現(xiàn),有利于定位作業(yè)及考試作弊。(2)實現(xiàn)了文件操作程序的測試。(3)采用了開放式、模塊化的設(shè)計思想,易將該方法擴展用于C++、Pascal等程序的測試。 適應(yīng)范圍: 運行在Internet環(huán)境,可實現(xiàn)對C語言選擇題、簡答題、改錯題、完形填空題和程序設(shè)計題等五種題型的測試、考試及自動閱卷。 推廣前景及市場分析和經(jīng)濟效益預(yù)測: 基于該測試平臺,遠程網(wǎng)上用戶無需在本地安裝程序編譯軟件便可實現(xiàn)C程序源碼的自動化測試,方便了編程語言的隨機學(xué)習(xí)。 有關(guān)部門和高??苫谠撈脚_構(gòu)建相關(guān)課程的作業(yè)管理及在線考試系統(tǒng),組織大規(guī)模考試,進行作業(yè)及試卷的自動化評閱。 該平臺實現(xiàn)了自動化的程序測試,能進行自動組卷和無紙化考試,節(jié)省了大量的人力、物力資源,具有較好的現(xiàn)實應(yīng)用前景
同類課題研究水平概述
- 研究自動化或半自動化的軟件測試工具不但對軟件開發(fā)過程產(chǎn)生重大影響,而且對編程學(xué)習(xí)者而言也大有裨益。近些年來,已有研究人員開發(fā)出具有較高自動化的C程序測試平臺[1],但該平臺不能提供在線測試服務(wù)。C程序在線測試比較著名的是國際大學(xué)生程序設(shè)計競賽網(wǎng)站提供的軟件評測系統(tǒng)[2]。這種遠程在線測試方式極大地方便了客戶,有利于培養(yǎng)程序設(shè)計能力。 目前,大多數(shù)C程序在線測試的程序編譯采用GNU提供的GCC編譯器[3],GCC是一個交叉平臺的編譯器,目前支持幾乎所有主流CPU處理器平臺,它可以完成從C、C++、Objective C等源文件向運行在特定CPU硬件上的目標(biāo)代碼的轉(zhuǎn)換。GCC功能非常強大,便攜性好,支持跨平臺。 在程序測試中,其源碼相似判斷較易受到多余的回車、空格等外在因素的干擾。前人對程序相似性研究主要集中在源碼的相似度檢測,常見的方法為屬性計數(shù)法和結(jié)構(gòu)度量法[4-6]。前者只對代碼的各種統(tǒng)計屬性進行處理,后者則對程序內(nèi)部結(jié)構(gòu)進行分析,大多數(shù)程序相似性檢測系統(tǒng)將兩種方法結(jié)合在一起應(yīng)用,如斯坦福大學(xué)的Moss系統(tǒng)[7]、德國卡爾斯魯厄大學(xué)的JPlag[8]等。 但是,目前大多數(shù)程序在線測試工具只針對C程序設(shè)計題等少量題型,對源碼相似性檢測定位不夠簡潔有效,并且尚未見到對C文件操作題測試的公開報道。