亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        面向持續(xù)集成測(cè)試優(yōu)化的強(qiáng)化學(xué)習(xí)獎(jiǎng)勵(lì)機(jī)制?

        2019-06-11 07:40:00何柳柳趙瑞蓮
        軟件學(xué)報(bào) 2019年5期
        關(guān)鍵詞:失效率測(cè)試用例排序

        何柳柳,楊 羊,李 征,趙瑞蓮

        (北京化工大學(xué) 信息科學(xué)與技術(shù)學(xué)院,北京 100029)

        持續(xù)集成(continuous integration,簡(jiǎn)稱CI)是一項(xiàng)旨在實(shí)時(shí)部署的軟件開(kāi)發(fā)實(shí)踐.持續(xù)集成包含版本控制、軟件配置管理、自動(dòng)構(gòu)建以及回歸測(cè)試等步驟.持續(xù)集成要求開(kāi)發(fā)人員必須頻繁地整合他們的工作,通常是至少每天一次有時(shí)甚至每天多次,同時(shí)要求將發(fā)布軟件保持在潛在可發(fā)布狀態(tài).每次集成會(huì)通過(guò)自動(dòng)構(gòu)建測(cè)試過(guò)程進(jìn)行驗(yàn)證,以盡快檢測(cè)集成錯(cuò)誤.與早期相隔較長(zhǎng)時(shí)間再集成的開(kāi)發(fā)模式相比,持續(xù)集成的集成頻率高,因此需要快速發(fā)現(xiàn)錯(cuò)誤并快速反饋,使開(kāi)發(fā)人員了解軟件集成的情況,并對(duì)不成功的集成進(jìn)行快速的修改,進(jìn)而提高軟件開(kāi)發(fā)的效率和質(zhì)量.但隨著軟件規(guī)模的增大,測(cè)試用例集包含的信息越來(lái)越多,現(xiàn)有的回歸測(cè)試優(yōu)化技術(shù)難以滿足持續(xù)集成對(duì)測(cè)試結(jié)果快速反饋的需求.

        為提高持續(xù)集成回歸測(cè)試的效率,需要將潛在發(fā)現(xiàn)錯(cuò)誤的測(cè)試用例優(yōu)先運(yùn)行.主要方法延續(xù)了傳統(tǒng)的測(cè)試優(yōu)化,包括測(cè)試用例約減、測(cè)試用例選擇和測(cè)試用例優(yōu)先排序.測(cè)試用例約減識(shí)別并消除測(cè)試用例集中過(guò)時(shí)或冗余的測(cè)試用例.測(cè)試用例選擇基于特定準(zhǔn)則選取測(cè)試用例集的子集,通常選取用于測(cè)試軟件更改部分的測(cè)試用例.而測(cè)試用例優(yōu)先排序旨在找出一個(gè)好的測(cè)試用例執(zhí)行序列,使?jié)撛诎l(fā)現(xiàn)錯(cuò)誤的測(cè)試用例能盡早地被執(zhí)行.在持續(xù)集成測(cè)試優(yōu)化中,測(cè)試用例優(yōu)先排序技術(shù)和測(cè)試用例選擇是主要研究并應(yīng)用的兩種技術(shù).

        近年來(lái),隨著機(jī)器學(xué)習(xí)方法的興起,測(cè)試用例優(yōu)化技術(shù)逐步和基于學(xué)習(xí)的方法相結(jié)合.Busjaeger等人[1]提出使用機(jī)器學(xué)習(xí)方法來(lái)集成多個(gè)現(xiàn)有測(cè)試用例優(yōu)化技術(shù),進(jìn)行測(cè)試用例集的優(yōu)先排序.強(qiáng)化學(xué)習(xí)是機(jī)器學(xué)習(xí)的一個(gè)重要分支,其重點(diǎn)在于學(xué)習(xí)者不依賴監(jiān)督機(jī)制或完整的環(huán)境模型,直接與其環(huán)境相互作用而學(xué)習(xí).強(qiáng)化學(xué)習(xí)強(qiáng)調(diào)基于環(huán)境反饋進(jìn)行決策以獲取最大利益.在軟件持續(xù)集成測(cè)試中,由于每次集成都需要針對(duì)集成的代碼對(duì)測(cè)試用例集合優(yōu)化,以生成適用于本次集成的測(cè)試用例子集,所以持續(xù)集成測(cè)試優(yōu)化可以定義成一個(gè)基于軟件代碼集成的測(cè)試用例執(zhí)行序列決策(序貫決策,sequential decision)問(wèn)題,即根據(jù)集成代碼的特點(diǎn),選擇要執(zhí)行的測(cè)試用例子集并確定其執(zhí)行次序.持續(xù)集成測(cè)試優(yōu)化是一個(gè)測(cè)試用例選擇和優(yōu)先排序相混合的優(yōu)化問(wèn)題,可以采用強(qiáng)化學(xué)習(xí)解決這個(gè)問(wèn)題.Spieker等人[2]在2017年提出一種基于強(qiáng)化學(xué)習(xí)的方法RETECS(reinforced test case selection),首次將強(qiáng)化學(xué)習(xí)應(yīng)用于軟件持續(xù)集成測(cè)試優(yōu)化中.

        強(qiáng)化學(xué)習(xí)通過(guò)獎(jiǎng)勵(lì)函數(shù)(reward function)來(lái)計(jì)算智能體選取某個(gè)動(dòng)作后的即時(shí)獎(jiǎng)勵(lì),是智能體與環(huán)境交互的直接反饋.好的獎(jiǎng)勵(lì)函數(shù)能更加準(zhǔn)確地反映兩者的交互情況,使智能體更加準(zhǔn)確地感知其環(huán)境狀態(tài),從而加快強(qiáng)化學(xué)習(xí)的收斂過(guò)程.Spieker等人提出的RETECS方法中,根據(jù)測(cè)試用例集的持續(xù)時(shí)間、鄰近一次執(zhí)行和失效信息來(lái)自動(dòng)學(xué)習(xí)測(cè)試用例的檢錯(cuò)能力,提高易于發(fā)現(xiàn)錯(cuò)誤的測(cè)試用例的執(zhí)行優(yōu)先級(jí).

        強(qiáng)化學(xué)習(xí)的核心是在與環(huán)境的交互過(guò)程中進(jìn)行學(xué)習(xí),即基于歷史交互信息來(lái)決定當(dāng)前的執(zhí)行.RETECS方法的獎(jiǎng)勵(lì)函數(shù)考慮了測(cè)試用例當(dāng)前一次集成中的執(zhí)行信息,包括失效總數(shù)、執(zhí)行結(jié)果與失效的測(cè)試用例在序列中的位置對(duì)測(cè)試序列的影響,但缺少測(cè)試用例在集成過(guò)程中的整體歷史執(zhí)行信息.本文從獎(jiǎng)勵(lì)函數(shù)設(shè)計(jì)和獎(jiǎng)勵(lì)策略兩個(gè)方面開(kāi)展研究.在獎(jiǎng)勵(lì)函數(shù)設(shè)計(jì)方面,綜合考慮測(cè)試用例歷史執(zhí)行失效總次數(shù)和失效在全部集成過(guò)程中的分布,提出兩種基于測(cè)試用例歷史執(zhí)行信息的強(qiáng)化學(xué)習(xí)獎(jiǎng)勵(lì)函數(shù).在獎(jiǎng)勵(lì)策略方面,提出整體獎(jiǎng)勵(lì)和部分獎(jiǎng)勵(lì)兩種策略,形成面向持續(xù)集成測(cè)試優(yōu)化強(qiáng)化學(xué)習(xí)方法的獎(jiǎng)勵(lì)機(jī)制.本文的主要貢獻(xiàn)包括:

        (1) 針對(duì)測(cè)試用例在全部持續(xù)集成過(guò)程中的歷史執(zhí)行信息,定義了測(cè)試用例歷史平均失效率,在表征了測(cè)試用例整體歷史失效次數(shù)的同時(shí),度量了失效在集成過(guò)程中的分布.

        (2) 在持續(xù)集成測(cè)試優(yōu)化的強(qiáng)化學(xué)習(xí)獎(jiǎng)勵(lì)函數(shù)設(shè)計(jì)上,綜合考慮測(cè)試用例全部執(zhí)行歷史信息,提出了兩種基于歷史信息的強(qiáng)化學(xué)習(xí)獎(jiǎng)勵(lì)函數(shù);在獎(jiǎng)勵(lì)策略方面,提出了整體獎(jiǎng)勵(lì)和部分獎(jiǎng)勵(lì)兩種策略.

        (3) 在實(shí)際工業(yè)程序上進(jìn)行了實(shí)證研究,結(jié)果顯示:在軟件持續(xù)集成測(cè)試優(yōu)化中,融合歷史信息的強(qiáng)化學(xué)習(xí)獎(jiǎng)勵(lì)函數(shù)優(yōu)于現(xiàn)有方法.

        本文第1節(jié)總結(jié)相關(guān)研究,引出本文研究動(dòng)機(jī).第2節(jié)提出本文基于測(cè)試用例歷史執(zhí)行信息的獎(jiǎng)勵(lì)函數(shù).第3節(jié)通過(guò)實(shí)驗(yàn)對(duì)比分析驗(yàn)證本文所提出獎(jiǎng)勵(lì)函數(shù)的有效性.第4節(jié)介紹相關(guān)工作.最后,第5節(jié)進(jìn)行總結(jié)與展望.

        1 相關(guān)工作

        測(cè)試用例優(yōu)先排序(test case prioritization,簡(jiǎn)稱TCP)問(wèn)題是一個(gè)時(shí)序問(wèn)題.在測(cè)試過(guò)程中,測(cè)試用例先后逐個(gè)執(zhí)行,測(cè)試人員希望檢測(cè)到錯(cuò)誤可能性大的測(cè)試用例優(yōu)先執(zhí)行,以更早地發(fā)現(xiàn)錯(cuò)誤和修復(fù)錯(cuò)誤,減少損失[3].測(cè)試用例優(yōu)先排序是對(duì)測(cè)試用例個(gè)體進(jìn)行評(píng)價(jià)并依據(jù)其重要性進(jìn)行排序,最早由Wong等人在1997年提出[4],即在軟件回歸測(cè)試過(guò)程中,對(duì)原有的測(cè)試用例集,尋找滿足測(cè)試準(zhǔn)則的最優(yōu)測(cè)試用例執(zhí)行序列.Elbaum 和Rothermel等人[5]在2000年給出形式化描述,并開(kāi)展了一系列的實(shí)證研究.隨后提出了多種測(cè)試用例優(yōu)先排序技術(shù),包括基于測(cè)試用例覆蓋信息、基于程序修改信息、基于故障、基于需求和基于歷史等的TCP技術(shù)[6].

        基于搜索的思想可以有效解決解決復(fù)雜優(yōu)化問(wèn)題.Li等人率先提出基于搜索的軟件回歸測(cè)試優(yōu)先排序[7],進(jìn)一步研究多目標(biāo)TCP問(wèn)題的搜索方法,并使用GPU并行技術(shù)提高算法效率[8,9].Souza等人[10]和Yu[11]等人采用基于搜索的方法,根據(jù)測(cè)試用例相似度解決TCP問(wèn)題.

        基于學(xué)習(xí)的方法是一種數(shù)據(jù)驅(qū)動(dòng)的方法.Busjaeger等人[1]將機(jī)器學(xué)習(xí)用于測(cè)試用例優(yōu)先排序,結(jié)合啟發(fā)式思想,定義了可以面向不同維度的測(cè)試用例信息表示方法,提出一種基于學(xué)習(xí)的測(cè)試優(yōu)先排序通用化框架.Chen等人[12]將半監(jiān)督聚類算法應(yīng)用于測(cè)試用例選擇,但存在計(jì)算復(fù)雜度高等問(wèn)題.強(qiáng)化學(xué)習(xí)是機(jī)器學(xué)習(xí)的一個(gè)重要分支,Groce等人將強(qiáng)化學(xué)習(xí)與ABP結(jié)合,用來(lái)對(duì)軟件API進(jìn)行測(cè)試[13];Reichstaller等人將強(qiáng)化學(xué)習(xí)用于基于風(fēng)險(xiǎn)的互操作性測(cè)試,通過(guò)強(qiáng)化學(xué)習(xí)進(jìn)行風(fēng)險(xiǎn)評(píng)估,進(jìn)而實(shí)現(xiàn)測(cè)試用例生成[14].

        軟件持續(xù)集成的關(guān)鍵是代碼集成到主干之前,必須通過(guò)自動(dòng)化回歸測(cè)試,即每次代碼集成都需要檢測(cè)其是否引入新的缺陷,一旦有測(cè)試用例失敗,就不能集成.所以持續(xù)集成測(cè)試要求在有限的時(shí)間內(nèi)完成回歸測(cè)試,并盡早發(fā)現(xiàn)錯(cuò)誤.在面向軟件持續(xù)集成測(cè)試的研究中,Marijan等人[15]提出了面向持續(xù)集成的測(cè)試用例優(yōu)先排序技術(shù),隨后,多種優(yōu)化目標(biāo)和方法被提出[16,17].面對(duì)多個(gè)優(yōu)化目標(biāo)時(shí),Ammar等人[18]采用改變不同優(yōu)化目標(biāo)的權(quán)重來(lái)進(jìn)行測(cè)試用例優(yōu)先排序.Strandberg等人[19]對(duì)測(cè)試用例執(zhí)行時(shí)間及其相關(guān)影響因素,如故障檢測(cè)情況、上次執(zhí)行的時(shí)間間隔和被測(cè)代碼的修改信息等進(jìn)行分析組合,通過(guò)測(cè)試用例集優(yōu)先權(quán)的分配、合并來(lái)選擇測(cè)試用例.

        Spieker等人[2]在2017年首次結(jié)合強(qiáng)化學(xué)習(xí)解決持續(xù)集成測(cè)試優(yōu)化問(wèn)題,提出了一種基于強(qiáng)化學(xué)習(xí)的測(cè)試用例優(yōu)先排序和選擇方法RETECS(reinforced test case selection).圖1顯示了RETECS方法的流程,主要包括對(duì)測(cè)試用例集進(jìn)行優(yōu)先級(jí)排序,然后從排序后的測(cè)試用例集中挑選子集執(zhí)行(實(shí)線框是RETECS方法步驟,虛線框是與持續(xù)集成環(huán)境交互的接口).

        Fig.1 Testing in CI圖1 面向持續(xù)集成的測(cè)試

        RETECS方法通過(guò)強(qiáng)化學(xué)習(xí)在每個(gè)集成周期后對(duì)測(cè)試執(zhí)行結(jié)果進(jìn)行評(píng)估,根據(jù)結(jié)果對(duì)測(cè)試用例執(zhí)行的優(yōu)先級(jí)進(jìn)行獎(jiǎng)勵(lì).該方法采用了3種獎(jiǎng)勵(lì)函數(shù):Failure Count Reward(FC獎(jiǎng)勵(lì))將測(cè)試序列在當(dāng)前集成周期中失效的測(cè)試用例總數(shù)作為整個(gè)測(cè)試用例集的獎(jiǎng)勵(lì)值;Test Case Failure Reward(TF獎(jiǎng)勵(lì))對(duì)失效的測(cè)試用例獎(jiǎng)勵(lì)值為1,通過(guò)的測(cè)試用例獎(jiǎng)勵(lì)值為0;Time- ranked Reward(TR獎(jiǎng)勵(lì))考慮到測(cè)試序列中失效的測(cè)試用例的位置.Spieker的實(shí)驗(yàn)結(jié)果表明,TF獎(jiǎng)勵(lì)所得測(cè)試序列的檢錯(cuò)能力優(yōu)于其他兩種獎(jiǎng)勵(lì)函數(shù).

        2 基于測(cè)試用例歷史信息的CI強(qiáng)化學(xué)習(xí)獎(jiǎng)勵(lì)

        針對(duì)持續(xù)集成測(cè)試優(yōu)化的強(qiáng)化學(xué)習(xí)方法中獎(jiǎng)勵(lì)函數(shù)僅僅考慮當(dāng)前測(cè)試用例執(zhí)行信息的問(wèn)題,本文首先引入測(cè)試用例在持續(xù)集成過(guò)程中的全部歷史執(zhí)行信息,提出基于測(cè)試用例歷史失效次數(shù)的獎(jiǎng)勵(lì)函數(shù).在此基礎(chǔ)上,本文進(jìn)一步考慮測(cè)試用例失效次數(shù)的分布信息,定義了測(cè)試用例平均歷史失效率,用來(lái)度量一個(gè)測(cè)試用例的在整個(gè)持續(xù)集成過(guò)程中發(fā)生失效的分布情況,并在此基礎(chǔ)上提出了基于測(cè)試用例歷史失效率的獎(jiǎng)勵(lì)函數(shù).

        在基于強(qiáng)化學(xué)習(xí)的測(cè)試優(yōu)化中,有兩種獎(jiǎng)勵(lì)策略:整體獎(jiǎng)勵(lì)與部分獎(jiǎng)勵(lì).整體獎(jiǎng)勵(lì)策略對(duì)所有的測(cè)試用例進(jìn)行獎(jiǎng)勵(lì),且獎(jiǎng)勵(lì)值相同;而部分獎(jiǎng)勵(lì)只對(duì)失效的測(cè)試用例進(jìn)行獎(jiǎng)勵(lì),且獎(jiǎng)勵(lì)值不同.整體獎(jiǎng)勵(lì)將排序后的測(cè)試序列視為整體,但無(wú)法體現(xiàn)單個(gè)測(cè)試用例對(duì)檢測(cè)故障的貢獻(xiàn).部分獎(jiǎng)勵(lì)可以體現(xiàn)測(cè)試用例間的差異,卻容易忽略基于測(cè)試用例優(yōu)先級(jí)的不同排序策略的不同作用.本文在提出兩種獎(jiǎng)勵(lì)函數(shù)時(shí),基于整體獎(jiǎng)勵(lì)和部分獎(jiǎng)勵(lì)兩種策略分別定義相應(yīng)的獎(jiǎng)勵(lì)函數(shù).

        2.1 基于測(cè)試用例歷史失效次數(shù)的獎(jiǎng)勵(lì)

        在持續(xù)集成測(cè)試的歷史過(guò)程中,失效次數(shù)越多的測(cè)試用例錯(cuò)誤檢測(cè)能力越強(qiáng),應(yīng)該給予獎(jiǎng)勵(lì)來(lái)提高下次執(zhí)行時(shí)的優(yōu)先級(jí).現(xiàn)有的獎(jiǎng)勵(lì)函數(shù)中,只考慮測(cè)試序列在當(dāng)前一次集成周期中的執(zhí)行失效的情況,沒(méi)有考慮到測(cè)試用例的歷史執(zhí)行情況.由于持續(xù)集成中測(cè)試用例并非在每次集成都被執(zhí)行,而測(cè)試用例未執(zhí)行時(shí)信息難獲取,因此本文關(guān)注集成過(guò)程中測(cè)試用例被執(zhí)行的信息.本文使用一個(gè)元組來(lái)表示測(cè)試用例的歷史執(zhí)行結(jié)果(historical result,簡(jiǎn)稱HR),用i表示集成周期數(shù),對(duì)測(cè)試用例t,HRi(t)=[rn,…,r2,r1]表示t在第i次集成為止,n次執(zhí)行的結(jié)果,rn等于0表示t在第n次執(zhí)行的結(jié)果為通過(guò),rn等于1表示t在第n次執(zhí)行的結(jié)果為失效.需要注意的是,一個(gè)測(cè)試用例不一定會(huì)在每次集成中都被執(zhí)行,所以n和i并不一定相等.

        本文提出了基于歷史執(zhí)行失效次數(shù)的獎(jiǎng)勵(lì)函數(shù),定義如下.

        定義1(基于測(cè)試用例歷史執(zhí)行失效次數(shù)的獎(jiǎng)勵(lì)(historical failure count reward,簡(jiǎn)稱HFC獎(jiǎng)勵(lì))).

        · HFC整體獎(jiǎng)勵(lì)函數(shù):

        · HFC部分獎(jiǎng)勵(lì)函數(shù):

        其中,fail表示測(cè)試用例失效;表示[rn,…,r2,r1]元組中1的個(gè)數(shù),即測(cè)試用例t在第i次集成時(shí),歷史執(zhí)行過(guò)程中失效的總次數(shù).歷史執(zhí)行失效次數(shù)獎(jiǎng)勵(lì)不僅包含當(dāng)前集成周期的執(zhí)行結(jié)果,還包含歷史執(zhí)行結(jié)果.整個(gè)持續(xù)集成測(cè)試過(guò)程中,失效總次數(shù)越多的測(cè)試用例將得到更大的獎(jiǎng)勵(lì)值.基于不同的獎(jiǎng)勵(lì)策略,我們分別定義了獎(jiǎng)勵(lì)函數(shù).公式(1)中采用整體獎(jiǎng)勵(lì),對(duì)當(dāng)前序列中所有測(cè)試用例都進(jìn)行獎(jiǎng)勵(lì);公式(2)中采用部分獎(jiǎng)勵(lì),僅對(duì)失效的測(cè)試用例進(jìn)行獎(jiǎng)勵(lì).

        2.2 基于測(cè)試用例平均歷史失效率的獎(jiǎng)勵(lì)

        在集成測(cè)試中,除了測(cè)試用例歷史執(zhí)行中的失效總次數(shù)可以評(píng)估其錯(cuò)誤檢測(cè)能力,失效發(fā)生次序也非常重要.例如在30次集成的測(cè)試中,兩個(gè)測(cè)試用例同樣在10次集成中失效了,但一個(gè)測(cè)試用例是在最初的10次集成中失效,另一個(gè)是在臨近的10次集成中失效.比較兩者,臨近10次失效的測(cè)試用例在下一次集成中發(fā)現(xiàn)錯(cuò)誤的可能性更高,應(yīng)該具有更高的優(yōu)先級(jí).

        考慮到測(cè)試用例在歷史執(zhí)行中失效的分布問(wèn)題,本文提出一個(gè)新的衡量指標(biāo):測(cè)試用例平均歷史執(zhí)行失效率(average percentage of historical failure,簡(jiǎn)稱APHF),其計(jì)算公式定義如下.

        定義2(測(cè)試用例平均歷史執(zhí)行失效率(average percentage of historical failure,簡(jiǎn)稱APHF)).

        其中,i表示第i次集成,n表示測(cè)試用例t的歷史執(zhí)行次數(shù),m表示測(cè)試用例t在n次執(zhí)行的失效總次數(shù),Rj表示測(cè)試用例最近第j次失效在歷史執(zhí)行的倒數(shù)次序,APHF∈(0,1).APHF值越高,表示測(cè)試用例在臨近的歷史執(zhí)行中失效概率越大,則越可能在下一次執(zhí)行中檢測(cè)出錯(cuò)誤.

        假設(shè)測(cè)試用例t1與t2歷史執(zhí)行次數(shù)均為n,其歷史執(zhí)行信息分別表示為[1,0,…,0],[0,…,0,1].可以看出,t1與t2的歷史總失效次數(shù)均為1,t1在最近一次執(zhí)行中失效,t2在第一次執(zhí)行中失效.很可能是由于t2第1次執(zhí)行檢測(cè)出的bug已經(jīng)被修復(fù),且在最近幾次集成中t2沒(méi)有檢測(cè)出bug,而t1在最近一次執(zhí)行中檢測(cè)出bug,時(shí)效性更強(qiáng),那么t1在下一次集成中檢測(cè)出錯(cuò)誤的概率更大,如下所示.

        因此,集成周期數(shù)趨近正無(wú)窮時(shí),測(cè)試分布如t1與t2的APHF差值趨近于1,即APHF最大值.由此可見(jiàn),集成周期數(shù)越多,測(cè)試用例執(zhí)行次數(shù)越多,其歷史失效分布對(duì)檢測(cè)錯(cuò)誤能力的影響越大.基于此,我們提出測(cè)試用例平均歷史執(zhí)行失效率獎(jiǎng)勵(lì),定義如下.

        定義3(平均歷史執(zhí)行失效率獎(jiǎng)勵(lì)(average percentage of historical failure reward,簡(jiǎn)稱APHF獎(jiǎng)勵(lì))).

        · APHF整體獎(jiǎng)勵(lì)函數(shù):

        · APHF部分獎(jiǎng)勵(lì)函數(shù):

        其中,APHFi(t)指測(cè)試用例t到第i次集成為止的平均歷史執(zhí)行失效率.同樣地,針對(duì)不同的獎(jiǎng)勵(lì)策略,提出APHF整體獎(jiǎng)勵(lì)與部分獎(jiǎng)勵(lì)兩種獎(jiǎng)勵(lì)函數(shù):公式(4)中采用整體獎(jiǎng)勵(lì),對(duì)當(dāng)前序列中所有測(cè)試用例都進(jìn)行獎(jiǎng)勵(lì);公式(5)中采用部分獎(jiǎng)勵(lì),僅對(duì)當(dāng)前序列中失效的測(cè)試用例進(jìn)行獎(jiǎng)勵(lì).平均歷史執(zhí)行失效率獎(jiǎng)勵(lì)不僅包含測(cè)試用例歷史執(zhí)行的結(jié)果信息,還體現(xiàn)了歷史執(zhí)行過(guò)程中失效的分布,使得最近失效的測(cè)試用例能獲得更大的獎(jiǎng)勵(lì)值.

        本文所提出的基于測(cè)試用例歷史執(zhí)行信息的獎(jiǎng)勵(lì)函數(shù)主要有兩個(gè)優(yōu)點(diǎn).

        (1) HFC包含測(cè)試用例的歷史執(zhí)行結(jié)果信息,而不僅僅是當(dāng)前一次集成的執(zhí)行結(jié)果.在基于歷史的測(cè)試用例優(yōu)先排序技術(shù)中,我們認(rèn)為,如果測(cè)試用例在過(guò)去檢測(cè)出錯(cuò)誤,則其更易在下次測(cè)試中執(zhí)行到有缺陷的代碼.而缺陷預(yù)測(cè)相關(guān)研究表明:在過(guò)去有錯(cuò)誤的代碼很可能再次出錯(cuò),尤其是這部分代碼被修改的情況[20,21].因此,考慮測(cè)試用例的歷史執(zhí)行結(jié)果而非僅僅是當(dāng)前一次執(zhí)行的結(jié)果是非常必要的.

        (2) APHF度量了測(cè)試用例歷史失效的分布,反映了測(cè)試用例的時(shí)效性,即臨近的失效會(huì)獲得更大的度量值,更符合強(qiáng)化學(xué)習(xí)序貫決策的特點(diǎn).

        TCP問(wèn)題是一個(gè)序列決策問(wèn)題,除了考慮測(cè)試用例的執(zhí)行結(jié)果,還應(yīng)關(guān)注其失效的分布,最近出現(xiàn)失效的測(cè)試用例更有助于下一次的錯(cuò)誤檢測(cè).

        3 實(shí)驗(yàn)分析

        為了驗(yàn)證本文所提出基于測(cè)試用例歷史執(zhí)行信息的獎(jiǎng)勵(lì)函數(shù)的有效性,我們復(fù)現(xiàn)了文獻(xiàn)[2]中的 RETECS(implementation available at https://bitbucket.org/helges/retecs)實(shí)驗(yàn)進(jìn)行對(duì)比,采用 3個(gè)大型工業(yè)數(shù)據(jù)集 Paint Control、IOF/ROl、GSDTSR為測(cè)試對(duì)象.

        由于持續(xù)集成測(cè)試具有較強(qiáng)的時(shí)限性,測(cè)試過(guò)程中不能將所有測(cè)試用例都執(zhí)行,因此實(shí)驗(yàn)中設(shè)置時(shí)間閾值為測(cè)試集中所有測(cè)試用例執(zhí)行時(shí)間的1/2,即測(cè)試用例按照優(yōu)先級(jí)降序排序,直到達(dá)到1/2總體執(zhí)行時(shí)間停止執(zhí)行.為了消除實(shí)驗(yàn)中隨機(jī)因素對(duì)實(shí)驗(yàn)結(jié)果的影響,我們將實(shí)驗(yàn)重復(fù) 30次取平均值.下面首先介紹實(shí)驗(yàn)所用評(píng)估指標(biāo)(第3.1節(jié))與實(shí)驗(yàn)對(duì)象(第3.2節(jié)),第3.3節(jié)介紹實(shí)驗(yàn)設(shè)計(jì),第3.4節(jié)對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行分析.

        3.1 評(píng)估指標(biāo)

        本實(shí)驗(yàn)中采用NAPFD(normalized average percentage of faults detected)作為評(píng)估指標(biāo),其計(jì)算公式如下.

        1999年,Rothermel等人[17]首次提出平均錯(cuò)誤檢測(cè)率(average percentage of faults detected,簡(jiǎn)稱APFD)來(lái)衡量測(cè)試用例優(yōu)先排序技術(shù)的有效性.APFD根據(jù)測(cè)試序列中失效的測(cè)試用例的序號(hào)來(lái)衡量測(cè)試序列的有效性.當(dāng)TCP技術(shù)中存在測(cè)試用例選擇時(shí),不是所有的測(cè)試用例都被執(zhí)行,不是所有的錯(cuò)誤都能被檢測(cè)到,而APFD假設(shè)所有的錯(cuò)誤都被檢測(cè)到,因此它只適用于沒(méi)有測(cè)試用例選擇的情況.NAPFD[15]是APFD的擴(kuò)展,它能反映測(cè)試套件檢測(cè)到的錯(cuò)誤占所有錯(cuò)誤的比例,適用于存在測(cè)試用例選擇的情況.若所有錯(cuò)誤都被檢測(cè)到,NAPFD則與APFD相同(p=1).本實(shí)驗(yàn)中計(jì)算NAPFD值時(shí),我們假設(shè)每次失效對(duì)應(yīng)的錯(cuò)誤都是不同的.

        3.2 實(shí)驗(yàn)對(duì)象

        為了確定本文方法在實(shí)際業(yè)界的適用性,本文使用工業(yè)數(shù)據(jù)集進(jìn)行實(shí)驗(yàn):Paint Control和IOF/ROL均來(lái)自ABB Robotics Norway2,用于測(cè)試復(fù)雜工業(yè)機(jī)器人;Google Shared Dataset(GSDTSR)是谷歌開(kāi)源的數(shù)據(jù)集.這些數(shù)據(jù)集中包含超過(guò)300個(gè)集成周期中的測(cè)試用例執(zhí)行結(jié)果等歷史信息.表1列出了3個(gè)數(shù)據(jù)集的詳細(xì)信息,包括測(cè)試用例集大小、集成周期數(shù)等.表中執(zhí)行結(jié)果數(shù)指所有測(cè)試用例在整個(gè)集成過(guò)程中被執(zhí)行的總次數(shù),而失效率表示測(cè)試用例被執(zhí)行的總數(shù)中失效的比重.可以看出,Paint Control數(shù)據(jù)集規(guī)模較小,同時(shí),測(cè)試用例失效率近1/5;IOF/ROL數(shù)據(jù)集測(cè)試用例集規(guī)模中等,但失效率更大,是3個(gè)數(shù)據(jù)集中最高的;谷歌開(kāi)源數(shù)據(jù)集GSDTSR測(cè)試用例集規(guī)模最大,但失效率僅 0.25%,即在大量的測(cè)試用例中僅有少量的失效測(cè)試用例,在持續(xù)集成測(cè)試優(yōu)化中,把大量測(cè)試用例中的少量失效測(cè)試用例優(yōu)先執(zhí)行,優(yōu)化難度最大.

        Table 1 Statistics of Industrial datasets表1 工業(yè)數(shù)據(jù)集信息

        3.3 實(shí)驗(yàn)設(shè)計(jì)

        為了驗(yàn)證本文提出的HFC獎(jiǎng)勵(lì)函數(shù)和APHF獎(jiǎng)勵(lì)函數(shù)在基于強(qiáng)化學(xué)習(xí)的測(cè)試用例優(yōu)先排序技術(shù)中的有效性,本文針對(duì)以下4個(gè)研究問(wèn)題進(jìn)行實(shí)驗(yàn)與分析.

        · 研究問(wèn)題1:包含測(cè)試用例歷史執(zhí)行信息的獎(jiǎng)勵(lì)函數(shù)是否能有效提升測(cè)試序列的檢錯(cuò)能力?

        · 研究問(wèn)題2:測(cè)試用例歷史失效分布信息是否有助于檢測(cè)到潛在容易失效的測(cè)試用例?

        · 研究問(wèn)題3:整體獎(jiǎng)勵(lì)策略是否優(yōu)于部分獎(jiǎng)勵(lì)策略?

        · 研究問(wèn)題4:包含歷史信息的獎(jiǎng)勵(lì)函數(shù)在時(shí)間開(kāi)銷方面是否影響持續(xù)集成測(cè)試整體的效率?

        研究問(wèn)題 1的目的是驗(yàn)證本文提出的包含測(cè)試用例歷史完整失效信息的獎(jiǎng)勵(lì)函數(shù)的有效性.本文提出兩種包含測(cè)試用例歷史執(zhí)行信息的獎(jiǎng)勵(lì)函數(shù),即HFC獎(jiǎng)勵(lì)和APHF獎(jiǎng)勵(lì).HFC獎(jiǎng)勵(lì)是基于測(cè)試用例歷史執(zhí)行過(guò)程中總的失效次數(shù),APHC在此基礎(chǔ)上進(jìn)一步考慮失效的分布.所以,為了回答研究問(wèn)題 1,需要對(duì)比基于這兩種獎(jiǎng)勵(lì)函數(shù)的強(qiáng)化學(xué)習(xí)方法生成的測(cè)試序列和現(xiàn)有方法獎(jiǎng)勵(lì)函數(shù)生成測(cè)試序列的檢錯(cuò)能力.研究問(wèn)題 2是為了驗(yàn)證測(cè)試用例歷史失效信息分布是否更有助于發(fā)現(xiàn)潛在易失效的測(cè)試用例,即對(duì)比HFC和APHF兩者的優(yōu)劣.研究問(wèn)題 3是為了研究整體獎(jiǎng)勵(lì)(即對(duì)當(dāng)前序列中所有的測(cè)試用例進(jìn)行獎(jiǎng)勵(lì),且獎(jiǎng)勵(lì)值相同)和部分獎(jiǎng)勵(lì)(即只對(duì)當(dāng)前序列中失效的測(cè)試用例進(jìn)行獎(jiǎng)勵(lì),且獎(jiǎng)勵(lì)值不同)兩種機(jī)制對(duì)測(cè)試用例優(yōu)先排序技術(shù)結(jié)果的影響.研究問(wèn)題4對(duì)比包含歷史信息與不包含歷史信息獎(jiǎng)勵(lì)函數(shù)的時(shí)間消耗.目前,將強(qiáng)化學(xué)習(xí)用于 TCP的研究較少,Spieker等人[2]在2017年提出了RETECS方法,首次將強(qiáng)化學(xué)習(xí)與持續(xù)集成環(huán)境下的TCP相結(jié)合:強(qiáng)化學(xué)習(xí)過(guò)程中的狀態(tài)表示單個(gè)測(cè)試用例的元數(shù)據(jù),包括測(cè)試用例的執(zhí)行持續(xù)時(shí)間、上次執(zhí)行的時(shí)間和歷史執(zhí)行結(jié)果;動(dòng)作表示測(cè)試用例當(dāng)前集成周期中的優(yōu)先級(jí).測(cè)試用例集中所有測(cè)試用例都被賦予優(yōu)先級(jí)后,依據(jù)其優(yōu)先級(jí)由高到低進(jìn)行排序.通過(guò)對(duì)排序后得到的測(cè)試序列進(jìn)行評(píng)估,計(jì)算獎(jiǎng)勵(lì)值并反饋給智能體,通過(guò)獎(jiǎng)勵(lì)值來(lái)對(duì)先前的行為進(jìn)行獎(jiǎng)勵(lì)或懲罰,使智能體得以學(xué)習(xí),從而正確地進(jìn)行優(yōu)先級(jí)排序.RETECS方法中包含3種獎(jiǎng)勵(lì)函數(shù)(詳見(jiàn)第1節(jié)):TF獎(jiǎng)勵(lì)、FC獎(jiǎng)勵(lì)及TR獎(jiǎng)勵(lì).Spieker的實(shí)驗(yàn)結(jié)果表明,TF獎(jiǎng)勵(lì)所得測(cè)試序列的檢錯(cuò)能力優(yōu)于其他兩種獎(jiǎng)勵(lì)函數(shù).

        為了進(jìn)行實(shí)驗(yàn)對(duì)比,本文重現(xiàn)了文獻(xiàn)[2]中最優(yōu)的Test Case Failure Reward(TF獎(jiǎng)勵(lì),見(jiàn)公式(7))的實(shí)驗(yàn).

        同時(shí),實(shí)現(xiàn)了本文提出的基于 HFC獎(jiǎng)勵(lì)與 APHF獎(jiǎng)勵(lì)的強(qiáng)化學(xué)習(xí)算法.實(shí)驗(yàn)中采用了基于神經(jīng)網(wǎng)絡(luò)(network-based)強(qiáng)化學(xué)習(xí)智能體,即使用神經(jīng)網(wǎng)絡(luò)連續(xù)地表示狀態(tài)與動(dòng)作.

        針對(duì)本文提出的HFC獎(jiǎng)勵(lì)與APHF獎(jiǎng)勵(lì),我們分別采用兩種獎(jiǎng)勵(lì)策略(第2.1節(jié))對(duì)HFC整體獎(jiǎng)勵(lì)函數(shù)(公式(1))、HFC部分獎(jiǎng)勵(lì)函數(shù)(公式(2))、APHF整體獎(jiǎng)勵(lì)(公式(4))、APHF部分獎(jiǎng)勵(lì)(公式(5))進(jìn)行了實(shí)驗(yàn).

        3.4 實(shí)驗(yàn)結(jié)果及分析

        圖2是TF獎(jiǎng)勵(lì)函數(shù)在Paint Control、IOF/ROL、GSDTSR這3個(gè)數(shù)據(jù)集上的重現(xiàn)實(shí)驗(yàn)結(jié)果,圖中橫軸為集成周期數(shù),縱軸為每個(gè)集成周期測(cè)試序列的NAPFD值.NAPFD值越大,表明測(cè)試序列檢測(cè)錯(cuò)誤能力越強(qiáng).圖中曲線為每次集成時(shí),通過(guò)強(qiáng)化學(xué)習(xí)方法生成測(cè)試序列的NAPFD均值,直線為使用多項(xiàng)式線性擬合的結(jié)果.

        Fig.2 Experimental results of TF reward圖2 TF獎(jiǎng)勵(lì)實(shí)驗(yàn)結(jié)果

        圖3、圖4分別是本文提出的HFC獎(jiǎng)勵(lì)函數(shù)和APHF獎(jiǎng)勵(lì)函數(shù)的實(shí)驗(yàn)結(jié)果,其中,圖(a)、圖(b)分別表示部分獎(jiǎng)勵(lì)和整體獎(jiǎng)勵(lì).相同的,圖中橫軸與縱軸分別表示集成周期數(shù)和相應(yīng)周期中測(cè)試序列的NAPFD值.

        Fig.3 Experimental results of HFC reward (Continued)圖3 HFC獎(jiǎng)勵(lì)實(shí)驗(yàn)結(jié)果(續(xù))

        Fig.4 Experimental results of APHF reward圖4 APHF獎(jiǎng)勵(lì)實(shí)驗(yàn)結(jié)果

        為進(jìn)一步說(shuō)明結(jié)果的有效性,我們計(jì)算了基于歷史的獎(jiǎng)勵(lì)函數(shù)(圖中只包括HFC部分獎(jiǎng)勵(lì)與APHF部分獎(jiǎng)勵(lì))與TF獎(jiǎng)勵(lì)的NAPFD差值,如圖5的差值直方圖;同時(shí),統(tǒng)計(jì)了本文提出的4種基于歷史信息的獎(jiǎng)勵(lì)函數(shù)實(shí)驗(yàn)結(jié)果,如圖6箱型圖所示.

        Fig.5 Comparison of experimental results between TF reward and history-based reward圖5 TF獎(jiǎng)勵(lì)與基于歷史的獎(jiǎng)勵(lì)實(shí)驗(yàn)結(jié)果比較

        Fig.6 Experimental results of HFC reward and APHF reward圖6 HFC獎(jiǎng)勵(lì)與APHF獎(jiǎng)勵(lì)實(shí)驗(yàn)結(jié)果

        3.4.1 對(duì)研究問(wèn)題1的分析

        為了回答研究問(wèn)題1,我們使用基于歷史失效次數(shù)的HFC和基于平均歷史失效率的APHF獎(jiǎng)勵(lì)函數(shù)的強(qiáng)化學(xué)習(xí)方法生成了測(cè)試序列,并與使用 RETECS方法的 TF獎(jiǎng)勵(lì)函數(shù)生成的測(cè)試序列進(jìn)行檢錯(cuò)能力的比較.由于TF獎(jiǎng)勵(lì)函數(shù)是部分獎(jiǎng)勵(lì),因此對(duì)比實(shí)驗(yàn)中只對(duì)部分獎(jiǎng)勵(lì)策略的實(shí)驗(yàn)結(jié)果進(jìn)行對(duì)比.

        圖3(a)及圖4(a)分別是HFC獎(jiǎng)勵(lì)與APHF獎(jiǎng)勵(lì)在部分獎(jiǎng)勵(lì)方式下的實(shí)驗(yàn)結(jié)果,可以看出,隨著集成周期的增長(zhǎng),某些情況下,獎(jiǎng)勵(lì)函數(shù)在強(qiáng)化學(xué)習(xí)過(guò)程中對(duì)測(cè)試用例優(yōu)先級(jí)的評(píng)定越來(lái)越正確,并最終獲得檢錯(cuò)能力更高的測(cè)試序列;但有些時(shí)候,學(xué)習(xí)過(guò)程并不有效,測(cè)試序列的檢錯(cuò)能力保持在初始水平甚至下降.Paint Control數(shù)據(jù)集中,使用APHF獎(jiǎng)勵(lì)所得測(cè)試序列NAPFD值與TF獎(jiǎng)勵(lì)大致相等,而使用HFC獎(jiǎng)勵(lì)所得測(cè)試序列NAPFD值不到0.7,略低于APHF獎(jiǎng)勵(lì)和TF獎(jiǎng)勵(lì)的0.8,但差距不大.通過(guò)檢查該數(shù)據(jù)集,一些測(cè)試用例主要在集成前期失效而后期幾乎不失效,采用HFC獎(jiǎng)勵(lì)提高此類測(cè)試用例的優(yōu)先級(jí),導(dǎo)致排序序列的NAPFD值下降.而APHF獎(jiǎng)勵(lì)考慮到失效次序,因此不會(huì)受到這種情況的影響;IOF/ROL數(shù)據(jù)集中,使用 APHF獎(jiǎng)勵(lì)所得測(cè)試序列 NAPFD值約0.5,HFC獎(jiǎng)勵(lì)與TF獎(jiǎng)勵(lì)均在0.3左右,APHF獎(jiǎng)勵(lì)顯著優(yōu)于其他兩者;而GSDTSR數(shù)據(jù)集中,APHF獎(jiǎng)勵(lì)與HFC獎(jiǎng)勵(lì)對(duì)應(yīng)NAPFD值分別為0.6與0.5,TF獎(jiǎng)勵(lì)則為0.1.

        圖5顯示了3種獎(jiǎng)勵(lì)函數(shù)在 3個(gè)數(shù)據(jù)集中的比較結(jié)果.我們對(duì)30次循環(huán)中每個(gè)集成周期的平均NAPFD值的差值進(jìn)行比較,圖中差值為正表明相應(yīng)的獎(jiǎng)勵(lì)函數(shù)表現(xiàn)優(yōu)于TF獎(jiǎng)勵(lì)函數(shù),差值為為負(fù)說(shuō)明TF獎(jiǎng)勵(lì)函數(shù)表現(xiàn)優(yōu)于被比較的獎(jiǎng)勵(lì)函數(shù).從圖中可以看出,在PaintControl數(shù)據(jù)集上,HFC獎(jiǎng)勵(lì)表現(xiàn)不如TF獎(jiǎng)勵(lì),但APHF獎(jiǎng)勵(lì)與TF獎(jiǎng)勵(lì)大致相同;而在IOF/ROL與GSDTSR數(shù)據(jù)集上,HFC獎(jiǎng)勵(lì)與APHF獎(jiǎng)勵(lì)明顯優(yōu)于TF獎(jiǎng)勵(lì),與前面分析相符.

        綜合以上實(shí)驗(yàn)結(jié)果,APHF獎(jiǎng)勵(lì)在3個(gè)數(shù)據(jù)集上表現(xiàn)均優(yōu)于TF獎(jiǎng)勵(lì);針對(duì)HFC獎(jiǎng)勵(lì),除了Paint Control數(shù)據(jù)集中HFC獎(jiǎng)勵(lì)表現(xiàn)差于TF獎(jiǎng)勵(lì),其他兩個(gè)數(shù)據(jù)集中HFC獎(jiǎng)勵(lì)也均優(yōu)于TF獎(jiǎng)勵(lì).總的來(lái)說(shuō),包含歷史信息的獎(jiǎng)勵(lì)函數(shù)明顯優(yōu)于不包含歷史信息的獎(jiǎng)勵(lì)函數(shù),尤其是對(duì)于規(guī)模最大但失效率僅為 0.25%的谷歌 GSDTSR數(shù)據(jù)集,測(cè)試用例的 NAPFD值提高近 6倍,說(shuō)明即使在失效信息少的情況下,基于歷史信息也能學(xué)習(xí)出檢錯(cuò)能力較高的測(cè)試序列,進(jìn)一步驗(yàn)證了歷史失效信息對(duì)測(cè)試用例優(yōu)先排序技術(shù)的有效性.

        3.4.2 對(duì)研究問(wèn)題2的分析

        研究問(wèn)題2的目的是驗(yàn)證測(cè)試用例歷史失效分布信息有助于發(fā)現(xiàn)潛在易失效的測(cè)試用例,即對(duì)比HFC和APHF兩者的優(yōu)劣.圖3(a)與圖4(a)分別是HFC獎(jiǎng)勵(lì)與APHF獎(jiǎng)勵(lì)在部分獎(jiǎng)勵(lì)方式下的實(shí)驗(yàn)結(jié)果,從圖中可以看出,采用部分獎(jiǎng)勵(lì)機(jī)制時(shí),在 3個(gè)數(shù)據(jù)集中,APHF獎(jiǎng)勵(lì)所得測(cè)試序列的 NAPFD值均高于 HFC獎(jiǎng)勵(lì),NAPFD值最多提高了0.2(IOF/ROL數(shù)據(jù)集).在GSDTSR數(shù)據(jù)集上提高效果不顯著,可能是由其測(cè)試用例失效率低,所含失效分布信息少導(dǎo)致.

        圖3(b)和圖4(b)分別是HFC獎(jiǎng)勵(lì)與APHF獎(jiǎng)勵(lì)在整體獎(jiǎng)勵(lì)方式下的實(shí)驗(yàn)結(jié)果,由圖可知,采用整體獎(jiǎng)勵(lì)機(jī)制時(shí),APHF獎(jiǎng)勵(lì)所得測(cè)試序列的NAPFD值明顯高于HFC獎(jiǎng)勵(lì):PaintControl數(shù)據(jù)集上,NAPFD值由0.4提高至0.7,GSDTSR數(shù)據(jù)集上由不到0.5提升至0.85.

        從圖6,即HFC獎(jiǎng)勵(lì)與APHF獎(jiǎng)勵(lì)的箱型圖中也可以看出,在3個(gè)數(shù)據(jù)集上,采用同種獎(jiǎng)勵(lì)機(jī)制時(shí),APHF獎(jiǎng)勵(lì)均優(yōu)于HFC獎(jiǎng)勵(lì);而在GSDTSR數(shù)據(jù)集上,APHF整體獎(jiǎng)勵(lì)較HFC整體獎(jiǎng)勵(lì)提高效果尤為明顯.

        因此可以得出:包含測(cè)試用例歷史失效分布信息的獎(jiǎng)勵(lì)函數(shù)所得測(cè)試序列檢錯(cuò)能力強(qiáng)于不包含失效分布信息的獎(jiǎng)勵(lì)函數(shù),證明了測(cè)試用例歷史執(zhí)行失效分布有助于發(fā)現(xiàn)潛在易失效的測(cè)試用例.

        3.4.3 對(duì)研究問(wèn)題3的分析

        研究問(wèn)題3分析兩種獎(jiǎng)勵(lì)策略的優(yōu)劣.

        圖3(a)、圖3(b)分別是 HFC部分獎(jiǎng)勵(lì)函數(shù)與整體獎(jiǎng)勵(lì)函數(shù)在 3個(gè)數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果.對(duì)于 HFC獎(jiǎng)勵(lì),總體來(lái)說(shuō),部分獎(jiǎng)勵(lì)的結(jié)果在3個(gè)數(shù)據(jù)集上均明顯優(yōu)于整體獎(jiǎng)勵(lì).而圖6中,GSDTSR數(shù)據(jù)集上HFC部分獎(jiǎng)勵(lì)的NAPFD雖然略高于整體獎(jiǎng)勵(lì),但離群點(diǎn)較多,且圖3(b)中斜率為負(fù),說(shuō)明 HFC部分獎(jiǎng)勵(lì)表現(xiàn)并不好.通過(guò)分析,HFC是基于測(cè)試用例歷史失效總次數(shù)的獎(jiǎng)勵(lì),部分獎(jiǎng)勵(lì)可以加大當(dāng)前集成周期中失效測(cè)試用例的獎(jiǎng)勵(lì)力度,NAPFD值有明顯提升,而整體獎(jiǎng)勵(lì)針對(duì)當(dāng)前序列中所有的測(cè)試用例都進(jìn)行獎(jiǎng)勵(lì),縮小了當(dāng)前失效測(cè)試用例與通過(guò)測(cè)試用例的差距,反而使結(jié)果更差.因此針對(duì)HFC獎(jiǎng)勵(lì)函數(shù),部分獎(jiǎng)勵(lì)策略更有效.

        圖4(a)、圖4(b)分別是APHF部分獎(jiǎng)勵(lì)函數(shù)與整體獎(jiǎng)勵(lì)函數(shù)在3個(gè)數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果.綜合分析圖4與圖6可知,對(duì)于APHF獎(jiǎng)勵(lì),在前兩個(gè)數(shù)據(jù)集上兩種獎(jiǎng)勵(lì)策略結(jié)果近似,但部分獎(jiǎng)勵(lì)機(jī)制略優(yōu)于整體獎(jiǎng)勵(lì),說(shuō)明部分獎(jiǎng)勵(lì)可以增大近期失效的測(cè)試用例所得獎(jiǎng)勵(lì).而在谷歌開(kāi)源數(shù)據(jù)集GSDTSR上,整體獎(jiǎng)勵(lì)機(jī)制明顯優(yōu)于部分獎(jiǎng)勵(lì).綜合分析GSDTSR數(shù)據(jù)集中測(cè)試用例失效率很低,關(guān)于失效分布的歷史信息較少,因此采用部分獎(jiǎng)勵(lì)時(shí)進(jìn)一步損失了歷史失效信息,導(dǎo)致每個(gè)測(cè)試用例都難以得到獎(jiǎng)勵(lì);相反,整體獎(jiǎng)勵(lì)避免了歷史失效信息的損失,反而能增大測(cè)試用例得到的獎(jiǎng)勵(lì),因此,整體獎(jiǎng)勵(lì)適用于失效率較低的測(cè)試集.

        總的來(lái)說(shuō),不同的獎(jiǎng)勵(lì)函數(shù)適用的獎(jiǎng)勵(lì)策略不同,同時(shí)還可能受到測(cè)試集中測(cè)試用例失效信息的影響.

        3.4.4 對(duì)研究問(wèn)題4的分析

        研究問(wèn)題4主要分析不同獎(jiǎng)勵(lì)的函數(shù)的時(shí)間消耗是否會(huì)影響持續(xù)集成測(cè)試整體效率.基于強(qiáng)化學(xué)習(xí)的TCP過(guò)程可大致包括通過(guò)獎(jiǎng)勵(lì)函數(shù)計(jì)算測(cè)試用例執(zhí)行優(yōu)先級(jí)并基于優(yōu)先級(jí)進(jìn)行排序,排序過(guò)程采用貪心策略,對(duì)總時(shí)間影響不大,因此,本實(shí)驗(yàn)統(tǒng)計(jì)一次集成的總時(shí)間進(jìn)行比較,結(jié)果見(jiàn)表2.可以看出,包含歷史的獎(jiǎng)勵(lì)函數(shù)由于增加了歷史信息的計(jì)算,時(shí)間消耗多于不包含歷史的獎(jiǎng)勵(lì)策略.其中,HFC獎(jiǎng)勵(lì)時(shí)間消耗比 TF獎(jiǎng)勵(lì)增加約1s,APHF增加約1.5s.而整體獎(jiǎng)勵(lì)策略由于計(jì)算量多于部分獎(jiǎng)勵(lì)策略,因此時(shí)間消耗也略有增加.

        Table 2 Time consumption for different reward functions (s)表2 不同獎(jiǎng)勵(lì)函數(shù)的時(shí)間消耗 (s)

        總的來(lái)說(shuō),包含歷史信息的獎(jiǎng)勵(lì)函數(shù)時(shí)間開(kāi)銷增大但都在秒級(jí),最長(zhǎng)時(shí)間不超過(guò) 3s.同時(shí),由于錯(cuò)誤檢測(cè)率有明顯提高,對(duì)于一個(gè)工業(yè)程序,在秒級(jí)內(nèi)的時(shí)間開(kāi)銷增長(zhǎng)是可接受的.

        4 結(jié)論與展望

        本文針對(duì)持續(xù)集成測(cè)試優(yōu)化的強(qiáng)化學(xué)習(xí)方法,從獎(jiǎng)勵(lì)函數(shù)設(shè)計(jì)和獎(jiǎng)勵(lì)策略兩方面研究強(qiáng)化學(xué)習(xí)的獎(jiǎng)勵(lì)機(jī)制,提出了包含測(cè)試用例歷史執(zhí)行信息的獎(jiǎng)勵(lì)函數(shù),用于基于強(qiáng)化學(xué)習(xí)的持續(xù)集成測(cè)試優(yōu)化.基于測(cè)試用例歷史執(zhí)行信息,考慮到其歷史失效分布對(duì)排序結(jié)果的影響,定義了平均歷史執(zhí)行失效率,并提出了兩種獎(jiǎng)勵(lì)函數(shù)——基于測(cè)試用例歷史執(zhí)行失效次數(shù)獎(jiǎng)勵(lì)與基于測(cè)試用例平均歷史執(zhí)行失效率獎(jiǎng)勵(lì).HFC獎(jiǎng)勵(lì)與 APHF獎(jiǎng)勵(lì)不僅包含測(cè)試用例當(dāng)前執(zhí)行結(jié)果,還包括其歷史執(zhí)行結(jié)果,APHF考慮了測(cè)試用例歷史失效的分布因素.在 3個(gè)大型工業(yè)數(shù)據(jù)集上進(jìn)行對(duì)比實(shí)驗(yàn),結(jié)果表明:(1) 相對(duì)于不含歷史信息的獎(jiǎng)勵(lì)函數(shù),使用包含測(cè)試用例歷史失效信息的獎(jiǎng)勵(lì)函數(shù),所得測(cè)試序列的檢錯(cuò)能力得到明顯提高;(2) 測(cè)試用例歷史失效分布信息有助于發(fā)現(xiàn)潛在易失效的測(cè)試用例;(3) 整體獎(jiǎng)勵(lì)與部分獎(jiǎng)勵(lì)兩種獎(jiǎng)勵(lì)策略受到被測(cè)程序的多種因素影響,需要根據(jù)實(shí)際情況具體選擇;(4) 包含歷史信息的獎(jiǎng)勵(lì)函數(shù)時(shí)間消耗有所增加,但對(duì)于都在秒級(jí),不會(huì)對(duì)持續(xù)集成測(cè)試效率造成很大影響.

        在未來(lái)工作中,可以考慮:(1) 基于強(qiáng)化學(xué)習(xí)的多目標(biāo)的測(cè)試用例優(yōu)先排序技術(shù);(2) 使用測(cè)試用例的其他信息,如覆蓋信息、修改信息、相似度信息等;(3) 結(jié)合大規(guī)模神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)方法,對(duì)強(qiáng)化學(xué)習(xí)的智能體進(jìn)行優(yōu)化.

        猜你喜歡
        失效率測(cè)試用例排序
        PHMSA和EGIG的天然氣管道失效率對(duì)比研究
        化工管理(2023年17期)2023-06-16 05:56:54
        Archimedean copula刻畫(huà)的尺度比例失效率模型的極小次序統(tǒng)計(jì)量的隨機(jī)序
        排序不等式
        基于SmartUnit的安全通信系統(tǒng)單元測(cè)試用例自動(dòng)生成
        恐怖排序
        深入理解失效率和返修率?
        節(jié)日排序
        基于混合遺傳算法的回歸測(cè)試用例集最小化研究
        刻舟求劍
        兒童繪本(2018年5期)2018-04-12 16:45:32
        基于依賴結(jié)構(gòu)的測(cè)試用例優(yōu)先級(jí)技術(shù)
        久99久精品免费视频热77| 亚洲中文字幕久久精品无码喷水| 亚洲熟妇丰满大屁股熟妇| 少妇装睡让我滑了进去| 黄色毛片视频免费| 精品国产一品二品三品| 邻居美少妇张开腿让我爽了一夜| 国产伦精品免编号公布| 天天av天天爽无码中文| 日本熟妇精品一区二区三区| 国产黄色三级一区二区三区四区| 国产一区二区三区毛片| 丰满熟妇人妻av无码区 | 亚洲色无码播放| 精品无人区无码乱码大片国产| 一级做a爱视频在线播放| 99视频一区二区日本| 久久国产劲爆∧v内射-百度 | 日本久久精品免费播放| 青青久久精品一本一区人人| 超碰人人超碰人人| 国产精品.xx视频.xxtv| 久久久久国产精品四虎| 日本一区二区免费高清| 99精品国产一区二区三区不卡| 西西人体444www大胆无码视频| 97久久久久人妻精品专区| 中文亚洲成a人片在线观看| 亚洲av高清一区二区三区| 久久久精品一区aaa片| 五月天婷婷综合网| 国产精品自线在线播放| 国产精品女主播在线播放| 蜜臀av无码人妻精品| 久久AⅤ无码精品为人妻系列 | 伊人网在线视频观看| 少妇激情一区二区三区| 亚洲第一幕一区二区三区在线观看| 国产人妻丰满熟妇嗷嗷叫| 天天综合天天色| 白色白色白色在线观看视频|