一種測(cè)試用例篩選方法及裝置制造方法
【專利摘要】本發(fā)明適用于軟件測(cè)試【技術(shù)領(lǐng)域】,提供了一種測(cè)試用例篩選方法及裝置,包括:分別獲取每個(gè)代碼行關(guān)聯(lián)的測(cè)試用例,所述測(cè)試用例覆蓋與其關(guān)聯(lián)的所述代碼行;當(dāng)有所述代碼行發(fā)生變更時(shí),提取所述代碼行關(guān)聯(lián)的所述測(cè)試用例。在本發(fā)明中,通過獲取每個(gè)代碼行與測(cè)試用例之間的關(guān)聯(lián)關(guān)系,從而在代碼發(fā)生變更時(shí),能夠快速、有效地篩選出代碼變更所影響的測(cè)試用例,有針對(duì)性地進(jìn)行回歸測(cè)試,并且避免了大量冗余測(cè)試用例的執(zhí)行,節(jié)省了測(cè)試時(shí)間。
【專利說明】一種測(cè)試用例篩選方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于軟件測(cè)試【技術(shù)領(lǐng)域】,尤其涉及一種測(cè)試用例篩選方法及裝置。
【背景技術(shù)】
[0002]在軟件的生命周期中,當(dāng)發(fā)生代碼升級(jí)、版本迭代或者漏洞(Bug)修復(fù)等變化時(shí),需要進(jìn)行回歸測(cè)試,以重新測(cè)試軟件功能,保證上述變化不會(huì)破壞軟件的原有功能。
[0003]然而,在回歸測(cè)試中,若執(zhí)行所有測(cè)試用例,對(duì)于大型軟件而言需要耗費(fèi)大量的測(cè)試時(shí)間,不可行;若基于風(fēng)險(xiǎn)選擇執(zhí)行部分測(cè)試用例,則由于測(cè)試人員無法衡量軟件實(shí)際更改帶來的影響范圍,因此在測(cè)試用例的選擇上顯得盲目,可能導(dǎo)致較大的功能邏輯遺漏風(fēng)險(xiǎn)。因此,現(xiàn)有的回歸測(cè)試過程無法兼顧測(cè)試效率和測(cè)試用例的有效性,導(dǎo)致測(cè)試效果不理想。
【發(fā)明內(nèi)容】
[0004]本發(fā)明實(shí)施例的目的在于提供一種測(cè)試用例篩選方法,旨在解決現(xiàn)有的回歸測(cè)試無法兼顧測(cè)試效率和測(cè)試用例的有效性,導(dǎo)致測(cè)試效果不理想的問題。
[0005]本發(fā)明實(shí)施例是這樣實(shí)現(xiàn)的,一種測(cè)試用例篩選方法,包括:
[0006]分別獲取每個(gè)代碼行關(guān)聯(lián)的測(cè)試用例,所述測(cè)試用例覆蓋與其關(guān)聯(lián)的所述代碼行;
[0007]當(dāng)有所述代碼行發(fā)生變更時(shí),提取所述代碼行關(guān)聯(lián)的所述測(cè)試用例。
[0008]本發(fā)明實(shí)施例的另一目的在于提供一種測(cè)試用例篩選裝置,包括:
[0009]第一獲取單元,用于分別獲取每個(gè)代碼行關(guān)聯(lián)的測(cè)試用例,所述測(cè)試用例覆蓋與其關(guān)聯(lián)的所述代碼行;
[0010]第一提取單元,用于當(dāng)有所述代碼行發(fā)生變更時(shí),提取所述代碼行關(guān)聯(lián)的所述測(cè)試用例。
[0011]在本發(fā)明實(shí)施例中,通過獲取每個(gè)代碼行與測(cè)試用例之間的關(guān)聯(lián)關(guān)系,從而在代碼發(fā)生變更時(shí),能夠快速、有效地篩選出代碼變更所影響的測(cè)試用例,有針對(duì)性地進(jìn)行回歸測(cè)試,并且避免了大量冗余測(cè)試用例的執(zhí)行,節(jié)省了測(cè)試時(shí)間。
【專利附圖】
【附圖說明】
[0012]圖1是本發(fā)明實(shí)施例提供的測(cè)試用例篩選方法的實(shí)現(xiàn)流程圖;
[0013]圖2是本發(fā)明另一實(shí)施例提供的測(cè)試用例篩選方法的實(shí)現(xiàn)流程圖;
[0014]圖3是本發(fā)明另一實(shí)施例提供的測(cè)試用例篩選方法的實(shí)現(xiàn)流程圖;
[0015]圖4是本發(fā)明實(shí)施例提供的測(cè)試用例篩選裝置的結(jié)構(gòu)框圖;
[0016]圖5是本發(fā)明另一實(shí)施例提供的測(cè)試用例篩選裝置的結(jié)構(gòu)框圖。
【具體實(shí)施方式】[0017]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0018]在本發(fā)明實(shí)施例中,通過獲取每個(gè)代碼行與測(cè)試用例之間的關(guān)聯(lián)關(guān)系,從而在代碼發(fā)生變更時(shí),能夠快速、有效地篩選出代碼變更所影響的測(cè)試用例,有針對(duì)性地進(jìn)行回歸測(cè)試,并且避免了大量冗余測(cè)試用例的執(zhí)行,節(jié)省了測(cè)試時(shí)間。
[0019]圖1示出了本發(fā)明實(shí)施例提供的測(cè)試用例篩選方法的實(shí)現(xiàn)流程,詳述如下:
[0020]在步驟SlOl中,分別獲取每個(gè)代碼行關(guān)聯(lián)的測(cè)試用例,該測(cè)試用例覆蓋與其關(guān)聯(lián)的代碼行。
[0021]在本實(shí)施例中,步驟SlOl之前,可以通過對(duì)基線測(cè)試用例庫(即用于基線版本代碼測(cè)試的所有測(cè)試用例的集合)中的所有測(cè)試用例進(jìn)行覆蓋率分析,從而獲取到每個(gè)源文件的代碼行到該基線測(cè)試用例庫的映射關(guān)系,即獲知源文件的每一行代碼都被哪些測(cè)試用例所覆蓋,由此,根據(jù)獲取到的映射關(guān)系,在步驟SlOl中,即可以分別獲取到每個(gè)源文件中的每個(gè)代碼行關(guān)聯(lián)的測(cè)試用例,在該“代碼行-測(cè)試用例”的關(guān)聯(lián)關(guān)系中,用于指示每個(gè)代碼行都被哪些測(cè)試用例所覆蓋,即每個(gè)代碼行所關(guān)聯(lián)的測(cè)試用例均覆蓋與其關(guān)聯(lián)的代碼行。
[0022]需要說明的是,在本發(fā)明實(shí)施例中,覆蓋率分析可以根據(jù)代碼所用編程語言的不同而采用相應(yīng)的覆蓋率統(tǒng)計(jì)工具來完成,在此不用于限定本發(fā)明。
[0023]在步驟S102中,當(dāng)有代碼行發(fā)生變更時(shí),提取該代碼行關(guān)聯(lián)的測(cè)試用例。
[0024]在本實(shí)施例中,可以通過例如diff命令對(duì)新舊兩個(gè)版本的代碼進(jìn)行比較,得到新版本代碼的變更信息,當(dāng)發(fā)現(xiàn)有代碼行發(fā)生變更,包括新增、刪除或者修改時(shí),則提取發(fā)生變更的代碼行所關(guān)聯(lián)的測(cè)試用例,用于進(jìn)行回歸測(cè)試。
[0025]例如,當(dāng)變更信息指示有代碼行被刪除時(shí),則提取被刪除的代碼行所關(guān)聯(lián)的測(cè)試用例進(jìn)行回歸測(cè)試;當(dāng)變更信息指示有代碼行被修改時(shí),則也提取被修改的代碼行所關(guān)聯(lián)的測(cè)試用例進(jìn)行回歸測(cè)試。
[0026]因此,在本實(shí)施例中,通過對(duì)測(cè)試用例進(jìn)行篩選,在回歸測(cè)試中只需要測(cè)試與發(fā)生變更的代碼行相關(guān)聯(lián)的測(cè)試用例即完全可以達(dá)到預(yù)期的測(cè)試目的,在保證測(cè)試用例有效性的iu提下大大提聞了測(cè)試效率。
[0027]作為本發(fā)明的一個(gè)實(shí)施例,由于當(dāng)代碼發(fā)生新增代碼行或者修改代碼行的變更情況時(shí),可能出現(xiàn)發(fā)生變更的代碼行還有具備與其關(guān)聯(lián)的測(cè)試用例的情況,此時(shí),如圖2所示,本發(fā)明實(shí)施例還包括:
[0028]步驟S103,如果沒有測(cè)試用例與發(fā)生變更的代碼行關(guān)聯(lián),反饋該代碼行的信息。
[0029]在本實(shí)施例中,代碼行的信息包括該代碼行所在源文件的源文件名及該代碼行的行號(hào),通過反饋該代碼行的上述信息,使得測(cè)試人員能夠根據(jù)上述信息新增與發(fā)生變更的代碼行相關(guān)聯(lián)的測(cè)試用例,有效避免了測(cè)試中對(duì)功能邏輯的遺漏。
[0030]例如,對(duì)于新增的代碼行,基線版本用例庫中的測(cè)試用例均無法覆蓋該代碼行,則需要向測(cè)試人員反饋新增的代碼行所在源文件的文件名及代碼行的行號(hào),以提示測(cè)試人員新增相應(yīng)的測(cè)試用例以進(jìn)行回歸測(cè)試。
[0031]在本發(fā)明實(shí)施例中,進(jìn)一步地,在步驟SlOl之后步驟S102之前,還可以通過對(duì)所有的測(cè)試用例進(jìn)行等價(jià)類劃分,進(jìn)一步地精簡(jiǎn)需要進(jìn)行測(cè)試的測(cè)試用例,以提高測(cè)試效率。具體地,如圖3所示:
[0032]在步驟S302中,對(duì)所有測(cè)試用例進(jìn)行等價(jià)類劃分,每個(gè)等價(jià)類中的測(cè)試用例覆蓋的代碼行相同。
[0033]在本實(shí)施例中,根據(jù)步驟S301中獲取到的每個(gè)代碼行與測(cè)試用例的關(guān)聯(lián)關(guān)系,能夠獲取到每個(gè)測(cè)試用例所覆蓋的代碼行。具體地,每個(gè)測(cè)試用例所覆蓋的代碼行可以通過將步驟SlOl之前獲取到的每個(gè)源文件的代碼行到基線測(cè)試用例庫的映射關(guān)系進(jìn)行反映射獲取。
[0034]在本實(shí)施例中,如果兩個(gè)測(cè)試用例在執(zhí)行過程中流經(jīng)完全相同的代碼行,即認(rèn)為這兩個(gè)測(cè)試用例等價(jià),具有完全相同的測(cè)試效果,可以相互取代。因此,將這兩個(gè)測(cè)試用例合入一個(gè)等價(jià)類中,從而針對(duì)基線版本用例庫中的測(cè)試用例,能夠劃分成若干等價(jià)類。
[0035]相應(yīng)地,在步驟S303提取出變更的代碼行關(guān)聯(lián)的測(cè)試用例之后,還包括:
[0036]在步驟S304中,獲取提取出的測(cè)試用例所處的等價(jià)類。
[0037]在步驟S305中,在獲取到的每個(gè)等價(jià)類中提取一個(gè)測(cè)試用例。
[0038]在本發(fā)明實(shí)施例中,針對(duì)步驟S303提取出的變更的代碼行所關(guān)聯(lián)的測(cè)試用例,能夠進(jìn)一步地對(duì)提取出的測(cè)試用例進(jìn)行篩選,對(duì)于處于同一等價(jià)類中的測(cè)試用例,由于其覆蓋的代碼行完全相同,因此,只需要提取出該等價(jià)類中的一個(gè)測(cè)試用例,即可以達(dá)到預(yù)期的測(cè)試效果,由此大大地縮短了測(cè)試時(shí)間,提高了測(cè)試的效率。
[0039]圖4示出了本發(fā)明實(shí)施例提供的測(cè)試用例篩選裝置的結(jié)構(gòu)框圖,該裝置可以位于計(jì)算機(jī)等軟件測(cè)試裝置中,用于運(yùn)行本發(fā)明圖1至圖3實(shí)施例所述的測(cè)試用例篩選方法。為了便于說明,僅示出了與本實(shí)施例相關(guān)的部分。
[0040]參照?qǐng)D4,該裝置包括:
[0041]第一獲取單元41,分別獲取每個(gè)代碼行關(guān)聯(lián)的測(cè)試用例,該測(cè)試用例覆蓋與其關(guān)聯(lián)的所述代碼行。
[0042]第一提取單元42,當(dāng)有代碼行發(fā)生變更時(shí),提取發(fā)生變更的代碼行關(guān)聯(lián)的測(cè)試用例。
[0043]可選地,還包括:
[0044]反饋單元,如果沒有測(cè)試用例與發(fā)生變更的代碼行關(guān)聯(lián),反饋代碼行的信息。
[0045]可選地,代碼行的信息包括代碼行所處源文件的文件名和代碼行的行號(hào)。
[0046]可選地,上述變更包括刪除、新增或者修改。
[0047]可選地,如圖5所示,該裝置還包括:
[0048]等價(jià)類劃分單元43,對(duì)所有測(cè)試用例進(jìn)行等價(jià)類劃分,每個(gè)等價(jià)類中的測(cè)試用例覆蓋的代碼行相同;相應(yīng)地,
[0049]該裝置還包括:
[0050]第二獲取單元44,獲取提取出的測(cè)試用例所處的等價(jià)類;
[0051]第二提取單元45,在獲取到的每個(gè)等價(jià)類中提取一個(gè)測(cè)試用例。
[0052]在本發(fā)明實(shí)施例中,通過獲取每個(gè)代碼行與測(cè)試用例之間的關(guān)聯(lián)關(guān)系,從而在代碼發(fā)生變更時(shí),能夠快速、有效地篩選出代碼變更所影響的測(cè)試用例,有針對(duì)性地進(jìn)行回歸測(cè)試,并且避免了大量冗余測(cè)試用例的執(zhí)行,節(jié)省了測(cè)試時(shí)間。[0053]以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種測(cè)試用例篩選方法,其特征在于,包括: 分別獲取每個(gè)代碼行關(guān)聯(lián)的測(cè)試用例,所述測(cè)試用例覆蓋與其關(guān)聯(lián)的所述代碼行; 當(dāng)有所述代碼行發(fā)生變更時(shí),提取所述代碼行關(guān)聯(lián)的所述測(cè)試用例。
2.如權(quán)利要求1所述的方法,其特征在于,還包括: 如果沒有所述測(cè)試用例與發(fā)生變更的所述代碼行關(guān)聯(lián),反饋所述代碼行的信息。
3.如權(quán)利要求2所述的方法,其特征在于,所述代碼行的信息包括所述代碼行所處源文件的文件名和所述代碼行的行號(hào)。
4.如權(quán)利要求1~3任一項(xiàng)所述的方法,其特征在于,所述變更包括刪除、新增或者修改。
5.如權(quán)利要求1所述的方法,其特征在于,在所述代碼行發(fā)生變更之前,還包括: 對(duì)所有所述測(cè)試用例進(jìn)行等價(jià)類劃分,每個(gè)等價(jià)類中的測(cè)試用例覆蓋的代碼行相同;相應(yīng)地, 所述方法還包括: 獲取提取出的所述測(cè)試用例所處的所述等價(jià)類; 在獲取到的每個(gè)所述等價(jià)類中提取一個(gè)所述測(cè)試用例。
6.一種測(cè)試用例篩選裝置,其特征在于,包括: 第一獲取單元,用于分別獲取每個(gè)代碼行關(guān)聯(lián)的測(cè)試用例,所述測(cè)試用例覆蓋與其關(guān)聯(lián)的所述代碼行; 第一提取單元,用于當(dāng)有所述代碼行發(fā)生變更時(shí),提取所述代碼行關(guān)聯(lián)的所述測(cè)試用例。
7.如權(quán)利要求6所述的裝置,其特征在于,還包括: 反饋單元,用于如果沒有所述測(cè)試用例與發(fā)生變更的所述代碼行關(guān)聯(lián),反饋所述代碼行的信息。
8.如權(quán)利要求7所述的裝置,其特征在于,所述代碼行的信息包括所述代碼行所處源文件的文件名和所述代碼行的行號(hào)。
9.如權(quán)利要求61任一項(xiàng)所述的裝置,其特征在于,所述變更包括刪除、新增或者修改。
10.如權(quán)利要求6所述的裝置,其特征在于,還包括: 等價(jià)類劃分單元,用于對(duì)所有所述測(cè)試用例進(jìn)行等價(jià)類劃分,每個(gè)等價(jià)類中的測(cè)試用例覆蓋的代碼行相同;相應(yīng)地, 所述裝置還包括: 第二獲取單元,用于獲取提取出的所述測(cè)試用例所處的所述等價(jià)類; 第二提取單元,用于在獲取到的每個(gè)所述等價(jià)類中提取一個(gè)所述測(cè)試用例。
【文檔編號(hào)】G06F11/36GK103577311SQ201210261405
【公開日】2014年2月12日 申請(qǐng)日期:2012年7月26日 優(yōu)先權(quán)日:2012年7月26日
【發(fā)明者】潘曉宇, 陳鵬, 曹向博, 鮑海燕, 姜琳, 鄧月堂, 樊華 申請(qǐng)人:深圳市世紀(jì)光速信息技術(shù)有限公司