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

圖形用戶界面軟件功能覆蓋測試方法

文檔序號:6331312閱讀:293來源:國知局
專利名稱:圖形用戶界面軟件功能覆蓋測試方法
技術領域
本發(fā)明涉及一種圖形用戶界面(GUI)軟件功能測試技術,尤指GUI軟件功能覆蓋 測試方法。
背景技術
對軟件進行充分測試是軟件測試的根本要求,覆蓋測試是衡量測試充分性的主要 標準。軟件覆蓋測試研究最早是圍繞測試用例對程序代碼的覆蓋程度而展開的,提出了語 句覆蓋、分支覆蓋、路徑覆蓋等標準,并推出了商業(yè)化工具,有代表性的有英國LDRA公司的 TestBed。這類工具從源程序代碼的角度,采用程序插裝技術,通過跟蹤測試用例的執(zhí)行,給 出測試用例對程序代碼的覆蓋情況,為測試用例設計和測試充分性評價提供依據(jù)。圖形用 戶界面(Graphical User Interface,簡稱⑶I,又稱圖形用戶接口)軟件是采用事件驅動 方式執(zhí)行的,用戶通過與圖形的交互來觸發(fā)相應的事件進而與底層的代碼進行交互,因此, 不能用上述方法來度量GUI軟件測試充分性。針對上述問題,國內外學者相繼開展了針對GUI軟件功能測試技術的研究工作, 這些研究工作的重點是如何對⑶I軟件的功能進行測試,有代表性的有基于錄制/回放 的功能測試,這類工具通過錄制用戶的操作,以腳本的方式記錄測試過程,在回歸測試時, 回放測試腳本,從而對軟件自動進行測試。這種方法只記錄了控件的位置和編號等信息, 這些信息可以保證在腳本回放時能夠準確找到相應控件,但對于測試人員而言,這些信息 可讀性差,從這些信息中,測試人員難以找到對應的控件,并且,也無法得知控件之間的相 互關系;在功能覆蓋測試領域,有代表性的有Coverage Criteria for⑶I Testing (Atif Μ. Memon)。在這些研究報告中,Atif M. Memon提出了事件覆蓋、事件交互覆蓋、長度為η的 事件序列覆蓋、調用覆蓋、調用終止覆蓋五種GUI軟件測試覆蓋準則。這種覆蓋標準對于指 導測試具有重要的理論價值,但在具體應用中還存在如下問題(1)軟件所具有的所有功能以及功能之間的交互(功能圖)需要手工獲取。軟件 功能圖是功能覆蓋測試的基礎和依據(jù),目前所提出的方法中,功能圖只能由測試人員根據(jù) 軟件需求規(guī)格說明等文檔手工產(chǎn)生,工作量大、準確性差;(2)測試過程跟蹤采用事件插裝的方法實現(xiàn),代碼膨脹率高;(3)無法直觀顯示覆蓋情況;(4)不能夠對測試用例進行優(yōu)化。GUI軟件功能繁多、組合復雜,通過上述方法,測試人員難以準確掌握軟件的所有 功能,難以遍歷軟件的這些功能,無法得知測試用例對軟件功能的覆蓋程度,容易造成功能 點的重復和遺漏,嚴重影響了測試質量和效率。

發(fā)明內容
本發(fā)明所解決的技術問題是提供一種圖形用戶界面軟件功能覆蓋測試方法,解決 了軟件功能圖自動生成問題。
技術方案如下一種圖形用戶界面軟件功能覆蓋測試方法,包括通過對被測軟件進行分析,找出軟件所有窗口之間調用關系、每一個窗口內部所 包含的事件及其相互關系以及窗口之間的事件交互關系,并根據(jù)事件在測試過程中所起的 作用對事件交互圖進行簡化;對測試過程進行跟蹤,捕獲所述被測軟件執(zhí)行過程中所經(jīng)過的窗口和事件,并根 據(jù)捕獲的所述測試用例的執(zhí)行信息生成軟件操作圖;對測試用例進行優(yōu)化,根據(jù)測試用例測所覆蓋的事件和事件路徑等信息,剔除重 復和冗余的測試用例;所述測試用例根據(jù)所述被測軟件設計,在測試過程中,通過執(zhí)行所述 測試用例對所述被測軟件進行測試;將所述軟件操作圖與所述事件交互圖進行比對,在所述事件交互圖上標識出已覆 蓋的事件和事件交互,同時,給出測試覆蓋統(tǒng)計結果;判斷是否滿足覆蓋標準,根據(jù)測試覆蓋統(tǒng)計結果,判斷是否滿足設定的測試覆蓋 標準;若滿足,則停止測試;否則,跟蹤新的測試用例執(zhí)行情況。進一步所述被測軟件的信息分析是通過識別圖形用戶界面GUI軟件中控件,在 構建窗口調用關系圖和窗口內事件關系圖的基礎上得到被測軟件的事件交互圖,并對事件 交互圖進行化簡。進一步所述被測軟件的信息分析的過程包括識別⑶I軟件中控件;構建窗口調用關系圖;生成窗口內事件關系;得到被測軟件的事件交互圖,內容包括控件的名稱、屬性和相互關系;對事件交互圖進行化簡。進一步所述事件包括輸入/輸出性事件、系統(tǒng)交互事件、結構操作事件和無關聯(lián) 事件。進一步根據(jù)事件在測試過程中所起的作用對事件交互圖進行簡化時,根據(jù)對 GUI軟件窗口中的事件進行分類,去除不需要的事件之間的交互。進一步構造GUI窗口調用關系圖時,對被測軟件的窗口及控件進行捕獲識別, 按照窗口和控件的標題來識別被測軟件的信息;如果出現(xiàn)反復使用的控件,使用控件的句 柄來唯一標識,調用新的窗口后,使用窗口的句柄來標識窗口,并且記錄窗口之間的調用關 系,生成窗口調用關系圖。進一步測試過程跟蹤過程中,采用鉤子技術捕獲測試用例執(zhí)行過程中所經(jīng)過的 窗口、事件和記錄測試用例的執(zhí)行過程,并根據(jù)捕獲的測試用例執(zhí)行信息,生成軟件操作 圖。進一步對測試用例進行優(yōu)化時在獲取的軟件操作圖基礎上進行,剔除重復和冗 余的測試用例。進一步在判斷是否滿足覆蓋標準之前還包括測試覆蓋的統(tǒng)計與顯示。進一步所述覆蓋標準包括窗口覆蓋準則、窗口內部事件覆蓋準則、窗口內部事件 交互覆蓋準則、η長度事件路徑覆蓋準則或者輸入空間覆蓋準則;其中,所述窗口覆蓋準則是指,當且僅當測試人員所設計的測試用例集T覆蓋了 GUI軟件所包含的所有窗口,就稱該 測試用例集T是窗口覆蓋充分的;所述窗口內部事件覆蓋準則是指,當且僅當測試用例集 T覆蓋了窗口內部所有的事件,就稱該測試用例集T是窗口內部事件覆蓋充分的;所述窗口 內部事件交互覆蓋準則是指,當且僅當測試用例集T覆蓋了 GUI軟件窗口內部所有事件交 互,就稱該測試用例集T是窗口內部事件交互覆蓋充分的;所述η長度事件路徑覆蓋準則是 指,當且僅當測試用例集T覆蓋了 GUI軟件所包含的所有η長度事件路徑,就稱該測試用例 集T是η長度事件路徑覆蓋充分的;所述輸入空間覆蓋準則是指,當且僅當測試用例集T覆 蓋了操作點序列中所有的輸入空間特征值組合,就稱該測試用例集對此操作點序列的輸入 空間是覆蓋充分的。本發(fā)明的技術效果如下1、解決了軟件功能圖自動生成問題。目前的軟件功能圖靠手工實現(xiàn),工作量大,差 錯率高;2、解決了事件交互圖簡化問題。本發(fā)明提出的簡化方法符合軟件測試實際,簡化 后對測試效果沒有影響;3、采用基于有向圖的貪心算法對測試用例進行優(yōu)化,并將其與測試過程有機結 合。本發(fā)明提出的方法避免了普通貪心算法容易將兩個不同路徑的測試用例誤合并問題;4、采用增強的錄制方法,能夠識別屏幕上所顯示的控件信息,記錄信息的可讀性 好;5、采用圖形化方式,直觀顯示測試覆蓋情況,并能夠給出覆蓋次數(shù)等信息,方便了 測試人員使用。


圖1是本發(fā)明的主流程圖2是本發(fā)明的軟件信息分析流程圖3是本發(fā)明的MS記事本軟件的替換窗口示意圖4是本發(fā)明的簡化后事件交互圖5是本發(fā)明的按鈕控件獲取流程圖6是本發(fā)明的文本框獲取流程圖
圖7是本發(fā)明的菜單項獲取流程圖8是本發(fā)明的IP地址框獲取處理流程圖9是本發(fā)明的ListBox列表框獲取處理流程圖10是本發(fā)明的ListView控件處理流程圖11是本發(fā)明的未操作控件默認屬性提取流程圖12是本發(fā)明的跟蹤MS記事本軟件中部分操作所得到的軟件操作圖
具體實施例方式
本發(fā)明主要解決軟件功能圖自動生成、測試過程跟蹤、功能覆蓋統(tǒng)計與顯示、測試 用例優(yōu)化技術問題,使測試人員能夠直觀、準確掌握測試用例對軟件功能的覆蓋程度,為測 試用例設計和測試充分性評估提供依據(jù)。
下面參考附圖和優(yōu)選實施例對本發(fā)明技術方案作詳細描述。如圖1所示,是本發(fā)明的主流程圖,GUI軟件功能覆蓋測試方法的步驟如下步驟SlOl 對被測軟件進行分析。在測試過程中,通過執(zhí)行測試用例對被測軟件 進行測試,測試用例的設計要根據(jù)被測軟件的具體情況設計不同的測試用例。通過對被測軟件進行分析,找出軟件所有窗口之間調用關系、每一個窗口內部所 包含的事件及其相互關系和窗口之間事件交互關系,并根據(jù)事件在測試過程中所起的作 用,得到事件交互信息(包括指事件的名稱、屬性、可能的交互)并構建事件交互圖,對事 件交互圖進行簡化,剔除對測試沒有影響或影響較少的事件交互。被測軟件信息分析主要通過識別⑶I軟件中控件,在構建窗口調用關系圖、窗口 內事件關系圖的基礎上,得到被測軟件的事件交互圖,并對事件交互圖進行化簡。如圖2所示,是軟件信息分析流程圖,步驟包括步驟201 識別⑶I軟件中控件;GUI軟件由控件組成,本發(fā)明使用如下結構來保存控件的五個屬性值,分別是控件 句柄、控件標題、控件類名、控件父窗口句柄、控件父窗口標題,在識別控件的過程中都需要 調用相應的Win32 API底層函數(shù)??丶傩越Y構如下 控件句柄的獲取方法如下 控件標題獲取方法如下 控件類名獲取方法如下 控件父窗口句柄獲取方法如下 步驟202 構建窗口調用關系圖;⑶I窗口調用關系圖表示窗口之間的層級關系,為了構造⑶I窗口調用關系圖,首 先需要對被測軟件的窗口及控件進行捕獲識別,然后按照窗口和控件的標題來識別被測軟 件的信息,如果出現(xiàn)反復使用的控件,需使用控件的句柄來唯一標識,調用新的窗口后,使 用窗口的句柄來標識窗口,并且記錄窗口之間的調用關系,生成窗口調用關系圖。本發(fā)明采用深度優(yōu)先搜索算法,首先加載軟件的主界面,而后從軟件的主窗口開 始,進行深度優(yōu)先搜索,逐步打開所有的子窗口,生成窗口調用關系圖,深度優(yōu)先搜索算法 中包括DFSO主控函數(shù)和DFS-RecursiveO深度優(yōu)先搜索過程函數(shù),最終標識出每個頂點 的前序和后序結點。深度優(yōu)先搜索算法結構如下
算法深度優(yōu)先搜索算法 輸入森林F
輸出深度優(yōu)先搜索樹頂點的前序和后序 //深度優(yōu)先搜索主控函數(shù)。F代表森林。 PROCEDURE: DFS(Forest F) R//R表示森林F的頂節(jié)點集合 FORALL root e R Do
DFS-Recusive(root) //窗口深度搜索函數(shù)
PROCEDURE: DFS-Recursive(Node η)
//W表示結點η的孩子結點集合 W=get- child-nodes(n) //對W節(jié)點進行遞歸搜索 FORALL wEW DO DFS-Recursive(w)步驟203 生成窗口內事件關系;步驟204 得到被測軟件的事件交互圖,內容包括控件的名稱、屬性、相互關系;步驟204 對事件交互圖進行化簡。通過對被測GUI軟件的信息分析而得到的事件交互數(shù)量龐大,如果不對事件交互 規(guī)模進行簡化,在實際測試過程中,難以覆蓋所有這些事件交互。(1)事件分類為了有效簡化事件交互數(shù)量,本發(fā)明中根據(jù)操作控件底層代碼實現(xiàn)的不同,將事 件分為四類輸入/出性事件、系統(tǒng)交互事件、結構操作事件和無關聯(lián)事件。輸入/出性事件輸入/出性事件是指基本不需要人為編寫代碼的事件。這類事 件通常由可視化的開發(fā)工具自動生成實現(xiàn)代碼,其作用是為系統(tǒng)交互事件的執(zhí)行提供數(shù)據(jù) 的輸入或者數(shù)據(jù)的輸出,在一個比較典型的GUI軟件中,文本輸入框、顯示框以及下拉菜單等控件所引發(fā)的事件均屬于輸入/出性事件,在GUI軟件中此類控件占著很大比重,此類事 件之間交互一般不會出現(xiàn)異常問題;系統(tǒng)交互事件系統(tǒng)交互事件是指實現(xiàn)系統(tǒng)功能但不引起GUI結構變化的事件, 這部分事件一般需要人為編寫代碼,它的觸發(fā)將用戶的輸入同系統(tǒng)的底層代碼聯(lián)系起來, 實現(xiàn)了系統(tǒng)功能,但不引起GUI結構變化的事件;結構操作事件結構操作事件是指引發(fā)GUI軟件結構變化的事件。這類事件引發(fā) 了軟件窗口的調用與返回,同一窗口內,這類事件只能作為終端事件,其它事件可以與其交 互,其不參與和窗口內其它事件的交互;無關聯(lián)事件無關聯(lián)事件是指對事件交互沒有影響的事件,這類事件完全獨立,與 其他事件沒有任何交互依賴關系,它的執(zhí)行與其他事件的執(zhí)行與否和執(zhí)行順序沒有任何的 關系,它的執(zhí)行也可能引發(fā)軟件結構的變化。無關聯(lián)事件的觸發(fā)不需任何先決條件,運行結 果也不對其他任何事件產(chǎn)生影響,這種事件一般完成相對獨立的任務,與業(yè)務邏輯沒有任 何關聯(lián)。測試人員可以把這類事件排除在事件交互的測試之外,只要是能夠完成其獨立的 功能,就可以不進一步測試其與其它事件之間的交互。(2)化簡原則通過上述介紹,根據(jù)對GUI軟件窗口中的事件進行分類,去除不需要的事件之間 的交互,就可以簡化事件交互規(guī)模,如表1所示,V表示表格左側事件與上面事件需要的交 互,X表示表格左側事件與上面事件不需要的交互,通過簡化,從而可以大大減少可能的事 件交互數(shù)量。表1事件交互簡化表 據(jù)表1所示,窗口內部事件交互有兩大類一、其它事件(輸入/出性事件和系統(tǒng) 交互事件)與系統(tǒng)交互事件的交互;二、其它事件(輸入/出性事件和系統(tǒng)交互事件)與結 構操作事件的交互。有了事件交互的統(tǒng)計后,增加它一個后續(xù)事件,就可以獲得長度為3的 事件序列的個數(shù),同理可以獲得任意長度事件序列的統(tǒng)計。如圖3所示,是MS記事本軟件的替換窗口示意圖。以MS記事本軟件的替換窗口 為例,簡要介紹依據(jù)上述方法簡化窗口內部事件交互的過程。窗口中包含7個可用控件,每 個控件引發(fā)的事件都可以與其它控件引發(fā)的事件進行交互,加上自身與自身的交互,窗口 內總的事件交互可以達到7X7 = 49個。根據(jù)上述事件分類的方法,其中輸入/出性事件 共3個,分別為“查找內容”文本框、“替換為”文本框、“區(qū)分大小寫”;系統(tǒng)交互事件3個, 分別為“查找下一個”按鈕、“替換”按鈕、“全部替換”按鈕;無關事件1個,為“取消”按鈕。
9
如圖4所示,是簡化后事件交互圖。輸入/出性事件需要和系統(tǒng)交互事件需要進 行交互,系統(tǒng)交互事件之間需要進行交互,窗口內的事件交互數(shù)量為3 X 3+3 X 3 = 18個,比 原來減少了 31個,由此可見,去掉了無意義的事件交互后,大大減少了事件交互規(guī)模,在增 大事件序列長度后,簡化效果將會更加明顯。步驟S102 對測試過程進行跟蹤。捕獲測試用例執(zhí)行過程中所經(jīng)過的窗口、事件,并根據(jù)捕獲的測試用例執(zhí)行信息, 生成軟件操作圖。測試過程跟蹤主要用來記錄測試用例的執(zhí)行過程,如點擊的按鈕、輸入的信息,通 過跟蹤,可以準確獲取測試用例執(zhí)行過程中所覆蓋的界面元素。測試過程跟蹤過程中采用的主要技術是鉤子技術和相關的Win32 API函數(shù)調用。 鉤子技術是Windows系統(tǒng)中一個重要的系統(tǒng)接口,是錄制過程所需采用的重要技術,通過 安裝鉤子程序就可以在應用程序或系統(tǒng)的消息進行處理之前對消息進行處理,它不僅可以 攔截某一個線程的事件,還可以攔截整個Windows系統(tǒng)的事件,若需要攔截或監(jiān)控用戶的 某項操作,在使用過程中需要安裝和卸載鉤子。一、鉤子操作安裝和卸載鉤子需要以下API函數(shù)(1)安裝鉤子函數(shù) SetffindowsHookEx其四個參數(shù)分別為鉤子類型,鉤子函數(shù)地址,鉤子函數(shù)所在DLL的實例句柄,安裝 鉤子后想監(jiān)控的線程的ID號,返回參數(shù)為鉤子句柄。(2)卸載鉤子UnhookWindowsHookEx參數(shù)只有一個,是要卸載的鉤子句柄HHOOK hhk。處理其他的控件的操作都是在鉤子過程中實現(xiàn),鉤子函數(shù)過程JiookCallback = new HookProc (HookCallbackProcedure)在安裝鉤子函數(shù)時進行指定。。二、控件處理過程⑶I軟件中包含很多控件,這些控件的不同組合構成了風格各異的圖形用戶界面。 控件不同,其識別和獲取方式也不同,下面介紹GUI軟件中各種控件的獲取方法。1、按鈕獲取按鈕控件文本的方法相對比較簡單,關鍵的是判斷按鈕的類型,按鈕控件 包括三種類型Button,CheckBox或RadioButton。其中主要用到的Win32 API函數(shù)有 GetffindowLong(hffnd, nlndex)。如圖5所示,是按鈕控件獲取流程圖。利用GetWindowLongOiWnd,nlndex)函數(shù)判 斷按鈕的具體類型,函數(shù)有兩個參數(shù)hWnd 窗口或控件的句柄;nlndex 指定要檢索的基 于O的偏移量,可以設置為GWL_EXSTYLE代表獲得擴展窗口風格、GWL_STYLE代表獲得窗口 風格、GWLJiWNDPARENT代表如果父窗口存在,獲得父窗口句柄。2、文本框獲取文本框控件文本相對也比較簡單,關鍵是對文本框的標簽信息進行獲取。如圖6所示,是文本框獲取流程圖。文本框獲取過程如下(1)編輯框編輯結束時查找文本框的標簽坐標時,首先需要利用Win32API函數(shù)GetffindowRect (int hffnd, ref rt)找到文本框的左側和底側的坐標值,其中hWnd代表控 件的句柄,rt代表一個結構,其功能是將句柄為hWnd的控件底側、左側、上側、右側的坐標 拷貝到rt結構中,通過取rt結構的參數(shù)值即可。(2)根據(jù)經(jīng)驗文本框的標簽位置一般在其左側或者上側,首先從控件的左側開始 查詢,按照X坐標遞減的順序,尋找控件類名是“LABEL”的控件,設置遞減的長度,如果沒 有,再按照y坐標值遞減的順序進行查找,同樣需要設置遞減的長度,直到找到“LABEL”控 件,將其標簽屬性標識文本框控件,對文本框進行抽象操作。通過此方法,可以準確獲得文本框所對應的屏幕上的標簽,這也是本方法與錄制 方法最大的區(qū)別。3、菜單項菜單的結構是層次型構造,主菜單項在前端的接口中是可見的,下一層的菜單只 有單擊主菜單之后才會顯示.如圖7所示,是菜單項獲取流程圖。菜單項獲取流程如下(1)當點擊主菜單時,通過GetMenu (int hffin)函數(shù)返回菜單句柄,其中hWnd代表 窗口的句柄;(2)利用 MenuItemFromPoint (int hffin, int hMenu, POINT pt)函數(shù)得到所點擊
主菜單選項在主菜單中的位置索引;(3) iIM GetMenuString(int hMenu, int topMenuIndex, int topMenuText, 128, MF_BYP0SITI0N)函數(shù)獲取主菜單的文本;(4)此時子菜單打開,如果用戶繼續(xù)點擊子菜單項,調用GetSubMenu (int hPreMenu, int topMenuIndex)函數(shù)獲取子菜單項句柄;(5) iIM GetMenuString (int hSubMenu, int indexSub, int subMenuText, 128, MF_BYC0MMAND)函數(shù)獲取子菜單文本。4、IP 地址框如圖8所示,是IP地址框獲取處理流程圖。IP地址框的抽象處理關鍵是獲取IP 地址的內容及獲取IP地址框的標簽文本,獲取IP地址內容簡單易行,獲取IP地址框的標 簽文本同獲取文本框的標簽文本方式相同。5、Li StBox 歹Ij表框如圖9所示,是ListBox列表框獲取處理流程圖。ListBox列表框抽象處理關鍵是 獲取ListBox列表框的內容及獲取ListBox列表框的標簽文本,獲取ListBox的標簽文本 同獲取文本框標簽文本相同,下面對獲取ListBox列表框內容的處理進行具體描述(1)通過 SendMessage (hpreLBWin,LB_GETCURSEL,0,0)函數(shù)獲取所選取列表項的 索引。(2)通過 SendMessage (hpreLBWin,LB_GETTEXT,combolIndex,wndListName)將所 操作列表項的內容拷貝至自定義字符串中,然后進行抽象化處理。6、CombolBox 列表框其處理方式同Li StBox相同。7、ListView 控件
如圖10所示,是ListView控件處理流程圖。步驟S1001 獲取被測軟件進程的ID,在該進程中開辟一塊內存空間,控件相關信 息存儲在LVITEM結構中;步驟S1002 向控件發(fā)送LVM_GETNEXTITEM消息,獲取當前被選項的索引;步驟S1003 向控件發(fā)送LVM_GETITEMTEXT消息,獲取被選項內容字符數(shù);步驟S1004 從目標進程空間讀出被選項的文本;步驟S1005 打印對該控件操作語句。8、未操作控件默認屬性提取對于設置參數(shù)屬性的界面,測試過程中不一定對界面內所有的控件進行操作,這 就需要在關閉界面時將其他沒有操作過的控件的默認值取出。如圖11所示,是未操作控件默認屬性提取流程圖。未操作控件默認屬性提取流程如下(1)建立回調函數(shù) newCalIBack (EnumChiIdffidgetCountCalIBack),將回調過程 EnumChiIdffidgetCountCalIBack載入回調函數(shù),具體操作在回調過程中進行處理。(2)采用枚舉函數(shù) EnumChildffindows (hwnd, myCallBack, 0)將句柄為 hwnd 的窗 口內的控件逐一枚舉,在回調過程中進行處理。三、軟件操作圖生成在記錄測試用例執(zhí)行過程中,除了要獲取所操作過的控件信息,還將控件之間的 相互關系以文本形式保存在一個文件中,通過調用WinGraphVizAbout這個Dll中的畫圖函 數(shù)接口 showGraphvizFromFi 1 e (stringf i 1 ePath, string title),生成軟件操作圖。如圖12所示,是跟蹤MS記事本軟件中部分操作所得到的軟件操作圖。圖中橢圓 表示操作點,內容顯示的是控件標題和測試人員的操作,有向邊表示兩個操作點之間執(zhí)行 的先后順序,例如“文件LeftClick”指向“保存LeftClick”表示執(zhí)行完左鍵單擊“文件”操 作后可以執(zhí)行左鍵單擊“保存”操作。步驟S103 對測試用例進行優(yōu)化。根據(jù)測試用例所覆蓋的事件和事件路徑等信息,剔除重復和冗余的測試用例。測 試用例優(yōu)化在獲取的軟件操作圖基礎上進行,主要用來剔除重復和冗余的測試用例。測試 用例優(yōu)化技術在很多文獻中都有登載,但這些技術大都是孤立的,沒有與測試融為一體,商 業(yè)化測試工具都沒有包含這部分內容。本發(fā)明中將測試用例優(yōu)化與功能覆蓋測試融為一 體,實現(xiàn)了測試與用例優(yōu)化的無縫連接。重復測試用例剔除所謂重復測試用例是指兩個測試用例所經(jīng)過的控件和控件順序完全相同,顯然, 從覆蓋的角度,這兩個測試用例是重復的,任意剔除一個即可。冗余測試用例剔除所謂冗余測試用例是指兩個測試用例存在包含關系,即一個測試用例包含另外一 個測試用例。為了得到個數(shù)最少的測試用例集,本發(fā)明中采用基于有向路徑的貪心算法對 測試用例進行優(yōu)化。這個算法與普通貪心算法的最大區(qū)別是引入了有向圖的概念,即,該 算法處理的是有向圖,而普通貪心算法處理的是孤立的點或邊。算法主要包括以下幾個部 分
(1)根據(jù)記錄的每個測試用例所經(jīng)過的路徑,建立測試用例與路徑之間的對應關 系;(2)選取最長路徑對應的測試用例刪除不需要的測試用例;(3)根據(jù)路徑之間的包含關系,剔除最長路徑中子路徑對應的測試用例;(4)選取次長路徑對應的測試用例,重復(3),直至所有的測試用例處理完畢。步驟S104 測試覆蓋的統(tǒng)計與顯示。將軟件操作圖與事件交互圖進行比對,在事件交互圖上標識出已覆蓋的事件和事 件交互,同時,給出測試覆蓋統(tǒng)計結果。測試覆蓋統(tǒng)計與顯示主要將測試用例的執(zhí)行軌跡在軟件功能圖上標識出來,同 時,統(tǒng)計出功能圖中每一個點或邊被覆蓋的次數(shù)。測試覆蓋統(tǒng)計與顯示主要通過比對軟件功能圖和軟件操作圖實現(xiàn),步驟如下輸入軟件功能圖、軟件操作圖;輸出測試覆蓋的統(tǒng)計與顯示圖;①讀取軟件功能圖中的一個元素(點或邊);②采用深度優(yōu)先或廣度優(yōu)先算法搜索軟件功能圖,直到找到功能圖中對應的元 素;③將該元素標記為綠色(表示已被覆蓋),同時將對應的計數(shù)器加1 ;④重復①,直到處理完操作圖中的所有元素⑤將各個元素對應的計數(shù)器值標注于元素旁邊,結束。步驟S105 判斷是否滿足覆蓋標準。根據(jù)測試覆蓋統(tǒng)計結果,判斷是否滿足測試覆蓋標準,若滿足,則停止測試,否則, 跟蹤新的測試用例執(zhí)行情況。本發(fā)明中提出了 5種測試覆蓋標準,分別是(1)窗口覆蓋準則。當且僅當測試人員所設計的測試用例集T覆蓋了 GUI軟件所 包含的所有窗口,就稱該測試用例集T是窗口覆蓋充分的。(2)窗口內部事件覆蓋準則。當且僅當測試用例集T覆蓋了⑶I軟件窗口內部所 有的事件,就稱該測試用例集T是窗口內部事件覆蓋充分的。(3)窗口內部事件交互覆蓋準則。當且僅當測試用例集T覆蓋了⑶I軟件窗口內 部所有事件交互,就稱該測試用例集T是窗口內部事件交互覆蓋充分的。(4) η長度事件路徑覆蓋準則。當且僅當測試用例集T覆蓋了 GUI軟件所包含的所 有η長度事件路徑,就稱該測試用例集T是η長度事件路徑覆蓋充分的。(5)輸入空間覆蓋準則。當且僅當測試用例集T覆蓋了操作點序列中所有的輸入 空間特征值組合,就稱該測試用例集對此操作點序列的輸入空間是覆蓋充分的。覆蓋率計算1)窗口覆蓋率計算設W’為進行測試執(zhí)行過程中記錄下所執(zhí)行窗口的集合,I Ir I I為窗口集合W’中 窗口的個數(shù),則測試用例集T的窗口覆蓋率為^ iOxl0Oo/0
丨岡丨
13
2)窗口內部事件覆蓋率計算設E',是功能測試的過程中記錄下的w窗口內包含的事件集合,PE' /為《窗 口內事件的個數(shù),則測試用例集T的在窗口 w內的事件覆蓋率為 此時將所有窗口的事件相加就會得到整個GUI軟件的事件的個數(shù),就進而得到 GUI軟件測試用例集T的事件覆蓋率。3)窗口內部事件交互覆蓋率計算設Ψ ‘ w是功能測試過程中記錄下的w窗口內包含事件交互集合,此集合只統(tǒng)計 事件分類后認為對測試有意義的事件交互,ΡΨ' /為屯‘,集合中元素的個數(shù),則測試用 例集T在窗口 w內的事件交互覆蓋率為 將所有窗口內部的事件交互及窗口調用樹圖邊的數(shù)目相加,得到整個GUI軟件的 事件的個數(shù),從而得到GUI軟件的測試用例集T的事件交互覆蓋率。4) η長度事件路徑覆蓋率計算設L' ne是功能測試過程中記錄下的η長度事件序列路徑的集合,PL' neP為此集 合元素的個數(shù),則測試用例集T的η長度事件序列路徑覆蓋率為
權利要求
一種圖形用戶界面軟件功能覆蓋測試方法,包括通過對被測軟件進行分析,找出軟件所有窗口之間調用關系、每一個窗口內部所包含的事件及其相互關系以及窗口之間的事件交互關系,并根據(jù)事件在測試過程中所起的作用對事件交互圖進行簡化;對測試過程進行跟蹤,捕獲所述被測軟件執(zhí)行過程中所經(jīng)過的窗口和事件,并根據(jù)捕獲的所述測試用例的執(zhí)行信息生成軟件操作圖;對測試用例進行優(yōu)化,根據(jù)測試用例測所覆蓋的事件和事件路徑等信息,剔除重復和冗余的測試用例;所述測試用例根據(jù)所述被測軟件設計,在測試過程中,通過執(zhí)行所述測試用例對所述被測軟件進行測試;將所述軟件操作圖與所述事件交互圖進行比對,在所述事件交互圖上標識出已覆蓋的事件和事件交互,同時,給出測試覆蓋統(tǒng)計結果;判斷是否滿足覆蓋標準,根據(jù)測試覆蓋統(tǒng)計結果,判斷是否滿足設定的測試覆蓋標準;若滿足,則停止測試;否則,跟蹤新的測試用例執(zhí)行情況。
2.如權利要求1所述圖形用戶界面軟件功能覆蓋測試方法,其特征在于所述被測軟 件的信息分析是通過識別圖形用戶界面GUI軟件中控件,在構建窗口調用關系圖和窗口內 事件關系圖的基礎上得到被測軟件的事件交互圖,并對事件交互圖進行化簡。
3.如權利要求2所述圖形用戶界面軟件功能覆蓋測試方法,其特征在于所述被測軟 件的信息分析的過程包括識別GUI軟件中控件; 構建窗口調用關系圖; 生成窗口內事件關系;得到被測軟件的事件交互圖,內容包括控件的名稱、屬性和相互關系; 對事件交互圖進行化簡。
4.如權利要求2所述圖形用戶界面軟件功能覆蓋測試方法,其特征在于所述事件包 括輸入/輸出性事件、系統(tǒng)交互事件、結構操作事件和無關聯(lián)事件。
5.如權利要求2所述圖形用戶界面軟件功能覆蓋測試方法,其特征在于根據(jù)事件在 測試過程中所起的作用對事件交互圖進行簡化時,根據(jù)對GUI軟件窗口中的事件進行分 類,去除不需要的事件之間的交互。
6.如權利要求2所述圖形用戶界面軟件功能覆蓋測試方法,其特征在于構造GUI窗 口調用關系圖時,對被測軟件的窗口及控件進行捕獲識別,按照窗口和控件的標題來識別 被測軟件的信息;如果出現(xiàn)反復使用的控件,使用控件的句柄來唯一標識,調用新的窗口 后,使用窗口的句柄來標識窗口,并且記錄窗口之間的調用關系,生成窗口調用關系圖。
7.如權利要求1所述圖形用戶界面軟件功能覆蓋測試方法,其特征在于測試過程跟 蹤過程中,采用鉤子技術捕獲測試用例執(zhí)行過程中所經(jīng)過的窗口、事件和記錄測試用例的 執(zhí)行過程,并根據(jù)捕獲的測試用例執(zhí)行信息,生成軟件操作圖。
8.如權利要求1所述圖形用戶界面軟件功能覆蓋測試方法,其特征在于對測試用例 進行優(yōu)化時在獲取的軟件操作圖基礎上進行,剔除重復和冗余的測試用例。
9.如權利要求1所述圖形用戶界面軟件功能覆蓋測試方法,其特征在于在判斷是否 滿足覆蓋標準之前還包括測試覆蓋的統(tǒng)計與顯示。
10.如權利要求1所述圖形用戶界面軟件功能覆蓋測試方法,其特征在于所述覆蓋標 準包括窗口覆蓋準則、窗口內部事件覆蓋準則、窗口內部事件交互覆蓋準則、η長度事件路 徑覆蓋準則或者輸入空間覆蓋準則;其中,所述窗口覆蓋準則是指,當且僅當測試人員所設 計的測試用例集T覆蓋了 GUI軟件所包含的所有窗口,就稱該測試用例集T是窗口覆蓋充 分的;所述窗口內部事件覆蓋準則是指,當且僅當測試用例集T覆蓋了窗口內部所有的事 件,就稱該測試用例集T是窗口內部事件覆蓋充分的;所述窗口內部事件交互覆蓋準則是 指,當且僅當測試用例集T覆蓋了 GUI軟件窗口內部所有事件交互,就稱該測試用例集T是 窗口內部事件交互覆蓋充分的;所述η長度事件路徑覆蓋準則是指,當且僅當測試用例集T 覆蓋了 GUI軟件所包含的所有η長度事件路徑,就稱該測試用例集T是η長度事件路徑覆 蓋充分的;所述輸入空間覆蓋準則是指,當且僅當測試用例集T覆蓋了操作點序列中所有 的輸入空間特征值組合,就稱該測試用例集對此操作點序列的輸入空間是覆蓋充分的。
全文摘要
本發(fā)明公開了一種圖形用戶界面軟件功能覆蓋測試方法,通過對被測軟件進行分析,找出軟件所有窗口之間調用關系、每一個窗口內部所包含的事件及其相互關系以及窗口之間的事件交互關系,對事件交互圖進行簡化;對測試過程進行跟蹤,捕獲所述被測軟件執(zhí)行過程中所經(jīng)過的窗口和事件,并根據(jù)捕獲的所述測試用例的執(zhí)行信息生成軟件操作圖;對測試用例進行優(yōu)化,剔除重復和冗余的測試用例;將所述軟件操作圖與所述事件交互圖進行比對,在所述事件交互圖上標識出已覆蓋的事件和事件交互,同時,給出測試覆蓋統(tǒng)計結果;根據(jù)測試覆蓋統(tǒng)計結果,判斷是否滿足設定的測試覆蓋標準;若滿足,則停止測試;否則,跟蹤新的測試用例執(zhí)行情況。
文檔編號G06F11/36GK101916225SQ20101027041
公開日2010年12月15日 申請日期2010年9月2日 優(yōu)先權日2010年9月2日
發(fā)明者于秀山 申請人:于秀山
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
星座| 宁化县| 广东省| 金塔县| 漳平市| 蒲江县| 金堂县| 留坝县| 五常市| 滨海县| 百色市| 蕲春县| 上高县| 泾川县| 温州市| 获嘉县| 贡嘎县| 界首市| 丹棱县| 张家口市| 册亨县| 青河县| 巩留县| 泰来县| 广宁县| 厦门市| 布尔津县| 潮州市| 木里| 桑植县| 塔城市| 哈尔滨市| 桃园县| 瓦房店市| 呼图壁县| 庐江县| 台中县| 桐庐县| 长汀县| 峨眉山市| 河池市|