亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

測試方法及設(shè)備的制作方法

文檔序號:6493451閱讀:156來源:國知局
測試方法及設(shè)備的制作方法
【專利摘要】本發(fā)明實施例提供一種測試方法及設(shè)備。本發(fā)明實施例通過根據(jù)預(yù)先設(shè)置的蛻變關(guān)系,生成與可用的測試用例對應(yīng)的蛻變的測試用例,進而利用所述可用的測試用例運行所述待測程序,以生成第一測試結(jié)果,以及利用所述蛻變的測試用例運行所述待測程序,以生成第二測試結(jié)果,使得能夠根據(jù)所述第一測試結(jié)果、所述第二測試結(jié)果和所述蛻變關(guān)系,對所述待測程序進行驗證,以確定所述待測程序是否正確,無需操作人員參與測試過程,操作簡單,且正確率高,從而提高了測試操作的效率和可靠性。
【專利說明】測試方法及設(shè)備
【【技術(shù)領(lǐng)域】】
[0001]本發(fā)明涉及測試技術(shù),尤其涉及一種測試方法及設(shè)備。
【【背景技術(shù)】】
[0002]在軟件測試過程中,諸多中間環(huán)節(jié)都需要操作人員進行手動控制。例如,在測試用例的設(shè)計階段,操作人員可以根據(jù)具體的測試需求,設(shè)計測試用例;或者再例如,在測試結(jié)果的預(yù)期階段,操作人員可以利用設(shè)計的測試用例,運行待測程序,計算出預(yù)期的測試結(jié)
果O
[0003]然而,現(xiàn)有的測試操作的操作復(fù)雜,且容易出錯,從而導(dǎo)致了測試操作的效率和可靠性的降低。

【發(fā)明內(nèi)容】

[0004]本發(fā)明的多個方面提供一種測試方法及設(shè)備,用以提高測試操作的效率和可靠性。
[0005]本發(fā)明的一方面,提供一種測試方法,包括:
[0006]利用自適應(yīng)隨機測試算法,生成至少兩個測試用例;
[0007]利用貪婪算法,對所述至少兩個測試用例進行搜索,以選擇所述至少兩個測試用例中可用的測試用例;
[0008]根據(jù)預(yù)先設(shè)置的蛻變關(guān)系,生成與所述可用的測試用例對應(yīng)的蛻變的測試用例,所述蛻變關(guān)系用于指示測試用例的變化與利用所述變化之前和所述變化之后的測試用例對待測程序進行測試所生成的測試結(jié)果的變化的對應(yīng)關(guān)系;
[0009]利用所述可用的測試用例運行所述待測程序,以生成第一測試結(jié)果;
[0010]利用所述蛻變的測試用例運行所述待測程序,以生成第二測試結(jié)果;
[0011]根據(jù)所述第一測試結(jié)果、所述第二測試結(jié)果和所述蛻變關(guān)系,對所述待測程序進行驗證。
[0012]如上所述的方面和任一可能的實現(xiàn)方式,進一步提供一種實現(xiàn)方式,所述利用自適應(yīng)隨機測試算法,生成至少兩個測試用例,包括:
[0013]利用自適應(yīng)隨機測試算法,以及根據(jù)預(yù)先設(shè)置的覆蓋閾值,生成至少兩個測試用例,所述至少兩個測試用例對所述待 測程序的覆蓋情況大于或等于所述覆蓋閾值。
[0014]如上所述的方面和任一可能的實現(xiàn)方式,進一步提供一種實現(xiàn)方式,所述利用貪婪算法,對所述至少兩個測試用例進行搜索,包括:
[0015]依次從所述至少兩個測試用例中除了之前選擇的N-1個可用的測試用例之外其它的測試用例中,選擇第N個可用的測試用例,直到所述N個可用的測試用例的覆蓋情況大于或等于預(yù)先設(shè)置的覆蓋閾值,所述N為大于或等于I的整數(shù);其中,
[0016]所述待測程序包含之前選擇的N-1個可用的測試用例已經(jīng)覆蓋的第一程序和之前選擇的N-1個可用的測試用例沒有覆蓋的第二程序;[0017]所述第N個可用的測試用例對第二程序的覆蓋情況大于所述至少兩個測試用例中除了之前選擇的N-1個可用的測試用例之外的其它測試用例對第二程序的覆蓋情況。
[0018]本發(fā)明的另一方面,提供一種測試設(shè)備,包括:
[0019]生成單元,用于利用自適應(yīng)隨機測試算法,生成至少兩個測試用例;
[0020]搜索單元,用于利用貪婪算法,對所述至少兩個測試用例進行搜索,以選擇所述至少兩個測試用例中可用的測試用例;
[0021]所述生成單元,還用于根據(jù)預(yù)先設(shè)置的蛻變關(guān)系,生成與所述可用的測試用例對應(yīng)的蛻變的測試用例,所述蛻變關(guān)系用于指示測試用例的變化與利用所述變化之前和所述變化之后的測試用例對待測程序進行測試所生成的測試結(jié)果的變化的對應(yīng)關(guān)系;
[0022]測試單元,用于利用所述可用的測試用例運行所述待測程序,以生成第一測試結(jié)果;以及利用所述蛻變的測試用例運行所述待測程序,以生成第二測試結(jié)果;
[0023]驗證單元,用于根據(jù)所述第一測試結(jié)果、所述第二測試結(jié)果和所述蛻變關(guān)系,對所述待測程序進行驗證。
[0024]如上所述的方面和任一可能的實現(xiàn)方式,進一步提供一種實現(xiàn)方式,所述生成單元,具體用于
[0025]利用自適應(yīng)隨機測試算法,以及根據(jù)預(yù)先設(shè)置的覆蓋閾值,生成至少兩個測試用例,所述至少兩個測試用例對所述待測程序的覆蓋情況大于或等于所述覆蓋閾值。
[0026]如上所述的方面和任一可能的實現(xiàn)方式,進一步提供一種實現(xiàn)方式,所述搜索單元,具體用于
[0027]依次從所述至少兩個測試用例中除了之前選擇的N-1個可用的測試用例之外其它的測試用例中,選擇第N個可用的測試用例,直到所述N個可用的測試用例的覆蓋情況大于或等于預(yù)先設(shè)置的覆蓋閾值,所述N為大于或等于I的整數(shù);其中,
[0028]所述待測程序包含之前選擇的N-1個可用的測試用例已經(jīng)覆蓋的第一程序和之前選擇的N-1個可用的測試用例沒有覆蓋的第二程序;
[0029]所述第N個可用的測試用例對第二程序的覆蓋情況大于所述至少兩個測試用例中除了之前選擇的N-1個可用的測試用例之外的其它測試用例對第二程序的覆蓋情況。
[0030]由上述技術(shù)方案可知,本發(fā)明實施例通過根據(jù)預(yù)先設(shè)置的蛻變關(guān)系,生成與可用的測試用例對應(yīng)的蛻變的測試用例,進而利用所述可用的測試用例運行所述待測程序,以生成第一測試結(jié)果,以及利用所述蛻變的測試用例運行所述待測程序,以生成第二測試結(jié)果,使得能夠根據(jù)所述第一測試結(jié)果、所述第二測試結(jié)果和所述蛻變關(guān)系,對所述待測程序進行驗證,以確定所述待測程序是否正確,無需操作人員參與測試過程,操作簡單,且正確率高,從而提高了測試操作的效率和可靠性。
【【專利附圖】

【附圖說明】】
[0031]為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0032]圖1為本發(fā)明一實施例提供的測試方法的流程示意圖;[0033]圖2為本發(fā)明另一實施例提供的測試設(shè)備的結(jié)構(gòu)示意圖。
【【具體實施方式】】
[0034]為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0035]另外,本文中術(shù)語“和/或”,僅僅是一種描述關(guān)聯(lián)對象的關(guān)聯(lián)關(guān)系,表示可以存在三種關(guān)系,例如,A和/或B,可以表示:單獨存在A,同時存在A和B,單獨存在B這三種情況。另外,本文中字符“/”,一般表示前后關(guān)聯(lián)對象是一種“或”的關(guān)系。
[0036]圖1為本發(fā)明一實施例提供的測試方法的流程示意圖,如圖1所示。
[0037]101、利用自適應(yīng)隨機測試(Adaptive Random Testing, ART)算法,生成至少兩個測試用例。
[0038]102、利用貪婪(Greedy)算法,對所述至少兩個測試用例進行搜索,以選擇所述至少兩個測試用例中可用的測試用例。
[0039]103、根據(jù)預(yù)先設(shè)置的蛻變關(guān)系,生成與所述可用的測試用例對應(yīng)的蛻變的測試用例,所述蛻變關(guān)系用于指示測試用例的變化與利用所述變化之前和所述變化之后的測試用例對待測程序進行測試所生成的測試結(jié)果的變化的對應(yīng)關(guān)系。
[0040]104、利用所述可用的測試用例運行所述待測程序,以生成第一測試結(jié)果。
[0041]105、利用所述蛻變的測試用例運行所述待測程序,以生成第二測試結(jié)果。
[0042]106、根據(jù)所述第一測試結(jié)果、所述第二測試結(jié)果和所述蛻變關(guān)系,對所述待測程序進行驗證。
[0043]其中,104與105的執(zhí)行可以沒有固定的順序,本實施例對此不進行限定。
[0044]這樣,通過根據(jù)預(yù)先設(shè)置的蛻變關(guān)系,生成與可用的測試用例對應(yīng)的蛻變的測試用例,進而利用所述可用的測試用例運行所述待測程序,以生成第一測試結(jié)果,以及利用所述蛻變的測試用例運行所述待測程序,以生成第二測試結(jié)果,使得能夠根據(jù)所述第一測試結(jié)果、所述第二測試結(jié)果和所述蛻變關(guān)系,對所述待測程序進行驗證,以確定所述待測程序是否正確,無需操作人員參與測試過程,操作簡單,且正確率高,從而提高了測試操作的效率和可靠性。
[0045]可選地,在本實施例的一個可能的實現(xiàn)方式中,通過執(zhí)行101,能夠自動化的生成
具有一定差異化的測試用例。
[0046]具體地,首先,根據(jù)預(yù)先輸入的輸入數(shù)據(jù)格式和數(shù)據(jù)生成規(guī)則,隨機生成第I個測試用例Tl,并記錄Tl對待測程序的覆蓋情況。
[0047]然后,再隨機生成η (η為大于或等于2的整數(shù))個備選的測試用例,并,并記錄它們對待測程序的覆蓋情況,以及,計算η各備選的測試用例與Tl之間的距離,選擇距離最大的備選的測試用例作為第2個測試用例Τ2。其中,所述距離可以理解為備選的測試用例與測試用例之間的差異性的量化標準。
[0048]計算這個距離的方法可以有很多種。例如,將備選的測試用例對待測程序覆蓋情況與測試用例對待測程序的覆蓋情況的差值取絕對值,然后再相加。假設(shè)所述待測程序包含3行,測試用例Tl對待測程序的覆蓋情況是101,備選的測試用例tl對待測程序的覆蓋情況是001,備選的測試用例t2對待測程序的覆蓋情況是011,其中,I表示覆蓋,O表示未覆蓋。那么,tl與Tl之間的距離為1-1 | + |0-0| + | 1-11=1,t2與Tl之間的距離為
ο-1 H 1-ο H1-11=2。
[0049]或者再例如,將備選的測試用例對待測程序的覆蓋情況與測試用例對待測程序的覆蓋情況的并集除以備選的測試用例對待測程序的覆蓋情況與測試用例對待測程序的覆蓋情況的交集。假設(shè)所述待測程序包含3行,測試用例Tl對待測程序的覆蓋情況是101即覆蓋2行,備選的測試用例tl對待測程序的覆蓋情況是001即覆蓋I行,備選的測試用例t2對待測程序的覆蓋情況是011即覆蓋2行,其中,I表不覆蓋,O表不未覆蓋。那么,tl與Tl之間的距離為2/1=2,t2與Tl之間的距離為3/1=3。
[0050]等等,還有很多其他方法可以用于計算所述距離,本實施例對此不進行限定。
[0051]接著,再隨機生成η (η為大于或等于2的整數(shù))個備選的測試用例,并,并記錄它們對待測程序的覆蓋情況,以及,計算η各備選的測試用例與Tl、Τ2之間的距離,選擇最小距離最大的備選的測試用例作為第3個測試用例Τ3。其中,最小距離為備選的測試用例與Tl之間的距離,與,最小距離為備選的測試用例與Τ2之間的距離中較小的距離。
[0052]以此類推,循環(huán)執(zhí)行上述操作,以生成M (Μ為大于或等于2的整數(shù))個測試用例,直到該M個測試用例對所述待測程序的覆蓋情況大于或等于預(yù)先設(shè)置的覆蓋閾值,或者M為達到預(yù)先設(shè)置的數(shù)目閾值,為止。
[0053]可選地,在本實施例的一個可能的實現(xiàn)方式中,在102中,所使用的所述貪婪算法的選擇策略是依次選擇出對當前沒有被覆蓋的待測程序的覆蓋情況最大的測試用例,作為可行的測試用例。具體地,具體可以依次從所述至少兩個測試用例中除了之前選擇的N-1個可用的測試用例之外其它的測試用例中,選擇第N個可用的測試用例,直到所述N個可用的測試用例的覆蓋情況大于或等于預(yù)先設(shè)置的覆蓋閾值,所述N為大于或等于I的整數(shù);其中,
[0054]所述待測程序包含之前選擇的N-1個可用的測試用例已經(jīng)覆蓋的第一程序和之前選擇的N-1個可用的測試用例沒有覆蓋的第二程序;
[0055]所述第N個可用的測試用例對第二程序的覆蓋情況大于所述至少兩個測試用例中除了之前選擇的N-1個可用的測試用例之外的其它測試用例對第二程序的覆蓋情況。
[0056]具體地,可以根據(jù)預(yù)設(shè)策略,反復(fù)執(zhí)行,例如,直到所述N個可用的測試用例的覆蓋情況大于或等于預(yù)先設(shè)置的覆蓋閾值指定此處,例如,I次或2次。
[0057]例如,假設(shè)待測程序即待測軟件系統(tǒng)(System Under Test, SUT)包括以下11行,即
[0058]01:if a>b:
[0059]02:if a>b+l:
[0060]03:do something
[0061]04:else:
[0062]05:do something
[0063]06:elif a=b:
[0064]07:do something[0065]08:else a〈b:
[0066]09:do something
[0067]10:if a==b+2:
[0068]11:do something
[0069]通過執(zhí)行101,生成以下測試用例:
[0070]Tl:a=3, b=l ;
[0071]T2:a=3, b=2 ;
[0072]T3:a=3, b=3 ;
[0073]T4:a=4, b=4 ;
[0074]T5:a=3, b=4。
[0075]從所述測試用例可以看到,Tl覆蓋了 1、2、3、10和11行,T2覆蓋了 1、4和5行,T3覆蓋了 6和7行,T4覆蓋了 6和7行,T5覆蓋了 8和9行。
[0076]首先,選擇覆蓋率最高的Tl,這樣還剩下4、5、6、7、8和9行沒有被覆蓋。然后,再搜索覆蓋這些行的覆蓋率最高的,發(fā)現(xiàn)T2、T3、T4和T5都是2??梢圆捎媚撤N策略,例如,順序選擇一個T2,還剩下6、7、8和9行沒有被覆蓋。同理選擇T3,剩下8和9沒有被覆蓋,選擇T5,之后所有行均被覆蓋,則剩下T4則被淘汰或放在下輪中再被選擇。
[0077]本實施例中,通過根據(jù)預(yù)先設(shè)置的蛻變關(guān)系,生成與可用的測試用例對應(yīng)的蛻變的測試用例,進而利用所述可用的測試用例運行所述待測程序,以生成第一測試結(jié)果,以及利用所述蛻變的測試用例運行所述待測程序,以生成第二測試結(jié)果,使得能夠根據(jù)所述第一測試結(jié)果、所述第二測試結(jié)果和所述蛻變關(guān)系,對所述待測程序進行驗證,以確定所述待測程序是否正確,無需操作人員參與測試過程,操作簡單,且正確率高,從而提高了測試操作的效率和可靠性。
[0078]另外,采用本實施例提供的技術(shù)方案,由于無需操作人員參與測試過程,還可以進一步減少人工成本,大大提高測試穩(wěn)定性,減少測試風(fēng)險。
[0079]另外,采用本實施例提供的技術(shù)方案,由于采用了蛻變關(guān)系,對所述待測程序進行驗證,使得無需關(guān)注待測程序的內(nèi)部實現(xiàn)流程,只需要關(guān)注可用的測試用例與蛻變的測試用例的變化、以及各自對應(yīng)的測試結(jié)果的變化,是否滿足所述蛻變關(guān)系即可,從而節(jié)省了驗證成本,尤其對于復(fù)雜的待測程序效果尤為明顯。
[0080]需要說明的是,對于前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動作順序的限制,因為依據(jù)本發(fā)明,某些步驟可以采用其他順序或者同時進行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作和模塊并不一定是本發(fā)明所必須的。
[0081]在上述實施例中,對各個實施例的描述都各有側(cè)重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關(guān)描述。
[0082]圖2為本發(fā)明另一實施例提供的測試設(shè)備的結(jié)構(gòu)示意圖,如圖2所示。本實施例的測試設(shè)備可以包括生成單元21、搜索單元22、測試單元23和驗證單元24。其中,生成單元21,用于利用自適應(yīng)隨機測試算法,生成至少兩個測試用例;搜索單元22,用于利用貪婪算法,對所述至少兩個測試用例進行搜索,以選擇所述至少兩個測試用例中可用的測試用例;所述生成單元21,還用于根據(jù)預(yù)先設(shè)置的蛻變關(guān)系,生成與所述可用的測試用例對應(yīng)的蛻變的測試用例,所述蛻變關(guān)系用于指示測試用例的變化與利用所述變化之前和所述變化之后的測試用例對待測程序進行測試所生成的測試結(jié)果的變化的對應(yīng)關(guān)系;測試單元23,用于利用所述可用的測試用例運行所述待測程序,以生成第一測試結(jié)果;以及利用所述蛻變的測試用例運行所述待測程序,以生成第二測試結(jié)果;驗證單元24,用于根據(jù)所述第一測試結(jié)果、所述第二測試結(jié)果和所述蛻變關(guān)系,對所述待測程序進行驗證。
[0083]這樣,通過生成單元根據(jù)預(yù)先設(shè)置的蛻變關(guān)系,生成與可用的測試用例對應(yīng)的蛻變的測試用例,進而由測試單元利用所述可用的測試用例運行所述待測程序,以生成第一測試結(jié)果,以及利用所述蛻變的測試用例運行所述待測程序,以生成第二測試結(jié)果,使得驗證單元能夠根據(jù)所述第一測試結(jié)果、所述第二測試結(jié)果和所述蛻變關(guān)系,對所述待測程序進行驗證,以確定所述待測程序是否正確,無需操作人員參與測試過程,操作簡單,且正確率高,從而提高了測試操作的效率和可靠性。
[0084]可選地,在本實施例的一個可能的實現(xiàn)方式中,生成單元21通過執(zhí)行對應(yīng)的操作,能夠自動化的生成具有一定差異化的測試用例。
[0085]具體地,首先,所述生成單元21根據(jù)預(yù)先輸入的輸入數(shù)據(jù)格式和數(shù)據(jù)生成規(guī)則,隨機生成第I個測試用例Tl,并記錄Tl對待測程序的覆蓋情況。
[0086]然后,所述生成單元21再隨機生成η (η為大于或等于2的整數(shù))個備選的測試用例,并,并記錄它們對待測程序的覆蓋情況,以及,計算η各備選的測試用例與Tl之間的距離,選擇距離最大的備選的測試用例作為第2個測試用例Τ2。其中,所述距離可以理解為備選的測試用例與測試用例之間的差異性的量化標準。
[0087]所述生成單元21計算這個距離的方法可以有很多種。
[0088]例如,所述生成單元21將備選的測試用例對待測程序覆蓋情況與測試用例對待測程序的覆蓋情況的差值取絕對值,然后再相加。假設(shè)所述待測程序包含3行,測試用例Tl對待測程序的覆蓋情況是101,備選的測試用例tl對待測程序的覆蓋情況是001,備選的測試用例t2對待測程序的覆蓋情況是011,其中,I表示覆蓋,O表示未覆蓋。那么,tl與Tl之間的距離為 10-11 +10-01 +11-11 =1,t2 與 TI 之間的距離為 I ο-ι I +11-O I +11-11 =2。
[0089]或者再例如,所述生成單元21將備選的測試用例對待測程序的覆蓋情況與測試用例對待測程序的覆蓋情況的并集除以備選的測試用例對待測程序的覆蓋情況與測試用例對待測程序的覆蓋情況的交集。假設(shè)所述待測程序包含3行,測試用例Tl對待測程序的覆蓋情況是101即覆蓋2行,備選的測試用例tl對待測程序的覆蓋情況是001即覆蓋I行,備選的測試用例t2對待測程序的覆蓋情況是011即覆蓋2行,其中,I表示覆蓋,O表示未覆蓋。那么,tl與Tl之間的距離為2/1=2,t2與Tl之間的距離為3/1=3。
[0090]等等,所述生成單元21還有很多其他方法可以用于計算所述距離,本實施例對此不進行限定。
[0091]接著,所述生成單元21再隨機生成η (η為大于或等于2的整數(shù))個備選的測試用例,并,并記錄它們對待測程序的覆蓋情況,以及,計算η各備選的測試用例與Τ1、Τ2之間的距離,選擇最小距離最大的備選的測試用例作為第3個測試用例Τ3。其中,最小距離為備選的測試用例與Tl之間的距離,與,最小距離為備選的測試用例與Τ2之間的距離中較小的距離。[0092]以此類推,所述生成單元21循環(huán)執(zhí)行上述操作,以生成M (M為大于或等于2的整數(shù))個測試用例,直到該M個測試用例對所述待測程序的覆蓋情況大于或等于預(yù)先設(shè)置的覆蓋閾值,或者M為達到預(yù)先設(shè)置的數(shù)目閾值,為止。
[0093]也就是說,所述生成單元21,具體可以利用自適應(yīng)隨機測試算法,以及根據(jù)預(yù)先設(shè)置的覆蓋閾值,生成至少兩個測試用例,所述至少兩個測試用例對所述待測程序的覆蓋情況大于或等于所述覆蓋閾值。
[0094]可選地,在本實施例的一個可能的實現(xiàn)方式中,所述搜索單元22所使用的所述貪婪算法的選擇策略是依次選擇出對當前沒有被覆蓋的待測程序的覆蓋情況最大的測試用例,作為可行的測試用例。具體地,所述搜索單元22,具體可以用于依次從所述至少兩個測試用例中除了之前選擇的N-1個可用的測試用例之外其它的測試用例中,選擇第N個可用的測試用例,直到所述N個可用的測試用例的覆蓋情況大于或等于預(yù)先設(shè)置的覆蓋閾值,所述N為大于或等于I的整數(shù);其中,
[0095]所述待測程序包含之前選擇的N-1個可用的測試用例已經(jīng)覆蓋的第一程序和之前選擇的N-1個可用的測試用例沒有覆蓋的第二程序;
[0096]所述第N個可用的測試用例對第二程序的覆蓋情況大于所述至少兩個測試用例中除了之前選擇的N-1個可用的測試用例之外的其它測試用例對第二程序的覆蓋情況。
[0097]具體地,所述搜索單元22可以根據(jù)預(yù)設(shè)策略,反復(fù)執(zhí)行,例如,直到所述N個可用的測試用例的覆蓋情況大于或等于預(yù)先設(shè)置的覆蓋閾值指定此處,例如,I次或2次。
[0098]例如,假設(shè)待測程序即待測軟件系統(tǒng)(System Under Test, SUT)包括以下11行,即
[0099]01:if a>b:
[0100]02:if a>b+l:
[0101]03:do something
[0102]04:else:
[0103]05:do something
[0104]06:elifa=b:
[0105]07:do something
[0106]08:else a〈b:
[0107]09:do something
[0108]10:if a==b+2:
[0109]11:do something
[0110]通過執(zhí)行101,生成以下測試用例:
[0111]Tl:a=3,b=l ;
[0112]T2:a=3,b=2 ;
[0113]T3:a=3,b=3 ;
[0114]T4:a=4,b=4 ;
[0115]T5:a=3,b=4。
[0116]從所述測試用例可以看到,Tl覆蓋了 1、2、3、10和11行,T2覆蓋了 1、4和5行,T3覆蓋了 6和7行,T4覆蓋了 6和7行,T5覆蓋了 8和9行。[0117]首先,所述搜索單元22選擇覆蓋率最高的Tl,這樣還剩下4、5、6、7、8和9行沒有被覆蓋。然后,所述搜索單元22再搜索覆蓋這些行的覆蓋率最高的,發(fā)現(xiàn)T2、T3、T4和T5都是2。所述搜索單元22可以采用某種策略,例如,順序選擇一個T2,還剩下6、7、8和9行沒有被覆蓋。同理所述搜索單元22選擇T3,剩下8和9沒有被覆蓋,所述搜索單元22選擇T5,之后所有行均被覆蓋,則剩下T4則被淘汰或放在下輪中再被選擇。
[0118]本實施例中,通過生成單元根據(jù)預(yù)先設(shè)置的蛻變關(guān)系,生成與可用的測試用例對應(yīng)的蛻變的測試用例,進而由測試單元利用所述可用的測試用例運行所述待測程序,以生成第一測試結(jié)果,以及利用所述蛻變的測試用例運行所述待測程序,以生成第二測試結(jié)果,使得驗證單元能夠根據(jù)所述第一測試結(jié)果、所述第二測試結(jié)果和所述蛻變關(guān)系,對所述待測程序進行驗證,以確定所述待測程序是否正確,無需操作人員參與測試過程,操作簡單,且正確率高,從而提高了測試操作的效率和可靠性。
[0119]另外,采用本實施例提供的技術(shù)方案,由于無需操作人員參與測試過程,還可以進一步減少人工成本,大大提高測試穩(wěn)定性,減少測試風(fēng)險。
[0120]另外,采用本實施例提供的技術(shù)方案,由于驗證單元采用了蛻變關(guān)系,對所述待測程序進行驗證,使得無需關(guān)注待測程序的內(nèi)部實現(xiàn)流程,只需要關(guān)注可用的測試用例與蛻變的測試用例的變化、以及各自對應(yīng)的測試結(jié)果的變化,是否滿足所述蛻變關(guān)系即可,從而節(jié)省了驗證成本,尤其對于復(fù)雜的待測程序效果尤為明顯。
[0121]所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統(tǒng),裝置和單元的具體工作過程,可以參考前述方法實施例中的對應(yīng)過程,在此不再贅述。
[0122]在本發(fā)明所提供的幾個實施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。
[0123]所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。
[0124]另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用硬件加軟件功能單元的形式實現(xiàn)。
[0125]上述以軟件功能單元的形式實現(xiàn)的集成的單元,可以存儲在一個計算機可讀取存儲介質(zhì)中。上述軟件功能單元存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)或處理器(processor)執(zhí)行本發(fā)明各個實施例所述方法的部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(Read-Only Memory, ROM)、隨機存取存儲器(Random Access Memory, RAM)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
[0126]最后應(yīng)說明的是:以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的精神和范圍。
【權(quán)利要求】
1.一種測試方法,其特征在于,包括: 利用自適應(yīng)隨機測試算法,生成至少兩個測試用例; 利用貪婪算法,對所述至少兩個測試用例進行搜索,以選擇所述至少兩個測試用例中可用的測試用例; 根據(jù)預(yù)先設(shè)置的蛻變關(guān)系,生成與所述可用的測試用例對應(yīng)的蛻變的測試用例,所述蛻變關(guān)系用于指示測試用例的變化與利用所述變化之前和所述變化之后的測試用例對待測程序進行測試所生成的測試結(jié)果的變化的對應(yīng)關(guān)系; 利用所述可用的測試用例運行所述待測程序,以生成第一測試結(jié)果; 利用所述蛻變的測試用例運行所述待測程序,以生成第二測試結(jié)果; 根據(jù)所述第一測試結(jié)果、所述第二測試結(jié)果和所述蛻變關(guān)系,對所述待測程序進行驗證。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述利用自適應(yīng)隨機測試算法,生成至少兩個測試用例,包括: 利用自適應(yīng)隨機測試算法,以及根據(jù)預(yù)先設(shè)置的覆蓋閾值,生成至少兩個測試用例,所述至少兩個測試用例對所述待測程序的覆蓋情況大于或等于所述覆蓋閾值。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述利用貪婪算法,對所述至少兩個測試用例進行搜索,包括: 依次從所述 至少兩個測試用例中除了之前選擇的N-1個可用的測試用例之外其它的測試用例中,選擇第N個可用的測試用例,直到所述N個可用的測試用例的覆蓋情況大于或等于預(yù)先設(shè)置的覆蓋閾值,所述N為大于或等于I的整數(shù);其中, 所述待測程序包含之前選擇的N-1個可用的測試用例已經(jīng)覆蓋的第一程序和之前選擇的N-1個可用的測試用例沒有覆蓋的第二程序; 所述第N個可用的測試用例對第二程序的覆蓋情況大于所述至少兩個測試用例中除了之前選擇的N-1個可用的測試用例之外的其它測試用例對第二程序的覆蓋情況。
4.一種測試設(shè)備,其特征在于,包括: 生成單元,用于利用自適應(yīng)隨機測試算法,生成至少兩個測試用例; 搜索單元,用于利用貪婪算法,對所述至少兩個測試用例進行搜索,以選擇所述至少兩個測試用例中可用的測試用例; 所述生成單元,還用于根據(jù)預(yù)先設(shè)置的蛻變關(guān)系,生成與所述可用的測試用例對應(yīng)的蛻變的測試用例,所述蛻變關(guān)系用于指示測試用例的變化與利用所述變化之前和所述變化之后的測試用例對待測程序進行測試所生成的測試結(jié)果的變化的對應(yīng)關(guān)系; 測試單元,用于利用所述可用的測試用例運行所述待測程序,以生成第一測試結(jié)果;以及利用所述蛻變的測試用例運行所述待測程序,以生成第二測試結(jié)果; 驗證單元,用于根據(jù)所述第一測試結(jié)果、所述第二測試結(jié)果和所述蛻變關(guān)系,對所述待測程序進行驗證。
5.根據(jù)權(quán)利要求4所述的設(shè)備,其特征在于,所述生成單元,具體用于 利用自適應(yīng)隨機測試算法,以及根據(jù)預(yù)先設(shè)置的覆蓋閾值,生成至少兩個測試用例,所述至少兩個測試用例對所述待測程序的覆蓋情況大于或等于所述覆蓋閾值。
6.根據(jù)權(quán)利要求4或5所述的設(shè)備,其特征在于,所述搜索單元,具體用于依次從所述至少兩個測試用例中除了之前選擇的N-1個可用的測試用例之外其它的測試用例中,選擇第N個可用的測試用例,直到所述N個可用的測試用例的覆蓋情況大于或等于預(yù)先設(shè)置的覆蓋閾值,所述N為大于或等于I的整數(shù);其中, 所述待測程序包含之前選擇的N-1個可用的測試用例已經(jīng)覆蓋的第一程序和之前選擇的N-1個可用的測試用例沒有覆蓋的第二程序; 所述第N個可用的測試用例對第二程序的覆蓋情況大于所述至少兩個測試用例中除了之前選擇的N-1個可用的 測試用例之外的其它測試用例對第二程序的覆蓋情況。
【文檔編號】G06F11/36GK103885876SQ201210564597
【公開日】2014年6月25日 申請日期:2012年12月21日 優(yōu)先權(quán)日:2012年12月21日
【發(fā)明者】劉陽 申請人:百度在線網(wǎng)絡(luò)技術(shù)(北京)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1