欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種gui軟件輸入邊界值獲取方法和系統(tǒng)的制作方法

文檔序號(hào):6547338閱讀:260來(lái)源:國(guó)知局
一種gui軟件輸入邊界值獲取方法和系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開(kāi)了一種軟件輸入邊界值獲取方法,應(yīng)用于含有圖形用戶界面GUI的軟件,包括:掃描被測(cè)軟件源代碼;在代碼文件中得到與所述軟件的窗體輸入控件相對(duì)應(yīng)的代碼段,所述代碼段中包含輸入字段的范圍信息。本發(fā)明還公開(kāi)了與上述方法相對(duì)應(yīng)的系統(tǒng)。本發(fā)明為軟件輸入字段測(cè)試提供了便捷、高效的方法,可以大大提高軟件輸入字段測(cè)試的充分性、有效性和測(cè)試效率。
【專利說(shuō)明】一種GUI軟件輸入邊界值獲取方法和系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及軟件測(cè)試領(lǐng)域,尤其涉及一種GUI (圖形用戶界面)軟件輸入邊界值獲取方法和系統(tǒng)。
【背景技術(shù)】
[0002]軟件輸入是驅(qū)動(dòng)軟件運(yùn)行之源,通過(guò)對(duì)不同的軟件輸入進(jìn)行處理,軟件完成規(guī)定的功能。當(dāng)軟件沒(méi)有對(duì)某些可能出現(xiàn)的輸入做相應(yīng)處理時(shí),軟件運(yùn)行就會(huì)出現(xiàn)錯(cuò)誤。軟件測(cè)試的核心任務(wù)就是在軟件輸入域內(nèi)設(shè)計(jì)各種不同的軟件輸入,驗(yàn)證軟件處理是否正確。如果能夠窮盡軟件的輸入域,則能夠找出軟件中存在的所有問(wèn)題,然而,由于軟件輸入域是一個(gè)巨大的空間,根本無(wú)法在有限的時(shí)間內(nèi)運(yùn)行針對(duì)所有輸入的測(cè)試用例,即通常所說(shuō)的輸入爆炸問(wèn)題。為了解決輸入爆炸問(wèn)題,業(yè)界提出了很多方法,如等價(jià)類劃分、邊界值分析等,這些方法在軟件測(cè)試實(shí)踐中得到了廣泛應(yīng)用,受到了良好效果。
[0003]在采用等價(jià)類劃分或邊界值分析方法時(shí),一個(gè)最基本的前提就是要知道軟件輸入的邊界值。對(duì)于Gn軟件而言,Gn軟件中包含大量可供用戶輸入的控件,如文本框、下拉菜單,通過(guò)這些控件,用戶輸入相應(yīng)的信息,完成規(guī)定的功能。在這些控件中,只有知道其取值范圍,才能夠設(shè)計(jì)出有效的測(cè)試用例。例如,對(duì)于用戶登錄界面中的用戶名輸入字段,只有當(dāng)知道其字段是長(zhǎng)度為[1,20]的字符串時(shí),才能夠確定出其合法等價(jià)類和非法等價(jià)類以及上邊界和下邊界值(分別為I和20)。
[0004]為了獲取軟件輸入邊界值,目前普遍采用三種方法,一是人工查閱軟件文檔,二是人工查閱源程序代碼,三是嘗試。在第一種方法中,測(cè)試人員通過(guò)閱讀軟件文檔,如軟件需求規(guī)格說(shuō)明、軟件概要設(shè)計(jì)、詳細(xì)設(shè)計(jì),獲取軟件輸入相關(guān)信息。這是一種簡(jiǎn)單易行的方法,但在具體的實(shí)踐中,特別是在迭代式軟件開(kāi)發(fā)過(guò)程中,軟件需求變化頻繁,上述文檔難以與最新的軟件代碼保持一致,測(cè)試人員拿到的經(jīng)常是過(guò)時(shí)、陳舊的文檔,依靠這樣的文檔得到的是與最終軟件相差甚遠(yuǎn)的軟件輸入邊界值;相對(duì)于第一種方法,第二種方法不存在文檔與源程序代碼脫節(jié)以及過(guò)時(shí)的問(wèn)題,但這種方法對(duì)測(cè)試人員的要求很高,要求測(cè)試人員具有較高的編程經(jīng)驗(yàn)、熟悉不同的編程語(yǔ)言,并且,由于源程序代碼與界面控件之間并不存在直接的對(duì)應(yīng)關(guān)系,即使通過(guò)分析源程序代碼找到程序中所有的變量,也無(wú)法獲取界面控件的取值范圍,測(cè)試人員依然需要花費(fèi)較長(zhǎng)的時(shí)間才能夠從源程序代碼中找到與軟件輸入相關(guān)的信息;在第三種方法中,測(cè)試人員嘗試輸入不同長(zhǎng)度和類型的數(shù)據(jù),通過(guò)不斷的嘗試性輸入,得到軟件輸入字段的邊界。這種方法具有一定的盲目性,并且需要對(duì)每一個(gè)字段嘗試多次,工作量大、效率低。

【發(fā)明內(nèi)容】

[0005]為了解決上述技術(shù)問(wèn)題,本發(fā)明公開(kāi)了一種CTI軟件輸入邊界值獲取方法和系統(tǒng),該發(fā)明針對(duì)GUI類應(yīng)用軟件,主要解決如何自動(dòng)獲取目前GUI軟件輸入邊界獲取存在的問(wèn)題。[0006]本發(fā)明的技術(shù)方案為:
[0007]—種⑶I軟件輸入邊界值獲取方法和系統(tǒng),應(yīng)用于含有圖形用
[0008]戶界面⑶I的軟件,包括:
[0009]掃描被測(cè)軟件源代碼;
[0010]在代碼文件中得到與所述軟件的窗體輸入控件相對(duì)應(yīng)的代碼段,所述代碼段中包含輸入字段的范圍信息。
[0011]較佳地,
[0012]所述在代碼文件中找到與所述軟件的窗體輸入控件相對(duì)應(yīng)的代碼段具體包括:
[0013]在代碼文件中得到所述代碼文件的語(yǔ)法樹(shù)結(jié)構(gòu);
[0014]根據(jù)所述語(yǔ)法樹(shù)結(jié)構(gòu)定位與軟件的窗體輸入控件相對(duì)應(yīng)的代碼段的代碼位置;
[0015]根據(jù)所述代碼位置得到所述代碼段。
[0016]較佳地,所述代碼文件為窗體設(shè)計(jì)代碼文件,所述窗體輸入控件為選擇性控件。
[0017]較佳地,所述代碼文件為窗體設(shè)計(jì)代碼文件,所述窗體輸入控件為鍵盤(pán)輸入控件;
[0018]所述窗體設(shè)計(jì)代碼文件的代碼段中包含鍵盤(pán)輸入控件的MaxLength屬性賦值語(yǔ)句,該賦值語(yǔ)句定義了鍵盤(pán)輸入控件允許輸入的字符個(gè)數(shù)。
[0019]較佳地,所述代碼文件為窗體實(shí)現(xiàn)代碼文件,所述窗體輸入控件為文本框編輯控件或按鈕提交控件;
[0020]所述在代碼文件中得到與所述軟件的窗體輸入控件相對(duì)應(yīng)的代碼段具體包括:
[0021]在窗體實(shí)現(xiàn)代碼文件得到所述文本框編輯控件或按鈕提交控件相對(duì)應(yīng)的控件事件;
[0022]分析所述控件事件,得到控件事件中所包含的窗體控件輸入字段的范圍信息。
[0023]較佳地,所述代碼文件為輸入驗(yàn)證類代碼文件,所述窗體輸入控件為按鈕提交控件;
[0024]所述在代碼文件中得到與所述軟件的窗體輸入控件相對(duì)應(yīng)的代碼段具體包括:
[0025]在窗體設(shè)計(jì)代碼文件得到所述按鈕提交控件相對(duì)應(yīng)的按鈕提交事件;
[0026]構(gòu)造所述按鈕提交事件的函數(shù)調(diào)用關(guān)系式;
[0027]根據(jù)所述函數(shù)調(diào)用關(guān)系式定位鍵盤(pán)輸入控件允許輸入字段信息的正則表達(dá)式。
[0028]較佳地,所述代碼文件為數(shù)據(jù)庫(kù)對(duì)象類代碼文件,所述窗體輸入控件為鍵盤(pán)輸入控件;
[0029]所述在代碼文件中得到與所述軟件的窗體輸入控件相對(duì)應(yīng)的代碼段具體包括:
[0030]在所述窗體設(shè)計(jì)代碼文件中得到所述鍵盤(pán)輸入控件對(duì)應(yīng)的數(shù)據(jù)庫(kù)字段名稱;
[0031]掃描所述數(shù)據(jù)庫(kù)對(duì)象類的設(shè)計(jì)代碼文件,得到對(duì)應(yīng)數(shù)據(jù)庫(kù)各表的對(duì)象類;
[0032]在每個(gè)對(duì)象類中通過(guò)Column關(guān)鍵字標(biāo)簽找到表中的各字段屬性代碼段,各字段均與窗體中的輸入控件相對(duì)應(yīng)。
[0033]一種軟件輸入邊界值獲取系統(tǒng),應(yīng)用于含有圖形用戶界面⑶I的軟件,包括:
[0034]源代碼掃描模塊,用于掃描被測(cè)軟件源代碼;
[0035]代碼段查詢模塊,用于在代碼文件中得到與所述軟件的窗體輸入控件相對(duì)應(yīng)的代碼段,所述代碼段中包含輸入字段的范圍信息。[0036]較佳地,所述在代碼文件中找到與所述軟件的窗體輸入控件相對(duì)應(yīng)的代碼段具體包括:
[0037]在代碼文件中得到所述代碼文件的語(yǔ)法樹(shù)結(jié)構(gòu);
[0038]根據(jù)所述語(yǔ)法樹(shù)結(jié)構(gòu)定位與軟件的窗體輸入控件相對(duì)應(yīng)的代碼段的代碼位置;
[0039]根據(jù)所述代碼位置得到所述代碼段。
[0040]較佳地,所述代碼文件為窗體設(shè)計(jì)代碼文件,所述窗體輸入控件為選擇性控件。
[0041]較佳地,所述代碼文件為窗體設(shè)計(jì)代碼文件,所述窗體輸入控件為鍵盤(pán)輸入控件;
[0042]所述窗體設(shè)計(jì)代碼文件的代碼段中包含鍵盤(pán)輸入控件的MaxLength屬性賦值語(yǔ)句,該賦值語(yǔ)句定義了鍵盤(pán)輸入控件允許輸入的字符個(gè)數(shù)。
[0043]較佳地,所述代碼文件為窗體實(shí)現(xiàn)代碼文件,所述窗體輸入控件為文本框編輯控件或按鈕提交控件;
[0044]所述在代碼文件中得到與所述軟件的窗體輸入控件相對(duì)應(yīng)的代碼段具體包括:
[0045]在窗體實(shí)現(xiàn)代碼文件得到所述文本框編輯控件或按鈕提交控件相對(duì)應(yīng)的控件事件;
[0046]分析所述控件事件,得到控件事件中所包含的窗體控件輸入字段的范圍信息。
[0047]較佳地,所述代碼文件為輸入驗(yàn)證類代碼文件,所述窗體輸入控件為按鈕提交控件;
[0048]所述在代碼文件中得到與所述軟件的窗體輸入控件相對(duì)應(yīng)的代碼段具體包括:
[0049]在窗體設(shè)計(jì)代碼文件得到所述按鈕提交控件相對(duì)應(yīng)的按鈕提交事件;
[0050]構(gòu)造所述按鈕提交事件的函數(shù)調(diào)用關(guān)系式;
[0051]根據(jù)所述函數(shù)調(diào)用關(guān)系式定位鍵盤(pán)輸入控件允許輸入字段信息的正則表達(dá)式。
[0052]較佳地,所述代碼文件為數(shù)據(jù)庫(kù)對(duì)象類代碼文件,所述窗體輸入控件為鍵盤(pán)輸入控件;
[0053]所述在代碼文件中得到與所述軟件的窗體輸入控件相對(duì)應(yīng)的代碼段具體包括:
[0054]在所述窗體設(shè)計(jì)代碼文件中得到所述鍵盤(pán)輸入控件對(duì)應(yīng)的數(shù)據(jù)庫(kù)字段名稱;
[0055]掃描所述數(shù)據(jù)庫(kù)對(duì)象類的設(shè)計(jì)代碼文件,得到對(duì)應(yīng)數(shù)據(jù)庫(kù)各表的對(duì)象類;
[0056]在每個(gè)對(duì)象類中通過(guò)Column關(guān)鍵字標(biāo)簽找到表中的各字段屬性代碼段,各字段均與窗體中的輸入控件相對(duì)應(yīng)。
[0057]本發(fā)明的有益效果為:
[0058](I)不依賴于軟件文檔。該發(fā)明不需要測(cè)試人員閱讀相關(guān)軟件文檔就可以得到軟件輸入邊界值,有效避免了因軟件文檔陳舊、過(guò)時(shí)、不完整帶來(lái)的軟件輸入邊界值獲取錯(cuò)誤;
[0059](2)自動(dòng)化程度高。該發(fā)明既不需要測(cè)試人員閱讀源程序代碼,也不需要測(cè)試人員進(jìn)行很多嘗試性輸入,而是通過(guò)分析源程序代碼就可以找出每個(gè)輸入字段的邊界值,能夠大大減輕測(cè)試人員的工作量,提高工作效率;
[0060](3)直觀、便捷。本發(fā)明以⑶I軟件中的界面輸入字段為研究對(duì)象,通過(guò)分析源程序代碼,直接獲取界面輸入字段的邊界值。該發(fā)明雖然采用的也是常規(guī)的源程序代碼分析方法,但其解決的問(wèn)題與通常的源程序代碼分析方法有著本質(zhì)區(qū)別。使用常規(guī)的源程序代碼分析方法,找出的是源程序代碼中所有的變量,而這些變量有些與界面輸入控件有關(guān),有些則無(wú)關(guān),測(cè)試人員無(wú)法從這些變量中找出與界面控件有關(guān)的變量,從而也就無(wú)法確定界面輸入控件的邊界值。為了解決這個(gè)問(wèn)題,本發(fā)明中采用了控件-變量映射和字段-控件映射技術(shù),通過(guò)構(gòu)建控件-變量映射表和字段-控件映射表,從眾多的變量中找出與界面輸入控件有關(guān)的變量,針對(duì)界面輸入控件邊界值設(shè)定的四種不同方式,給出了具體的解決方案。
[0061]軟件輸入邊界值是軟件測(cè)試的基礎(chǔ)數(shù)據(jù)之一,只有知道了軟件輸入邊界,才能設(shè)計(jì)出有效的測(cè)試用例。本發(fā)明為軟件輸入字段測(cè)試提供了便捷、高效的方法,可以大大提高軟件輸入字段測(cè)試的充分性、有效性和測(cè)試效率。
【專利附圖】

【附圖說(shuō)明】
[0062]圖1輸入字段邊界值獲取流程;
[0063]圖2窗體設(shè)計(jì)代碼文件分析流程;
[0064]圖3窗體實(shí)現(xiàn)代碼文件分析流程;
[0065]圖4輸入驗(yàn)證類代碼文件分析流程;
[0066]圖5數(shù)據(jù)庫(kù)對(duì)象類代碼文件分析基本流程;
[0067]圖6學(xué)生信息錄入示例;
[0068]圖7窗體設(shè)計(jì)代碼文件中文本框“姓名”屬性代碼段;
[0069]圖8窗體實(shí)現(xiàn)代碼文件中文本框“學(xué)號(hào)”輸入范圍判斷代碼段;
[0070]圖9窗體實(shí)現(xiàn)代碼文件中文本框“身份證號(hào)”輸入范圍判斷代碼段;
[0071]圖10輸入驗(yàn)證類文件中文本框“身份證號(hào)”輸入范圍判斷代碼段;
[0072]圖11數(shù)據(jù)庫(kù)對(duì)象類文件中文本框“姓名”輸入范圍判斷代碼段;
[0073]圖12為一種軟件輸入邊界值獲取系統(tǒng)框圖。
【具體實(shí)施方式】
[0074]本發(fā)明主要解決GUI軟件輸入字段邊界值獲取問(wèn)題,其目的是提供一種GUI軟件輸入字段邊界值自動(dòng)獲取方法,從而使測(cè)試人員能夠直觀、準(zhǔn)確、快速地掌握輸入字段的范圍及類型,為測(cè)試用例設(shè)計(jì)提供依據(jù)。
[0075]本發(fā)明主要針對(duì)GUI軟件輸入界面四種不同的邊界和范圍設(shè)定方式,提出了獲取軟件輸入邊界的解決方案。針對(duì)通過(guò)窗體設(shè)計(jì)代碼設(shè)定軟件輸入邊界的情況,本方案采用窗體設(shè)計(jì)代碼文件自動(dòng)掃描及分析方法,找出窗體包含的所有控件,生成鍵盤(pán)輸入控件列表,根據(jù)每個(gè)控件的屬性,獲取該控件的邊界值;
[0076]針對(duì)通過(guò)窗體實(shí)現(xiàn)代碼設(shè)定軟件輸入邊界的情況,在得到鍵盤(pán)輸入控件列表的基礎(chǔ)上,采用變量過(guò)濾和控件-變量映射表;精確定位輸入字段的窗體控件和所涉及的實(shí)現(xiàn)代碼位置,從而分析得出字段的輸入范圍及類型;
[0077]針對(duì)通過(guò)驗(yàn)證類代碼設(shè)定軟件輸入邊界的情況,在建立控件-變量映射表的基礎(chǔ)上,采用正則表達(dá)式分析方法,得到變量的輸入邊界和范圍,從而得出輸入控件的范圍;
[0078]針對(duì)通過(guò)數(shù)據(jù)庫(kù)對(duì)象類代碼設(shè)定軟件輸入邊界的情況,采用控件-字段映射表,得到數(shù)據(jù)庫(kù)表字段的輸入邊界和范圍,從而得出輸入控件的范圍。
[0079]GUI類軟件包含很多控件,其中與用戶進(jìn)行數(shù)據(jù)交互最多的控件分別為T(mén)extBox、ComboBox>ListBox>CheckBox等。根據(jù)這些控件的功能,可以將其分為兩大類,一類為選擇性控件,如ComboBox、ListBox、CheckBox控件,一類為鍵盤(pán)輸入控件,如TextBox文本框控件。對(duì)于選擇性控件,其輸入字段的范圍和類型在軟件動(dòng)態(tài)運(yùn)行時(shí)在屏幕上有直觀的顯示,根據(jù)這些信息,測(cè)試人員很容易獲取其類型和輸入邊界,因此,不需要特殊的方法;而對(duì)于鍵盤(pán)輸入控件就不是如此簡(jiǎn)單了,這類控件是廣泛使用的用戶輸入控件,通過(guò)該類控件,用戶可以用鍵盤(pán)輸入相應(yīng)的數(shù)據(jù),軟件根據(jù)輸入的數(shù)據(jù)實(shí)現(xiàn)指定的功能。鍵盤(pán)輸入控件的實(shí)現(xiàn)方式是多種多樣的,這種多樣性給確定其輸入范圍帶來(lái)了困難。
[0080]對(duì)于同一個(gè)輸入字段,如用戶名,其邊界值設(shè)定方式因編程語(yǔ)言、開(kāi)發(fā)人員不同而不同,因此,需要根據(jù)不同的實(shí)現(xiàn)方式,提出不同的獲取方法。通過(guò)對(duì)軟件開(kāi)發(fā)過(guò)程中輸入界面所涉及的輸入字段分析,總結(jié)歸納了開(kāi)發(fā)人員采用的四種不同的設(shè)定方式,分別是:窗體設(shè)計(jì)、窗體實(shí)現(xiàn)、輸入驗(yàn)證、數(shù)據(jù)庫(kù)對(duì)象。針對(duì)這四種不同的實(shí)現(xiàn)方式,提出了輸入字段邊界值獲取方案,如圖1所示。
[0081]本發(fā)明的一個(gè)實(shí)施例中,公開(kāi)了一種基于窗體設(shè)計(jì)代碼文件來(lái)確定輸入字段邊界值的方法,如圖2所示:
[0082]本方案通過(guò)對(duì)鍵盤(pán)輸入控件編程方式分析,找出了一種廣泛使用的鍵盤(pán)輸入控件長(zhǎng)度設(shè)定方式,即在軟件開(kāi)發(fā)階段,開(kāi)發(fā)人員通過(guò)編輯鍵盤(pán)輸入控件的屬性來(lái)設(shè)定輸入字段的長(zhǎng)度,編輯后的屬性值保存在窗體設(shè)計(jì)代碼文件中。根據(jù)這個(gè)事實(shí),提出了一種基于窗體設(shè)計(jì)代碼文件來(lái)確定輸入字段邊界值的方法。本方案主要是通過(guò)掃描窗體設(shè)計(jì)代碼文件構(gòu)造控件列表,控件列表包含該窗體所擁有的鍵盤(pán)輸入控件信息,包括控件的名稱和MaxLength屬性,該屬性值定義了鍵盤(pán)輸入控件允許輸入的字符個(gè)數(shù),這個(gè)值就是鍵盤(pán)輸入控件的長(zhǎng)度邊界值。
[0083]一般情況下,通過(guò)分析窗體設(shè)計(jì)代碼,就可以獲取鍵盤(pán)輸入控件輸入字段的長(zhǎng)度,但在具體的實(shí)現(xiàn)過(guò)程中,并不是所有的開(kāi)發(fā)人員都是采用上述方式設(shè)置字段長(zhǎng)度的。如果開(kāi)發(fā)人員在軟件開(kāi)發(fā)階段沒(méi)有設(shè)置鍵盤(pán)輸入控件中的MaxLength屬性,那么系統(tǒng)會(huì)將其允許輸入長(zhǎng)度設(shè)置為默認(rèn)值,由于該默認(rèn)值是系統(tǒng)設(shè)置而非開(kāi)發(fā)人員設(shè)置的,因此,在窗體設(shè)計(jì)代碼文件中不會(huì)出現(xiàn)相應(yīng)的默認(rèn)值屬性賦值語(yǔ)句,允許輸入的字段長(zhǎng)度通常默認(rèn)為16位無(wú)符號(hào)整型的最大值。
[0084]在軟件開(kāi)發(fā)過(guò)程中,在窗體實(shí)現(xiàn)代碼中設(shè)置鍵盤(pán)輸入控件輸入字段范圍的情況也很多見(jiàn)。針對(duì)這種情況,在本發(fā)明的一個(gè)實(shí)施例中,公開(kāi)了一種基于窗體實(shí)現(xiàn)代碼文件來(lái)確定輸入字段范圍的方法,如圖3所示:
[0085]本方案首先掃描分析窗體設(shè)計(jì)代碼文件構(gòu)造控件列表,包括控件的名稱和事件。然后掃描分析窗體實(shí)現(xiàn)代碼文件,得到實(shí)現(xiàn)代碼中的全部變量及變量所在事件(函數(shù))名稱,生成變量列表。同時(shí),以輸入控件列表作為基表,遍歷每個(gè)輸入控件,查找以每個(gè)輸入控件的文本屬性作為右值的賦值語(yǔ)句,對(duì)變量列表進(jìn)行過(guò)濾,找到與窗體控件對(duì)應(yīng)的變量,生成控件-變量映射表。通常,鍵盤(pán)輸入控件輸入字段會(huì)出現(xiàn)在兩種控件事件中。(I)文本框控件的編輯事件;(2)按鈕控件的提交事件。如果控件列表中的文本框控件存在編輯事件,那么,設(shè)置該文本框輸入字段邊界的語(yǔ)句就包含在該事件中,通過(guò)控件-變量映射表找到文本框?qū)?yīng)的變量,分析變量所在的語(yǔ)句可以得到文本框輸入字段的邊界;如果控件列表中的文本框控件不存在編輯事件,那么按鈕控件的提交事件中會(huì)通過(guò)一系列條件判斷語(yǔ)句對(duì)窗體中各文本框的輸入字段邊界或類型進(jìn)行限制,因此,可以通過(guò)控件-變量映射表找到文本框?qū)?yīng)的變量,分析變量所在的條件判斷語(yǔ)句,如if(num>l| num<100)等,可以得到變量num的輸入范圍。需要說(shuō)明的是,源程序代碼中存在很多條件判斷語(yǔ)句,并非每一條條件判斷語(yǔ)句都與輸入字段邊界值有關(guān),因此,如果采用常規(guī)的源程序代碼分析方法,將得到很多與輸入字段邊界無(wú)關(guān)的條件判斷語(yǔ)句,對(duì)于這些條件判斷語(yǔ)句,需要測(cè)試人員再次進(jìn)行分析,從中找出與界面輸入字段邊界有關(guān)的語(yǔ)句,從而確定出界面輸入字段的邊界。顯然,這種方法并不能從根本上解決界面控件輸入邊界問(wèn)題。為了解決這個(gè)問(wèn)題,本發(fā)明采用控件-變量映射技術(shù),通過(guò)建立控件-變量映射表,找出與界面控件有關(guān)的變量,在進(jìn)行源代碼分析時(shí),只提取與界面控件有關(guān)的變量所對(duì)應(yīng)的條件判斷語(yǔ)句,通過(guò)分析這些條件判斷語(yǔ)句,找出界面輸入控件的邊界值。例如,對(duì)于if(num>l I num<100)條件判斷語(yǔ)句,根據(jù)控件-變量映射表,該語(yǔ)句中的變量num與界面輸入控件有關(guān)系,在此基礎(chǔ)上,通過(guò)對(duì)該條件判斷語(yǔ)句分析,得出與變量num對(duì)應(yīng)的界面輸入控件的輸入邊界為[1,100]。這也是本發(fā)明與已有的源程序代碼分析方法的不同之處。
[0086]在軟件開(kāi)發(fā)過(guò)程中,對(duì)于某些類型的軟件,開(kāi)發(fā)人員往往只是對(duì)關(guān)鍵字段或數(shù)據(jù)庫(kù)主鍵字段進(jìn)行判斷,窗體上的其它鍵盤(pán)輸入控件的輸入邊界和類型一般不做限制;如果對(duì)窗體上的每一個(gè)鍵盤(pán)輸入控件的輸入邊界或類型都進(jìn)行判斷,則程序中需要增加很多條件判斷語(yǔ)句,這將是一件非常繁瑣的過(guò)程,邏輯復(fù)雜且容易遺漏。為了解決這個(gè)問(wèn)題,很多開(kāi)發(fā)人員將與輸入字段邊界判斷相關(guān)的處理單獨(dú)寫(xiě)到一個(gè)類中,采用正則表達(dá)式進(jìn)行字段驗(yàn)證。
[0087]針對(duì)這種情況,在本發(fā)明的另一個(gè)實(shí)施例中,公開(kāi)了一種基于輸入驗(yàn)證類代碼文件來(lái)確定輸入字段范圍的方法,如圖4所不:
[0088]本方案通過(guò)對(duì)窗體設(shè)計(jì)、實(shí)現(xiàn)代碼的掃描和分析,生成控件-變量映射表。基于窗體的按鈕提交事件,過(guò)濾得到窗體輸入控件與按鈕提交事件中包含變量的對(duì)應(yīng)關(guān)系,同時(shí)從變量表中還能得到以該變量作為傳遞參數(shù)的函數(shù),該函數(shù)即為對(duì)輸入驗(yàn)證類成員函數(shù)。在輸入驗(yàn)證類成員函數(shù)中找到對(duì)輸入控件輸入邊界或類型的正則表達(dá)式語(yǔ)句,解析該正則表達(dá)式,就可以得到鍵輸入控件的輸入邊界或類型。
[0089]在軟件開(kāi)發(fā)過(guò)程中,大多數(shù)開(kāi)發(fā)人員都采用上述三種方式設(shè)置鍵盤(pán)輸入控件的輸入字段邊界和類型,對(duì)于這三種設(shè)置方式,前面分別給出了解決方案。近幾年來(lái),隨著.NETFramework和C#的快速流行,越來(lái)越多的開(kāi)發(fā)人員開(kāi)始選擇這種方便快捷的開(kāi)發(fā)模式。與已有的開(kāi)發(fā)語(yǔ)言相比,C#3.0帶來(lái)的最大變化就是增加了LanguageIntegratedQuery (LINQ)技術(shù),LINQ是處理對(duì)象集合的一種新方式,這些對(duì)象來(lái)自于各種數(shù)據(jù)源,其中最重要的數(shù)據(jù)源就是數(shù)據(jù)庫(kù)。
[0090]目前,大多數(shù)GUI應(yīng)用程序都有后臺(tái)數(shù)據(jù)庫(kù)作為支撐,GUI界面上的所有輸入字段都保存在后臺(tái)數(shù)據(jù)庫(kù)中,LINQ技術(shù)的LINQtoSQL類,提供了一種簡(jiǎn)單的方式把界面上的控件圖形化地綁定到數(shù)據(jù)庫(kù)上,這樣就可以快捷、簡(jiǎn)單地創(chuàng)建出功能齊全的數(shù)據(jù)庫(kù)應(yīng)用程序。LINQtoSQL在關(guān)系數(shù)據(jù)庫(kù)的表和C#程序?qū)ο笾g創(chuàng)建了一個(gè)對(duì)象相關(guān)映射層,開(kāi)發(fā)人員可以從數(shù)據(jù)庫(kù)中自動(dòng)創(chuàng)建匹配數(shù)據(jù)庫(kù)的表,而不需要自己創(chuàng)建,從而可以直接使用對(duì)應(yīng)數(shù)據(jù)庫(kù)表中的類對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。
[0091]根據(jù)LINQ技術(shù)的特點(diǎn),對(duì)于采用此種方式開(kāi)發(fā)的應(yīng)用程序,在本發(fā)明的另一個(gè)實(shí)施例中,公開(kāi)了一種基于數(shù)據(jù)庫(kù)對(duì)象類代碼文件來(lái)確定輸入字段邊界和類型的方法,如圖5所示:
[0092]該方案通過(guò)分析數(shù)據(jù)庫(kù)對(duì)象類的設(shè)計(jì)代碼文件獲取對(duì)應(yīng)窗體控件的輸入字段邊界。首先,掃描窗體設(shè)計(jì)代碼文件,生成控件列表。然后,掃描數(shù)據(jù)庫(kù)對(duì)象類的設(shè)計(jì)代碼文件,得到對(duì)應(yīng)數(shù)據(jù)庫(kù)各表的對(duì)象類,生成字段屬性列表。在每個(gè)對(duì)象類中通過(guò)Column關(guān)鍵字標(biāo)簽找到表中的各字段屬性代碼段,建立各字段與窗體中的控件一一對(duì)應(yīng)關(guān)系,生成字段-控件映射表。在字段屬性代碼段中包含了該字段在數(shù)據(jù)庫(kù)中定義的類型和長(zhǎng)度,這些類型和長(zhǎng)度就是鍵盤(pán)輸入控件在數(shù)據(jù)庫(kù)中所限制的輸入范圍和類型。如果想進(jìn)一步確定輸入控件在實(shí)際應(yīng)用程序中的輸入邊界,可以結(jié)合前面三種方法做進(jìn)一步分析。
[0093]下面以用VSC#語(yǔ)言開(kāi)發(fā)的學(xué)生信息錄入程序?yàn)槔?,具體說(shuō)明如何通過(guò)本發(fā)明實(shí)施例來(lái)獲取學(xué)生信息輸入字段邊界。示例程序輸入界面如圖6所示。
[0094](I)窗體設(shè)計(jì)代碼文件分析
[0095]以獲取“姓名”輸入框字段長(zhǎng)度為例,該字段的邊界在窗體設(shè)計(jì)中設(shè)置。通過(guò)掃描工程中的源代碼文件,首先在源代碼文件列表中找到“新建學(xué)生信息”界面的窗體設(shè)計(jì)代碼文件fmNew.designer, cs,掃描窗體設(shè)計(jì)代碼,找到關(guān)鍵字“Windows窗體設(shè)計(jì)器生成的代碼”代碼段,根據(jù)該段代碼生成控件列表,通過(guò)控件名稱和類型,定位“姓名”輸入框的定義信息,找到MaxLength屬性值,即可獲取輸入框字段范圍。圖7為與“姓名”輸入框?qū)傩远x相關(guān)的代碼,從該代碼中可以得到“姓名”字段輸入長(zhǎng)度為5。
[0096](2)窗體實(shí)現(xiàn)代碼文件分析
[0097]以獲取“學(xué)號(hào)”輸入框字段邊界為例,該字段的邊界在窗體實(shí)現(xiàn)代碼中設(shè)置。
[0098]通過(guò)掃描工程中的源代碼文件,首先在源代碼文件列表中找到“新建學(xué)生信息”界面的窗體設(shè)計(jì)代碼文件fmNew.designer, cs,掃描窗體設(shè)計(jì)代碼,找到關(guān)鍵字“Windows窗體設(shè)計(jì)器生成的代碼”代碼段,根據(jù)該段代碼生成控件列表,通過(guò)控件名稱和類型,定位“學(xué)號(hào)”輸入框的定義信息,然后在源代碼文件列表中找到“新建學(xué)生信息”界面的窗體實(shí)現(xiàn)代碼文件fmNew.cs,掃描窗體實(shí)現(xiàn)代碼,生成變量列表。通過(guò)控件事件,生成控件_變量映射表,找到保存按鈕事件包含的變量,定位該變量的范圍判斷代碼,通過(guò)映射表獲取變量對(duì)應(yīng)的窗體輸入框控件,即可獲取輸入框“學(xué)號(hào)”字段范圍。圖8為“學(xué)號(hào)”輸入框范圍判斷代碼,從中可以得到int型變量StrID對(duì)應(yīng)窗體中的txtBoxStuID輸入框,對(duì)變量strID范圍的判斷代碼,即為對(duì)輸入框txtBoxStuID輸入范圍的判斷,據(jù)此可獲取“學(xué)號(hào)”字段輸入邊界為I一99。
[0099](3)輸入驗(yàn)證類代碼文件
[0100]以獲取“身份證號(hào)”輸入框字段邊界為例,該字段的邊界在正則表達(dá)式中指定。
[0101]通過(guò)掃描工程中的源代碼文件,首先在源代碼文件列表中找到“新建學(xué)生信息”界面的窗體設(shè)計(jì)代碼文件fmNew.designer, cs,掃描窗體設(shè)計(jì)代碼,找到關(guān)鍵字“Windows窗體設(shè)計(jì)器生成的代碼”代碼段,根據(jù)該段代碼生成控件列表,通過(guò)控件名稱和類型,定位“身份證號(hào)”輸入框的定義信息,然后在源代碼文件列表中找到“新建學(xué)生信息”界面的窗體實(shí)現(xiàn)代碼文件fmNew.cs,掃描窗體實(shí)現(xiàn)代碼,生成變量列表。通過(guò)保存按鈕事件,得到“身份證號(hào)”輸入控件與按鈕提交事件中包含變量的對(duì)應(yīng)關(guān)系,同時(shí)從變量表中還能得到以該變量作為傳遞參數(shù)的函數(shù),該函數(shù)即為對(duì)輸入驗(yàn)證類成員函數(shù)。掃描輸入驗(yàn)證類代碼文件,找到被調(diào)用的函數(shù),分析函數(shù)實(shí)現(xiàn)中的正則表達(dá)式,即可獲取輸入框字段邊界。圖9為在窗體實(shí)現(xiàn)代碼文件中對(duì)“身份證號(hào)”輸入框范圍判斷代碼,從中可以看到判斷語(yǔ)句調(diào)用了StringValidation 類中的 isChinaIDCardNumString(string str)函數(shù),傳遞給該函數(shù)的string型變量IDCardNum對(duì)應(yīng)窗體中txtBoxIDCardNum輸入控件,即“身份證號(hào)”輸入框。圖10為輸入驗(yàn)證類StringValidation對(duì)身份證號(hào)范圍判斷的具體函數(shù)實(shí)現(xiàn),通過(guò)分析正則表達(dá)式@〃\d{18} I \d{15} 〃,可以得知身份證號(hào)為18位或15位的數(shù)字。
[0102](4)數(shù)據(jù)庫(kù)對(duì)象類代碼文件
[0103]以獲取“姓名”輸入框字段長(zhǎng)度為例,該字段的范圍在數(shù)據(jù)庫(kù)對(duì)象類的設(shè)計(jì)代碼中指定。
[0104]通過(guò)掃描工程中的源代碼文件,首先在源代碼文件列表中找到“新建學(xué)生信息”界面的窗體設(shè)計(jì)代碼文件fmNew.designer, cs,掃描窗體設(shè)計(jì)代碼,找到關(guān)鍵字“Windows窗體設(shè)計(jì)器生成的代碼”代碼段,根據(jù)該段代碼生成控件列表,定位“姓名”輸入框的定義信息。掃描數(shù)據(jù)庫(kù)對(duì)象類的設(shè)計(jì)代碼文件,生成字段屬性列表。建立字段-控件映射表,找到與“姓名”輸入框?qū)?yīng)的數(shù)據(jù)庫(kù)表字段,定位到定義該字段的屬性代碼,即可獲取該字段的輸入邊界、類型及限制信息。圖11為“姓名”輸入框邊界判斷代碼,可以得到“姓名”字段輸入長(zhǎng)度為5,并且不能為空值。
[0105]本發(fā)明的另一實(shí)施例中,公開(kāi)了一種與上述方法實(shí)施例相對(duì)應(yīng)的GUI軟件輸入邊界值獲取系統(tǒng),如圖12所示,包括:
[0106]預(yù)處理模塊,用于對(duì)源程序代碼進(jìn)行規(guī)范化處理;
[0107]源代碼掃描模塊,用于掃描被測(cè)軟件源代碼;
[0108]控件表處理模塊,用于生成界面輸入控件列表;
[0109]變量表處理模塊,用于生成全部變量列表;
[0110]映射表處理模塊,用于建立變量表和控件表對(duì)應(yīng)關(guān)系列表;
[0111]代碼段查詢模塊,用于在代碼文件中得到與所述軟件的窗體輸入控件相對(duì)應(yīng)的代碼段,所述代碼段中包含輸入字段的范圍信息。
[0112]以上所述的【具體實(shí)施方式】,對(duì)本發(fā)明的技術(shù)方案進(jìn)行了詳細(xì)說(shuō)明。所應(yīng)理解的是,以上所述僅為本發(fā)明的【具體實(shí)施方式】而已,并不用于限定本發(fā)明的保護(hù)范圍,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種軟件輸入邊界值獲取方法,應(yīng)用于含有圖形用戶界面⑶I的軟件,包括: 掃描被測(cè)軟件源代碼; 在代碼文件中得到與所述軟件的窗體輸入控件相對(duì)應(yīng)的代碼段,所述代碼段中包含輸入字段的范圍信息。
2.如權(quán)利要求1所述的方法,其特征在于: 所述在代碼文件中找到與所述軟件的窗體輸入控件相對(duì)應(yīng)的代碼段具體包括: 在代碼文件中得到所述代碼文件的語(yǔ)法樹(shù)結(jié)構(gòu); 根據(jù)所述語(yǔ)法樹(shù)結(jié)構(gòu)定位與軟件的窗體輸入控件相對(duì)應(yīng)的代碼段的代碼位置; 根據(jù)所述代碼位置得到所述代碼段。
3.如權(quán)利要求1或2所述的方法,其特征在于: 所述代碼文件為窗體設(shè)計(jì)代碼文件,所述窗體輸入控件為選擇性控件。
4.如權(quán)利要求1或2所述的方法,其特征在于: 所述代碼文件為窗體設(shè)計(jì)代碼文件,所述窗體輸入控件為鍵盤(pán)輸入控件; 所述窗體設(shè)計(jì)代碼文 件的代碼段中包含鍵盤(pán)輸入控件的MaxLength屬性賦值語(yǔ)句,該賦值語(yǔ)句定義了鍵盤(pán)輸入控件允許輸入的字符個(gè)數(shù)。
5.如權(quán)利要求1或2所述的方法,其特征在于: 所述代碼文件為窗體實(shí)現(xiàn)代碼文件,所述窗體輸入控件為文本框編輯控件或按鈕提交控件; 所述在代碼文件中得到與所述軟件的窗體輸入控件相對(duì)應(yīng)的代碼段具體包括: 在窗體實(shí)現(xiàn)代碼文件得到所述文本框編輯控件或按鈕提交控件相對(duì)應(yīng)的控件事件; 分析所述控件事件,得到控件事件中所包含的窗體控件輸入字段的范圍信息。
6.如權(quán)利要求1或2所述的方法,其特征在于: 所述代碼文件為輸入驗(yàn)證類代碼文件,所述窗體輸入控件為按鈕提交控件; 所述在代碼文件中得到與所述軟件的窗體輸入控件相對(duì)應(yīng)的代碼段具體包括: 在窗體設(shè)計(jì)代碼文件得到所述按鈕提交控件相對(duì)應(yīng)的按鈕提交事件; 構(gòu)造所述按鈕提交事件的函數(shù)調(diào)用關(guān)系式; 根據(jù)所述函數(shù)調(diào)用關(guān)系式定位鍵盤(pán)輸入控件允許輸入字段信息的正則表達(dá)式。
7.如權(quán)利要求1或2所述的方法,其特征在于: 所述代碼文件為數(shù)據(jù)庫(kù)對(duì)象類代碼文件,所述窗體輸入控件為鍵盤(pán)輸入控件; 所述在代碼文件中得到與所述軟件的窗體輸入控件相對(duì)應(yīng)的代碼段具體包括: 在所述窗體設(shè)計(jì)代碼文件中得到所述鍵盤(pán)輸入控件對(duì)應(yīng)的數(shù)據(jù)庫(kù)字段名稱; 掃描所述數(shù)據(jù)庫(kù)對(duì)象類的設(shè)計(jì)代碼文件,得到對(duì)應(yīng)數(shù)據(jù)庫(kù)各表的對(duì)象類; 在每個(gè)對(duì)象類中通過(guò)Column關(guān)鍵字標(biāo)簽找到表中的各字段屬性代碼段,各字段均與窗體中的輸入控件相對(duì)應(yīng)。
8.一種軟件輸入邊界值獲取系統(tǒng),應(yīng)用于含有圖形用戶界面⑶I的軟件,包括: 源代碼掃描模塊,用于掃描被測(cè)軟件源代碼; 代碼段查詢模塊,用于在代碼文件中得到與所述軟件的窗體輸入控件相對(duì)應(yīng)的代碼段,所述代碼段中包含輸入字段的范圍信息。
9.如權(quán)利要求8所述的系統(tǒng),其特征在于:所述在代碼文件中找到與所述軟件的窗體輸入控件相對(duì)應(yīng)的代碼段具體包括:在代碼文件中得到所述代碼文件的語(yǔ)法樹(shù)結(jié)構(gòu); 根據(jù)所述語(yǔ)法樹(shù)結(jié)構(gòu)定位與軟件的窗體輸入控件相對(duì)應(yīng)的代碼段的代碼位置;根據(jù)所述代碼位置得到所述代碼段。
【文檔編號(hào)】G06F11/36GK103970662SQ201410218616
【公開(kāi)日】2014年8月6日 申請(qǐng)日期:2014年5月22日 優(yōu)先權(quán)日:2014年5月22日
【發(fā)明者】于長(zhǎng)鉞, 于秀山, 田洪娟, 郭立宏, 劉然, 遲芳, 劉豐, 孫寧 申請(qǐng)人:于秀山
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
六安市| 仁怀市| 禹州市| 文登市| 唐山市| 屯门区| 莱州市| 八宿县| 赞皇县| 雷州市| 中卫市| 东城区| 舒兰市| 盐城市| 峨眉山市| 惠安县| 乃东县| 东阿县| 靖州| 伊金霍洛旗| 利辛县| 承德县| 灌阳县| 南昌市| 都兰县| 来凤县| 木兰县| 盐津县| 东乡县| 陆良县| 新野县| 团风县| 秦安县| 石门县| 齐河县| 景谷| 灵川县| 阳东县| 云梦县| 宁乡县| 湖口县|