專利名稱:一種回歸測試方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本申請涉及測試技術(shù)領(lǐng)域,特別是涉及一種回歸測試方法和系統(tǒng)。
背景技術(shù):
在軟件生命周期的各個階段,無論是由于修改軟件自身的缺陷還是由于用戶的需求變更,都必須對軟件進(jìn)行針對性的回歸測試,以檢查各項(xiàng)修改或變更是否能滿足用戶的需求。在大規(guī)模的軟件研發(fā)企業(yè),每天有大量的系統(tǒng)、功能更新,因此大量代碼的新增等變更不可避免。在回歸測試領(lǐng)域,現(xiàn)有技術(shù)是比較死板的,就是在每天某個時刻對所有預(yù)設(shè)系統(tǒng)進(jìn)行回歸測試,如果需要立即對某個系統(tǒng)或某個功能進(jìn)行回歸測試,則需要人工干預(yù):用戶需要首先登陸測試用例管理系統(tǒng),人工判斷并選擇出需要運(yùn)行的測試用例,然后啟動之,這導(dǎo)致回歸測試的效率大大降低。這里,測試用例(TC,Test Case),指對被測的特定的軟件產(chǎn)品進(jìn)行測試任務(wù)的描述,體現(xiàn)測試方案、方法、技術(shù)和策略??傊?,需要本領(lǐng)域技術(shù)人員迫切解決的一個技術(shù)問題就是:如何能夠提高回歸測試的效率。
發(fā)明內(nèi)容
本申請?zhí)峁┮环N回歸測試方法和系統(tǒng),以減少人工干預(yù),實(shí)現(xiàn)回歸測試的自動化,提高回歸測試的效率。為了解決上述問題,本申請公開了一種回歸測試方法,包括:收集變更代碼,并依據(jù)所述變更代碼分析得到相應(yīng)的變更代碼信息,所述變更代碼信息包括變更的類及方法;依據(jù)預(yù)置的類與類、方法與方法之間的關(guān)聯(lián)關(guān)系,對所述變更的類及方法進(jìn)行依賴分析,得到所有可能受到變更影響的類及方法;依據(jù)預(yù)置的類及方法與測試用例之間的對應(yīng)關(guān)系,得到與所述所有可能受到變更影響的類及方法相應(yīng)的測試用例,作為回歸測試用例;執(zhí)行所述回歸測試用例,得到相應(yīng)的用例執(zhí)行結(jié)果。優(yōu)選的,所述方法還包括:在執(zhí)行回歸測試用例前,獲取所述回歸測試用例的目標(biāo)應(yīng)用和目標(biāo)機(jī)器;在執(zhí)行所述回歸測試用例的過程中,記錄相應(yīng)目標(biāo)機(jī)器中的目標(biāo)應(yīng)用運(yùn)行過的代碼;在所述用例執(zhí)行結(jié)果為失敗時,通過分析所記錄的目標(biāo)應(yīng)用運(yùn)行過的代碼,定位相應(yīng)的軟件缺陷中的類及方法。優(yōu)選的,所述變更代碼信息還包括變更的應(yīng)用、jar包或URL ;所述方法還包括:
依據(jù)預(yù)置的應(yīng)用與類、應(yīng)用與方法、應(yīng)用與應(yīng)用、jar包與類、jiar包與方法、URL與類或URL與方法之間的關(guān)聯(lián)關(guān)系,對所述變更的應(yīng)用、jar包或URL進(jìn)行依賴分析,得到所有可能受到變更影響的類及方法或應(yīng)用;在得到所有可能受到變更影響的應(yīng)用時,所述方法還包括:依據(jù)預(yù)置的應(yīng)用與測試用例之間的對應(yīng)關(guān)系,得到與所述所有可能受到變更影響的應(yīng)用相應(yīng)的測試用例,作為回歸測試用例。優(yōu)選的,在對所述變更的類及方法進(jìn)行依賴分析前,所述方法還包括:依據(jù)預(yù)置的代碼變更次數(shù)參數(shù)或時間參數(shù),對收集和分析得到的變更的類及方法進(jìn)行匯總;對匯總的變更的類及方法進(jìn)行去重處理。所述去重處理包括在:在遍歷所述匯總的變更的類及方法的過程中,相同的變更的類及方法僅記錄一次;所述對所述變更的類及方法進(jìn)行依賴分析為,依據(jù)預(yù)置的類與類、方法與方法之間的關(guān)聯(lián)關(guān)系,對去重處理后的變更的類及方法進(jìn)行依賴分析,得到所有可能受到變更影響的類及方法。優(yōu)選的,所述執(zhí)行所述回歸測試用例的步驟包括:依據(jù)所述所有可能受到變更影響的類及方法所在的應(yīng)用,發(fā)布所述應(yīng)用的最新程序;在已發(fā)布最新程序的環(huán)境下執(zhí)行所述回歸測試用例,得到相應(yīng)的用例執(zhí)行結(jié)果。優(yōu)選的,所述執(zhí)行所述回歸測試用例的步驟包括:依據(jù)定時回歸策略或變更次數(shù)上限策略,針對所述回歸測試用例創(chuàng)建任務(wù)對象,確定任務(wù)對象的信息,并保存至數(shù)據(jù)庫;依據(jù)所述任務(wù)對象的信息,執(zhí)行數(shù)據(jù)庫中的任務(wù)對象。優(yōu)選的,所述收集變更代碼的步驟為,通過監(jiān)控代碼服務(wù)器,收集所有的變更代碼。另一方面,本申請還公開了一種回歸測試系統(tǒng),包括:收集裝置,用于收集變更代碼;變更分析裝置,用于依據(jù)所述變更代碼分析得到相應(yīng)的變更代碼信息,所述變更代碼信息包括變更的類及方法;第一依賴分析裝置,用于依據(jù)預(yù)置的類與類、方法與方法之間的關(guān)聯(lián)關(guān)系,對所述變更的類及方法進(jìn)行依賴分析,得到所有可能受到變更影響的類及方法;第一回歸測試用例獲取裝置,用于依據(jù)預(yù)置的類及方法與測試用例之間的對應(yīng)關(guān)系,得到與所述所有可能受到變更影響的類及方法相應(yīng)的測試用例,作為回歸測試用例;用例執(zhí)行裝置,用于執(zhí)行所述回歸測試用例,得到相應(yīng)的用例執(zhí)行結(jié)果。優(yōu)選的,所述系統(tǒng)還包括:應(yīng)用信息獲取裝置,用于在執(zhí)行回歸測試用例前,獲取所述回歸測試用例的目標(biāo)應(yīng)用和目標(biāo)機(jī)器;記錄裝置,用于在執(zhí)行所述回歸測試用例的過程中,記錄相應(yīng)目標(biāo)機(jī)器中的目標(biāo)應(yīng)用運(yùn)行過的代碼 '及代碼分析裝置,用于在所述用例執(zhí)行結(jié)果為失敗時,通過分析所記錄的目標(biāo)應(yīng)用運(yùn)行過的代碼,定位相應(yīng)的軟件缺陷中的類及方法。優(yōu)選的,所述變更代碼信息還包括變更的應(yīng)用、jar包或URL ;所述系統(tǒng)還包括:第二依賴分析裝置,用于依據(jù)預(yù)置的應(yīng)用與類、應(yīng)用與方法、應(yīng)用與應(yīng)用、jar包與類、jiar包與方法、URL與類或URL與方法之間的關(guān)聯(lián)關(guān)系,對所述變更的應(yīng)用、jar包或URL進(jìn)行依賴分析,得到所有可能受到變更影響的類及方法或應(yīng)用;第二回歸測試用例獲取裝置,用于在得到所有可能受到變更影響的應(yīng)用時,依據(jù)預(yù)置的應(yīng)用與測試用例之間的對應(yīng)關(guān)系,得到與所述所有可能受到變更影響的應(yīng)用相應(yīng)的測試用例,作為回歸測試用例。與現(xiàn)有技術(shù)相比,本申請具有以下優(yōu)點(diǎn):首先,本申請自動收集并分析所有變更代碼得到變更的類及方法,并進(jìn)一步依據(jù)依賴分析得到所有可能受到變更影響的類及方法,以及依據(jù)預(yù)置的類及方法與測試用例之間的對應(yīng)關(guān)系,得到與所述所有可能受到變更影響的類及方法相應(yīng)的測試用例,作為回歸測試用例;因此,相對于現(xiàn)有技術(shù),本申請能夠減少人工干預(yù),實(shí)現(xiàn)回歸測試的自動化,提高回歸測試的效率。其次,相對于調(diào)用全部的測試用例進(jìn)行測試以避免有漏網(wǎng)之魚的現(xiàn)有技術(shù),由于本申請收集并分析所有變更代碼得到變更的類及方法以確定代碼的變更所引起需要回歸測試的范圍,因此,能夠起到縮小回歸測試范圍的效果,而且能夠進(jìn)一步提高回歸測試的效率,節(jié)省機(jī)器資源。再者,本申請還可以在執(zhí)行回歸測試用例的過程中,記錄相應(yīng)目標(biāo)機(jī)器中的目標(biāo)應(yīng)用運(yùn)行過的代碼;這樣,在相應(yīng)的用例執(zhí)行結(jié)果為失敗時,記錄的就是含有缺陷的代碼,此時,可以通過分析所記錄的目標(biāo)應(yīng)用運(yùn)行過的代碼,定位相應(yīng)的軟件缺陷中的類及方法;另外,本申請還可以通過人工進(jìn)一步分析這些代碼將目標(biāo)應(yīng)用缺陷定位到行的級別。
圖1是本申請一種回歸測試方法實(shí)施例1的流程圖; 圖2是本申請一種回歸測試方法實(shí)施例2的流程圖;圖3是本申請一種回歸測試方法實(shí)施例3的流程圖;圖4是本申請一種回歸測試方法的應(yīng)用示例;圖5是本申請一種回歸測試系統(tǒng)實(shí)施例的結(jié)構(gòu)圖。
具體實(shí)施例方式為使本申請的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式
對本申請作進(jìn)一步詳細(xì)的說明。在需要立即對某個系統(tǒng)或某個功能進(jìn)行回歸測試時,因?yàn)榇a的變更所引起需要回歸測試的范圍在原有回歸測試方案中不可獲得,并且測試用例與變更的代碼沒有關(guān)聯(lián)關(guān)系,所以現(xiàn)有技術(shù)在選擇需要回歸的用例時需要人工干預(yù)。本申請發(fā)明人注意到了這一點(diǎn),創(chuàng)造性地提出了本申請的發(fā)明構(gòu)思:1、本申請自動收集并分析所有變更代碼得到變更的類及方法,并進(jìn)一步依據(jù)依賴分析得到所有可能受到變更影響的類及方法;所有可能受到變更影響的類及方法能夠確定代碼的變更所引起需要回歸測試的范圍;2、本申請自動集成代碼關(guān)聯(lián)測試用例功能,也即,預(yù)置類及方法與測試用例之間的對應(yīng)關(guān)系,以在變更的代碼和測試用例之間建立關(guān)聯(lián)關(guān)系。上述收集、分析和依賴分析,以及集成代碼關(guān)聯(lián)測試用例功能均為自動執(zhí)行,無需人工干預(yù),因此,相對于現(xiàn)有技術(shù),能夠?qū)崿F(xiàn)回歸測試的自動化,提高回歸測試的效率。參照圖1,其示出了本申請一種回歸測試方法實(shí)施例1的流程圖,具體可以包括:步驟101、收集變更代碼,并依據(jù)所述變更代碼分析得到相應(yīng)的變更代碼信息,所述變更代碼信息具體可以包括變更的類及方法;本申請可以用于各種軟件,用于在軟件生命周期的各個階段,對軟件進(jìn)行針對性的回歸測試,以檢查各項(xiàng)修改或變更是否能滿足用戶的需求,并且,所述回歸測試基本無需人工干預(yù),具有較高的測試效率。在實(shí)際中,開發(fā)工程師在變更軟件的代碼后,一般會提交到代碼服務(wù)器;這樣,所述收集變更代碼的步驟可以為,通過監(jiān)控代碼服務(wù)器,收集所有的變更代碼。代碼服務(wù)器的一個例子是SVN,其全稱subversion是著名的軟件版本管理的工具。源代碼庫中有非常多的有用信息,這些信息不容易提取或及時跟蹤。在具體實(shí)現(xiàn)中,可以采用各種源碼跟蹤和管理軟件來執(zhí)行所述收集和分析變更代碼的操作。例如,作為一種典型的源碼跟蹤和管理軟件,F(xiàn)ishEye可提供如下功能:1、監(jiān)控:可跟蹤任意開發(fā)者的源代碼,并提供配置的變更代碼日志;2、搜索:可得到尋找的變更代碼.并快速地轉(zhuǎn)到文件;例如,可通過注釋、路徑、源代碼、作者等關(guān)鍵詞來搜索;3、共享:留在同一個頁面,鏈接到倉庫中的任何內(nèi)容:注釋、目錄、文件歷史記錄、修訂、源代碼行和查詢結(jié)果等;4.分析:可依據(jù)所述變更代碼分析得到相應(yīng)的變更代碼信息,并以線圖形式展
/Jn ο步驟102、依據(jù)預(yù)置的類與類、方法與方法之間的關(guān)聯(lián)關(guān)系,對所述變更的類及方法進(jìn)行依賴分析,得到所有可能受到變更影響的類及方法;類指面向?qū)ο缶幊陶Z言中用于描述一類事物的數(shù)據(jù)模型定義,由類的形式化定義可以看出,類是一種具有相同屬性和相同操作的對象的集合,是所有具有共同行為特征和信息結(jié)構(gòu)的對象的集合,它代表一種抽象,是代表對象的本質(zhì)的、主要的、可觀察的行為,它給出了屬于該類的全部對象的抽象定義,包括類的屬性、操作和其他性質(zhì)。每個類不是孤立、分割的,而是相互聯(lián)系、制約的。類之間的依賴關(guān)系也正是這種關(guān)系的體現(xiàn)。因此,在類及方法被變更時,與其存在依賴關(guān)系的類及方法也很有可能受到影響。于是,本申請依據(jù)依賴分析得到所有可能受到變更影響的類及方法。在實(shí)際中,類之間的依賴關(guān)系可被細(xì)分為數(shù)據(jù)依賴和方法依賴,這兩種類型的依賴可以單獨(dú)存在,也可以同時存在。由于前面收集并分析得到了變更的類及方法,故本申請實(shí)施例在考慮類與類之間的關(guān)聯(lián)關(guān)系的同時,還考慮方法與方法之間的關(guān)聯(lián)關(guān)系。在具體實(shí)現(xiàn)中,可以提供某個或某些軟件開發(fā)項(xiàng)目的類及方法,并且預(yù)置類與類、方法與方法之間的關(guān)聯(lián)關(guān)系,這樣,在自動進(jìn)行回歸測試的過程中,就可以自動對所述變更的類及方法進(jìn)行依賴分析,得到所有可能受到變更影響的類及方法。步驟103、依據(jù)預(yù)置的類及方法與測試用例之間的對應(yīng)關(guān)系,得到與所述所有可能受到變更影響的類及方法相應(yīng)的測試用例,作為回歸測試用例;所有可能受到變更影響的類及方法確定了代碼的變更所引起需要回歸測試的范圍,這里,則是在變更的代碼和測試用例之間建立關(guān)聯(lián)關(guān)系。在實(shí)際中,可以依據(jù)軟件開發(fā)項(xiàng)目的特點(diǎn)及測試需求,預(yù)置類及方法與測試用例之間的對應(yīng)關(guān)系,例如可以存儲在關(guān)聯(lián)表中,本申請對具體的預(yù)置方法不加以限制。步驟104、執(zhí)行所述回歸測試用例,得到相應(yīng)的用例執(zhí)行結(jié)果。用例執(zhí)行結(jié)果可以包括成功或失敗,以表明檢查代碼變更能否滿足用戶的需求。在本申請的一種優(yōu)選實(shí)施例中,所述執(zhí)行所述回歸測試用例的步驟可以進(jìn)一步包括:依據(jù)定時回歸策略或變更次數(shù)上限策略,針對所述回歸測試用例創(chuàng)建任務(wù)對象,確定任務(wù)對象的信息,并保存至數(shù)據(jù)庫; 依據(jù)所述任務(wù)對象的信息,執(zhí)行數(shù)據(jù)庫中的任務(wù)對象。本優(yōu)選實(shí)施例在確定需要進(jìn)行回歸測試的回歸測試用例后,結(jié)合回歸策略,創(chuàng)建任務(wù)對象,并依據(jù)任務(wù)對象的信息對數(shù)據(jù)庫中的任務(wù)對象進(jìn)行調(diào)度。本申請可以提供定時回歸策略或變更次數(shù)上限策略,其中,定時回歸策略的原則是每隔一段時間進(jìn)行一次回歸測試,而回歸測試的范圍由步驟102的結(jié)果決定;變更次數(shù)上限策略則是指監(jiān)控到代碼變更發(fā)生的次數(shù)到達(dá)指定的上限時,開始回歸測試。上述一段時間或代碼變更發(fā)生的次數(shù)均可由本領(lǐng)域技術(shù)人員根據(jù)回歸測試的需求確定,本申請對此不加以限制。假設(shè)使用定時回歸策略,定時時間間隔為24小時,則每隔24小時,針對此前24小匯總到的變更所涉及到的類及方法等信息,依據(jù)預(yù)置的類及方法與測試用例之間的對應(yīng)關(guān)系,得到相應(yīng)的測試用例信息,并依據(jù)測試用例信息創(chuàng)建任務(wù)對象,保存到數(shù)據(jù)庫中。本優(yōu)選實(shí)施例在創(chuàng)建任務(wù)對象時,確定任務(wù)對象的信息;這里,任務(wù)對象的信息主要可以包括任務(wù)對象的執(zhí)行時間。例如,在采用定時回歸策略時,可以指定任務(wù)對象的執(zhí)行時間為晚上,因?yàn)橥砩系膱?zhí)行速度比較快;又如,在采用變更次數(shù)上限策略時,可以指定任務(wù)對象的執(zhí)行時間為立即。由于在創(chuàng)建任務(wù)對象時,還會指定任務(wù)對象的其他信息,如回歸測試用例的唯一標(biāo)識、任務(wù)對象狀態(tài)(未開始、進(jìn)行中、成功完成、已失敗等)、任務(wù)對象的持續(xù)時間,任務(wù)對象已執(zhí)行的次數(shù)、任務(wù)對象的創(chuàng)建時間、任務(wù)對象的描述信息等,故本申請還可以依據(jù)這些信息對數(shù)據(jù)庫中的任務(wù)對象進(jìn)行監(jiān)控管理,以做到回歸測試的透明化??傊?,本申請能夠在基本無人工干預(yù)的情況下,自動收集并分析所有變更代碼得到變更的類及方法,并進(jìn)一步依據(jù)依賴分析得到所有可能受到變更影響的類及方法,以及依據(jù)預(yù)置的類及方法與測試用例之間的對應(yīng)關(guān)系,得到與所述所有可能受到變更影響的類及方法相應(yīng)的測試用例,作為回歸測試用例;因此,相對于現(xiàn)有技術(shù),本申請能夠?qū)崿F(xiàn)回歸測試的自動化,提高回歸測試的效率。另外,現(xiàn)有技術(shù)的回歸測試方法,通常對所有系統(tǒng)編的回歸腳本人為進(jìn)行分類,對各分類腳本人工制定調(diào)度計劃,目前多使用偷懶的做法,那就是不管是否必要,調(diào)用全部的測試用例,以避免有漏網(wǎng)之魚。而本申請的收集并分析所有變更代碼得到變更的類及方法能夠起到縮小回歸測試范圍的效果,從而能夠進(jìn)一步提高回歸測試的效率,節(jié)省機(jī)器資源。在本申請的一種優(yōu)選實(shí)施例中,所述變更代碼信息還可以包括變更的應(yīng)用、jar包或 URL (統(tǒng)一資源定位符,Uniform Resource Locator);相應(yīng)地,所述方法還可以包括:依據(jù)預(yù)置的應(yīng)用與類、應(yīng)用與方法、應(yīng)用與應(yīng)用、jar包與類、jar包與方法、URL與類或URL與方法之間的關(guān)聯(lián)關(guān)系,對所述變更的應(yīng)用、jar包或URL進(jìn)行依賴分析,得到所有可能受到變更影響的類及方法或應(yīng)用;在得到所有可能受到變更影響的應(yīng)用時,所述方法還可以包括:依據(jù)預(yù)置的應(yīng)用與測試用例之間的對應(yīng)關(guān)系,得到與所述所有可能受到變更影響的應(yīng)用相應(yīng)的測試用例,作為回歸測試用例。本優(yōu)選實(shí)施例的構(gòu)思之一在于,在實(shí)際中,除了變更的類及方法外,分析得到的變更代碼信息還可以包括應(yīng)用、jar包或URL等,因此,為了進(jìn)行依賴分析,還應(yīng)預(yù)置應(yīng)用與類、應(yīng)用與方法、jar包與類、jar包與方法、URL與類或URL與方法的關(guān)聯(lián)關(guān)系;這里,Jar包指 java 軟件的 API (應(yīng)用程序編程接口,Application Programming Interface,)庫。本優(yōu)選實(shí)施例的構(gòu)思之二在于,在某些軟件開發(fā)項(xiàng)目中,應(yīng)用很關(guān)鍵很重要,一旦發(fā)現(xiàn)應(yīng)用受到變更影響,必須執(zhí)行該應(yīng)用;于是,本申請還可以預(yù)置應(yīng)用與應(yīng)用之間的關(guān)聯(lián)關(guān)系以進(jìn)行依賴分析;另外,為了在變更的代碼和測試用例之間建立關(guān)聯(lián)關(guān)系,還應(yīng)預(yù)置應(yīng)用與測試用例之間的對應(yīng)關(guān)系。在本申請的另一種優(yōu)選實(shí)施例中,在對所述變更的類及方法進(jìn)行依賴分析前,所述方法還可以包括:依據(jù)預(yù)置的代碼變更次數(shù)參數(shù)或時間參數(shù),對收集和分析得到的變更的類及方法進(jìn)行匯總;對匯總的變更的類及方法進(jìn)行去重處理。所述去重處理包括在:在遍歷所述匯總的變更的類及方法的過程中,相同的變更的類及方法僅記錄一次;此時,所述對所述變更的類及方法進(jìn)行依賴分析可以為,依據(jù)預(yù)置的類與類、方法與方法之間的關(guān)聯(lián)關(guān)系,對去重處理后的變更的類及方法進(jìn)行依賴分析,得到所有可能受到變更影響的類及方法。本優(yōu)選實(shí)施例的主要思想在于,對變更的類及方法進(jìn)行去重處理,以避免執(zhí)行重復(fù)的回歸測試,進(jìn)一步提升回歸測試的效率。由于在收集和分析變更代碼時,通常會記錄下本次變更涉及到的類及方法等變更代碼信息,這樣,如果下次變更涉及與本次變更相同的類及方法,則不需要重復(fù)記錄,這就是去重的原理;而匯總的目的在于去重;所述遍歷可以是從后到前遍歷,也可以是從前到后遍歷。關(guān)于預(yù)置的代碼變更次數(shù)參數(shù)或時間參數(shù)的實(shí)現(xiàn)方案,在具體實(shí)現(xiàn)中,可以設(shè)置一個數(shù)字或者一個匯總時間。如果設(shè)置的是數(shù)字,那么當(dāng)代碼變更次數(shù)達(dá)到此數(shù)字時,則可以進(jìn)行匯總,并觸發(fā)后續(xù)動作(依賴分析),如果設(shè)置的是匯總時間,那么可以每隔一段時間匯總變更,然后觸發(fā)后續(xù)動作。參照圖2,其示出了本申請一種回歸測試方法實(shí)施例2的流程圖,具體可以包括:
步驟201、收集變更代碼,并依據(jù)所述變更代碼分析得到相應(yīng)的變更代碼信息,所述變更代碼信息包括變更的類及方法;步驟202、依據(jù)預(yù)置的類與類、方法與方法之間的關(guān)聯(lián)關(guān)系,對所述變更的類及方法進(jìn)行依賴分析,得到所有可能受到變更影響的類及方法;步驟203、依據(jù)預(yù)置的類及方法與測試用例之間的對應(yīng)關(guān)系,得到與所述所有可能受到變更影響的類及方法相應(yīng)的測試用例,作為回歸測試用例;步驟204、在執(zhí)行回歸測試用例前,獲取所述回歸測試用例的目標(biāo)應(yīng)用和目標(biāo)機(jī)器;步驟205、執(zhí)行所述回歸測試用例,得到相應(yīng)的用例執(zhí)行結(jié)果;步驟206、在執(zhí)行所述回歸測試用例的過程中,記錄相應(yīng)目標(biāo)機(jī)器中的目標(biāo)應(yīng)用運(yùn)行過的代碼;步驟207、在所述用例執(zhí)行結(jié)果為失敗時,通過分析所記錄的目標(biāo)應(yīng)用運(yùn)行過的代碼,定位相應(yīng)的軟件缺陷中的類及方法。通常,任何一個類都隸屬于一個或者多個應(yīng)用的,這里的應(yīng)用可以包括程序等等;那么,在執(zhí)行回歸測試用例的過程中,相應(yīng)的目標(biāo)應(yīng)用必然會運(yùn)行相應(yīng)的代碼。本實(shí)施例與實(shí)施例1的區(qū)別在于,在執(zhí)行回歸測試用例的過程中,記錄相應(yīng)目標(biāo)機(jī)器中的目標(biāo)應(yīng)用運(yùn)行過的代碼;這樣,在相應(yīng)的用例執(zhí)行結(jié)果為失敗時,記錄的就是含有缺陷的代碼,此時,可以通過分析所記錄的目標(biāo)應(yīng)用運(yùn)行過的代碼,定位相應(yīng)的軟件缺陷中的類及方法。上面將目標(biāo)應(yīng)用缺陷定位到類及方法的級別,當(dāng)然缺陷可能只是包含在運(yùn)行過代碼的某一行中,此時,需要通過人工進(jìn)一步分析這些代碼才能精確定位到行的級別。需要說明的是,在相應(yīng)的用例執(zhí)行結(jié)果為成功時,記錄代碼是不含有缺陷的,因此可以拋棄該記錄。對于方法實(shí)施例2而言,由于其與方法實(shí)施例1基本相似,所以描述的比較簡單,相關(guān)之處參見方法實(shí)施例1的部分說明即可。參照圖3,其示出了本申請一種回歸測試方法實(shí)施例3的流程圖,具體可以包括:步驟301、收集變更代碼,并依據(jù)所述變更代碼分析得到相應(yīng)的變更代碼信息,所述變更代碼信息包括變更的類及方法;步驟302、依據(jù)預(yù)置的類與類、方法與方法之間的關(guān)聯(lián)關(guān)系,對所述變更的類及方法進(jìn)行依賴分析,得到所有可能受到變更影響的類及方法;步驟303、依據(jù)預(yù)置的類及方法與測試用例之間的對應(yīng)關(guān)系,得到與所述所有可能受到變更影響的類及方法相應(yīng)的測試用例,作為回歸測試用例;步驟304、依據(jù)所述所有可能受到變更影響的類及方法所在的應(yīng)用,發(fā)布所述應(yīng)用的最新程序;步驟305、在已發(fā)布最新程序的環(huán)境下執(zhí)行所述回歸測試用例,得到相應(yīng)的用例執(zhí)行結(jié)果。本實(shí)施例與實(shí)施例1的主要區(qū)別在于,細(xì)化回歸測試用例的執(zhí)行流程,具體而言,首先依據(jù)所述所有可能受到變更影響的類及方法所在的應(yīng)用,發(fā)布所述應(yīng)用的最新程序,以得到回歸測試用例的應(yīng)用環(huán)境,然后在這個應(yīng)用環(huán)境下執(zhí)行所述回歸測試用例。在具體實(shí)現(xiàn)中,步驟303和步驟304在執(zhí)行順序上并無限制。假設(shè)本次回歸測試的目標(biāo)系統(tǒng)為A系統(tǒng),則可以通過HTTP協(xié)議發(fā)送請求到相應(yīng)的程序發(fā)布系統(tǒng),請求的url示例為:http://www.deploy, com/deployApp.htm appName = A發(fā)布系統(tǒng)接收到請求,則開始部署A系統(tǒng),部署完成后,在請求的響應(yīng)信息中寫入success。收到此響應(yīng)即可知A系統(tǒng)部署完畢,然后發(fā)送請求到回歸測試系統(tǒng)中,請求的url示例:http://www.automan.com/runTest.htm testCaselds = 12, 34, 53,42其中,最后以逗號分隔的數(shù)字表示用例的數(shù)據(jù)庫記錄標(biāo)識,是計算回歸測試用例時回歸測試系統(tǒng)回傳信息所需的,回歸測試系統(tǒng)開始執(zhí)行這些用例,并記錄用例的執(zhí)行結(jié)果,最終將結(jié)果回傳。假設(shè)本次回歸測試一個用例失敗(如果多個,則返回結(jié)果有多行),則用例執(zhí)行結(jié)果的一個返回格式示例如下:result:fail ;ip:xxx.xxx.xxx.xxx ;appName:xxx ;className:xxx。對于方法實(shí)施例3而言,由于其與方法實(shí)施例1基本相似,所以描述的比較簡單,相關(guān)之處參見方法實(shí)施例1的部分說明即可。為使本領(lǐng)域技術(shù)人員更好地理解本申請,參照圖4,其示出了本申請一種回歸測試方法的應(yīng)用示例,具體可以包括:`
步驟1、開發(fā)工程師提交代碼;步驟2、SVN監(jiān)控管理分析系統(tǒng)進(jìn)行版本監(jiān)控和變更分析,并向集成回歸系統(tǒng)發(fā)出變更通知;其中,所述版本監(jiān)控主要包括監(jiān)控SVN等代碼服務(wù)器以收集、匯總所有代碼變更,所述變更分析主要包括分析出變更的應(yīng)用、jar包、類及方法等變更代碼信息,并發(fā)送到集成回歸系統(tǒng)。步驟3、集成回歸系統(tǒng)針對來自SVN監(jiān)控管理分析系統(tǒng)的變更代碼信息,進(jìn)行分析匯總、去重,將最終的變更結(jié)果發(fā)送到d印end系統(tǒng),以查找依賴;步驟4、Depend系統(tǒng)在收到變更結(jié)果后,通過依賴分析,查找出所有有可能受到變更影響的應(yīng)用、類及方法,并將依賴分析結(jié)果回送到集成回歸系統(tǒng);步驟5、集成回歸系統(tǒng)在接收到依賴分析結(jié)果后,計算出需要進(jìn)行回歸測試的回歸測試用例,并結(jié)合用戶設(shè)定的回歸策略,創(chuàng)建任務(wù)對象并交由任務(wù)由任務(wù)調(diào)度引擎進(jìn)行調(diào)度,任務(wù)調(diào)度引擎首先根據(jù)涉及到的應(yīng)用發(fā)送構(gòu)建命令到自動部署系統(tǒng);步驟6、自動部署系統(tǒng)開始構(gòu)建發(fā)布目標(biāo)應(yīng)用,在發(fā)布完畢后,返回環(huán)境準(zhǔn)備完畢的響應(yīng)以通知集成回歸系統(tǒng)環(huán)境可以使用;步驟7、集成回歸系統(tǒng)收到環(huán)境準(zhǔn)備完畢的消息后,將測試任務(wù)發(fā)送到測試用例執(zhí)行系統(tǒng),測試用例執(zhí)行系統(tǒng)在執(zhí)行測試任務(wù)中指定的回歸測試用例前,將該回歸測試用例對應(yīng)的目標(biāo)應(yīng)用、目標(biāo)機(jī)器的IP,端口等信息發(fā)回集成回歸系統(tǒng),然后開始執(zhí)行,并監(jiān)控用例的用例執(zhí)行結(jié)果,最終將用例執(zhí)行結(jié)果返回到集成回歸系統(tǒng);步驟8、集成回歸系統(tǒng)接到測試用例執(zhí)行系統(tǒng)在執(zhí)行回歸測試用例前返回的信息,并發(fā)送命令到TCC系統(tǒng);TCC系統(tǒng)根據(jù)命令在執(zhí)行回歸測試用例的過程中記錄相應(yīng)目標(biāo)機(jī)器中的目標(biāo)應(yīng)用運(yùn)行過的代碼,并在所述用例執(zhí)行結(jié)果為失敗時,通過分析所記錄的目標(biāo)應(yīng)用運(yùn)行過的代碼,定位相應(yīng)的軟件缺陷中的類及方法。與前述方法實(shí)施例相應(yīng),本申請還提供了一種回歸測試系統(tǒng),參照圖5,具體可以包括:收集裝置501,用于收集變更代碼;變更分析裝置502,用于依據(jù)所述變更代碼分析得到相應(yīng)的變更代碼信息,所述變更代碼信息包括變更的類及方法;第一依賴分析裝置503,用于依據(jù)預(yù)置的類與類、方法與方法之間的關(guān)聯(lián)關(guān)系,對所述變更的類及方法進(jìn)行依賴分析,得到所有可能受到變更影響的類及方法;第一回歸測試用例獲取裝置504,用于依據(jù)預(yù)置的類及方法與測試用例之間的對應(yīng)關(guān)系,得到與所述所有可能受到變更影響的類及方法相應(yīng)的測試用例,作為回歸測試用例;及用例執(zhí)行裝置505,用于執(zhí)行所述回歸測試用例,得到相應(yīng)的用例執(zhí)行結(jié)果。在本申請的一種優(yōu)選實(shí)施例中,所述系統(tǒng)還可以包括:應(yīng)用信息獲取裝置,用于在執(zhí)行回歸測試用例前,獲取所述回歸測試用例的目標(biāo)應(yīng)用和目標(biāo)機(jī)器;記錄裝置,用于在執(zhí)行所述回歸測試用例的過程中,記錄相應(yīng)目標(biāo)機(jī)器中的目標(biāo)應(yīng)用運(yùn)行過的代碼 '及代碼分析裝置,用于在所述用例執(zhí)行結(jié)果為失敗時,通過分析所記錄的目標(biāo)應(yīng)用運(yùn)行過的代碼,定位相應(yīng)的軟件缺陷中的類及方法。在本申請的另一種優(yōu)選實(shí)施例中,所述變更代碼信息還可以包括變更的應(yīng)用、jar包或URL ;所述系統(tǒng)還可以包括:第二依賴分析裝置,用于依據(jù)預(yù)置的應(yīng)用與類、應(yīng)用與方法、應(yīng)用與應(yīng)用、jar包與類、jiar包與方法、URL與類或URL與方法之間的關(guān)聯(lián)關(guān)系,對所述變更的應(yīng)用、jar包或URL進(jìn)行依賴分析,得到所有可能受到變更影響的類及方法或應(yīng)用;及第二回歸測試用例獲取裝置,用于在得到所有可能受到變更影響的應(yīng)用時,依據(jù)預(yù)置的應(yīng)用與測試用例之間的對應(yīng)關(guān)系,得到與所述所有可能受到變更影響的應(yīng)用相應(yīng)的測試用例,作為回歸測試用例。在本申請的再一種優(yōu)選實(shí)施例中,所述系統(tǒng)還可以包括:匯總裝置,用于在對所述變更的類及方法進(jìn)行依賴分析前,依據(jù)預(yù)置的代碼變更次數(shù)參數(shù)或時間參數(shù),對收集和分析得到的變更的類及方法進(jìn)行匯總;去重處理裝置,用于對匯總的變更的類及方法進(jìn)行去重處理。所述去重處理包括在:在遍歷所述匯總的變更的類及方法的過程中,相同的變更的類及方法僅記錄一次;此時,所述第一依賴分析裝置503,可具體用于依據(jù)預(yù)置的類與類、方法與方法之間的關(guān)聯(lián)關(guān)系,對去重處理后的變更的類及方法進(jìn)行依賴分析,得到所有可能受到變更影響的類及方法。在本申請的一種優(yōu)選實(shí)施例中,所述用例執(zhí)行裝置505可以進(jìn)一步包括:
發(fā)布模塊,依據(jù)所述所有可能受到變更影響的類及方法所在的應(yīng)用,發(fā)布所述應(yīng)用的最新程序;執(zhí)行模塊,用于在已發(fā)布最新程序的環(huán)境下執(zhí)行所述回歸測試用例,得到相應(yīng)的用例執(zhí)行結(jié)果。在本申請的另一種優(yōu)選實(shí)施例中,所述用例執(zhí)行裝置505具體可以包括:任務(wù)對象創(chuàng)建模塊,用于依據(jù)定時回歸策略或變更次數(shù)上限策略,針對所述回歸測試用例創(chuàng)建任務(wù)對象,并保存至數(shù)據(jù)庫;調(diào)度執(zhí)行模塊,用于依據(jù)任務(wù)對象的信息,依次執(zhí)行數(shù)據(jù)庫中的任務(wù)對象。在本申請實(shí)施例中,優(yōu)選的是,所述收集裝置501,可具體用于通過監(jiān)控代碼服務(wù)器,收集所有的變更代碼。對于系統(tǒng)實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡單,相關(guān)之處參見方法實(shí)施例的部分說明即可。本說明書中的各個實(shí)施例均采用遞進(jìn)的方式描述,每個實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個實(shí)施例之間相同相似的部分互相參見即可。以上對本申請所提供的一種回歸測試方法和系統(tǒng),進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個例對本申請的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本申請的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本申請的思想,在具體實(shí)施方式
及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本申請的限制。
權(quán)利要求
1.一種回歸測試方法,其特征在于,包括: 收集變更代碼,并依據(jù)所述變更代碼分析得到相應(yīng)的變更代碼信息,所述變更代碼信息包括變更的類及方法; 依據(jù)預(yù)置的類與類、方法與方法之間的關(guān)聯(lián)關(guān)系,對所述變更的類及方法進(jìn)行依賴分析,得到所有可能受到變更影響的類及方法; 依據(jù)預(yù)置的類及方法與測試用例之間的對應(yīng)關(guān)系,得到與所述所有可能受到變更影響的類及方法相應(yīng)的測試用例,作為回歸測試用例; 執(zhí)行所述回歸測試用例,得到相應(yīng)的用例執(zhí)行結(jié)果。
2.如權(quán)利要求1所述的方法,其特征在于,還包括: 在執(zhí)行回歸測試用例前,獲取所述回歸測試用例的目標(biāo)應(yīng)用和目標(biāo)機(jī)器; 在執(zhí)行所述回歸測試用例的過程中,記錄相應(yīng)目標(biāo)機(jī)器中的目標(biāo)應(yīng)用運(yùn)行過的代碼;在所述用例執(zhí)行結(jié)果為失敗時,通過分析所記錄的目標(biāo)應(yīng)用運(yùn)行過的代碼,定位相應(yīng)的軟件缺陷中的類及方法。
3.如權(quán)利要求1所述的方法,其特征在于,所述變更代碼信息還包括變更的應(yīng)用、jar包或URL ; 所述方法還包括: 依據(jù)預(yù)置的應(yīng)用與類、應(yīng)用與方法、應(yīng)用與應(yīng)用、jar包與類、jiar包與方法、URL與類或URL與方法之間的關(guān)聯(lián)關(guān)系,對所述變更的應(yīng)用、jar包或URL進(jìn)行依賴分析,得到所有可能受到變更影響的類及方法或應(yīng)用; 在得到所有可能受到變更影響的應(yīng)用時,所述方法還包括: 依據(jù)預(yù)置的應(yīng)用與測試用例之間的對應(yīng)關(guān)系,得到與所述所有可能受到變更影響的應(yīng)用相應(yīng)的測試用例,作為回歸測試用例。
4.如權(quán)利要求1所述的方法,其特征在于,在對所述變更的類及方法進(jìn)行依賴分析前,所述方法還包括: 依據(jù)預(yù)置的代碼變更次數(shù)參數(shù)或時間參數(shù),對收集和分析得到的變更的類及方法進(jìn)行匯總; 對匯總的變更的類及方法進(jìn)行去重處理。所述去重處理包括在:在遍歷所述匯總的變更的類及方法的過程中,相同的變更的類及方法僅記錄一次; 所述對所述變更的類及方法進(jìn)行依賴分析為,依據(jù)預(yù)置的類與類、方法與方法之間的關(guān)聯(lián)關(guān)系,對去重處理后的變更的類及方法進(jìn)行依賴分析,得到所有可能受到變更影響的類及方法。
5.如權(quán)利要求1所述的方法,其特征在于,所述執(zhí)行所述回歸測試用例的步驟包括: 依據(jù)所述所有可能受到變更影響的類及方法所在的應(yīng)用,發(fā)布所述應(yīng)用的最新程序; 在已發(fā)布最新程序的環(huán)境下執(zhí)行所述回歸測試用例,得到相應(yīng)的用例執(zhí)行結(jié)果。
6.如權(quán)利要求1所述的方法,其特征在于,所述執(zhí)行所述回歸測試用例的步驟包括: 依據(jù)定時回歸策略或變更次數(shù)上限策略,針對所述回歸測試用例創(chuàng)建任務(wù)對象,確定任務(wù)對象的信息,并保存至數(shù)據(jù)庫; 依據(jù)所述任務(wù)對象的信息,執(zhí)行數(shù)據(jù)庫中的任務(wù)對象。
7.如權(quán)利要求1所述的方法,其特征在于,所述收集變更代碼的步驟為,通過監(jiān)控代碼服務(wù)器,收集所有的變更代碼。
8.一種回歸測試系統(tǒng),其特征在于,包括: 收集裝置,用于收集變更代碼; 變更分析裝置,用于依據(jù)所述變更代碼分析得到相應(yīng)的變更代碼信息,所述變更代碼信息包括變更的類及方法; 第一依賴分析裝置,用于依據(jù)預(yù)置的類與類、方法與方法之間的關(guān)聯(lián)關(guān)系,對所述變更的類及方法進(jìn)行依賴分析,得到所有可能受到變更影響的類及方法; 第一回歸測試用例獲取裝置,用于依據(jù)預(yù)置的類及方法與測試用例之間的對應(yīng)關(guān)系,得到與所述所有可能受到變更影響的類及方法相應(yīng)的測試用例,作為回歸測試用例; 用例執(zhí)行裝置,用于執(zhí)行所述回歸測試用例,得到相應(yīng)的用例執(zhí)行結(jié)果。
9.如權(quán)利要求8所述的系統(tǒng),其特征在于,還包括: 應(yīng)用信息獲取裝置,用于在執(zhí)行回歸測試用例前,獲取所述回歸測試用例的目標(biāo)應(yīng)用和目標(biāo)機(jī)器; 記錄裝置,用于在執(zhí)行所述回歸測試用例的過程中,記錄相應(yīng)目標(biāo)機(jī)器中的目標(biāo)應(yīng)用運(yùn)行過的代碼 '及 代碼分析裝置,用于在所述用例執(zhí)行結(jié)果為失敗時,通過分析所記錄的目標(biāo)應(yīng)用運(yùn)行過的代碼,定位相應(yīng)的軟件缺陷中的類及方法。
10.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述變更代碼信息還包括變更的應(yīng)用、jar包或URL ; 所述系統(tǒng)還包括: 第二依賴分析裝置,用于依據(jù)預(yù)置的應(yīng)用與類、應(yīng)用與方法、應(yīng)用與應(yīng)用、jar包與類、jiar包與方法、URL與類或URL與方法之間的關(guān)聯(lián)關(guān)系,對所述變更的應(yīng)用、jar包或URL進(jìn)行依賴分析,得到所有可能受到變更影響的類及方法或應(yīng)用; 第二回歸測試用例獲取裝置,用于在得到所有可能受到變更影響的應(yīng)用時,依據(jù)預(yù)置的應(yīng)用與測試用例之間的對應(yīng)關(guān)系,得到與所述所有可能受到變更影響的應(yīng)用相應(yīng)的測試用例,作為回歸測試用例。
全文摘要
本申請?zhí)峁┝艘环N回歸測試方法和系統(tǒng),其中的方法具體包括收集變更代碼,并依據(jù)所述變更代碼分析得到相應(yīng)的變更代碼信息,所述變更代碼信息包括變更的類及方法;依據(jù)預(yù)置的類與類、方法與方法之間的關(guān)聯(lián)關(guān)系,對所述變更的類及方法進(jìn)行依賴分析,得到所有可能受到變更影響的類及方法;依據(jù)預(yù)置的類及方法與測試用例之間的對應(yīng)關(guān)系,得到與所述所有可能受到變更影響的類及方法相應(yīng)的測試用例,作為回歸測試用例;執(zhí)行所述回歸測試用例,得到相應(yīng)的用例執(zhí)行結(jié)果。本申請能夠減少人工干預(yù),實(shí)現(xiàn)回歸測試的自動化,提高回歸測試的效率。
文檔編號G06F11/36GK103176895SQ20111043616
公開日2013年6月26日 申請日期2011年12月22日 優(yōu)先權(quán)日2011年12月22日
發(fā)明者馬治國, 李子樂, 李國棟, 商錦波 申請人:阿里巴巴集團(tuán)控股有限公司