本發(fā)明屬于軟件測(cè)試技術(shù)領(lǐng)域,尤其涉及一種終端應(yīng)用的模型構(gòu)建方法及裝置。
背景技術(shù):
隨著移動(dòng)互聯(lián)網(wǎng)時(shí)代的到來(lái),終端應(yīng)用軟件得到了迅速發(fā)展。對(duì)于應(yīng)用開發(fā)者而言,快速地推出應(yīng)用有助于占領(lǐng)市場(chǎng),從而贏得更多的用戶,因此應(yīng)用的測(cè)試周期較短。但未經(jīng)細(xì)致測(cè)試的應(yīng)用將可能包含有未知異常及錯(cuò)誤,應(yīng)用軟件的功能不能實(shí)現(xiàn)。應(yīng)用開發(fā)者的一大難題便是如何對(duì)開發(fā)的應(yīng)用進(jìn)行高效充分的測(cè)試,從而減少應(yīng)用可能存在的異常及錯(cuò)誤,提升應(yīng)用產(chǎn)品的質(zhì)量。
相對(duì)于人工測(cè)試,自動(dòng)化測(cè)試是對(duì)應(yīng)用進(jìn)行高效測(cè)試的方法。其中,基于模型的測(cè)試方法可以通過(guò)模型對(duì)應(yīng)用進(jìn)行自動(dòng)化的測(cè)試,對(duì)應(yīng)用能夠起到良好的測(cè)試效果。但目前終端應(yīng)用的模型構(gòu)建過(guò)程較為復(fù)雜,且當(dāng)開發(fā)人員對(duì)應(yīng)用程序進(jìn)行一些功能補(bǔ)充后,模型需要重新構(gòu)建。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例的目的在于提供一種終端應(yīng)用的模型構(gòu)建方法及裝置,旨在解決終端應(yīng)用的模型構(gòu)建過(guò)程較為復(fù)雜,且當(dāng)開發(fā)人員對(duì)應(yīng)用程序進(jìn)行一些功能補(bǔ)充后,模型需要重新構(gòu)建的問(wèn)題。
本發(fā)明實(shí)施例是這樣實(shí)現(xiàn)的,一種終端應(yīng)用的模型構(gòu)建方法,包括:
獲取終端應(yīng)用正常運(yùn)行時(shí)從應(yīng)用啟動(dòng)到應(yīng)用關(guān)閉之間的狀態(tài)序列,所述狀態(tài)序列中的狀態(tài)包括用戶輸入的操作指令和運(yùn)行過(guò)程中發(fā)生跳轉(zhuǎn)的界面包名;
將獲取到的多個(gè)狀態(tài)序列組成行為訓(xùn)練集,終端應(yīng)用的任一狀態(tài)至少包含在所述多個(gè)狀態(tài)序列的其中一個(gè)狀態(tài)序列之中;
基于所述行為訓(xùn)練集,構(gòu)建關(guān)于所述應(yīng)用運(yùn)行的馬爾科夫測(cè)試模型。
本發(fā)明實(shí)施例的另一目的在于提供一種終端應(yīng)用的模型構(gòu)建裝置,包括:
獲取單元,用于獲取終端應(yīng)用正常運(yùn)行時(shí)從應(yīng)用啟動(dòng)到應(yīng)用關(guān)閉之間的狀態(tài)序列,所述狀態(tài)序列中的狀態(tài)包括用戶輸入的操作指令和運(yùn)行過(guò)程中發(fā)生跳轉(zhuǎn)的界面包名;
組成單元,用于將獲取到的多個(gè)狀態(tài)序列組成行為訓(xùn)練集,終端應(yīng)用的任一狀態(tài)至少包含在所述多個(gè)狀態(tài)序列的其中一個(gè)狀態(tài)序列之中;
構(gòu)建單元,用于基于所述行為訓(xùn)練集,構(gòu)建關(guān)于所述應(yīng)用運(yùn)行的馬爾科夫測(cè)試模型。
本發(fā)明實(shí)施例中,終端應(yīng)用運(yùn)行過(guò)程中的操作指令和發(fā)生跳轉(zhuǎn)的界面包名組成狀態(tài)序列,由多個(gè)狀態(tài)序列組成訓(xùn)練集,構(gòu)建終端應(yīng)用測(cè)試的馬爾科夫測(cè)試模型。本發(fā)明實(shí)施例終端應(yīng)用的模型構(gòu)建過(guò)程簡(jiǎn)單,并且可以通過(guò)在行為訓(xùn)練集中添加狀態(tài)序列,在原有測(cè)試模型上進(jìn)行改善,避免了若應(yīng)用功能有所修改,必須全部重建模型的情況,提高了終端應(yīng)用的模型構(gòu)建效率。
附圖說(shuō)明
圖1是本發(fā)明實(shí)施例提供的終端應(yīng)用的模型構(gòu)建方法的實(shí)現(xiàn)流程圖;
圖2是本發(fā)明實(shí)施例提供的終端應(yīng)用的模型構(gòu)建方法S103的具體實(shí)現(xiàn)流程圖;
圖3是本發(fā)明實(shí)施例提供的終端應(yīng)用的模型構(gòu)建裝置的結(jié)構(gòu)框圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
本發(fā)明實(shí)施例中,終端應(yīng)用運(yùn)行過(guò)程中的操作指令和發(fā)生跳轉(zhuǎn)的界面包名組成狀態(tài)序列,由多個(gè)狀態(tài)序列組成訓(xùn)練集,構(gòu)建終端應(yīng)用測(cè)試的馬爾科夫測(cè)試模型。本發(fā)明實(shí)施例終端應(yīng)用的模型構(gòu)建過(guò)程簡(jiǎn)單,并且可以通過(guò)在行為訓(xùn)練集中添加狀態(tài)序列,在原有測(cè)試模型上進(jìn)行改善,避免了若應(yīng)用功能有所修改,必須全部重建模型的情況,提高了終端應(yīng)用的模型構(gòu)建效率。
終端包括手機(jī)、平板電腦、筆記本、智能電視等可以安裝并運(yùn)行應(yīng)用程序的終端設(shè)備。操作指令指終端接收到的用戶在使用應(yīng)用時(shí)通過(guò)輸入操作所觸發(fā)的指令,如返回、設(shè)置、進(jìn)入等指令。輸入操作包括按鍵操作、滑動(dòng)操作、點(diǎn)擊操作等。終端根據(jù)所接收到的操作指令使應(yīng)用執(zhí)行相應(yīng)的界面切換、窗口彈出等動(dòng)作。
應(yīng)用程序的界面是由各種UI組件組成。UI組件包括文件、圖片、動(dòng)畫顯示組件、按鈕、選擇框組件等等。每一個(gè)界面根據(jù)其界面對(duì)應(yīng)有唯一的界面包名??梢愿鶕?jù)界面包名區(qū)分不同的界面。
馬爾科夫(Markov)模型是基于馬爾科夫鏈的一種數(shù)學(xué)統(tǒng)計(jì)中的概率模型。其中,馬爾科夫鏈用來(lái)描述狀態(tài)和時(shí)間都離散的Markov隨機(jī)過(guò)程。定義如下:
定義一:若{Xn,n=0,1,2,...}是一個(gè)離散的隨機(jī)過(guò)程,其狀態(tài)集為Ω={θ1,θ2,...,θN},則對(duì)于任何k≥1,n0<n1<...<nk-1<m<n,有隨機(jī)序列在n時(shí)刻所處的狀態(tài)為sn的概率只與它在m時(shí)刻所處的狀態(tài)sm有關(guān),而與m時(shí)刻之前它所處的狀態(tài)無(wú)關(guān)。即:
其中,s1,s2,...,sm,sn∈Ω={θ1,θ2,...,θN},則稱{Xn,n=0,1,2,...}為馬爾科夫鏈。
定義二:對(duì)于N個(gè)狀態(tài)的Markov鏈{Xn,n=0,1,2,...,N},稱Pij(n,n+k)=P(Xn+k=θj|Xn=θi),1≤i,j≤N為Markov鏈的k步轉(zhuǎn)移概率;如果Pij(n,n+k)與n無(wú)關(guān),則稱該Markov鏈為齊次Markov鏈,此時(shí)Pij(n,n+k)=Pij(k)。特別的,當(dāng)k=1時(shí),Pij(1)稱為一步轉(zhuǎn)移概率,簡(jiǎn)稱轉(zhuǎn)移概率,記為aij,0≤aij≤1,并稱A=(aij)N×N為狀態(tài)轉(zhuǎn)移概率矩陣,即狀態(tài)轉(zhuǎn)移序列。本文采用一階齊次Markov鏈。
定義三:對(duì)于N個(gè)狀態(tài)的Markov鏈{Xn,n=0,1,2,...,N},記πi=P(Xi=θi)并稱矢量π=(π1,π2,...,πN)為初始狀態(tài)概率矢量。
圖1示出了本發(fā)明實(shí)施例提供的終端應(yīng)用的模型構(gòu)建方法的實(shí)現(xiàn)流程,詳述如下:
在S101中,獲取終端應(yīng)用正常運(yùn)行時(shí)從應(yīng)用啟動(dòng)到應(yīng)用關(guān)閉之間的狀態(tài)序列,所述狀態(tài)序列中的狀態(tài)包括用戶輸入的操作指令和運(yùn)行過(guò)程中發(fā)生跳轉(zhuǎn)的界面包名。
在本實(shí)施例中,終端應(yīng)用正常運(yùn)行是指在用戶操作和界面跳轉(zhuǎn)都沒有發(fā)生運(yùn)行錯(cuò)誤。狀態(tài)序列為按照應(yīng)用跳轉(zhuǎn)的先后順序進(jìn)行排列的一組狀態(tài)。每個(gè)狀態(tài)都是由一個(gè)操作指令和該操作指令使應(yīng)用界面跳轉(zhuǎn)后的界面包名組成。狀態(tài)序列的起始狀態(tài)為打開應(yīng)用的操作指令和應(yīng)用的主界面,狀態(tài)序列的最終狀態(tài)為關(guān)閉應(yīng)用的操作指令和應(yīng)用的退出界面。
狀態(tài)序列的獲取可以通過(guò)獲取設(shè)計(jì)人員提供的終端應(yīng)用能夠?qū)崿F(xiàn)的界面跳轉(zhuǎn)過(guò)程中的操作指令和應(yīng)用界面跳轉(zhuǎn)的界面包名,將多個(gè)狀態(tài)按照時(shí)間先后順序排列為狀態(tài)序列?;蛘咄ㄟ^(guò)實(shí)際對(duì)應(yīng)用軟件進(jìn)行操作,記錄下應(yīng)用運(yùn)行過(guò)程中的操作指令和應(yīng)用界面跳轉(zhuǎn)的界面包名,組合為狀態(tài)后按照記錄時(shí)間的先后順序排列為狀態(tài)序列。
例如,狀態(tài)序列:打開指令,應(yīng)用主界面,設(shè)置指令,設(shè)置界面,安全設(shè)置指令,安全設(shè)置界面,退出指令,退出界面。其中,打開指令和應(yīng)用主界面為一個(gè)狀態(tài),設(shè)置指令和設(shè)置界面為一個(gè)狀態(tài),安全設(shè)置指令和安全設(shè)置界面為一個(gè)狀態(tài),退出指令和退出界面為一個(gè)狀態(tài)。整個(gè)狀態(tài)序列由四個(gè)不同的狀態(tài)按照時(shí)間先后排列而成。
在S102中,將獲取到的多個(gè)狀態(tài)序列組成行為訓(xùn)練集,終端應(yīng)用的任一狀態(tài)至少包含在所述多個(gè)狀態(tài)序列的其中一個(gè)狀態(tài)序列之中。
在本實(shí)施例中,多個(gè)狀態(tài)序列是指多個(gè)不同的狀態(tài)序列,且在這些序列中包含了終端應(yīng)用能夠?qū)崿F(xiàn)的所有狀態(tài)。即,終端應(yīng)用能夠?qū)崿F(xiàn)的任何一個(gè)狀態(tài)都在狀態(tài)序列中至少出現(xiàn)一次。這些狀態(tài)序列一起形成行為訓(xùn)練集。行為訓(xùn)練集用于構(gòu)建馬爾科夫測(cè)試模型。行為訓(xùn)練集中的狀態(tài)序列數(shù)目越多,所構(gòu)建的模型能夠測(cè)試的項(xiàng)目越多,測(cè)試的也更為精準(zhǔn)。
為方便敘述,此處將用戶輸入的操作指令和該指令指后發(fā)生跳轉(zhuǎn)的界面包名組成的狀態(tài)稱為一次原子操作。如打開指令和應(yīng)用主界面為一次原子操作。設(shè)終端應(yīng)用的行為訓(xùn)練集包含M個(gè)狀態(tài)序列,分別記為R1,R2,R3,...RM。其中第i個(gè)狀態(tài)序列記為Ri中的表示按照時(shí)間相對(duì)順序排列的第j(1≤j≤r(i))個(gè)原子操作。
在S103中,基于所述行為訓(xùn)練集,構(gòu)建關(guān)于所述應(yīng)用運(yùn)行的馬爾科夫測(cè)試模型。
即,根據(jù)行為訓(xùn)練集中所有的狀態(tài)序列,構(gòu)建用于測(cè)試終端應(yīng)用的馬爾科夫測(cè)試模型。
作為本發(fā)明的一個(gè)實(shí)施例,如圖2所示,S103中,基于所述行為訓(xùn)練集,構(gòu)建馬關(guān)于所述應(yīng)用運(yùn)行的爾科夫測(cè)試模型,包括:
在S201中,將所述多個(gè)狀態(tài)序列中的所有狀態(tài)組成一個(gè)集合,集合中相同的狀態(tài)用一個(gè)狀態(tài)表示,形成馬爾科夫測(cè)試模型的狀態(tài)集合。
其中,馬爾科夫測(cè)試模型的狀態(tài)集合為這些狀態(tài)序列中出現(xiàn)過(guò)的所有不同狀態(tài)的集合。這些序列中相同的多個(gè)狀態(tài)只作為一個(gè)狀態(tài)加入馬爾科夫測(cè)試模型的狀態(tài)集合。此處將狀態(tài)集合記為
在S202中,基于所述行為訓(xùn)練集,計(jì)算馬爾科夫測(cè)試模型的初始狀態(tài)概率矢量和狀態(tài)轉(zhuǎn)移概率矩陣。
在本實(shí)施例中,行為訓(xùn)練集包含多個(gè)狀態(tài)序列,根據(jù)這些多個(gè)狀態(tài)序列來(lái)計(jì)算馬爾科夫測(cè)試模型的模型參數(shù)。模型參數(shù)包括狀態(tài)集合、初始狀態(tài)概率矢量和狀態(tài)轉(zhuǎn)移概率矩陣。
其中,初始狀態(tài)概率矢量為馬爾科夫測(cè)試模型中各狀態(tài)在初始時(shí)刻出現(xiàn)的概率。對(duì)于N個(gè)狀態(tài)的Markov鏈{Xn,n=0,1,2,...,N},記πi=P(Xi=θi)并稱矢量π=(π1,π2,...,πN)為初始狀態(tài)概率矢量。
初始狀態(tài)概率矢量π=(π1,π2,...,πN)用于描述各個(gè)原子操作在初始時(shí)刻出現(xiàn)的概率,初始狀態(tài)概率矢量π=(π1,π2,...,πN)的具體計(jì)算方式如下:
統(tǒng)計(jì)狀態(tài)集合中每個(gè)狀態(tài)(即每個(gè)原子操作)在行為訓(xùn)練集R={R1,R2,R3,...,RM}中出現(xiàn)的次數(shù)以及它們之間互相轉(zhuǎn)移的次數(shù)。設(shè)任意一個(gè)第一狀態(tài)在行為訓(xùn)練集R中出現(xiàn)的次數(shù)為Ci,所有第一狀態(tài)在行為訓(xùn)練集R中出現(xiàn)的次數(shù)為r,則
狀態(tài)轉(zhuǎn)移概率矩陣A=(aij)N×N描述各個(gè)原子操作之間的時(shí)序相關(guān)性。狀態(tài)轉(zhuǎn)移概率矩陣A=(aij)N×N的計(jì)算方式如下:
設(shè)在行為訓(xùn)練集R中,原子操作向轉(zhuǎn)移的次數(shù)為Zij,即序列在行為訓(xùn)練集中出現(xiàn)的次數(shù),并設(shè)在行為訓(xùn)練集中原子操作向各個(gè)原子操作轉(zhuǎn)移的總次數(shù)為Yi,則
作為本發(fā)明的一個(gè)實(shí)施例,當(dāng)測(cè)試產(chǎn)生的狀態(tài)序列和所述行為訓(xùn)練集中的所有狀態(tài)序列都不相同時(shí),則將該狀態(tài)序列添加到所述行為訓(xùn)練集中。
在本實(shí)施例中,將測(cè)試產(chǎn)生的狀態(tài)序列和行為訓(xùn)練集中的狀態(tài)序列進(jìn)行對(duì)比。如果測(cè)試產(chǎn)生的狀態(tài)序列和行為訓(xùn)練集中的任一狀態(tài)序列都不相同,則將該狀態(tài)序列添加到行為訓(xùn)練集中。
因?yàn)轳R爾科夫測(cè)試模型是基于行為訓(xùn)練集進(jìn)行構(gòu)建的。行為訓(xùn)練集中的狀態(tài)序列數(shù)目越多,所構(gòu)建出的測(cè)試模型對(duì)終端應(yīng)用的測(cè)試越準(zhǔn)確。將測(cè)試過(guò)程中產(chǎn)生的新的行為序列加入到測(cè)試模型的行為訓(xùn)練集中,之后再利用該行為訓(xùn)練集對(duì)原有測(cè)試模型進(jìn)行改善。這樣可以使測(cè)試模型在測(cè)試過(guò)程中進(jìn)一步改善,隨著測(cè)試次數(shù)和測(cè)試生成的狀態(tài)序列的增多,進(jìn)一步提高測(cè)試模型的測(cè)試準(zhǔn)確度。
當(dāng)終端應(yīng)用的設(shè)計(jì)人員對(duì)應(yīng)用的界面跳轉(zhuǎn)功能進(jìn)行改進(jìn)時(shí),可以在行為訓(xùn)練集中刪除改進(jìn)后應(yīng)用不能實(shí)現(xiàn)的狀態(tài)序列,添加改進(jìn)后應(yīng)用新增的能夠?qū)崿F(xiàn)的狀態(tài)序列。這樣可以在應(yīng)用功能改進(jìn)時(shí),對(duì)測(cè)試模型也進(jìn)行改進(jìn),從而避免應(yīng)用功能發(fā)生改進(jìn)時(shí)測(cè)試模型需要完全重建的情況發(fā)生,提高測(cè)試模型的構(gòu)建效率。
作為本發(fā)明的一個(gè)實(shí)施例,所述馬爾科夫測(cè)試模型包括概率數(shù)據(jù)庫(kù),所述概率數(shù)據(jù)庫(kù)中的概率為所述行為訓(xùn)練集中的狀態(tài)序列對(duì)應(yīng)的概率。
在本實(shí)施例中,根據(jù)初始狀態(tài)概率矢量和狀態(tài)轉(zhuǎn)移概率矩陣來(lái)計(jì)算行為訓(xùn)練集中的狀態(tài)序列的概率,并將這些概率加入到馬爾科夫測(cè)試模型的概率數(shù)據(jù)庫(kù)中。這樣當(dāng)進(jìn)行終端應(yīng)用的測(cè)試時(shí),可以根據(jù)初始狀態(tài)概率矢量和狀態(tài)轉(zhuǎn)移概率矩陣計(jì)算測(cè)試生成的狀態(tài)序列的概率。通過(guò)將計(jì)算出的概率與概率數(shù)據(jù)庫(kù)中的概率進(jìn)行對(duì)比,判斷出測(cè)試生成的狀態(tài)序列是否正確。
如果計(jì)算出的概率與概率數(shù)據(jù)庫(kù)中的某一概率相同,則表明該測(cè)試生成的狀態(tài)序列為正常序列,測(cè)試過(guò)程中的用戶輸入的操作指令和發(fā)生跳轉(zhuǎn)的界面全部正常。
作為本發(fā)明的一個(gè)實(shí)施例,當(dāng)測(cè)試產(chǎn)生的狀態(tài)序列和所述行為訓(xùn)練集中的所有狀態(tài)序列都不相同時(shí),計(jì)算出該行為序列對(duì)應(yīng)的概率,添加到所述概率數(shù)據(jù)庫(kù)中。
在本實(shí)施例中,當(dāng)測(cè)試產(chǎn)生的狀態(tài)序列和所述行為訓(xùn)練集中的所有狀態(tài)序列都不相同時(shí),則根據(jù)初始狀態(tài)概率矢量和狀態(tài)轉(zhuǎn)移概率矩陣來(lái)計(jì)算該行為序列對(duì)應(yīng)的概率,并將計(jì)算出的概率加入到概率數(shù)據(jù)庫(kù)中。
隨著測(cè)試進(jìn)行,測(cè)試生成的狀態(tài)序列將會(huì)增多。有些狀態(tài)序列可能不屬于行為訓(xùn)練集。此時(shí)可以計(jì)算出這些狀態(tài)序列的概率補(bǔ)充到概率數(shù)據(jù)庫(kù)中。這樣隨著測(cè)試過(guò)程的進(jìn)行,該測(cè)試模型的測(cè)試效率和測(cè)試精度可以得到有效的提高。
作為本發(fā)明的一個(gè)實(shí)施例,所述方法還包括:
監(jiān)聽測(cè)試過(guò)程中終端應(yīng)用的用戶輸入的操作指令和運(yùn)行過(guò)程中發(fā)生跳轉(zhuǎn)的界面包名,生成由測(cè)試狀態(tài)排列成的測(cè)試狀態(tài)序列;所述測(cè)試狀態(tài)包括用戶輸入的操作指令和運(yùn)行過(guò)程中發(fā)生跳轉(zhuǎn)的界面包名。
根據(jù)所述馬爾科夫測(cè)試模型的初始狀態(tài)概率矢量和狀態(tài)轉(zhuǎn)移概率矩陣,計(jì)算所述測(cè)試狀態(tài)序列對(duì)應(yīng)的概率。
將所述測(cè)試狀態(tài)序列對(duì)應(yīng)的概率和所述概率數(shù)據(jù)庫(kù)中的概率進(jìn)行匹配,根據(jù)匹配結(jié)果,判斷所述測(cè)試狀態(tài)序列中的界面跳轉(zhuǎn)是否正常。
在本實(shí)施例中,監(jiān)聽并記錄測(cè)試過(guò)程中從應(yīng)用啟動(dòng)到應(yīng)用關(guān)閉之間用戶輸入的操作指令和運(yùn)行過(guò)程中發(fā)生跳轉(zhuǎn)的界面包名。將所述用戶輸入的操作指令和運(yùn)行過(guò)程中發(fā)生跳轉(zhuǎn)的界面包名組合成測(cè)試狀態(tài)。將測(cè)試狀態(tài)按照時(shí)間順序排列成測(cè)試狀態(tài)序列。然后根據(jù)所述馬爾科夫測(cè)試模型的初始狀態(tài)概率矢量和狀態(tài)轉(zhuǎn)移概率矩陣,計(jì)算所述測(cè)試狀態(tài)序列對(duì)應(yīng)的概率。
所述根據(jù)匹配結(jié)果,判斷所述測(cè)試狀態(tài)序列中的界面跳轉(zhuǎn)是否正常,包括:如果所述測(cè)試狀態(tài)序列對(duì)應(yīng)的概率和所述概率數(shù)據(jù)庫(kù)中的某個(gè)概率相同,則所述測(cè)試狀態(tài)序列中所有界面跳轉(zhuǎn)都正常。如果所述測(cè)試狀態(tài)序列對(duì)應(yīng)的概率和所述概率數(shù)據(jù)庫(kù)中的概率都不相同,則所述測(cè)試狀態(tài)序列中至少有一次界面跳轉(zhuǎn)異常。
當(dāng)所述測(cè)試狀態(tài)序列對(duì)應(yīng)的概率和所述概率數(shù)據(jù)庫(kù)中的概率都不相同時(shí),對(duì)比所述測(cè)試狀態(tài)序列和所述行為訓(xùn)練集中的狀態(tài)序列,確定所述測(cè)試狀態(tài)序列中界面跳轉(zhuǎn)發(fā)生異常的操作指令和界面包名。這樣可以通過(guò)測(cè)試模型發(fā)現(xiàn)被測(cè)應(yīng)用中哪個(gè)界面跳轉(zhuǎn)步驟發(fā)生錯(cuò)誤。設(shè)計(jì)人員可以據(jù)此進(jìn)行相應(yīng)的調(diào)整,提高測(cè)試效率。
本發(fā)明實(shí)施例中,終端應(yīng)用運(yùn)行過(guò)程中的操作指令和發(fā)生跳轉(zhuǎn)的界面包名組成狀態(tài)序列,由多個(gè)狀態(tài)序列組成訓(xùn)練集,構(gòu)建終端應(yīng)用測(cè)試的馬爾科夫測(cè)試模型。本發(fā)明實(shí)施例終端應(yīng)用的模型構(gòu)建過(guò)程簡(jiǎn)單,并且可以通過(guò)在行為訓(xùn)練集中添加狀態(tài)序列,在原有測(cè)試模型上進(jìn)行改善,避免了若應(yīng)用功能有所修改,必須全部重建模型的情況,提高了終端應(yīng)用的模型構(gòu)建效率。
應(yīng)理解,在本發(fā)明實(shí)施例中,上述各過(guò)程的序號(hào)的大小并不意味著執(zhí)行順序的先后,各過(guò)程的執(zhí)行順序應(yīng)以其功能和內(nèi)在邏輯確定,而不應(yīng)對(duì)本發(fā)明實(shí)施例的實(shí)施過(guò)程構(gòu)成任何限定。
對(duì)應(yīng)于本發(fā)明實(shí)施例所提供的終端應(yīng)用的模型構(gòu)建方法,圖3示出了本發(fā)明實(shí)施例提供的終端應(yīng)用的模型構(gòu)建裝置的結(jié)構(gòu)框圖。為了便于說(shuō)明,僅示出了與本實(shí)施例相關(guān)的部分。
參照?qǐng)D3,該終端應(yīng)用的模型構(gòu)建裝置包括:
獲取單元31,用于獲取終端應(yīng)用正常運(yùn)行時(shí)從應(yīng)用啟動(dòng)到應(yīng)用關(guān)閉之間的狀態(tài)序列,所述狀態(tài)序列中的狀態(tài)包括用戶輸入的操作指令和運(yùn)行過(guò)程中發(fā)生跳轉(zhuǎn)的界面包名。
組成單元32,用于將獲取到的多個(gè)狀態(tài)序列組成行為訓(xùn)練集,終端應(yīng)用的任一狀態(tài)至少包含在所述多個(gè)狀態(tài)序列的其中一個(gè)狀態(tài)序列之中。
構(gòu)建單元33,用于基于所述行為訓(xùn)練集,構(gòu)建關(guān)于所述應(yīng)用運(yùn)行的馬爾科夫測(cè)試模型。
優(yōu)選地,所述構(gòu)建單元33用于:
將所述多個(gè)狀態(tài)序列中的所有狀態(tài)組成一個(gè)集合,集合中相同的狀態(tài)用一個(gè)狀態(tài)表示,形成馬爾科夫測(cè)試模型的狀態(tài)集合。
基于所述行為訓(xùn)練集,計(jì)算馬爾科夫測(cè)試模型的初始狀態(tài)概率矢量和狀態(tài)轉(zhuǎn)移概率矩陣。
優(yōu)選地,所述裝置還包括添加單元,所述添加單元用于:
當(dāng)測(cè)試產(chǎn)生的狀態(tài)序列和所述行為訓(xùn)練集中的所有狀態(tài)序列都不相同時(shí),則將該狀態(tài)序列添加到所述行為訓(xùn)練集中。
優(yōu)選地,所述馬爾科夫測(cè)試模型包括概率數(shù)據(jù)庫(kù),所述概率數(shù)據(jù)庫(kù)中的概率為所述行為訓(xùn)練集中的狀態(tài)序列對(duì)應(yīng)的概率。
優(yōu)選地,所述裝置還包括計(jì)算單元,所述計(jì)算單元用于:
當(dāng)測(cè)試產(chǎn)生的狀態(tài)序列和所述行為訓(xùn)練集中的所有狀態(tài)序列都不相同時(shí),計(jì)算出該行為序列對(duì)應(yīng)的概率,添加到所述概率數(shù)據(jù)庫(kù)中。
本發(fā)明實(shí)施例中,終端應(yīng)用運(yùn)行過(guò)程中的操作指令和發(fā)生跳轉(zhuǎn)的界面包名組成狀態(tài)序列,由多個(gè)狀態(tài)序列組成訓(xùn)練集,構(gòu)建終端應(yīng)用測(cè)試的馬爾科夫測(cè)試模型。本發(fā)明實(shí)施例終端應(yīng)用的模型構(gòu)建過(guò)程簡(jiǎn)單,并且可以通過(guò)在行為訓(xùn)練集中添加狀態(tài)序列,在原有測(cè)試模型上進(jìn)行改善,避免了若應(yīng)用功能有所修改,必須全部重建模型的情況,提高了終端應(yīng)用的模型構(gòu)建效率。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。