两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種檢測(cè)軟件異常輸入處理正確性的方法

文檔序號(hào):6363592閱讀:339來(lái)源:國(guó)知局
專利名稱:一種檢測(cè)軟件異常輸入處理正確性的方法
技術(shù)領(lǐng)域
本發(fā)明涉及軟件測(cè)試領(lǐng)域,尤其是指通過(guò)分析源程序代碼,檢查軟件對(duì)各種異常輸入是否進(jìn)行了正確處理的方法。
背景技術(shù)
軟件輸入是軟件的“門戶”,是軟件的驅(qū)動(dòng)源,軟件輸入包括正常輸入和異常輸入,正常輸入處理不當(dāng)將直接影響軟件功能,異常輸入處理不當(dāng)將影響軟件容錯(cuò)性,導(dǎo)致軟件出現(xiàn)各種錯(cuò)誤。據(jù)統(tǒng)計(jì),由于軟件異常輸入處理不當(dāng)而造成的軟件錯(cuò)誤占軟件錯(cuò)誤的70%以上,由此可見,檢查軟件是否對(duì)各種異常輸入進(jìn)行了處理是發(fā)現(xiàn)軟件錯(cuò)誤的一個(gè) 重要方法?;谠闯绦虼a分析的靜態(tài)測(cè)試是軟件測(cè)試的一個(gè)重要研究領(lǐng)域,通過(guò)靜態(tài)測(cè)試,可以有效發(fā)現(xiàn)程序在編程規(guī)則、內(nèi)存管理、指針使用、程序結(jié)構(gòu)、控制流、數(shù)據(jù)流等方面存在的缺陷。靜態(tài)測(cè)試是國(guó)內(nèi)外開展較早的研究領(lǐng)域之一,目前已取得適用性成果,有代表性的有英國(guó)LARA公司的TestBed工具、Klocwork公司的Klocwork工具。這些工具根據(jù)不同的程序設(shè)計(jì)語(yǔ)言標(biāo)準(zhǔn),通過(guò)對(duì)源程序代碼分析,找出程序在符號(hào)使用、變量初始化、函數(shù)返回值、內(nèi)存管理、緩沖區(qū)使用、指針使用等方面存在的缺陷。這些工具功能強(qiáng)大,使用方便,在軟件靜態(tài)測(cè)試中發(fā)揮了很好作用,但在軟件異常輸入檢測(cè)方面欠缺,不能夠?qū)浖斎胧欠襁M(jìn)行了異常處理進(jìn)行分析。在軟件異常輸入檢測(cè)方面,目前主要是通過(guò)人工輸入各種異常值,動(dòng)態(tài)執(zhí)行軟件的方式檢查軟件異常輸入處理情況。這種方法一方面需要測(cè)試人員掌握軟件輸入的邊界值和類型等信息才能設(shè)計(jì)出合理的測(cè)試用例;另一方面測(cè)試工作量大,對(duì)于數(shù)據(jù)庫(kù)類等輸入字段眾多的軟件,需要測(cè)試人員逐一驗(yàn)證各個(gè)字段異常處理的正確性。綜上所述,在軟件異常輸入處理檢測(cè)方面,無(wú)論是靜態(tài)測(cè)試還是動(dòng)態(tài)測(cè)試都存在不足,需要研究一種全新的方法解決這個(gè)問(wèn)題。

發(fā)明內(nèi)容
本發(fā)明所解決的技術(shù)問(wèn)題是提供一種檢測(cè)軟件異常輸入處理正確性的方法,能夠?qū)浖惓]斎胩幚砬闆r進(jìn)行檢測(cè)。技術(shù)方案如下一種檢測(cè)軟件異常輸入處理正確性的方法,包括通過(guò)詞法和語(yǔ)法分析,得到被測(cè)軟件源代碼的抽象語(yǔ)法樹和符號(hào)表;遍歷所述抽象語(yǔ)法樹和符號(hào)表,得到所述被測(cè)軟件源代碼中的輸入控件,所述輸入控件為允許用戶輸入數(shù)據(jù)的控件;對(duì)所述輸入控件進(jìn)行辨識(shí),找出未判斷異常輸入的輸入控件。進(jìn)一步采用類編譯原理技術(shù),對(duì)所述被測(cè)軟件源代碼進(jìn)行詞法和語(yǔ)法分析,通過(guò)分析得到所述抽象語(yǔ)法樹和符號(hào)表。
進(jìn)一步在獲取所述輸入控件過(guò)程中,以深度優(yōu)先方法遍歷所述抽象語(yǔ)法樹,如果某個(gè)葉子節(jié)點(diǎn)是變量,通過(guò)查找符號(hào)表得到該變量類型;如果所述變量類型是輸入控件類型,則說(shuō)明該變量所描述的是一個(gè)輸入控件。進(jìn)一步所述輸入控件變量采用變量聲明和變量定義的定義方式,在對(duì)所述輸入控件進(jìn)行辨識(shí)過(guò)程中,通過(guò)在所述抽象語(yǔ)法樹進(jìn)行搜索,同時(shí)結(jié)合符號(hào)表中的內(nèi)容,辨識(shí)出所述被測(cè)軟件源代碼中所有的輸入控件及其變量。進(jìn)一步對(duì)所述輸入控件進(jìn)行辨識(shí),查找輸入控件列表中的每個(gè)輸入控件,然后以深度優(yōu)先方法遍歷抽象語(yǔ)法樹,檢查其中是否有對(duì)輸入進(jìn)行異常判斷的語(yǔ)句,如果沒(méi)有,則所述輸入控件就屬于未判斷異常的輸入控件。進(jìn)一步所述輸入控件包括文本輸入控件、列表控件、可輸入列表控件、表格控件、樹形控件、表格樹控件、彈出式列表控件或者樣式文本控件。技術(shù)效果包括軟件異常輸入是導(dǎo)致軟件出現(xiàn)錯(cuò)誤的主要原因之一,本發(fā)明的最 大優(yōu)點(diǎn)在于如何檢測(cè)是否對(duì)異常輸入進(jìn)行了判斷。通過(guò)識(shí)別輸入控件,根據(jù)不同輸入控件異常判斷語(yǔ)言特征,找出未進(jìn)行異常判斷的控件,據(jù)此,開發(fā)人員可以方便地修改軟件;測(cè)試人員可以設(shè)計(jì)出針對(duì)該控件的測(cè)試用例,從而大大提高測(cè)試的有效性和充分性。


圖I是本發(fā)明中檢測(cè)軟件異常輸入處理正確性的方法的工作流程圖;圖2是本發(fā)明中詞法和語(yǔ)法分析的工作流程圖;圖3是本發(fā)明中代碼片段的部分抽象語(yǔ)法樹示意圖;圖4是本發(fā)明中輸入控件辨識(shí)工作流程圖;圖5是本發(fā)明中未判斷異常輸入的輸入控件識(shí)別的工作流程圖;圖6是本發(fā)明中示例代碼段對(duì)應(yīng)的軟件界面示意圖;圖7是本發(fā)明中經(jīng)過(guò)詞法和語(yǔ)法分析后示例代碼段的部分抽象語(yǔ)法樹結(jié)構(gòu)示意圖。
具體實(shí)施例方式本發(fā)明針對(duì)已有方法存在的問(wèn)題,采用源代碼分析技術(shù),主要解決如何找出程序中沒(méi)有對(duì)各種異常輸入進(jìn)行處理的輸入控件問(wèn)題,從而提高測(cè)試充分性,減少測(cè)試工作量。下面參考附圖和優(yōu)選實(shí)施例,對(duì)本發(fā)明技術(shù)方案作詳細(xì)描述。如圖I所示,是本發(fā)明中檢測(cè)軟件異常輸入處理正確性的方法的工作流程圖,本方案的執(zhí)行過(guò)程如下。一、詞法和語(yǔ)法分析該步驟的主要目的是得到被測(cè)軟件源代碼的抽象語(yǔ)法樹和符號(hào)表。采用類編譯原理技術(shù),對(duì)被測(cè)軟件源代碼進(jìn)行詞法和語(yǔ)法分析,通過(guò)分析,得到抽象語(yǔ)法樹和符號(hào)表。定義I :抽象語(yǔ)法樹是一棵樹T =〈V,E>,其中V是樹的節(jié)點(diǎn),由源代碼中的各種語(yǔ)法結(jié)構(gòu)組成;E是樹的邊,負(fù)責(zé)連接各種語(yǔ)法結(jié)構(gòu)。
定義2 :符號(hào)表是一個(gè)表形數(shù)據(jù)結(jié)構(gòu),詞法分析過(guò)程中產(chǎn)生的標(biāo)識(shí)符作為符號(hào)表的入口,后續(xù)分析得到的信息,如標(biāo)識(shí)符的類型、使用方式、存儲(chǔ)空間等都可以根據(jù)需要加入到表中。如圖2所示,是本發(fā)明中詞法和語(yǔ)法分析的工作流程圖。詞法和語(yǔ)法分析是生成代碼與界面控件映射關(guān)系的基礎(chǔ)。本方案采用通用的方法對(duì)被測(cè)軟件的源代碼進(jìn)行詞法和語(yǔ)法分析,由算法I描述。算法 I. Lexical_Syntax_Analyze (P)輸入P :源代碼輸出(AST,SymTable) P的抽象語(yǔ)法樹和符號(hào)表I. TokenStream < -Lexical_Analyze(P)2. (AST, ) SymTable) < -Syntax_Analyze (TokenStream)3. Return (AST, SymTable)源代碼在經(jīng)過(guò)詞法和語(yǔ)法分析后,將得到其抽象語(yǔ)法樹和符號(hào)表。算法I的第I步對(duì)源代碼P進(jìn)行詞法分析,得到P的標(biāo)記流TokenStream ;第2步以標(biāo)記流為基礎(chǔ)進(jìn)行語(yǔ)法分析,得到P的抽象語(yǔ)法樹AST和符號(hào)表SymTable ;第3步將AST和SymTable返回。下面是一個(gè)Java Swing的示例代碼片段。I、javax. swing. JMenufileMenu = new javax. swing. JMenu();2、javax. swing. JMenuItemopenFileMenuItem = new javax. swing.JMenuItemO ;3、fileMenu. add(openFileMenuItem);表I是代碼對(duì)應(yīng)的符號(hào)表
權(quán)利要求
1.一種檢測(cè)軟件異常輸入處理正確性的方法,包括 通過(guò)詞法和語(yǔ)法分析,得到被測(cè)軟件源代碼的抽象語(yǔ)法樹和符號(hào)表; 遍歷所述抽象語(yǔ)法樹和符號(hào)表,得到所述被測(cè)軟件源代碼中的輸入控件,所述輸入控件為允許用戶輸入數(shù)據(jù)的控件; 對(duì)所述輸入控件進(jìn)行辨識(shí),找出未判斷異常輸入的輸入控件。
2.如權(quán)利要求I所述的檢測(cè)軟件異常輸入處理正確性的方法,其特征在于采用類編譯原理技木,對(duì)所述被測(cè)軟件源代碼進(jìn)行詞法和語(yǔ)法分析,通過(guò)分析得到所述抽象語(yǔ)法樹和符號(hào)表。
3.如權(quán)利要求I所述的檢測(cè)軟件異常輸入處理正確性的方法,其特征在于在獲取所述輸入控件過(guò)程中,以深度優(yōu)先方法遍歷所述抽象語(yǔ)法樹,如果某個(gè)葉子節(jié)點(diǎn)是變量,通過(guò)查找符號(hào)表得到該變量類型;如果所述變量類型是輸入控件類型,則說(shuō)明該變量所描述的是ー個(gè)輸入控件。
4.如權(quán)利要求I所述的檢測(cè)軟件異常輸入處理正確性的方法,其特征在于所述輸入控件變量采用變量聲明和變量定義的定義方式,在對(duì)所述輸入控件進(jìn)行辨識(shí)過(guò)程中,通過(guò)在所述抽象語(yǔ)法樹進(jìn)行搜索,同時(shí)結(jié)合符號(hào)表中的內(nèi)容,辨識(shí)出所述被測(cè)軟件源代碼中所有的輸入控件及其變量。
5.如權(quán)利要求I所述的檢測(cè)軟件異常輸入處理正確性的方法,其特征在于對(duì)所述輸入控件進(jìn)行辨識(shí),查找輸入控件列表中的每個(gè)輸入控件,然后以深度優(yōu)先方法遍歷抽象語(yǔ)法樹,檢查其中是否有對(duì)輸入進(jìn)行異常判斷的語(yǔ)句,如果沒(méi)有,則所述輸入控件就屬于未判斷異常的輸入控件。
6.如權(quán)利要求I至5任一項(xiàng)所述的檢測(cè)軟件異常輸入處理正確性的方法,其特征在于所述輸入控件包括文本輸入控件、列表控件、可輸入列表控件、表格控件、樹形控件、表格樹控件、彈出式列表控件或者樣式文本控件。
全文摘要
本發(fā)明公開了一種檢測(cè)軟件異常輸入處理正確性的方法,通過(guò)詞法和語(yǔ)法分析,得到被測(cè)軟件源代碼的抽象語(yǔ)法樹和符號(hào)表;遍歷所述抽象語(yǔ)法樹和符號(hào)表,得到所述被測(cè)軟件源代碼中的輸入控件,所述輸入控件為允許用戶輸入數(shù)據(jù)的控件;對(duì)所述輸入控件進(jìn)行辨識(shí),找出未判斷異常輸入的輸入控件。本發(fā)明技術(shù)方案能夠檢測(cè)軟件是否對(duì)異常輸入進(jìn)行了處理。
文檔編號(hào)G06F11/36GK102681932SQ201210017980
公開日2012年9月19日 申請(qǐng)日期2012年1月19日 優(yōu)先權(quán)日2012年1月19日
發(fā)明者于秀山, 于長(zhǎng)鉞, 吳玲, 杜旭濤, 楊豹, 遲芳, 黃忠見 申請(qǐng)人:于秀山
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
宿州市| 广平县| 淄博市| 阳高县| 吉首市| 新安县| 满城县| 临汾市| 黄龙县| 瓦房店市| 罗平县| 铜梁县| 乌鲁木齐市| 祁阳县| 皮山县| 逊克县| 顺昌县| 河津市| 桦南县| 普洱| 双峰县| 体育| 财经| 东莞市| 湾仔区| 南丹县| 清苑县| 台中市| 无棣县| 高平市| 金山区| 淳化县| 永胜县| 梓潼县| 临泽县| 县级市| 白玉县| 开鲁县| 藁城市| 友谊县| 隆昌县|