
本申請(qǐng)涉及軟件測(cè)試
技術(shù)領(lǐng)域:
,更具體地說,涉及一種測(cè)試用例確定方法及裝置。
背景技術(shù):
:在軟件開發(fā)過程中,對(duì)于制作完成的某一版本的軟件,需要由技術(shù)人員對(duì)軟件功能進(jìn)行測(cè)試,這個(gè)過程會(huì)用到測(cè)試用例。測(cè)試用例可以看作一組條件或變量,測(cè)試者根據(jù)測(cè)試用例來確定軟件是否正確工作。對(duì)應(yīng)一款軟件而言,根據(jù)軟件的功能多少,測(cè)試用例可以有多個(gè),舉例如,對(duì)于一個(gè)下載軟件,其功能包括正常下載、暫停、下載完成后自動(dòng)安裝、連續(xù)下載。為了測(cè)試這款軟件是否正確工作,至少需要對(duì)每個(gè)功能均設(shè)置至少一個(gè)測(cè)試用例,用于測(cè)試對(duì)應(yīng)功能是否能夠正確實(shí)現(xiàn)。針對(duì)同一款軟件,在軟件開發(fā)過程可能會(huì)提交多個(gè)版本?,F(xiàn)有技術(shù)在每提交一個(gè)新版本時(shí),對(duì)該版本的軟件進(jìn)行全量測(cè)試用例覆蓋,然后根據(jù)測(cè)試結(jié)果確定軟件的各個(gè)功能是否正常實(shí)現(xiàn)。由于新版本軟件可能僅對(duì)舊版本軟件的某些功能進(jìn)行改造,二者間大部分功能仍相同,因此現(xiàn)有技術(shù)對(duì)每個(gè)新版本軟件均進(jìn)行全量測(cè)試用例覆蓋的方案存在部分測(cè)試用例重復(fù)測(cè)試的問題,增加了測(cè)試時(shí)間。技術(shù)實(shí)現(xiàn)要素:有鑒于此,本申請(qǐng)?zhí)峁┝艘环N測(cè)試用例確定方法及裝置,用于解決現(xiàn)有對(duì)每個(gè)新版本軟件均進(jìn)行全量測(cè)試用例覆蓋的方法所存在的部分測(cè)試用例重復(fù)測(cè)試、增加測(cè)試時(shí)間的問題。為了實(shí)現(xiàn)上述目的,現(xiàn)提出的方案如下:一種測(cè)試用例確定方法,包括:響應(yīng)目標(biāo)軟件的第一和第二兩個(gè)版本的對(duì)比請(qǐng)求,對(duì)第一和第二兩個(gè)版本的目標(biāo)軟件的代碼進(jìn)行差異化比較,確定第二版本目標(biāo)軟件中的改動(dòng)代碼,其中第一版本目標(biāo)軟件為已經(jīng)完成過測(cè)試的目標(biāo)軟件,第二版本目標(biāo)軟件為待測(cè)試的目標(biāo)軟件;確定所述改動(dòng)代碼所涉及的目標(biāo)函數(shù),其中所述目標(biāo)函數(shù)包括改動(dòng)代碼所含有的函數(shù),以及與改動(dòng)代碼所含有的函數(shù)具備調(diào)用關(guān)系的函數(shù);確定所述目標(biāo)函數(shù)所對(duì)應(yīng)的測(cè)試用例。一種測(cè)試用例確定裝置,包括:差異化比較單元,用于響應(yīng)目標(biāo)軟件的第一和第二兩個(gè)版本的對(duì)比請(qǐng)求,對(duì)第一和第二兩個(gè)版本的目標(biāo)軟件的代碼進(jìn)行差異化比較,確定第二版本目標(biāo)軟件中的改動(dòng)代碼,其中第一版本目標(biāo)軟件為已經(jīng)完成過測(cè)試的目標(biāo)軟件,第二版本目標(biāo)軟件為待測(cè)試的目標(biāo)軟件;函數(shù)確定單元,用于確定所述改動(dòng)代碼所涉及的目標(biāo)函數(shù),其中所述目標(biāo)函數(shù)包括改動(dòng)代碼所含有的函數(shù),以及與改動(dòng)代碼所含有的函數(shù)具備調(diào)用關(guān)系的函數(shù);函數(shù)對(duì)應(yīng)單元,用于確定所述目標(biāo)函數(shù)所對(duì)應(yīng)的測(cè)試用例。從上述的技術(shù)方案可以看出,本申請(qǐng)實(shí)施例提供的測(cè)試用例確定方法,在響應(yīng)第一和第二兩個(gè)版本的目標(biāo)軟件的對(duì)比請(qǐng)求時(shí),對(duì)兩個(gè)版本的代碼進(jìn)行差異化比較,確定出第二版本目標(biāo)軟件中的改動(dòng)代碼,進(jìn)一步確定改動(dòng)代碼所涉及的目標(biāo)函數(shù),這里目標(biāo)函數(shù)包括改動(dòng)代碼所含有的函數(shù)以及與改動(dòng)代碼所含有的函數(shù)具備調(diào)用關(guān)系的函數(shù),最后確定出目標(biāo)函數(shù)所對(duì)應(yīng)的測(cè)試用例,這部分測(cè)試用例用于對(duì)第二版本的目標(biāo)軟件進(jìn)行測(cè)試。由于第一版本目標(biāo)軟件為已經(jīng)完成過測(cè)試的目標(biāo)軟件,其已經(jīng)測(cè)試過各個(gè)功能,本申請(qǐng)通過對(duì)比得出第二版本相比于第一版本改動(dòng)部分的代碼,并確定了改動(dòng)部分代碼所涉及的函數(shù)以及與該函數(shù)對(duì)應(yīng)的測(cè)試用例,使用這些測(cè)試用例即可測(cè)試第二版本目標(biāo)軟件相比于第一版本目標(biāo)軟件改動(dòng)的功能,其余相同代碼部分對(duì)應(yīng)的測(cè)試用例無需再次進(jìn)行測(cè)試,從而減少了測(cè)試時(shí)間,提高了測(cè)試效率。附圖說明為了更清楚地說明本申請(qǐng)實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請(qǐng)的實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。圖1為本申請(qǐng)實(shí)施例公開的一種測(cè)試用例確定方法流程圖;圖2為本申請(qǐng)實(shí)施例公開的另一種測(cè)試用例確定方法流程圖;圖3為本申請(qǐng)實(shí)施例公開的又一種測(cè)試用例確定方法流程圖;圖4為本申請(qǐng)實(shí)施例公開的又一種測(cè)試用例確定方法流程圖;圖5為本申請(qǐng)實(shí)施例示例的一種代碼覆蓋狀態(tài)示意圖;圖6為本申請(qǐng)實(shí)施例公開的一種測(cè)試用例確定裝置結(jié)構(gòu)示意圖;圖7為本申請(qǐng)實(shí)施例公開的一種函數(shù)確定單元結(jié)構(gòu)示意圖;圖8為本申請(qǐng)實(shí)施例公開的一種代碼分析單元結(jié)構(gòu)示意圖;圖9為本申請(qǐng)實(shí)施例公開的一種函數(shù)對(duì)應(yīng)單元結(jié)構(gòu)示意圖;圖10為本申請(qǐng)實(shí)施例公開的另一種測(cè)試用例確定裝置結(jié)構(gòu)示意圖;圖11為本申請(qǐng)實(shí)施例公開的一種服務(wù)器硬件結(jié)構(gòu)示意圖。具體實(shí)施方式下面將結(jié)合本申請(qǐng)實(shí)施例中的附圖,對(duì)本申請(qǐng)實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本申請(qǐng)保護(hù)的范圍。參見圖1,圖1為本申請(qǐng)實(shí)施例公開的一種測(cè)試用例確定方法流程圖。如圖1所述,該方法包括:步驟S100、響應(yīng)目標(biāo)軟件的第一和第二兩個(gè)版本的對(duì)比請(qǐng)求,對(duì)第一和第二兩個(gè)版本的目標(biāo)軟件的代碼進(jìn)行差異化比較,確定第二版本目標(biāo)軟件中的改動(dòng)代碼;其中,第一版本目標(biāo)軟件為已經(jīng)完成過測(cè)試的目標(biāo)軟件,第二版本目標(biāo)軟件為待測(cè)試的目標(biāo)軟件。目標(biāo)軟件為等待進(jìn)行測(cè)試的軟件。一般性的,用戶開發(fā)完的軟件提交到SVN系統(tǒng)中,SVN是Subversion的簡 稱,是一個(gè)開放源代碼的版本控制系統(tǒng)。不同版本的目標(biāo)軟件在SVN系統(tǒng)中有不同的版本號(hào)。用戶可以通過輸入版本號(hào)的方式來確定所要對(duì)比的兩個(gè)版本的目標(biāo)軟件??蛇x的,本申請(qǐng)方法的執(zhí)行主體可以是服務(wù)器,由服務(wù)器響應(yīng)目標(biāo)軟件的兩個(gè)不同版本的對(duì)比請(qǐng)求,并執(zhí)行后續(xù)動(dòng)作。進(jìn)一步對(duì)于目標(biāo)軟件的第一和第二兩個(gè)版本的對(duì)比請(qǐng)求,其可以是用戶發(fā)起的,例如用戶在服務(wù)器中輸入對(duì)比請(qǐng)求信息,對(duì)比請(qǐng)求信息可以包含將要進(jìn)行對(duì)比的目標(biāo)軟件,以及待對(duì)比的兩個(gè)版本號(hào)。步驟S110、確定所述改動(dòng)代碼所涉及的目標(biāo)函數(shù);其中,所述目標(biāo)函數(shù)包括改動(dòng)代碼含有的函數(shù),以及與改動(dòng)代碼所含有的函數(shù)具備調(diào)用關(guān)系的函數(shù)。對(duì)于一款軟件而言,其代碼可以包括多個(gè)類文件,每個(gè)類文件中又可以包括多個(gè)函數(shù)(又可以稱為方法)。其中部分函數(shù)之間可以具備調(diào)用關(guān)系,如A函數(shù)調(diào)用B函數(shù),B函數(shù)調(diào)用C函數(shù),C函數(shù)調(diào)用D函數(shù)。則對(duì)于A-D四個(gè)函數(shù)而言,其互為調(diào)用關(guān)系,例如與A函數(shù)具備調(diào)用關(guān)系的有B函數(shù)、C函數(shù)和D函數(shù)。通過確定改動(dòng)代碼所涉及的目標(biāo)函數(shù),可以確定出改動(dòng)部分的代碼所影響的函數(shù),這部分函數(shù)即為目標(biāo)函數(shù)。步驟S120、確定所述目標(biāo)函數(shù)所對(duì)應(yīng)的測(cè)試用例。由于代碼程序所代表的是若干個(gè)函數(shù),函數(shù)能夠?qū)崿F(xiàn)某些功能,例如A函數(shù)能夠?qū)崿F(xiàn)轉(zhuǎn)賬業(yè)務(wù)等,因此函數(shù)與功能之間具備一定的對(duì)應(yīng)關(guān)系。而測(cè)試用例正是針對(duì)功能而編寫的,針對(duì)一個(gè)功能,編寫一個(gè)或多個(gè)測(cè)試用例。因此,功能和測(cè)試用例之間也具備對(duì)應(yīng)關(guān)系。這樣,根據(jù)這兩個(gè)對(duì)應(yīng)關(guān)系,可以確定出目標(biāo)函數(shù)所對(duì)應(yīng)的測(cè)試用例。這部分測(cè)試用例用于對(duì)第二版本的目標(biāo)軟件進(jìn)行測(cè)試使用。本申請(qǐng)實(shí)施例提供的測(cè)試用例確定方法,在響應(yīng)第一和第二兩個(gè)版本的目標(biāo)軟件的對(duì)比請(qǐng)求時(shí),對(duì)兩個(gè)版本的代碼進(jìn)行差異化比較,確定出第二版本目標(biāo)軟件中的改動(dòng)代碼,進(jìn)一步確定改動(dòng)代碼所涉及的目標(biāo)函數(shù),這里目標(biāo)函數(shù)包括改動(dòng)代碼所含有的函數(shù)以及與改動(dòng)代碼所含有的函數(shù)具備調(diào)用關(guān)系的函數(shù),最后確定出目標(biāo)函數(shù)所對(duì)應(yīng)的測(cè)試用例,這部分測(cè)試用例用于對(duì) 第二版本的目標(biāo)軟件進(jìn)行測(cè)試。由于第一版本目標(biāo)軟件為已經(jīng)完成過測(cè)試的目標(biāo)軟件,其已經(jīng)測(cè)試過各個(gè)功能,本申請(qǐng)通過對(duì)比得出第二版本相比于第一版本改動(dòng)部分的代碼,并確定了改動(dòng)部分代碼所涉及的函數(shù)以及與該函數(shù)對(duì)應(yīng)的測(cè)試用例,使用這些測(cè)試用例即可測(cè)試第二版本目標(biāo)軟件相比于第一版本目標(biāo)軟件改動(dòng)的功能,至于其余相同代碼部分所對(duì)應(yīng)的測(cè)試用例,其在第一版目標(biāo)軟件中已經(jīng)進(jìn)行過測(cè)試,因此在第二版本目標(biāo)軟件的測(cè)試過程中,這部分測(cè)試用例無需再次進(jìn)行測(cè)試,從而減少了測(cè)試時(shí)間,提高了測(cè)試效率??蛇x的,開發(fā)人員編寫的代碼都是一行一行的形式,因此在確定改動(dòng)代碼時(shí),可以是以改動(dòng)行代碼的形式來確定。當(dāng)然,除了這種方式之外,還可以以行中的代碼字段、或者幾行代碼組成的代碼塊的形式。為了統(tǒng)一描述,下文僅以改動(dòng)行代碼的形式進(jìn)行說明。在本申請(qǐng)的另一個(gè)實(shí)施例中,介紹了另一種測(cè)試用例確定方法。參見圖2,圖2為本申請(qǐng)實(shí)施例公開的另一種測(cè)試用例確定方法流程圖。如圖2所示,該方法包括:步驟S200、響應(yīng)目標(biāo)軟件的第一和第二兩個(gè)版本的對(duì)比請(qǐng)求,對(duì)第一和第二兩個(gè)版本的目標(biāo)軟件的代碼進(jìn)行差異化比較,確定第二版本目標(biāo)軟件中的改動(dòng)代碼;其中,第一版本目標(biāo)軟件為已經(jīng)完成過測(cè)試的目標(biāo)軟件,第二版本目標(biāo)軟件為待測(cè)試的目標(biāo)軟件。目標(biāo)軟件為等待進(jìn)行測(cè)試的軟件。步驟S210、對(duì)第二版本目標(biāo)軟件的代碼進(jìn)行分析,得到各行代碼所含有的函數(shù)以及各個(gè)函數(shù)間的調(diào)用關(guān)系;在對(duì)代碼進(jìn)行分析時(shí),可以使用詞法分析和語法分析方法進(jìn)行代碼分析,通過詞法、語法分析可以得到各行代碼所包含的函數(shù)。進(jìn)一步再通過靜態(tài)分析工具androguard的調(diào)用圖分析功能,對(duì)所述第二版本目標(biāo)軟件的代碼進(jìn)行分析,得到函數(shù)之間的調(diào)用關(guān)系。步驟S220、參考所述各行代碼所含有的函數(shù)以及各個(gè)函數(shù)間的調(diào)用關(guān)系,確定改動(dòng)行代碼所涉及的目標(biāo)函數(shù);具體地,將所述改動(dòng)行代碼所含有的函數(shù),以及與改動(dòng)行代碼所含有的函數(shù)具備調(diào)用關(guān)系的函數(shù)確定為目標(biāo)函數(shù)。步驟S230、確定所述目標(biāo)函數(shù)所對(duì)應(yīng)的測(cè)試用例。由于不同的函數(shù)對(duì)應(yīng)不同的功能,而不同的功能對(duì)應(yīng)不同的測(cè)試用例,因此在確定了目標(biāo)函數(shù)之后可以進(jìn)一步確定出該目標(biāo)函數(shù)所對(duì)應(yīng)的測(cè)試用例。這部分測(cè)試用例用于對(duì)第二版本的目標(biāo)軟件進(jìn)行測(cè)試使用。本實(shí)施例中,介紹了通過代碼分析得出各行代碼所含有的函數(shù)以及各個(gè)函數(shù)間的調(diào)用關(guān)系的過程。通過使用詞法分析加語法分析的方式,可以得到每行代碼所屬文件類名、所包含函數(shù)及變量等代碼結(jié)構(gòu)的屬性;通過靜態(tài)分析工具則可以分析出各個(gè)函數(shù)之間的調(diào)用關(guān)系。接下來詳細(xì)介紹詞法、語法分析,以及靜態(tài)分析工具androguard的具體實(shí)現(xiàn)方式。1、詞法分析詞法分析的過程簡單來說就是根據(jù)語言規(guī)則,制定讀入字符時(shí)的狀態(tài)轉(zhuǎn)換圖。詞法分析程序在每次讀入一個(gè)字符時(shí),就根據(jù)狀態(tài)轉(zhuǎn)換圖跳轉(zhuǎn)到相應(yīng)的狀態(tài)。如果跳轉(zhuǎn)到一個(gè)“終結(jié)狀態(tài)”,就說明當(dāng)前已經(jīng)解析到一個(gè)有效的詞法記號(hào)token,程序會(huì)給出這個(gè)記號(hào),重置到初始狀態(tài)并繼續(xù)讀入下一個(gè)字符,重復(fù)循環(huán)直至讀到代碼末尾。詞法分析的實(shí)現(xiàn),大致包括:1)讀取下一個(gè)字符的方法protectedcharReadChar()。2)記錄當(dāng)前狀態(tài)轉(zhuǎn)換已經(jīng)讀完的字符串protectedchar[]scanWord。3)記錄當(dāng)前狀態(tài)轉(zhuǎn)換已經(jīng)讀完的字符串位置的指針protectedintindexOfWord。4)狀態(tài)轉(zhuǎn)換方法,也是主要分析邏輯publicvoidDFA()。詞法分析會(huì)給出一個(gè)詞法記號(hào)列表,每個(gè)詞法記號(hào)的結(jié)構(gòu)為://類型privateTokenTypetokenType;//內(nèi)容字符串privateStringtokenContent;//所在行privateinttokenLineNumber。2、語法分析上一步驟通過詞法分析將代碼文本轉(zhuǎn)化為詞法記號(hào)token流之后,下一步就是根據(jù)語法規(guī)則,從token流中分析出代碼的結(jié)構(gòu)。語法規(guī)則可以用產(chǎn)生式來表示,比如在java中,一個(gè)java源程序包含包名的聲明,import列表和class的聲明,用產(chǎn)生式標(biāo)識(shí)可以這樣表示:program->packageStatement[importStatement]classDeclaration這條產(chǎn)生式的意思是一個(gè)java源程序(program),在語法上是由一條包名的聲明(packageStatement),多個(gè)的import聲明(importStatement)和一個(gè)class的聲明(classDeclaration)組成。類似classDeclaration這樣記號(hào)稱為語法記號(hào)。其中class的聲明classDeclaration又可以這樣表示:classDeclaration->[modifier]('class'|'interface')typeModifier'extends'typeModifier'implements'[typeModifier]classBlock在這條產(chǎn)生式中,加單引號(hào)語法記號(hào)的表示匹配到具體的詞法記號(hào),這種類型的語法記號(hào)在解析時(shí)不可以再繼續(xù)拆分,而是直接匹配到詞法記號(hào),稱之為終結(jié)符。相應(yīng)的類似classDeclaration這樣還需要繼續(xù)拆分解析的稱為非終結(jié)符。語法分析的過程,可以理解為從讀入的token流中,分析出符合語法產(chǎn)生式的語句。具體的分析方法有很多,我們?cè)谶@里采用了一種較為簡單的遞歸下降分析法,具體為:1)使用一個(gè)整型索引來記錄當(dāng)前token流中掃描的位置。2)為每個(gè)非終結(jié)符編寫一個(gè)解析方法。3)如果一個(gè)非終結(jié)符有超過一個(gè)的產(chǎn)生式,則在這個(gè)方法中對(duì)采用哪個(gè)產(chǎn)生式進(jìn)行分支預(yù)測(cè)。4)處理單一產(chǎn)生式時(shí),遇到正確終結(jié)符則將第一步創(chuàng)建的掃描索引位置向前移動(dòng);如遇到非終結(jié)符則調(diào)用第二步中創(chuàng)建的相應(yīng)方法。5)如果需要產(chǎn)生解析的結(jié)果(比如解析完成一個(gè)類/方法結(jié)構(gòu)),在方法返回之前將它構(gòu)造出來。3、函數(shù)調(diào)用關(guān)系分析androguard是一個(gè)開源的apk分析工具。本實(shí)施例中我們使用它的調(diào)用圖分析功能來分析函數(shù)調(diào)用關(guān)系。使用androguard需要先安裝python環(huán)境。安裝完成后,將編譯完成的apk放在其目錄下,使用pythonandrogexf.py-ixxx.apk-oxxx.gexf,即可得到一份包含apk中所有函數(shù)調(diào)用關(guān)系的gexf文件。Gexf格式是供一些關(guān)系圖軟件讀取并繪制關(guān)系圖的文件格式,本質(zhì)上是xml格式的文件。文件中的node就是關(guān)系圖中的頂點(diǎn),edge就是關(guān)系圖中的邊。在gexf文件中,頂點(diǎn)表示一個(gè)函數(shù),邊表示一個(gè)調(diào)用關(guān)系。使用dom4j庫就可讀取gexf文件,獲得函數(shù)之間的調(diào)用關(guān)系。在實(shí)現(xiàn)過程中,發(fā)現(xiàn)生成的gexf文件大小在10M以上,如果直接整體讀入容易引發(fā)內(nèi)存不足oom。所以讀取時(shí)采用事件驅(qū)動(dòng)的方法,每處理完一個(gè)dom節(jié)點(diǎn)就使用detach方法釋放內(nèi)存。在本申請(qǐng)的又一個(gè)實(shí)施例中,介紹了又一種測(cè)試用例確定方法。參見圖3,圖3為本申請(qǐng)實(shí)施例公開的又一種測(cè)試用例確定方法流程圖。如圖3所示,該方法包括:步驟S300、響應(yīng)目標(biāo)軟件的第一和第二兩個(gè)版本的對(duì)比請(qǐng)求,對(duì)第一和第二兩個(gè)版本的目標(biāo)軟件的代碼進(jìn)行差異化比較,確定第一版本目標(biāo)軟件中的改動(dòng)代碼;其中,第一版本目標(biāo)軟件為已經(jīng)完成過測(cè)試的目標(biāo)軟件,第二版本目標(biāo)軟件為待測(cè)試的目標(biāo)軟件。目標(biāo)軟件為等待進(jìn)行測(cè)試的軟件。步驟S310、確定所述改動(dòng)代碼所涉及的目標(biāo)函數(shù);其中,所述目標(biāo)函數(shù)包括改動(dòng)代碼包含的函數(shù),以及與改動(dòng)代碼所包含的函數(shù)具備調(diào)用關(guān)系的函數(shù)。步驟S320、確定所述目標(biāo)函數(shù)所屬的目標(biāo)類;具體地,代碼文件中包含若干個(gè)類文件,每個(gè)類文件均包括若干個(gè)函數(shù)。本步驟中對(duì)于確定的目標(biāo)函數(shù),進(jìn)一步確定其所屬的目標(biāo)類文件。步驟S330、根據(jù)預(yù)先配置的類與功能模塊間的對(duì)應(yīng)關(guān)系,確定所述目標(biāo)類對(duì)應(yīng)的目標(biāo)功能模塊;在軟件編程中,一般性的一個(gè)類文件對(duì)應(yīng)一個(gè)功能模塊,也即為了實(shí)現(xiàn)某個(gè)功能模塊,需要編寫至少一個(gè)類文件。我們可以從繼承關(guān)系上對(duì)類與功能模塊間的對(duì)應(yīng)關(guān)系進(jìn)行劃分,例如:繼承FragmentActivity或Activity的類劃為頁面功能模塊;繼承BaseAdapter的類劃為適配器功能模塊;繼承RelativeLayout、LinearLayout等等這些布局的類劃為布局功能模塊。步驟S340、根據(jù)預(yù)先配置的功能模塊與測(cè)試用例間的對(duì)應(yīng)關(guān)系,將與所述目標(biāo)功能模塊對(duì)應(yīng)的測(cè)試用例確定為所述目標(biāo)函數(shù)對(duì)應(yīng)的測(cè)試用例??梢岳斫獾氖?,測(cè)試用例的設(shè)定正是為了測(cè)試軟件的各個(gè)功能是否能夠正確,因此對(duì)應(yīng)軟件不同的功能模塊,會(huì)編寫不同的測(cè)試用例。當(dāng)然,任一功能模塊所對(duì)應(yīng)的測(cè)試用例并非局限為一個(gè),其可以有多個(gè)。本步驟中根據(jù)預(yù)先配置的功能模塊與測(cè)試用例間的對(duì)應(yīng)關(guān)系,確定出與目標(biāo)功能模塊對(duì)應(yīng)的測(cè)試用例,這部分測(cè)試用例用于后續(xù)執(zhí)行。本實(shí)施例中,預(yù)先配置了類與功能模塊間對(duì)應(yīng)關(guān)系、功能模塊與測(cè)試用例間對(duì)應(yīng)關(guān)系,進(jìn)而在確定出目標(biāo)函數(shù)所屬的目標(biāo)類時(shí),通過查詢對(duì)應(yīng)關(guān)系,確定出對(duì)應(yīng)的測(cè)試用例。為了便于理解,通過下述實(shí)例進(jìn)行說明。假設(shè)一個(gè)軟件代碼總共包含兩個(gè)功能模塊,分別為下載模塊和頁面模塊。其中,對(duì)于下載模塊和頁面模塊分別編寫了4個(gè)測(cè)試用例,如下表1所示:下載模塊正常下載暫停下載完成安裝連續(xù)下載頁面模塊首頁詳情頁游戲頁評(píng)論頁表1經(jīng)過對(duì)比確定第二版本目標(biāo)軟件改動(dòng)了1-10行代碼,這10行代碼總共涉及A和B兩個(gè)函數(shù)。通過查找對(duì)應(yīng)關(guān)系發(fā)現(xiàn),A和B這兩個(gè)函數(shù)均歸屬于下載模塊,因此將上表1中與下載模塊對(duì)應(yīng)的4個(gè)測(cè)試用例確定為待執(zhí)行的測(cè)試用例。通過執(zhí)行上述4個(gè)測(cè)試用例可以確定出第二版本的目標(biāo)軟件的下載功能是否正確執(zhí)行。在本申請(qǐng)的又一個(gè)實(shí)施例中,介紹了又一種測(cè)試用例確定方法。參見圖4,圖4為本申請(qǐng)實(shí)施例公開的又一種測(cè)試用例確定方法流程圖。如圖4所示,該方法包括:步驟S400、響應(yīng)目標(biāo)軟件的第一和第二兩個(gè)版本的對(duì)比請(qǐng)求,對(duì)第二版本的目標(biāo)軟件的代碼進(jìn)行插樁,并編譯成插樁包;其中,第一版本目標(biāo)軟件為已經(jīng)完成過測(cè)試的目標(biāo)軟件,第二版本目標(biāo)軟件為待測(cè)試的目標(biāo)軟件。目標(biāo)軟件為等待進(jìn)行測(cè)試的軟件。插樁的目的是為了后續(xù)執(zhí)行該插樁包時(shí),對(duì)于執(zhí)行到的代碼進(jìn)行標(biāo)注??蛇x的,此處可以選擇Emma插樁方法,Emma插樁方法能夠輸出全量覆蓋率報(bào)告,也即整個(gè)插樁包在執(zhí)行完畢后,所有代碼行的覆蓋率情況。步驟S410、對(duì)第一和第二兩個(gè)版本的目標(biāo)軟件的代碼進(jìn)行差異化比較,確定所述插樁包中的改動(dòng)代碼;步驟S420、確定所述改動(dòng)代碼所涉及的目標(biāo)函數(shù);其中,所述目標(biāo)函數(shù)包括改動(dòng)代碼包含的函數(shù),以及與改動(dòng)代碼所包含的函數(shù)具備調(diào)用關(guān)系的函數(shù)。步驟S430、確定所述目標(biāo)函數(shù)所對(duì)應(yīng)的測(cè)試用例;步驟S440、按照所述測(cè)試用例執(zhí)行所述插樁包,確定所述插樁包中改動(dòng)代碼的覆蓋狀態(tài)。具體地,對(duì)于測(cè)試的軟件為APK軟件時(shí),其一般需要在手機(jī)上執(zhí)行,手機(jī)執(zhí)行完畢后會(huì)將確定出的改動(dòng)代碼的覆蓋狀態(tài)上傳至后臺(tái)。由于本實(shí)施例中確定出插樁包中改動(dòng)的代碼,進(jìn)而可以確定出對(duì)于改動(dòng)部分的代碼的覆蓋請(qǐng)求。例如,插樁包中第50-60行代碼為改動(dòng)代碼,按照測(cè)試用例執(zhí)行插樁包后發(fā)現(xiàn),對(duì)于50-60行代碼而言,其中50-45行代碼覆蓋了(也即執(zhí)行了該行代碼的意思),而46-60行代碼沒有覆蓋。具體地各行代碼的覆蓋情況可以通過顏色標(biāo)記來區(qū)分。通過確定改動(dòng)代碼的覆蓋狀態(tài),可以選擇是否補(bǔ)充增加測(cè)試用例。對(duì)于改動(dòng)代碼中未覆蓋的代碼行所涉及的函數(shù)增加新的測(cè)試用例,這樣在節(jié)約盲目測(cè)試的人力成本的基礎(chǔ)上,有效的降低了漏測(cè)問題的發(fā)生。參見圖5,圖5為本申請(qǐng)實(shí)施例示例的一種代碼覆蓋狀態(tài)示意圖。圖5中,示例了一段代碼文件,其中第253行至第262行的代碼為第二版本目標(biāo)軟件相比于第一版本目標(biāo)軟件的改動(dòng)代碼。在執(zhí)行測(cè)試用例之后,改動(dòng)代碼的覆蓋情況如圖5,其中斜線覆蓋的第254-256行代碼表示執(zhí)行過(也即該部分代碼被覆蓋了),其余代碼表示未執(zhí)行過。當(dāng)然,圖5僅僅示例了通過斜線來表示覆蓋的代碼的方式,除此之外還可以通過顏色標(biāo)記或其它方式對(duì)覆蓋的代碼進(jìn)行標(biāo)記。下面對(duì)本申請(qǐng)實(shí)施例提供的測(cè)試用例確定裝置進(jìn)行描述,下文描述的測(cè)試用例確定裝置與上文描述的測(cè)試用例確定方法可相互對(duì)應(yīng)參照。參見圖6,圖6為本申請(qǐng)實(shí)施例公開的一種測(cè)試用例確定裝置結(jié)構(gòu)示意圖。如圖6所示,該裝置包括:差異化比較單元61,用于響應(yīng)目標(biāo)軟件的第一和第二兩個(gè)版本的對(duì)比請(qǐng)求,對(duì)第一和第二兩個(gè)版本的目標(biāo)軟件的代碼進(jìn)行差異化比較,確定第二版本目標(biāo)軟件中的改動(dòng)代碼,其中第一版本目標(biāo)軟件為已經(jīng)完成過測(cè)試的目標(biāo)軟件,第二版本目標(biāo)軟件為待測(cè)試的目標(biāo)軟件;函數(shù)確定單元62,用于確定所述改動(dòng)代碼所涉及的目標(biāo)函數(shù),其中所述目標(biāo)函數(shù)包括改動(dòng)代碼所含有的函數(shù),以及與改動(dòng)代碼所含有的函數(shù)具備調(diào)用關(guān)系的函數(shù);函數(shù)對(duì)應(yīng)單元63,用于確定所述目標(biāo)函數(shù)所對(duì)應(yīng)的測(cè)試用例。本申請(qǐng)實(shí)施例提供的測(cè)試用例確定裝置,在響應(yīng)第一和第二兩個(gè)版本的目標(biāo)軟件的對(duì)比請(qǐng)求時(shí),對(duì)兩個(gè)版本的代碼進(jìn)行差異化比較,確定出第二版本目標(biāo)軟件中的改動(dòng)代碼,進(jìn)一步確定改動(dòng)代碼所涉及的目標(biāo)函數(shù),這里目標(biāo)函數(shù)包括改動(dòng)代碼所含有的函數(shù)以及與改動(dòng)代碼所含有的函數(shù)具備調(diào)用關(guān)系的函數(shù),最后確定出目標(biāo)函數(shù)所對(duì)應(yīng)的測(cè)試用例,這部分測(cè)試用例用于對(duì)第二版本的目標(biāo)軟件進(jìn)行測(cè)試。由于第一版本目標(biāo)軟件為已經(jīng)完成過測(cè)試的目標(biāo)軟件,其已經(jīng)測(cè)試過各個(gè)功能,本申請(qǐng)通過對(duì)比得出第二版本相比于第一版本改動(dòng)部分的代碼,并確定了改動(dòng)部分代碼所涉及的函數(shù)以及與該函數(shù)對(duì)應(yīng)的測(cè)試用例,使用這些測(cè)試用例即可測(cè)試第二版本目標(biāo)軟件相比于第一版本目標(biāo)軟件改動(dòng)的功能,至于其余相同代碼部分所對(duì)應(yīng)的測(cè)試用例,其在第一版目標(biāo)軟件中已經(jīng)進(jìn)行過測(cè)試,因此在第二版本目標(biāo)軟件的測(cè)試過程中,這部分測(cè)試用例無需再次進(jìn)行測(cè)試,從而減少了測(cè)試時(shí)間,提高了測(cè)試效率??蛇x的,在確定改動(dòng)代碼時(shí),可以是以改動(dòng)行代碼的形式來確定。當(dāng)然,除了這種方式之外,還可以采用改動(dòng)代碼字段、改動(dòng)代碼塊等形式。為了統(tǒng)一描述,下文僅以改動(dòng)行代碼的形式進(jìn)行說明??蛇x的,本申請(qǐng)實(shí)施例示例了上述函數(shù)確定單元62的一種可選結(jié)構(gòu),如圖7所示,函數(shù)確定單元62可以包括:代碼分析單元621,用于對(duì)第二版本目標(biāo)軟件的代碼進(jìn)行分析,得到各行代碼所含有的函數(shù)以及各個(gè)函數(shù)間的調(diào)用關(guān)系;函數(shù)參考單元622,用于參考所述各行代碼所含有的函數(shù)以及各個(gè)函數(shù)間的調(diào)用關(guān)系,將所述改動(dòng)行代碼所含有的函數(shù),以及與改動(dòng)行代碼所含有的函數(shù)具備調(diào)用關(guān)系的函數(shù)確定為目標(biāo)函數(shù)。可選的,本申請(qǐng)實(shí)施例示例了上述代碼分析單元621的一種可選結(jié)構(gòu),如圖8所示,代碼分析單元621可以包括:詞法語法分析單元6211,用于使用詞法分析和語法分析方法對(duì)所述第二版本目標(biāo)軟件的代碼進(jìn)行分析,得到各行代碼所含有的函數(shù);調(diào)用關(guān)系分析單元6212,用于使用靜態(tài)分析工具androguard的調(diào)用圖分析功能,對(duì)所述第二版本目標(biāo)軟件的代碼進(jìn)行分析,得到函數(shù)之間的調(diào)用關(guān)系??蛇x的,本申請(qǐng)實(shí)施例示例了上述函數(shù)對(duì)應(yīng)單元63的一種可選結(jié)構(gòu),如圖9所示,函數(shù)對(duì)應(yīng)單元63可以包括:類確定單元631,用于確定所述目標(biāo)函數(shù)所屬的目標(biāo)類;模塊確定單元632,用于根據(jù)預(yù)先配置的類與功能模塊間的對(duì)應(yīng)關(guān)系,確定所述目標(biāo)類對(duì)應(yīng)的目標(biāo)功能模塊;測(cè)試用例確定單元633,用于根據(jù)預(yù)先配置的功能模塊與測(cè)試用例間的對(duì)應(yīng)關(guān)系,將與所述目標(biāo)功能模塊對(duì)應(yīng)的測(cè)試用例確定為所述目標(biāo)函數(shù)對(duì)應(yīng)的測(cè)試用例??蛇x的,本申請(qǐng)實(shí)施例示例了上述測(cè)試用例確定裝置的另一種可選結(jié)構(gòu),結(jié)合圖6和圖10可知,該裝置還可以包括:插樁單元64,用于在所述對(duì)第一和第二兩個(gè)版本的目標(biāo)軟件的代碼進(jìn)行差異化比較之前,對(duì)第二版本的目標(biāo)軟件的代碼進(jìn)行插樁,并編譯成插樁包;則所述差異化比較單元61確定第二版本目標(biāo)軟件中的改動(dòng)代碼的過程具體為確定所述插樁包中的改動(dòng)代碼,進(jìn)一步,該裝置還包括:覆蓋狀態(tài)確定單元65,用于在所述函數(shù)對(duì)應(yīng)單元63確定所述目標(biāo)函數(shù)所對(duì)應(yīng)的測(cè)試用例之后,按照所述測(cè)試用例執(zhí)行所述插樁包,確定所述插樁包中改動(dòng)代碼的覆蓋狀態(tài)。通過確定改動(dòng)代碼的覆蓋狀態(tài),可以選擇是否補(bǔ)充增加測(cè)試用例。對(duì)于改動(dòng)代碼中未覆蓋的代碼行所涉及的函數(shù)增加新的測(cè)試用例,這樣在節(jié)約盲目測(cè)試的人力成本的基礎(chǔ)上,有效的降低了漏測(cè)問題的發(fā)生。本申請(qǐng)實(shí)施例還提供一種服務(wù)器,該服務(wù)器可以包括上述所述的測(cè)試用例確定裝置,對(duì)于測(cè)試用例確定裝置的描述可參照上文對(duì)應(yīng)部分描述,此處不再贅述。下面對(duì)本申請(qǐng)實(shí)施例提供的服務(wù)器的硬件結(jié)構(gòu)進(jìn)行描述,下文描述中涉及多媒體文件處理的部分可參照上文對(duì)應(yīng)部分描述。圖11為本申請(qǐng)實(shí)施例提供的服務(wù)器的硬件結(jié)構(gòu)示意圖,參照?qǐng)D11,該服務(wù)器可以包括:處理器1,通信接口2,存儲(chǔ)器3,通信總線4,和顯示屏5;其中處理器1、通信接口2、存儲(chǔ)器3和顯示屏5通過通信總線4完成相互間的通信;可選的,通信接口2可以為通信模塊的接口,如GSM模塊的接口;處理器1,用于執(zhí)行程序;存儲(chǔ)器3,用于存放程序;程序可以包括程序代碼,所述程序代碼包括處理器的操作指令。處理器1可能是一個(gè)中央處理器CPU,或者是特定集成電路ASIC(ApplicationSpecificIntegratedCircuit),或者是被配置成實(shí)施本申請(qǐng)實(shí)施例的一個(gè)或多個(gè)集成電路。存儲(chǔ)器3可能包含高速RAM存儲(chǔ)器,也可能還包括非易失性存儲(chǔ)器(non-volatilememory),例如至少一個(gè)磁盤存儲(chǔ)器。其中,程序可具體用于:響應(yīng)目標(biāo)軟件的第一和第二兩個(gè)版本的對(duì)比請(qǐng)求,對(duì)第一和第二兩個(gè)版本的目標(biāo)軟件的代碼進(jìn)行差異化比較,確定第二版本目標(biāo)軟件中的改動(dòng)代碼,其中第一版本目標(biāo)軟件為已經(jīng)完成過測(cè)試的目標(biāo)軟件,第二版本目標(biāo)軟件為待測(cè)試的目標(biāo)軟件;確定所述改動(dòng)代碼所涉及的目標(biāo)函數(shù),其中所述目標(biāo)函數(shù)包括改動(dòng)代碼所含有的函數(shù),以及與改動(dòng)代碼所含有的函數(shù)具備調(diào)用關(guān)系的函數(shù);確定所述目標(biāo)函數(shù)所對(duì)應(yīng)的測(cè)試用例??蛇x的,程序可具體用于實(shí)現(xiàn)各個(gè)實(shí)施例中的測(cè)試用例確定方法的步驟。對(duì)所公開的實(shí)施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本申請(qǐng)。對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本申請(qǐng)的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本申請(qǐng)將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。當(dāng)前第1頁1 2 3