,采用步驟401-步驟403可以準(zhǔn)確獲取變 更的函數(shù)列表。
[0072] 步驟303、根據(jù)變更的函數(shù)列表,查詢預(yù)先生成的函數(shù)和測試用例的對應(yīng)關(guān)系,獲 取需要回歸測試的測試用例。
[0073] 函數(shù)和測試用例的對應(yīng)關(guān)系根據(jù)基準(zhǔn)版本軟件代碼生成,其中,基準(zhǔn)版本軟件代 碼和待測版本軟件代碼中函數(shù)的定義規(guī)則相同,所以,基準(zhǔn)版本軟件代碼和待測版本軟件 代碼包含的函數(shù)相同,所以,根據(jù)變更的函數(shù)列表,查詢預(yù)先生成的函數(shù)和測試用例的對應(yīng) 關(guān)系,可以準(zhǔn)確獲取需要回歸測試的測試用例。
[0074] 其中,函數(shù)和測試用例的對應(yīng)關(guān)系可以如表3所示,當(dāng)然,也可以為其他形式,本 發(fā)明實施例對此不進(jìn)行限制。
[0075] 表 3
[0076]
[0077] 如表3所示,對于每個函數(shù)關(guān)聯(lián)的測試用例,標(biāo)記為I ;對于每個函數(shù)不關(guān)聯(lián)的測 試用例,標(biāo)記為0。
[0078] 優(yōu)選的,步驟303具體包括:
[0079] 根據(jù)變更的函數(shù)列表中每個函數(shù),分別查詢預(yù)先生成的函數(shù)和測試用例的對應(yīng)關(guān) 系,獲取變更的函數(shù)列表中每個函數(shù)關(guān)聯(lián)的測試用例,將每個函數(shù)關(guān)聯(lián)的測試用例的并集 作為需要回歸測試的測試用例。
[0080] 例如,將表2中包含的每個函數(shù),分別查詢表3所示函數(shù)和測試用例的對應(yīng)關(guān)系, 可得表2中每個函數(shù)關(guān)聯(lián)的測試用例,如表4所示。
[0083] 將表2中包含的每個函數(shù)關(guān)聯(lián)的測試用例的并集作為需要回歸測試的測試用例, 如表4所示,需要說明的是,可以通過對函數(shù)關(guān)聯(lián)的測試用例取或,取或的結(jié)果即為函數(shù)關(guān) 聯(lián)的測試用例的并集。
[0084] 為了消除所得的測試用例中的冗余測試用例,可以通過下述任意一種方式或多種 方式的結(jié)合來實現(xiàn)。
[0085] 具體的,在一種實例中,對于第一函數(shù)(第一函數(shù)為變更的函數(shù)列表中任意一個 函數(shù)),若該第一函數(shù)為底層函數(shù),則確定該第一函數(shù)關(guān)聯(lián)的測試用例為空。
[0086] 因為底層函數(shù)一般關(guān)聯(lián)的測試用例比較多,有的底層函數(shù)甚至能夠關(guān)聯(lián)80%以上 的測試用例,所以,如果將底層函數(shù)全部輸出作為獲取的需要回歸的測試用例,則會導(dǎo)致測 試用例冗余過大,所以,可以通過放棄底層函數(shù)關(guān)聯(lián)的測試用例來實現(xiàn),使得第一函數(shù)關(guān)聯(lián) 的測試用例為空。例如,若函數(shù)1為底層函數(shù),則函數(shù)1關(guān)聯(lián)的測試用例如表5所示,最終 得到的并集相對于表4中并集包含的測試用例較少,能夠有效避免變更的底層函數(shù)導(dǎo)致的 冗余測試用例。
[0089] 在另一種實例中,對于第二函數(shù)(第二函數(shù)為變更的函數(shù)列表中任意一個函數(shù)), 查詢預(yù)先生成的函數(shù)和測試用例的對應(yīng)關(guān)系,獲取第二函數(shù)關(guān)聯(lián)的測試用例,可以包括:
[0090] A、根據(jù)第二函數(shù)查詢預(yù)先生成的函數(shù)和測試用例的對應(yīng)關(guān)系,獲取所述第二函數(shù) 對應(yīng)的測試用例;
[0091] B、若第二函數(shù)的對應(yīng)的測試用例的數(shù)量大于或等于預(yù)設(shè)閾值,則查詢測試用例信 息庫,獲取第二函數(shù)對應(yīng)的每個測試用例的優(yōu)先級;
[0092] 其中,預(yù)設(shè)閾值可以根據(jù)需要或者經(jīng)驗值確定,為采用根據(jù)測試用例的優(yōu)先級去 除測試用例冗余方法的臨界值,若一個函數(shù)對應(yīng)的測試用例的數(shù)量大于或等于該預(yù)設(shè)閾 值,則只輸出優(yōu)先級最高的測試用例。后臺服務(wù)器20可以維護(hù)每個測試用例的優(yōu)先級,可 以根據(jù)測試用例ID查詢獲取測試用例的優(yōu)先級信息,測試用例的優(yōu)先級為預(yù)先設(shè)置,例 如,可以分為PO級,Pl級,P2級,P3級等,其中,PO級,Pl級,P2級,P3級的優(yōu)先級依次降 低。
[0093] C、將優(yōu)先級最高的測試用例作為所述第二函數(shù)關(guān)聯(lián)的測試用例。
[0094] 參見圖6,若函數(shù)3對應(yīng)的測試用例大于預(yù)設(shè)閾值,則函數(shù)3關(guān)聯(lián)的測試用例為優(yōu) 先級最高的測試用例,例如,參見表4和表6,因為函數(shù)3對應(yīng)的測試用例3的優(yōu)先級為P3 級,所以,在表6中記為0,相應(yīng)的,獲取的交集相對于表4中交集包含的測試用例較少。
[0097] 在又一種實例中,對于第三函數(shù)(第三函數(shù)為變更的函數(shù)列表中任意一個函數(shù)), 查詢預(yù)先生成的函數(shù)和測試用例的對應(yīng)關(guān)系,獲取第一函數(shù)關(guān)聯(lián)的測試用例,可以包括:
[0098] 在函數(shù)列表中,在該第三函數(shù)的相鄰函數(shù)中取N個函數(shù),分別根據(jù)該N個函數(shù)以及 該第三函數(shù)查詢預(yù)先生成的函數(shù)和測試用例的對應(yīng)關(guān)系,分別獲取該N個函數(shù)以及該第三 函數(shù)對應(yīng)的測試用例;將該N個函數(shù)以及該第三函數(shù)對應(yīng)的測試用例的交集作為該第三函 數(shù)或者該N個函數(shù)中任意一個函數(shù)關(guān)聯(lián)的測試用例。
[0099] 采用這種方式,相當(dāng)于將該N個函數(shù)以及該第三函數(shù)構(gòu)成一個N+1的函數(shù)集合,以 這個函數(shù)集合整體去查詢預(yù)先生成的函數(shù)和測試用例的對應(yīng)關(guān)系,在一個測試用例與該函 數(shù)集合中所有函數(shù)都存在對應(yīng)關(guān)系時,才能作為關(guān)聯(lián)的測試用例輸出,這樣可以有效減小 測試用例的冗余。
[0100] 例如,若第三函數(shù)為函數(shù)2,N值為2,則可以取函數(shù)1,函數(shù)2和函數(shù)3作為一個函 數(shù)集合,如表7所示,將函數(shù)1,函數(shù)2和函數(shù)3對應(yīng)的測試用例取交集后,相對于直接將函 數(shù)1,函數(shù)2和函數(shù)3的測試用例取并集能夠有效減小測試用例的冗余輸出。
[0101] 表 7
[0102]
[0103] 其中,通過調(diào)整N值可以調(diào)整測試用例的輸出個數(shù),例如,可以設(shè)置默認(rèn)的N值為 1,經(jīng)驗值為3。
[0104] 由此可見,本發(fā)明實施例提供的確定需要回歸測試的測試用例的方法,根據(jù)待測 版本軟件代碼中相對于基準(zhǔn)版本軟件代碼變更的函數(shù)列表,查詢預(yù)先生成的函數(shù)和測試用 例的對應(yīng)關(guān)系,獲取需要回歸測試的測試用例,避免通過測試人員的經(jīng)驗來確認(rèn)回歸測試 的范圍導(dǎo)致的效率低下的問題,而且,一方面,能夠保證獲取的測試用例包含發(fā)生變化的函 數(shù)影響到的測試用例,避免可能出現(xiàn)測試遺漏和質(zhì)量問題;另一方面,因為函數(shù)是根據(jù)預(yù)設(shè) 規(guī)則定義的,且每個函數(shù)在待測版本軟件代碼或者基準(zhǔn)版本軟件代碼中互不相同,提高函 數(shù)定義的精度,減小了獲取測試用例的冗余。所以,可以提高確定需要回歸測試的測試用例 的效率以及準(zhǔn)確度。
[0105] 進(jìn)一步的,參見圖5,在步驟301之前,所述方法還包括:
[0106] 步驟304、對基準(zhǔn)版本軟件代碼進(jìn)行靜態(tài)語法分析,根據(jù)預(yù)設(shè)規(guī)則定義所述基準(zhǔn)版 本軟件代碼的函數(shù),并獲取定義的每個函數(shù)對應(yīng)的起始行號以及結(jié)束行號;
[0107] 其中,步驟304和步驟402原理相同,只是軟件代碼的版本不同,故在此不再贅述。
[0108] 步驟305、在所述基準(zhǔn)版本軟件代碼的每個函數(shù)對應(yīng)的起始行添加插樁代碼;
[0109] 根據(jù)獲取的每個函數(shù)對應(yīng)的起始行號,在每個函數(shù)的起始行添加"打印該函數(shù)名" 的代碼,如,在函數(shù) com. sample, classl. funcl (int, int)的起始行添加 Log ("com. sample, classl. funcl (int, int),')。
[0110] 需要說明的是,若軟件代碼為JAVA語言,由于JAVA語言要求在構(gòu)造函數(shù)中對父類 或本類的構(gòu)造函數(shù)的調(diào)用必須放在函數(shù)體的第一句,否則編譯不通過,所以插樁代碼要放 在構(gòu)造函數(shù)的調(diào)用的下一句。
[0111] 步驟306、執(zhí)行添加插樁代碼后的基準(zhǔn)版本軟件代碼的測試用例,并采集每個測試 用例執(zhí)行期間的插樁代碼的運行記錄。
[0112] 將插樁代碼進(jìn)行編譯,生成可執(zhí)行的目標(biāo)文件,使得用戶終端的應(yīng)用客戶端或者 網(wǎng)頁客戶端對目標(biāo)文件執(zhí)行測試用例,在執(zhí)行測試用例的過程中,用戶終端的應(yīng)用客戶端 或者網(wǎng)頁客戶端向后臺服務(wù)器20反饋每個測試用例的ID以及執(zhí)行的開始時間和結(jié)束時 間,后臺服務(wù)器采集每個測試用例執(zhí)行期間的插樁代碼的運行記錄,以獲取每個測試用例 執(zhí)行過程中調(diào)用的函數(shù)。
[0113] 步驟307、根據(jù)每個測試用例執(zhí)行期間的插樁代碼的運行記錄,生成函數(shù)和測試用 例的對應(yīng)關(guān)系。
[0114] 生成的函數(shù)和測試用例的對應(yīng)關(guān)系可如表3所示。
[0115] 圖6為本發(fā)明實施例提供的確