本申請涉及計算機(jī)技術(shù)領(lǐng)域,具體涉及測試技術(shù)領(lǐng)域,尤其涉及用于生成測試用例的方法和裝置。
背景技術(shù):
測試用例,是用于自動對網(wǎng)頁或者應(yīng)用進(jìn)行測試的代碼或腳本?;跍y試用例,電子設(shè)備可以自動對網(wǎng)頁或者應(yīng)用進(jìn)行測試,不需人工干預(yù)?,F(xiàn)有技術(shù)中主要依靠測試人員手工編寫測試用例。
然而,由于手工編寫測試用例對測試人員的經(jīng)驗依賴程度較高,經(jīng)??赡軐?dǎo)致無法覆蓋待測試網(wǎng)頁或應(yīng)用中的所有可能的執(zhí)行路徑,導(dǎo)致測試覆蓋不全面。
技術(shù)實現(xiàn)要素:
本申請的目的在于提出一種用于生成測試用例的方法和裝置,來解決以上背景技術(shù)部分提到的技術(shù)問題。
第一方面,本申請實施例提供了一種用于生成測試用例的方法,該方法包括:接收測試用例生成請求,上述測試用例生成請求包括用于生成測試用例的文本;解析上述文本,生成有向圖,其中,上述有向圖包括至少三個節(jié)點和上述至少三個節(jié)點間的連接線信息,節(jié)點包括用于指示控件或網(wǎng)頁的節(jié)點標(biāo)識,連接線信息包括操作標(biāo)識、起始節(jié)點標(biāo)識和終止節(jié)點標(biāo)識,操作標(biāo)識用于指示起始節(jié)點與終止節(jié)點間的操作,上述至少三個節(jié)點包括一個開始節(jié)點、一個結(jié)束節(jié)點和至少一個中間節(jié)點;深度優(yōu)先遍歷上述有向圖,生成至少一條測試路徑,其中,上述至少一條測試路徑中每條測試路徑的起點為上述開始節(jié)點、終點為上述結(jié)束節(jié)點,同一條測試路徑所包括的各個節(jié)點互不相同;對于上述至少一條測試路徑中的每條測試路徑,根據(jù)該條測試路徑中的各個節(jié)點和連接線信息,為該條測試路徑生成對應(yīng)的測試用例。
在一些實施例中,上述深度優(yōu)先遍歷上述有向圖,生成至少一條測試路徑,包括:呈現(xiàn)上述有向圖;響應(yīng)于檢測到用戶輸入的根據(jù)有向圖生成測試路徑的指令,深度優(yōu)先遍歷上述有向圖,生成至少一條測試路徑。
在一些實施例中,上述響應(yīng)于檢測到用戶輸入的根據(jù)有向圖生成測試路徑的指令,深度優(yōu)先遍歷上述有向圖,生成至少一條測試路徑,包括:響應(yīng)于檢測到上述指令,獲取用戶輸入的用于指示測試路徑的文本格式的測試路徑格式信息;深度優(yōu)先遍歷上述有向圖,生成至少一條上述測試路徑格式信息所指示的文本格式的測試路徑。
在一些實施例中,上述對于上述至少一條測試路徑中的每條測試路徑,根據(jù)該條測試路徑中的各個節(jié)點和連接線信息,為該條測試路徑生成對應(yīng)的測試用例,包括:呈現(xiàn)上述至少一條測試路徑;響應(yīng)于檢測到用戶輸入的根據(jù)測試路徑生成測試用例的指令,對于上述至少一條測試路徑中的每條測試路徑,根據(jù)該條測試路徑中的各個節(jié)點和連接線信息,為該條測試路徑生成對應(yīng)的測試用例。
在一些實施例中,上述對于上述至少一條測試路徑中的每條測試路徑,根據(jù)該條測試路徑中的各個節(jié)點和連接線信息,為該條測試路徑生成對應(yīng)的測試用例,包括:對于上述至少一條測試路徑中的每條測試路徑,執(zhí)行以下測試用例生成操作:新建測試用例;對于該條測試路徑中的每個中間節(jié)點,在所新建的測試用例中添加代碼,其中,所添加的代碼用于顯示該中間節(jié)點的節(jié)點標(biāo)識所指示的控件或網(wǎng)頁以及對該中間節(jié)點的節(jié)點標(biāo)識所指示的控件或網(wǎng)頁執(zhí)行相應(yīng)的操作,其中,上述相應(yīng)的操作為該中間節(jié)點與該中間節(jié)點的下一節(jié)點間的連接線信息中操作標(biāo)識所指示的操作。
第二方面,本申請實施例提供了一種用于生成測試用例的裝置,該裝置包括:請求接收單元,配置用于接收測試用例生成請求,上述測試用例生成請求包括用于生成測試用例的文本;有向圖生成單元,配置用于解析上述文本,生成有向圖,其中,上述有向圖包括至少三個節(jié)點和上述至少三個節(jié)點間的連接線信息,節(jié)點包括用于指示控件或網(wǎng)頁的節(jié)點標(biāo)識,連接線信息包括操作標(biāo)識、起始節(jié)點標(biāo)識和終止節(jié)點標(biāo)識,操作標(biāo)識用于指示起始節(jié)點與終止節(jié)點間的操作,上述至少三個節(jié)點包括一個開始節(jié)點、一個結(jié)束節(jié)點和至少一個中間節(jié)點;測試路徑生成單元,配置用于深度優(yōu)先遍歷上述有向圖,生成至少一條測試路徑,其中,上述至少一條測試路徑中每條測試路徑的起點為上述開始節(jié)點、終點為上述結(jié)束節(jié)點,同一條測試路徑所包括的各個節(jié)點互不相同;測試用例生成單元,配置用于對于上述至少一條測試路徑中的每條測試路徑,根據(jù)該條測試路徑中的各個節(jié)點和連接線信息,為該條測試路徑生成對應(yīng)的測試用例。
在一些實施例中,上述測試路徑生成單元包括:有向圖呈現(xiàn)模塊,配置用于呈現(xiàn)上述有向圖;測試路徑生成模塊,配置用于響應(yīng)于檢測到用戶輸入的根據(jù)有向圖生成測試路徑的指令,深度優(yōu)先遍歷上述有向圖,生成至少一條測試路徑。
在一些實施例中,上述測試路徑生成模塊進(jìn)一步配置用于:響應(yīng)于檢測到上述指令,獲取用戶輸入的用于指示測試路徑的文本格式的測試路徑格式信息;深度優(yōu)先遍歷上述有向圖,生成至少一條上述測試路徑格式信息所指示的文本格式的測試路徑。
在一些實施例中,上述測試用例生成單元包括:測試路徑呈現(xiàn)模塊,配置用于呈現(xiàn)上述至少一條測試路徑;測試用例生成模塊,配置用于響應(yīng)于檢測到用戶輸入的根據(jù)測試路徑生成測試用例的指令,對于上述至少一條測試路徑中的每條測試路徑,根據(jù)該條測試路徑中的各個節(jié)點和連接線信息,為該條測試路徑生成對應(yīng)的測試用例。
在一些實施例中,上述測試用例生成模塊進(jìn)一步配置用于:對于上述至少一條測試路徑中的每條測試路徑,執(zhí)行以下測試用例生成操作:新建測試用例;對于該條測試路徑中的每個中間節(jié)點,在所新建的測試用例中添加代碼,其中,所添加的代碼用于顯示該中間節(jié)點的節(jié)點標(biāo)識所指示的控件或網(wǎng)頁以及對該中間節(jié)點的節(jié)點標(biāo)識所指示的控件或網(wǎng)頁執(zhí)行相應(yīng)的操作,其中,上述相應(yīng)的操作為該中間節(jié)點與該中間節(jié)點的下一節(jié)點間的連接線信息中操作標(biāo)識所指示的操作。
第三方面,本申請實施例提供了一種服務(wù)器,該服務(wù)器包括:一個或多個處理器;存儲裝置,用于存儲一個或多個程序,當(dāng)上述一個或多個程序被上述一個或多個處理器執(zhí)行時,使得上述一個或多個處理器實現(xiàn)如第一方面中任一實現(xiàn)方式描述的方法。
第四方面,本申請實施例提供了一種計算機(jī)可讀存儲介質(zhì),其上存儲有計算機(jī)程序,其特征在于,該計算機(jī)程序被處理器執(zhí)行時實現(xiàn)如第一方面中任一實現(xiàn)方式描述的方法。
本申請實施例提供的用于生成測試用例的方法和裝置,通過接收用于生成測試用例的文本,再解析接收到的文本并生成有向圖,然后深度優(yōu)先遍歷上述有向圖,生成至少一條測試路徑,最后根據(jù)測試路徑中的各個節(jié)點和連接線信息,為每條測試路徑生成對應(yīng)的測試用例。從而不需人工編寫測試用例,只需提供可以解析出測試路徑的文本,降低了對編寫測試用例人員的經(jīng)驗要求,并提高了測試用例對用于生成測試用例的文本中的執(zhí)行路徑的覆蓋度,在使用所生成的測試用例進(jìn)行測試時,可以提高測試的全面性。
附圖說明
通過閱讀參照以下附圖所作的對非限制性實施例所作的詳細(xì)描述,本申請的其它特征、目的和優(yōu)點將會變得更明顯:
圖1是本申請可以應(yīng)用于其中的示例性系統(tǒng)架構(gòu)圖;
圖2是根據(jù)本申請的用于生成測試用例的方法的一個實施例的流程圖;
圖3a是根據(jù)本申請的圖文混合的示意圖;
圖3b是根據(jù)本申請的將圖3a所示的圖文混合轉(zhuǎn)換后所得到的文本的示意圖;
圖4a是根據(jù)本申請的符合預(yù)設(shè)語法規(guī)則的文本的示意圖;
圖4b是根據(jù)本申請的解析圖4a所示的文本后得到的有向圖的示意圖;
圖5是根據(jù)本申請的用于生成測試用例的方法的一個應(yīng)用場景的示意圖;
圖6是根據(jù)本申請的用于生成測試用例的方法的又一個實施例的流程圖;
圖7是根據(jù)本申請的用于生成測試用例的裝置的一個實施例的結(jié)構(gòu)示意圖;
圖8是適于用來實現(xiàn)本申請實施例的服務(wù)器的計算機(jī)系統(tǒng)的結(jié)構(gòu)示意圖。
具體實施方式
下面結(jié)合附圖和實施例對本申請作進(jìn)一步的詳細(xì)說明。可以理解的是,此處所描述的具體實施例僅僅用于解釋相關(guān)發(fā)明,而非對該發(fā)明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與有關(guān)發(fā)明相關(guān)的部分。
需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。下面將參考附圖并結(jié)合實施例來詳細(xì)說明本申請。
圖1示出了可以應(yīng)用本申請的用于生成測試用例的方法或用于生成測試用例的裝置的實施例的示例性系統(tǒng)架構(gòu)100。
如圖1所示,系統(tǒng)架構(gòu)100可以包括終端設(shè)備101、102、103,網(wǎng)絡(luò)104和服務(wù)器105。網(wǎng)絡(luò)104用以在終端設(shè)備101、102、103和服務(wù)器105之間提供通信鏈路的介質(zhì)。網(wǎng)絡(luò)104可以包括各種連接類型,例如有線、無線通信鏈路或者光纖電纜等等。
用戶可以使用終端設(shè)備101、102、103通過網(wǎng)絡(luò)104與服務(wù)器105交互,以接收或發(fā)送消息等。終端設(shè)備101、102、103上可以安裝有各種客戶端應(yīng)用,例如文本編輯類應(yīng)用、圖文混合編輯類應(yīng)用、網(wǎng)頁瀏覽器應(yīng)用、購物類應(yīng)用、搜索類應(yīng)用、即時通信工具、郵箱客戶端、社交平臺軟件等。
終端設(shè)備101、102、103可以是具有顯示屏并且支持文本編輯或者圖文混合編輯的各種電子設(shè)備,包括但不限于智能手機(jī)、平板電腦、膝上型便攜計算機(jī)和臺式計算機(jī)等等。
服務(wù)器105可以是提供各種服務(wù)的服務(wù)器,例如對終端設(shè)備101、102、103上生成的文本提供支持的后臺服務(wù)器。后臺服務(wù)器可以對接收到的測試用例生成請求等數(shù)據(jù)進(jìn)行分析等處理,并將處理結(jié)果(例如有向圖、測試路徑或測試用例)反饋給終端設(shè)備。
需要說明的是,本申請實施例所提供的用于生成測試用例的方法一般由服務(wù)器105執(zhí)行,相應(yīng)地,用于生成測試用例的裝置一般設(shè)置于服務(wù)器105中。在一些情況下,本申請實施例所提供的用于生成測試用例的方法也可以不需要終端設(shè)備101、102、103和網(wǎng)絡(luò)104,而只由服務(wù)器105自身來執(zhí)行,本申請對此不做具體限定??梢岳斫獾氖牵谛枰煞?wù)器105獨自執(zhí)行本申請實施例所提供的用于生成測試用例的方法時,服務(wù)器105可以是具有顯示屏并且支持文本編輯功能或者圖文混合編輯功能的各種電子設(shè)備。
應(yīng)該理解,圖1中的終端設(shè)備、網(wǎng)絡(luò)和服務(wù)器的數(shù)目僅僅是示意性的。根據(jù)實現(xiàn)需要,可以具有任意數(shù)目的終端設(shè)備、網(wǎng)絡(luò)和服務(wù)器。
繼續(xù)參考圖2,其示出了根據(jù)本申請的用于生成測試用例的方法的一個實施例的流程200。該用于生成測試用例的方法,包括以下步驟:
步驟201,接收測試用例生成請求。
在本實施例中,用于生成測試用例的方法運(yùn)行于其上的電子設(shè)備(例如圖1所示的服務(wù)器)可以本地或者通過有線連接方式或者無線連接方式從與上述電子設(shè)備網(wǎng)絡(luò)連接的終端設(shè)備接收測試用例生成請求。其中,上述測試用例生成請求可以包括用于生成測試用例的文本。
在本實施例的一些可選的實現(xiàn)方式中,用于生成測試用例的文本可以是由上述電子設(shè)備的用戶在上述電子設(shè)備上編輯的文本,上述文本還可以是由上述電子設(shè)備的用戶在上述電子設(shè)備上采用圖文混合編輯工具拖拽預(yù)設(shè)圖標(biāo)并為拖拽的圖標(biāo)輸入相應(yīng)的字符串,再由上述圖文混合編輯工具將用戶所拖拽的圖標(biāo)和輸入的字符串按照預(yù)設(shè)的轉(zhuǎn)換規(guī)則轉(zhuǎn)換成文本。這樣,上述電子設(shè)備可以本地接收包括上述文本的測試用例生成請求。
在本實施例的一些可選的實現(xiàn)方式中,用于生成測試用例的文本還可以是由終端設(shè)備的用戶在終端設(shè)備上編輯的文本,或者上述文本還可以是由終端設(shè)備的用戶在終端設(shè)備上采用圖文混合編輯工具拖拽預(yù)設(shè)圖標(biāo)并為拖拽的圖標(biāo)輸入相應(yīng)的字符串,再由上述圖文混合編輯工具將用戶所拖拽的圖標(biāo)和輸入的字符串按照預(yù)設(shè)的轉(zhuǎn)換規(guī)則轉(zhuǎn)換成文本。這樣,上述電子設(shè)備可以通過有線連接方式或者無線連接方式從與上述終端設(shè)備接收包括上述文本的測試用例生成請求。
作為示例,下面給出一種將圖文混合轉(zhuǎn)換成文本的轉(zhuǎn)換規(guī)則:
假設(shè),圖文混合中包括:一個開始節(jié)點圖標(biāo)、一個結(jié)束節(jié)點圖標(biāo)、至少一個中間節(jié)點圖標(biāo)以及上述各個節(jié)點圖標(biāo)之間的連接線圖標(biāo),其中,中間節(jié)點圖標(biāo)中可以編輯有字符串、連接線圖標(biāo)上也可以編輯有字符串。
這樣,可以預(yù)設(shè)如下的轉(zhuǎn)換規(guī)則:
(1)對于圖中的開始節(jié)點圖標(biāo),在文本開始處添加字符串“start”;
(2)對于圖中的每個連接線圖標(biāo),在文本中新建一行,并將該連接線圖標(biāo)的起始節(jié)點圖標(biāo)中編輯的字符串添加到新建的一行的行首,然后繼續(xù)添加字符串“->”,接著將該連接線圖標(biāo)的終止節(jié)點圖標(biāo)中編輯的字符串添加到該行中字符串“->”之后,再之后添加字符串“[”,再將該連接線圖標(biāo)的連接線字符串添加到該行中“[”之后,最后添加字符串“];”
(3)對于圖中的結(jié)束節(jié)點圖標(biāo),在文本結(jié)尾處添加字符串“end”;
請參考圖3a和圖3b,圖3a中示出了一種圖文混合,而圖3b則是將圖3a所示的圖文混合按照上述轉(zhuǎn)換規(guī)則轉(zhuǎn)換后所得到的文本。
步驟202,解析文本,生成有向圖。
在本實施例中,上述電子設(shè)備(例如圖1所示的服務(wù)器)可以對上述文本進(jìn)行解析,并生成有向圖。其中,上述有向圖可以包括至少三個節(jié)點和上述至少三個節(jié)點間的連接線信息。
這里,節(jié)點可以包括用于指示控件或網(wǎng)頁的節(jié)點標(biāo)識。這里,開始節(jié)點可以是用于指示有向圖的開始的節(jié)點,開始節(jié)點的節(jié)點標(biāo)識可以為空,也就是說開始節(jié)點可以不對應(yīng)有網(wǎng)頁或控件。同樣,結(jié)束節(jié)點可以是用于指示有向圖的結(jié)束的節(jié)點,結(jié)束節(jié)點的節(jié)點標(biāo)識也可以為空,也就是說結(jié)束節(jié)點也可以不對應(yīng)有網(wǎng)頁或控件。
這里,上述有向圖所包括的節(jié)點中除開始節(jié)點和結(jié)束節(jié)點外的其他節(jié)點為中間節(jié)點,每個中間節(jié)點的節(jié)點標(biāo)識可以不為空,即,每個中間節(jié)點均對應(yīng)有網(wǎng)頁或者控件。
這里,連接線信息用于對有向圖中的節(jié)點間的連接線進(jìn)行表征,連接線信息可以包括操作標(biāo)識、起始節(jié)點標(biāo)識和終止節(jié)點標(biāo)識。其中,起始節(jié)點標(biāo)識是連接線信息所表征的節(jié)點間連接線的起始節(jié)點的節(jié)點標(biāo)識,終止節(jié)點標(biāo)識是連接線信息所表征的節(jié)點間連接線的終止節(jié)點的節(jié)點標(biāo)識。操作標(biāo)識用于指示節(jié)點間連接線的起始節(jié)點與終止節(jié)點間的操作。作為示例,操作標(biāo)識可以是節(jié)點間連接線的起始節(jié)點與終止節(jié)點間的操作所對應(yīng)的代碼所在位置的位置信息,例如,文件存儲路徑。作為示例,操作標(biāo)識也可以是節(jié)點間連接線的起始節(jié)點與終止節(jié)點間的操作所對應(yīng)的代碼的名稱信息,例如,api(applicationprogramminginterface,應(yīng)用程序編程接口)函數(shù)名稱。
這里,上述有向圖所包括的至少三個節(jié)點可以包括一個開始節(jié)點、一個結(jié)束節(jié)點和至少一個中間節(jié)點。
在本實施例中,步驟202可以如下進(jìn)行:
第一,確定上述文本是否與預(yù)設(shè)編輯規(guī)則匹配。
第二,如果確定上述文本不與預(yù)設(shè)編輯規(guī)則匹配,則可以生成用于指示文本不符合編輯規(guī)則的提示信息,以及輸出上述提示信息,并不再進(jìn)行后續(xù)的解析操作。
第三,如果確定上述文本與預(yù)設(shè)編輯規(guī)則匹配,則可以按照預(yù)設(shè)語法規(guī)則解析上述文本,并生成有向圖。
作為示例,下面給出一種預(yù)設(shè)編輯規(guī)則:
(1)文本必須以“start”開始且以“end;”結(jié)束;
(2)文本中每行必須包括“->”和“[]”;
(3)文本中每行的“->”的左側(cè)和右側(cè)分別有字符串;
(4)文本中每行以分號結(jié)束。
作為示例,下面再給出在上述預(yù)設(shè)編輯規(guī)則的基礎(chǔ)上的預(yù)設(shè)語法規(guī)則:
(1)“start”為開始節(jié)點的節(jié)點標(biāo)識;
(2)每行中“->”表征節(jié)點間連接線;
(3)每行從首字符開始到“->”之間的字符串為節(jié)點間連接線的起始節(jié)點的節(jié)點標(biāo)識;
(4)每行從“->”右側(cè)的首字符開始到“[”之間的字符串為節(jié)點間連接線的終止節(jié)點的節(jié)點標(biāo)識;
(5)每行“[]”中的內(nèi)容表示該行的“->”所表示的節(jié)點間連接線的連接線信息中的操作標(biāo)識;
(6)“end”為結(jié)束節(jié)點的節(jié)點標(biāo)識。
作為示例,圖4a中示出了符合上述語法規(guī)則的文本,圖4b示出了解析圖4a中的文本所得到的有向圖。
步驟203,深度優(yōu)先遍歷有向圖,生成至少一條測試路徑。
在本實施例中,用于生成測試用例的方法運(yùn)行于其上的電子設(shè)備上可以深度優(yōu)先遍歷步驟202中所生成的有向圖,并生成至少一條測試路徑。其中,上述至少一條測試路徑中每條測試路徑的起點為上述有向圖的開始節(jié)點、終點為上述有向圖的結(jié)束節(jié)點,而且同一條測試路徑所包括的各個節(jié)點互不相同。也就是說,上述電子設(shè)備可以以有向圖的開始節(jié)點為起點,以結(jié)束節(jié)點為終點,深度優(yōu)選遍歷上述有向圖,從而得到至少一條測試路徑。從而,測試路徑可以從有向圖的開始節(jié)點到結(jié)束節(jié)點,而且測試路徑中不存在環(huán)。這樣,在為測試路徑生成測試用例時,就不會存在循環(huán)問題,繼而可以簡化測試過程。
步驟204,對于至少一條測試路徑中的每條測試路徑,根據(jù)該條測試路徑中的各個節(jié)點和連接線信息,為該條測試路徑生成對應(yīng)的測試用例。
在本實施例中,上述電子設(shè)備可以在生成至少一條測試路徑后,對于所生成的至少一條測試路徑中的每條測試路徑,根據(jù)該條測試路徑中的各個節(jié)點和連接線信息,為該條測試路徑生成對應(yīng)的測試用例。由于測試路徑中記錄的是從有向圖的開始節(jié)點到結(jié)束節(jié)點的路徑,因此,按照測試路徑所生成的測試用例,可以實現(xiàn)從有向圖的開始節(jié)點執(zhí)行到結(jié)束節(jié)點。而且,測試路徑是從有向圖遍歷得到的,測試路徑中同樣記錄了有向圖中的相應(yīng)的節(jié)點和節(jié)點間的連接線信息,也就是說,測試路徑中從開始節(jié)點到達(dá)結(jié)束節(jié)點的過程中所經(jīng)過的每條節(jié)點間連接線記錄了從該條節(jié)點間連接線的起始節(jié)點的節(jié)點標(biāo)識所指示的網(wǎng)頁或控件到達(dá)終止節(jié)點的節(jié)點標(biāo)識所指示的網(wǎng)頁或控件所需要執(zhí)行的操作,從而按照該測試路徑可以生成相應(yīng)的測試用例,執(zhí)行該相應(yīng)的測試用例可以達(dá)到按照測試路徑執(zhí)行測試。
在本實施例的一些可選的實現(xiàn)方式中,步驟204可以如下進(jìn)行:
對于至少一條測試路徑中的每條測試路徑,執(zhí)行以下測試用例生成操作:
首先,為該條測試路徑新建測試用例。這里,測試用例是用于對待測試網(wǎng)頁或者待測試應(yīng)用進(jìn)行測試的代碼或者腳本。新建測試用例就是新建測試用例格式的代碼或者腳本文件。
在本實現(xiàn)方式中,測試用例的格式可以由上述電子設(shè)備根據(jù)開發(fā)測試人員的第三設(shè)置指令而指定,例如可以給開發(fā)測試人員提供測試用例格式設(shè)置界面,以將測試用例的格式設(shè)置為“python腳本格式”,這樣,上述電子設(shè)備可以在新建測試用例的時候,新建“python腳本格式”的測試用例?;蛘?,上述測試用例的格式也可以被缺省設(shè)置,例如,“c語言代碼”。
其次,對于該條測試路徑中的每個中間節(jié)點,在所新建的測試用例中添加代碼。
這里,所添加的代碼用于顯示該中間節(jié)點的節(jié)點標(biāo)識所指示的控件或網(wǎng)頁以及對該中間節(jié)點的節(jié)點標(biāo)識所指示的控件或網(wǎng)頁執(zhí)行相應(yīng)的操作,其中,上述相應(yīng)的操作為該中間節(jié)點與該中間節(jié)點的下一節(jié)點間的連接線信息中操作標(biāo)識所指示的操作。
繼續(xù)參見圖5,圖5是根據(jù)本實施例的用于生成測試用例的方法的應(yīng)用場景的一個示意圖。在圖5的應(yīng)用場景中,用戶使用終端設(shè)備501上的圖文混合編輯工具編輯了圖形和文本502,然后終端設(shè)備501將上述圖形和文本混合502轉(zhuǎn)換為文本503,再后終端設(shè)備501向服務(wù)器504發(fā)出包括上述文本503的測試用例生成請求。接著,服務(wù)器504接收到上述文本503,并解析上述文本503后得到有向圖(該有向圖可以同圖形和文本502),再深度優(yōu)先遍歷上述有向圖得到三條測試路徑5051、5052、5053,最后為三條測試路徑5051、5052、5053分別生成測試用例5061、5062、5063。
本申請的上述實施例提供的方法通過接收用于生成測試用例的文本,再解析接收到的文本并生成有向圖,然后深度優(yōu)先遍歷上述有向圖,生成至少一條測試路徑,最后根據(jù)測試路徑中的各個節(jié)點和連接線信息,為每條測試路徑生成對應(yīng)的測試用例。從而不需人工編寫測試用例,只需提供可以解析出測試路徑的文本,降低了對編寫測試用例人員的經(jīng)驗要求,并提高了測試用例對用于生成測試用例的文本中的執(zhí)行路徑的覆蓋度,在使用所生成的測試用例進(jìn)行測試時,可以提高測試的全面性。
進(jìn)一步參考圖6,其示出了用于生成測試用例的方法的又一個實施例的流程600。該用于生成測試用例的方法的流程600,包括以下步驟:
步驟601,接收測試用例生成請求。
步驟602,解析文本,生成有向圖。
在本實施例中步驟601和步驟602的具體操作與圖2所示的實施例中步驟201和步驟202的操作基本相同,在此不再贅述。
步驟603,呈現(xiàn)有向圖。
在本實施例的一些可選的實現(xiàn)方式中,用于生成測試用例的方法運(yùn)行于其上的電子設(shè)備(例如圖1所示的服務(wù)器)可以在步驟602中生成有向圖后在上述電子設(shè)備本地呈現(xiàn)上述有向圖。
在本實施例的一些可選的實現(xiàn)方式中,用于生成測試用例的方法運(yùn)行于其上的電子設(shè)備(例如圖1所示的服務(wù)器)也可以在步驟602中生成有向圖后,將所生成的有向圖發(fā)送給向上述電子設(shè)備發(fā)出測試用例生成請求的終端設(shè)備,以供終端設(shè)備呈現(xiàn)上述有向圖。
步驟604,響應(yīng)于檢測到用戶輸入的根據(jù)有向圖生成測試路徑的指令,獲取用戶輸入的用于指示測試路徑的文本格式的測試路徑格式信息。
在本實施例中,用于生成測試用例的方法運(yùn)行于其上的電子設(shè)備(例如圖1所示的服務(wù)器)可以在步驟603中呈現(xiàn)有向圖后,實時檢測用戶是否輸入了根據(jù)有向圖生成測試路徑的指令,如果檢測到上述指令,表明用戶已經(jīng)確定所呈現(xiàn)的有向圖與測試用例生成請求中的文本內(nèi)容相匹配,則可以獲取用戶輸入的用于指示測試路徑的文本格式的測試路徑格式信息。這里,測試路徑的文本格式可以包括網(wǎng)頁格式和應(yīng)用格式,其中,網(wǎng)頁格式是用于對待測試網(wǎng)頁進(jìn)行測試的測試路徑文本格式,應(yīng)用格式是用于對待測試應(yīng)用進(jìn)行測試的測試路徑文本格式。
可以理解的是,如果步驟603中是在上述電子設(shè)備上呈現(xiàn)有向圖,則上述電子設(shè)備可以本地實時檢測用戶是否輸入了根據(jù)有向圖生成測試路徑的指令,如果檢測到上述指令,則由上述電子設(shè)備本地獲取用戶輸入的用于指示測試路徑的文本格式的測試路徑格式信息。如果步驟603中是在終端設(shè)備上呈現(xiàn)有向圖,則上述終端設(shè)備可以實時檢測用戶是否輸入了根據(jù)有向圖生成測試路徑的指令,如果檢測到上述指令,則由上述終端設(shè)備獲取用戶輸入的用于指示測試路徑的文本格式的測試路徑格式信息,并將上述所獲取的測試路徑格式信息發(fā)送給上述電子設(shè)備,從而上述電子設(shè)備可以獲取上述測試路徑格式信息。
步驟605,深度優(yōu)先遍歷有向圖,生成至少一條測試路徑格式信息所指示的文本格式的測試路徑。
在本實施例中,上述電子設(shè)備可以深度優(yōu)先遍歷步驟602所生成的有向圖,并生成至少一條步驟604中所獲取的測試路徑格式信息所指示的文本格式的測試路徑。
由于網(wǎng)頁主要有頁面元素組成,而應(yīng)用主要由用戶界面和控件組成,即二者的組成元素不同。另外,用戶與網(wǎng)頁中的頁面元素的交互方式和用戶與應(yīng)用中的控件的交互方式也會不同。因此,針對網(wǎng)頁的測試路徑的文本格式和針對應(yīng)用的測試路徑的文本格式會有所不同,需要針對網(wǎng)頁或應(yīng)用生成相應(yīng)文本格式的測試路徑。
步驟606,呈現(xiàn)至少一條測試路徑。
在本實施例中,上述電子設(shè)備可以在步驟605中生成了至少一條測試路徑后,呈現(xiàn)上述至少一條測試路徑。
在本實施例的一些可選的實現(xiàn)方式中,用于生成測試用例的方法運(yùn)行于其上的電子設(shè)備(例如圖1所示的服務(wù)器)可以在步驟605中生成了至少一條測試路徑后,在上述電子設(shè)備本地呈現(xiàn)上述有向圖。
在本實施例的一些可選的實現(xiàn)方式中,用于生成測試用例的方法運(yùn)行于其上的電子設(shè)備(例如圖1所示的服務(wù)器)也可以在步驟605中生成了至少一條測試路徑后,將所生成的至少一條測試路徑發(fā)送給向上述電子設(shè)備發(fā)出測試用例生成請求的終端設(shè)備,以供終端設(shè)備呈現(xiàn)上述至少一條測試路徑。
步驟607,響應(yīng)于檢測到用戶輸入的根據(jù)測試路徑生成測試用例的指令,對于至少一條測試路徑中的每條測試路徑,根據(jù)該條測試路徑中的各個節(jié)點和連接線信息,為該條測試路徑生成對應(yīng)的測試用例。
在本實施例中,用于生成測試用例的方法運(yùn)行于其上的電子設(shè)備(例如圖1所示的服務(wù)器)可以在步驟606中呈現(xiàn)至少一條測試路徑后,實時檢測用戶是否輸入了根據(jù)測試路徑生成測試用例的指令,如果檢測到上述指令,表明用戶已經(jīng)確定步驟606所呈現(xiàn)的測試路徑與步驟603中所呈現(xiàn)的有向圖相匹配,則可以對于至少一條測試路徑中的每條測試路徑,根據(jù)該條測試路徑中的各個節(jié)點和連接線信息,為該條測試路徑生成對應(yīng)的測試用例。
可以理解的是,如果步驟606中是在上述電子設(shè)備本地呈現(xiàn)測試路徑,則上述電子設(shè)備可以本地實時檢測用戶是否輸入了根據(jù)測試路徑生成測試用例的指令,如果檢測到上述指令,則上述電子設(shè)備可以對于至少一條測試路徑中的每條測試路徑,根據(jù)該條測試路徑中的各個節(jié)點和連接線信息,為該條測試路徑生成對應(yīng)的測試用例。如果步驟606中是在終端設(shè)備上呈現(xiàn)測試路徑,則上述終端設(shè)備可以實時檢測用戶是否輸入了根據(jù)測試路徑生成測試用例的指令,如果檢測到上述指令,則上述終端設(shè)備可以將上述指令發(fā)送給上述電子設(shè)備,從而上述電子設(shè)備可以接收到上述指令,并可以在接收到上述指令后對于至少一條測試路徑中的每條測試路徑,根據(jù)該條測試路徑中的各個節(jié)點和連接線信息,為該條測試路徑生成對應(yīng)的測試用例。
關(guān)于如何根據(jù)測試路徑中的各個節(jié)點和連接線信息,為測試路徑生成對應(yīng)的測試用例可以參看圖2所示的實施例中步驟204的相關(guān)描述,在此不再贅述。
從圖6中可以看出,與圖2對應(yīng)的實施例相比,本實施例中的用于生成測試用例的方法的流程600多出了呈現(xiàn)有向圖、檢測用戶輸入的根據(jù)有向圖生成測試路徑的指令、呈現(xiàn)至少一條測試路徑以及檢測用戶輸入的根據(jù)測試路徑生成測試用例的指令的步驟。由此,本實施例描述的方案可以在用戶確認(rèn)的情況下生成測試用例,從而可以提高測試用例生成的準(zhǔn)確性。
進(jìn)一步參考圖7,作為對上述各圖所示方法的實現(xiàn),本申請?zhí)峁┝艘环N用于生成測試用例的裝置的一個實施例,該裝置實施例與圖2所示的方法實施例相對應(yīng),該裝置具體可以應(yīng)用于各種電子設(shè)備中。
如圖7所示,本實施例的用于生成測試用例的裝置700包括:請求接收單元701、有向圖生成單元702、測試路徑生成單元703和測試用例生成單元704。其中,請求接收單元701,配置用于接收測試用例生成請求,上述測試用例生成請求包括用于生成測試用例的文本;有向圖生成單元702,配置用于解析上述文本,生成有向圖,其中,上述有向圖包括至少三個節(jié)點和上述至少三個節(jié)點間的連接線信息,節(jié)點包括用于指示控件或網(wǎng)頁的節(jié)點標(biāo)識,連接線信息包括操作標(biāo)識、起始節(jié)點標(biāo)識和終止節(jié)點標(biāo)識,操作標(biāo)識用于指示起始節(jié)點與終止節(jié)點間的操作,上述至少三個節(jié)點包括一個開始節(jié)點、一個結(jié)束節(jié)點和至少一個中間節(jié)點;測試路徑生成單元703,配置用于深度優(yōu)先遍歷上述有向圖,生成至少一條測試路徑,其中,上述至少一條測試路徑中每條測試路徑的起點為上述開始節(jié)點、終點為上述結(jié)束節(jié)點,同一條測試路徑所包括的各個節(jié)點互不相同;測試用例生成單元704,配置用于對于上述至少一條測試路徑中的每條測試路徑,根據(jù)該條測試路徑中的各個節(jié)點和連接線信息,為該條測試路徑生成對應(yīng)的測試用例。
在本實施例中,用于生成測試用例的裝置700的請求接收單元701、有向圖生成單元702、測試路徑生成單元703和測試用例生成單元704的具體處理及其所帶來的技術(shù)效果可分別參考圖2對應(yīng)實施例中步驟201、步驟202、步驟203和步驟204的相關(guān)說明,在此不再贅述。
在本實施例的一些可選的實現(xiàn)方式中,上述測試路徑生成單元703可以包括:有向圖呈現(xiàn)模塊7031,配置用于呈現(xiàn)上述有向圖;測試路徑生成模塊7032,配置用于響應(yīng)于檢測到用戶輸入的根據(jù)有向圖生成測試路徑的指令,深度優(yōu)先遍歷上述有向圖,生成至少一條測試路徑。有向圖呈現(xiàn)模塊7031和測試路徑生成模塊7032的具體處理及其所帶來的技術(shù)效果可分別參考圖6對應(yīng)實施例中步驟603、步驟604和步驟605的相關(guān)說明,在此不再贅述。
在本實施例的一些可選的實現(xiàn)方式中,上述測試路徑生成模塊7032可以進(jìn)一步配置用于:響應(yīng)于檢測到上述指令,獲取用戶輸入的用于指示測試路徑的文本格式的測試路徑格式信息;深度優(yōu)先遍歷上述有向圖,生成至少一條上述測試路徑格式信息所指示的文本格式的測試路徑。測試路徑生成模塊7032的具體處理及其所帶來的技術(shù)效果可參考圖6對應(yīng)實施例中步驟605的相關(guān)說明,在此不再贅述。
在本實施例的一些可選的實現(xiàn)方式中,上述測試用例生成單元704可以包括:測試路徑呈現(xiàn)模塊7041,配置用于呈現(xiàn)上述至少一條測試路徑;測試用例生成模塊7042,配置用于響應(yīng)于檢測到用戶輸入的根據(jù)測試路徑生成測試用例的指令,對于上述至少一條測試路徑中的每條測試路徑,根據(jù)該條測試路徑中的各個節(jié)點和連接線信息,為該條測試路徑生成對應(yīng)的測試用例。測試路徑呈現(xiàn)模塊7041和測試用例生成模塊7042的具體處理及其所帶來的技術(shù)效果可分別參考圖6對應(yīng)實施例中步驟606和步驟607的相關(guān)說明,在此不再贅述。
在本實施例的一些可選的實現(xiàn)方式中,上述測試用例生成模塊7042可以進(jìn)一步配置用于:對于上述至少一條測試路徑中的每條測試路徑,執(zhí)行以下測試用例生成操作:新建測試用例;對于該條測試路徑中的每個中間節(jié)點,在所新建的測試用例中添加代碼,其中,所添加的代碼用于顯示該中間節(jié)點的節(jié)點標(biāo)識所指示的控件或網(wǎng)頁以及對該中間節(jié)點的節(jié)點標(biāo)識所指示的控件或網(wǎng)頁執(zhí)行相應(yīng)的操作,其中,上述相應(yīng)的操作為該中間節(jié)點與該中間節(jié)點的下一節(jié)點間的連接線信息中操作標(biāo)識所指示的操作。測試用例生成模塊7042的具體處理及其所帶來的技術(shù)效果可參考圖6對應(yīng)實施例中步驟607的相關(guān)說明,在此不再贅述。
下面參考圖8,其示出了適于用來實現(xiàn)本申請實施例的服務(wù)器的計算機(jī)系統(tǒng)800的結(jié)構(gòu)示意圖。圖8示出的服務(wù)器僅僅是一個示例,不應(yīng)對本申請實施例的功能和使用范圍帶來任何限制。
如圖8所示,計算機(jī)系統(tǒng)800包括中央處理單元(cpu,centralprocessingunit)801,其可以根據(jù)存儲在只讀存儲器(rom,readonlymemory)802中的程序或者從存儲部分808加載到隨機(jī)訪問存儲器(ram,randomaccessmemory)803中的程序而執(zhí)行各種適當(dāng)?shù)膭幼骱吞幚?。在ram803中,還存儲有系統(tǒng)800操作所需的各種程序和數(shù)據(jù)。cpu801、rom802以及ram803通過總線804彼此相連。輸入/輸出(i/o,input/output)接口805也連接至總線804。
以下部件連接至i/o接口805:包括鍵盤、鼠標(biāo)等的輸入部分806;包括諸如陰極射線管(crt,cathoderaytube)、液晶顯示器(lcd,liquidcrystaldisplay)等以及揚(yáng)聲器等的輸出部分807;包括硬盤等的存儲部分808;以及包括諸如lan(局域網(wǎng),localareanetwork)卡、調(diào)制解調(diào)器等的網(wǎng)絡(luò)接口卡的通信部分809。通信部分809經(jīng)由諸如因特網(wǎng)的網(wǎng)絡(luò)執(zhí)行通信處理。驅(qū)動器810也根據(jù)需要連接至i/o接口805。可拆卸介質(zhì)811,諸如磁盤、光盤、磁光盤、半導(dǎo)體存儲器等等,根據(jù)需要安裝在驅(qū)動器810上,以便于從其上讀出的計算機(jī)程序根據(jù)需要被安裝入存儲部分808。
特別地,根據(jù)本公開的實施例,上文參考流程圖描述的過程可以被實現(xiàn)為計算機(jī)軟件程序。例如,本公開的實施例包括一種計算機(jī)程序產(chǎn)品,其包括承載在計算機(jī)可讀介質(zhì)上的計算機(jī)程序,該計算機(jī)程序包含用于執(zhí)行流程圖所示的方法的程序代碼。在這樣的實施例中,該計算機(jī)程序可以通過通信部分809從網(wǎng)絡(luò)上被下載和安裝,和/或從可拆卸介質(zhì)811被安裝。在該計算機(jī)程序被中央處理單元(cpu)801執(zhí)行時,執(zhí)行本申請的方法中限定的上述功能。需要說明的是,本申請所述的計算機(jī)可讀介質(zhì)可以是計算機(jī)可讀信號介質(zhì)或者計算機(jī)可讀存儲介質(zhì)或者是上述兩者的任意組合。計算機(jī)可讀存儲介質(zhì)例如可以是——但不限于——電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合。計算機(jī)可讀存儲介質(zhì)的更具體的例子可以包括但不限于:具有一個或多個導(dǎo)線的電連接、便攜式計算機(jī)磁盤、硬盤、隨機(jī)訪問存儲器(ram)、只讀存儲器(rom)、可擦式可編程只讀存儲器(eprom或閃存)、光纖、便攜式緊湊磁盤只讀存儲器(cd-rom)、光存儲器件、磁存儲器件、或者上述的任意合適的組合。在本申請中,計算機(jī)可讀存儲介質(zhì)可以是任何包含或存儲程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。而在本申請中,計算機(jī)可讀的信號介質(zhì)可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號,其中承載了計算機(jī)可讀的程序代碼。這種傳播的數(shù)據(jù)信號可以采用多種形式,包括但不限于電磁信號、光信號或上述的任意合適的組合。計算機(jī)可讀的信號介質(zhì)還可以是計算機(jī)可讀存儲介質(zhì)以外的任何計算機(jī)可讀介質(zhì),該計算機(jī)可讀介質(zhì)可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序。計算機(jī)可讀介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括但不限于:無線、電線、光纜、rf等等,或者上述的任意合適的組合。
附圖中的流程圖和框圖,圖示了按照本申請各種實施例的系統(tǒng)、方法和計算機(jī)程序產(chǎn)品的可能實現(xiàn)的體系架構(gòu)、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段、或代碼的一部分,該模塊、程序段、或代碼的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個接連地表示的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機(jī)指令的組合來實現(xiàn)。
描述于本申請實施例中所涉及到的單元可以通過軟件的方式實現(xiàn),也可以通過硬件的方式來實現(xiàn)。所描述的單元也可以設(shè)置在處理器中,例如,可以描述為:一種處理器包括請求接收單元、有向圖生成單元、測試路徑生成單元和測試用例生成單元。其中,這些單元的名稱在某種情況下并不構(gòu)成對該單元本身的限定,例如,請求接收單元還可以被描述為“接收測試用例生成請求的單元”。
作為另一方面,本申請還提供了一種計算機(jī)可讀介質(zhì),該計算機(jī)可讀介質(zhì)可以是上述實施例中描述的裝置中所包含的;也可以是單獨存在,而未裝配入該裝置中。上述計算機(jī)可讀介質(zhì)承載有一個或者多個程序,當(dāng)上述一個或者多個程序被該裝置執(zhí)行時,使得該裝置:接收測試用例生成請求,上述測試用例生成請求包括用于生成測試用例的文本;解析上述文本,生成有向圖,其中,上述有向圖包括至少三個節(jié)點和上述至少三個節(jié)點間的連接線信息,節(jié)點包括用于指示控件或網(wǎng)頁的節(jié)點標(biāo)識,連接線信息包括操作標(biāo)識、起始節(jié)點標(biāo)識和終止節(jié)點標(biāo)識,操作標(biāo)識用于指示起始節(jié)點與終止節(jié)點間的操作,上述至少三個節(jié)點包括一個開始節(jié)點、一個結(jié)束節(jié)點和至少一個中間節(jié)點;深度優(yōu)先遍歷上述有向圖,生成至少一條測試路徑,其中,上述至少一條測試路徑中每條測試路徑的起點為上述開始節(jié)點、終點為上述結(jié)束節(jié)點,同一條測試路徑所包括的各個節(jié)點互不相同;對于上述至少一條測試路徑中的每條測試路徑,根據(jù)該條測試路徑中的各個節(jié)點和連接線信息,為該條測試路徑生成對應(yīng)的測試用例。
以上描述僅為本申請的較佳實施例以及對所運(yùn)用技術(shù)原理的說明。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,本申請中所涉及的發(fā)明范圍,并不限于上述技術(shù)特征的特定組合而成的技術(shù)方案,同時也應(yīng)涵蓋在不脫離上述發(fā)明構(gòu)思的情況下,由上述技術(shù)特征或其等同特征進(jìn)行任意組合而形成的其它技術(shù)方案。例如上述特征與本申請中公開的(但不限于)具有類似功能的技術(shù)特征進(jìn)行互相替換而形成的技術(shù)方案。