測試用例推定方法及系統的制作方法
【專利摘要】本發明涉及軟件測試【技術領域】,提供了一種測試用例推定方法及系統。該方法包括步驟:S1,獲得測試用例與執行方法的關系;S2,獲得新版本類包中方法間的調用關系圖;S3,比較新舊兩個測試版本,獲得發生了變化的方法項名稱;S4,利用步驟S2中獲得的調用關系圖,向上反算調用過所述發生了變化的方法項的方法名稱;S5,利用步驟S1中獲得的所述測試用例與執行方法的關系,推算出需要測試的用例信息。在本發明的技術方案中,通過新舊版本的比對和調用關系的反算,獲得了與修改項相關聯的方法,從而自動發現回歸測試中需要進行測試的用例,提高了回歸測試的執行效率。
【專利說明】測試用例推定方法及系統
【技術領域】
[0001]本發明涉及軟件測試【技術領域】,特別涉及一種測試用例推定方法及系統。
【背景技術】
[0002]由于計算機軟件程序主要由人工開發完成,通常還會由多名開發人員共同完成,不可避免地會存在各類意想不到的錯誤。因此,軟件產品在正式發布前要經過多次測試和修改,軟件測試的最根本目的就是在軟件產品發布前盡可能多地發現軟件中的缺陷,以保證正式產品的質量。其中黑盒測試是從用戶角度出發,把程序看作一個不能打開的黑盒子,在完全不考慮程序內部結構和內部特性的情況下,對程序的輸入輸出進行測試,黑盒測試主要針對軟件界面和軟件功能進行測試,是最實用的軟件測試方式之一。
[0003]現有的軟件測試理論已經基本成熟,絕大多數測試方式均可以通過自動手段來實現測試過程,對于黑盒測試來說,如果能為每個測試過程選擇適當的測試用例,可有效地設計出高效的自動測試過程。但是,隨著待測試軟件系統的日益龐大,測試的工作量呈指數級增長,為軟件黑盒測試工作帶來了很多新的問題。比如大型軟件在發布前后均會進行多次修改BUG (或增加功能)的版本更替,每次修改都會給軟件程序帶來一系列的變化;相應地,如何確定版本更替過程中所產生的變化,如何針對這些變化來篩選測試用例,均是黑盒測試需要考慮的問題。
[0004]現有技術中,針對上述問題目前的通常做法是在版本更替后對前一版本的BUG進行回歸測試,重復以前的全部或部分的相同測試。但是現有的黑盒回歸測試相對而言比較主觀,只是為測試用例劃分了優先級,如果時間允許就進行全集執行,如果時間不允許就按優先級執行優先級高的測試。但實際情況中,軟件版本更替會產生許多新的未知問題,如修改BUG的同時會引出的新BUG,因此測試時不僅需要檢測前一版本的BUG是否已修復,還要檢測更替后軟件中是否存在新的BUG。為達到此目的,現有的回歸測試方法需要對已經測試的用例全部進行復測,導致測試工作的循環往復,效率不高。
【發明內容】
[0005](一)要解決的技術問題
[0006]為了解決現有技術中回歸測試效率低的問題,本發明提供了一種測試用例推定方法及系統,通過篩選測試用例,避免了無關的重復測試。
[0007](二)技術方案
[0008]為解決上述技術問題,本發明采用如下的技術方案實施:
[0009]首先,本發明提供一種測試用例推定方法,所述方法包括步驟:
[0010]SI,獲得測試用例與執行方法的關系;
[0011]S2,獲得新測試版本類包中執行方法間的調用關系圖;
[0012]S3,比較新舊兩個測試版本類包,獲得發生了變化的執行方法的名稱;
[0013]S4,利用步驟S2中獲得的調用關系圖,向上反算調用過所述發生了變化的執行方法的執行方法的名稱;
[0014]S5,利用步驟SI中獲得的所述測試用例與執行方法的關系,推算出需要測試的測試用例的信息。
[0015]優選地,所述步驟S1、S2和S3可并行執行。
[0016]優選地,步驟SI中,在獲得測試用例與執行方法的關系之前,還包括:將需要記錄的類名以正則表達式的形式作為參數傳入,使用自動測試工具或者手動測試方式執行測試用例;
[0017]所述獲得測試用例與執行方法的關系的方法為:通過SOCKET通信獲得所述測試用例與執行方法的關系。
[0018]優選地,步驟S2中,獲得新測試版本類包中執行方法間的調用關系圖的方法為:通過遍歷類獲得類的字節碼,對所述字節碼進行操作,獲得新測試版本類包中執行方法間的所述調用關系圖。
[0019]優選地,步驟S3的方法為:比較提交測試的新舊兩個測試版本類包,通過遍歷操作列出有改動的類和新增的類,獲得類的字節碼,通過對字節碼的操作,獲得并列出改動及新增的方法名稱。
[0020]優選地,步驟S4的方法為:以所述發生了變化的執行方法的名稱作為輸入項,根據步驟S2獲得的調用關系圖,按照預定義的反算級次獲得執行方法調用順序向上對應級次里的所有執行方法的名稱。
[0021]優選地,所述預定義的反算級次為三級。
[0022]優選地,步驟S5之后還包括步驟:
[0023]S6,利用所述需要測試的測試用例的信息,在測試用例管理系統中查找出對應的測試用例,將其分離從而直接進行測試。
[0024]另一方面,本發明還同時提供一種測試用例推定系統,所述系統包括:
[0025]執行分析模塊,用于獲得測試用例與執行方法的關系;
[0026]調用分析模塊,用于獲得新測試版本類包中執行方法間的調用關系圖;
[0027]比較模塊,用于比較新舊兩個測試版本類包,獲得發生了變化的執行方法的名稱;
[0028]反算模塊,用于利用調用分析模塊中獲得的調用關系圖,向上反算調用過所述發生了變化的執行方法的執行方法的名稱;
[0029]推定模塊,用于利用執行分析模塊中獲得的所述測試用例與執行方法的關系,推算出需要測試的測試用例的信息。
[0030]優選地,所述系統還包括:分離測試模塊,用于通過所述需要測試的測試用例的信息在測試用例管理系統中查找出對應的測試用例,將其分離從而直接進行測試。
[0031](三)有益效果
[0032]在本發明的技術方案中,通過新舊版本的比對和調用關系的反算,獲得了與修改項相關聯的方法,從而自動發現回歸測試中需要進行測試的用例,提高了回歸測試的執行效率。
【專利附圖】
【附圖說明】[0033]圖1為本發明中測試用例推定方法的流程示意圖;
[0034]圖2為本發明的一個實施例中java示例待測試包的結構示意圖;
[0035]圖3為本發明的一個實施例中java示例的原始類代碼;
[0036]圖4為本發明的一個實施例中java示例的版本更替后新類代碼;
[0037]圖5為本發明的一個實施例中java不例的XML格式表不的調用關系圖;
[0038]圖6為本發明的一個實施例中java示例的測試用例與執行方法的關系示意圖;
[0039]圖7為本發明的一個實施例中java不例的XML格式表不的輸出結果。
【具體實施方式】
[0040]下面將結合各附圖對本發明實施例中的技術方案進行清楚、完整的描述,顯然,所描述的實施例是本發明的一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動的前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
[0041]回歸測試面對的主要問題是軟件程序代碼修改后可能引起的連鎖反應,即修改一處代碼可能對調用該段代碼的其他方法、實例等造成不確定的影響。為避免這類影響成為軟件中的新BUG,回歸測試不能只針對原BUG所在用例進行測試,而必須對全部測試用例進行復測。但實際情況中,代碼修改可能涉及到的測試用例通常很少,現有的復測方式往往對很多無關用例進行了重復測試,導致了現有的回歸測試方法效率低下,浪費了大量時間和物質成本。
[0042]由于現有技術中并不存在針對黑盒測試的用例分離方法,或者即使存在獨立測試用例的方式,也只能通過測試人員的主觀判斷來確定用例的優先級,因而無法有效地從全部用例中自動發現修改相關的用例來進行針對性的測試。本發明針對這種情況,為回歸測試提供了一種輔助決策工具,幫助測試人員自動發現實際需要測試的用例,從而可以分離用例進行獨立測試,避免了無關用例的重復測試,加快了測試速度,提高了測試效率。
[0043]在本發明的實施例中,首先提供了一種測試用例推定方法,如圖1所示,該方法具體包括步驟:
[0044]SI,獲得測試用例與執行方法的關系;
[0045]S2,獲得新測試版本類包中執行方法間的調用關系圖;
[0046]S3,比較新舊兩個測試版本類包,獲得發生了變化的執行方法的名稱;
[0047]S4,利用步驟S2中獲得的調用關系圖,向上反算調用過所述發生了變化的執行方法的執行方法的名稱;
[0048]S5,利用步驟SI中獲得的所述測試用例與執行方法的關系,推算出需要測試的測試用例的信息。
[0049]其中,上述方法的步驟S1、S2和S3可并行執行。為便于隨時讀取和使用,步驟SI中獲得的測試用例與執行方法的關系可以存儲在數據庫中或以XML文檔方式存儲;步驟S2中獲得的調用關系圖也可存儲為XML文檔;步驟S5最后獲得的需要測試的測試用例的信息也可以XML文檔形式存儲。
[0050]下面更進一步地以java程序為例具體說明本發明方法的各個步驟是如何實現的。首先,在給出的java示例中,待測試包的結構如圖2所示,在待測試包testpackage下存在兩個類TestClassA和TestClassB的代碼。版本更替前的原始代碼如圖3所示,更替后的新代碼如圖4所示,從示例的代碼可以看出,包中兩個類的關系為=TestClassB類中的方法methodD中生成了一個TestClassA類的實例ta并調用了 TestClassA類中的方法methodB ;同時TestClassB類中的另一方法methodE進一步調用了方法methodD。而版本更替時修改了 TestClassA類中的方法methodB。當然,上述內容是人工閱讀代碼所識別到的信息,下面將進一步介紹如何通過本發明提供的輔助決策工具來自動發現回歸測試時需要測試的測試用例的信息。
[0051]具體地,步驟SI中,在獲得測試用例與執行方法的關系之前,還包括:本發明提供的輔助決策工具會隨java —同啟動,將需要記錄的類名以正則表達式的形式作為參數傳入,測試人員使用自動測試工具或者手動測試方式執行測試用例。另外,該步驟中,獲得測試用例與執行方法的關系的方法為:通過SOCKET通信獲得測試用例與執行方法的關系。這里的SOCKET通信為現有技術。
[0052]步驟S2中,獲得新測試版本類包中執行方法間的調用關系圖的方法為:在運行輔助決策工具后,通過遍歷類獲得類的字節碼,對字節碼進行操作,獲得新測試版本類包中執行方法間的調用關系圖。該步驟中,以XML格式文檔存儲的上述示例的調用關系圖如圖5所示,該XML文檔以結構化的方式表述了上一段文字中所述的包中兩個類的關系。
[0053]隨后,步驟S3的方法為:比較提交測試的新舊兩個測試版本類包,通過遍歷操作列出有改動的類和新增的類,獲得類的字節碼,通過對字節碼的操作,獲得并列出改動及新增的方法名稱,這樣就獲得了發生了變化的執行方法的名稱。
[0054]步驟S4的方法為:以發生了變化的執行方法的名稱作為輸入項,根據步驟S2獲得的調用關系圖,按照預定義的反算級次獲得執行方法調用順序向上對應級次里的所有執行方法的名稱,也就是向上反算調用過發生了變化的執行方法的執行方法的名稱。該步驟中,反算級次的一個示例為:假設方法a中調用了方法b,方法b中調用了方法C,那么方法c反算一級是方法b,反算兩級是方法a。本發明中預定義的反算級次默認是三級,本領域相關技術人員應能理解,目前預定義的級次是預估值,通常情況下反算三級應該可以反映出修改程序對相關程序的影響,實際情況中也可以根據具體的程序復雜度來調整該預定義的反算級次。
[0055]步驟S5中,利用步驟SI中獲得的所述測試用例與執行方法的關系,推算出需要測試的測試用例的信息。比如,假定某個執行了 methodE方法,步驟SI中獲得測試用例與執行方法的關系數測試用例teSt_caSe_l據庫中結果如圖6所示,步驟S4反算出了改動的方法methodB被methodD和methodE所調用,此時就可以推算出測試用例test_case_l涉及到了 TestClassA類中改動的方法methodB,是必須測試的用例,將其輸出給測試人員并自動設置其優先級為最高優先級(priority=〃l"),輸出的結果如圖7所示。
[0056]更進一步地,在步驟S5得到需要測試的測試用例的信息后,還包括步驟S6:利用需要測試的測試用例的信息,在測試用例管理系統中查找出對應的測試用例,將其分離從而直接進行測試。比如圖7中展示的用例ID(case id),該用例ID與測試用例管理系統中的Case_id字段相關聯,通過該用例ID就可以在測試用例管理系統中查找出對應的測試用例,從而將其分離出直接用于測試。通過該方式,本發明的方法自動發現了需要測試的用例并將其分離進行獨立測試,避免了全部用例的重復測試,提高了回歸測試的執行效率。[0057]此外,本領域普通技術人員可以理解,實現上述實施例方法中的全部或部分步驟是可以通過程序來指令相關的硬件來完成,所述的程序可以存儲于一計算機可讀取存儲介質中,該程序在執行時,包括上述實施例方法的各步驟,而所述的存儲介質可以是=ROM/RAM、磁碟、光盤、存儲卡等。因此,與本發明的方法相對應的,本發明還同時包括一種測試用例推定,該系統包括:
[0058]執行分析模塊,用于獲得測試用例與執行方法的關系;
[0059]調用分析模塊,用于獲得新測試版本類包中執行方法間的調用關系圖;
[0060]比較模塊,用于比較新舊兩個測試版本類包,獲得發生了變化的執行方法的名稱;
[0061]反算模塊,用于利用調用分析模塊中獲得的調用關系圖,向上反算調用過所述發生了變化的執行方法的執行方法的名稱;
[0062]推定模塊,用于利用執行分析模塊中獲得的所述測試用例與執行方法的關系,推算出需要測試的測試用例的信息。
[0063]更進一步地,該系統還包括:分離測試模塊,用于通過所述需要測試的測試用例的信息在測試用例管理系統中查找出對應的測試用例,將其分離從而直接進行測試。
[0064]綜上所述,在本發明的技術方案中,通過新舊版本的比對和調用關系的反算,獲得了與修改項相關聯的方法,從而自動發現回歸測試中需要進行測試的用例。本發明的技術方案可以為測試人員篩選測試用例提供有力的參考,同時利用輸出的調用關系圖,可以使測試人員更好地理解系統的執行過程。最重要的是,本發明實現了測試用例的自動分析、發現和分離,避免了無關用例的重復測試,在保證準確性的前提下加快了測試速度,提高了測試的執行效率。
[0065]以上實施方式僅用于說明本發明,而并非對本發明的限制,有關【技術領域】的普通技術人員,在不脫離本發明的精神和范圍的情況下,還可以做出各種變化和變型,因此所有等同的技術方案也屬于本發明的范疇,本發明的專利保護范圍應由權利要求限定。
【權利要求】
1.一種測試用例推定方法,其特征在于,所述方法包括步驟: Si,獲得測試用例與執行方法的關系; S2,獲得新測試版本類包中執行方法間的調用關系圖; S3,比較新舊兩個測試版本類包,獲得發生了變化的執行方法的名稱; S4,利用步驟S2中獲得的調用關系圖,向上反算調用過所述發生了變化的執行方法的執行方法的名稱; S5,利用步驟SI中獲得的所述測試用例與執行方法的關系,推算出需要測試的測試用例的信息。
2.根據權利要求1所述的方法,其特征在于,所述步驟S1、S2和S3可并行執行。
3.根據權利要求1所述的方法,其特征在于,步驟SI中,在獲得測試用例與執行方法的關系之前,還包括:將需要記錄的類名以正則表達式的形式作為參數傳入,使用自動測試工具或者手動測試方式執行測試用例; 所述獲得測試用例與執行方法的關系的方法為:通過SOCKET通信獲得所述測試用例與執行方法的關系。
4.根據權利要求1所述的方法,其特征在于,步驟S2中,獲得新測試版本類包中執行方法間的調用關系圖的方法為:通過遍歷類獲得類的字節碼,對所述字節碼進行操作,獲得新測試版本類包中執行方法間的所述調用關系圖。
5.根據權利要求1所述的方法,其特征在于,步驟S3的方法為:比較提交測試的新舊兩個測試版本類包,通過遍歷操作列出有改動的類和新增的類,獲得類的字節碼,通過對字節碼的操作,獲得并列出改動及新增的方法名稱。
6.根據權利要求1所述的方法,其特征在于,步驟S4的方法為:以所述發生了變化的執行方法的名稱作為輸入項,根據步驟S2獲得的調用關系圖,按照預定義的反算級次獲得執行方法調用順序向上對應級次里的所有執行方法的名稱。
7.根據權利要求6所述的方法,其特征在于,所述預定義的反算級次為三級。
8.根據權利要求1-7中任一項所述的方法,其特征在于,步驟S5之后還包括步驟: S6,利用所述需要測試的測試用例的信息,在測試用例管理系統中查找出對應的測試用例,將其分離從而直接進行測試。
9.一種測試用例推定系統,其特征在于,所述系統包括: 執行分析模塊,用于獲得測試用例與執行方法的關系; 調用分析模塊,用于獲得新測試版本類包中執行方法間的調用關系圖; 比較模塊,用于比較新舊兩個測試版本類包,獲得發生了變化的執行方法的名稱; 反算模塊,用于利用調用分析模塊中獲得的調用關系圖,向上反算調用過所述發生了變化的執行方法的執行方法的名稱; 推定模塊,用于利用執行分析模塊中獲得的所述測試用例與執行方法的關系,推算出需要測試的測試用例的信息。
10.根據權利要求9所述的系統,其特征在于,所述系統還包括:分離測試模塊,用于通過所述需要測試的測試用例的信息在測試用例管理系統中查找出對應的測試用例,將其分離從而直接進行測試。
【文檔編號】G06F11/36GK103870384SQ201210533665
【公開日】2014年6月18日 申請日期:2012年12月11日 優先權日:2012年12月11日
【發明者】吳旭, 胡驥 申請人:航天信息股份有限公司