欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

測試用例自動生成方法及裝置與流程

文檔序號:11582542閱讀:227來源:國知局
測試用例自動生成方法及裝置與流程

本發(fā)明涉及計算機領(lǐng)域,尤其涉及一種測試用例自動生成方法及裝置。



背景技術(shù):

在程序開發(fā)的過程中,需要確保編譯器具有較高的可靠性,尤其針對自主開發(fā)的編譯器,更需要驗證其可靠性。在驗證編譯器的可靠性時,通常使用大量的測試用例來覆蓋編譯器的功能和性能的各個方面。若通過人工手動編寫測試用例,所耗費的時間和工作量較大,無法滿足對編譯器進行測試的質(zhì)量和效率的需求。

由于對編譯器進行測試時,主要的工作量為編寫測試用例輸出至被測編譯器進行編譯,測試用例的可復(fù)用程度較高。在現(xiàn)有技術(shù)中,可以采用程序自動生成測試代碼技術(shù)來自動生成測試用例,以解決同類型的編譯器的測試工作。

在測試用例中,變量是測試用例代碼中最基本的組成元素。變量在測試用例代碼中的每個位置的正確應(yīng)用與否,是判斷編譯器是否能夠正確工作的條件之一。因此,在自動生成測試用例時,所生成的變量是否能夠在其有效的作用域中被正確引用,對生成正確的測試用例起著至關(guān)重要的作用。

目前,自動生成的測試用例的正確率較低,導(dǎo)致編譯器對測試用例的編譯經(jīng)常出錯,對編譯器進行測試的質(zhì)量和效率較低。



技術(shù)實現(xiàn)要素:

本發(fā)明實施例解決的技術(shù)問題是如何提高自動生成的測試用例的正確率,提高對編譯器進行測試的質(zhì)量和效率。

為解決上述技術(shù)問題,本發(fā)明實施例提供一種測試用例自動生成方法,包括:獲取存在變量需求的作用域的標識;根據(jù)所述作用域的標識,獲取所述作用域?qū)?yīng)的作用域集合;從所述作用域集合中,篩選出所述作用域?qū)傩缘臉俗R包含于所述作用域集合的變量集合;從所篩選出的所述變量集合中篩選出與所述變量需求對應(yīng)的變量;根據(jù)篩選出的所述變量構(gòu)建表達式,生成所述測試用例。

可選的,所述從篩選出的變量集合中篩選出所述變量,包括:根據(jù)所述變量的數(shù)據(jù)類型,從所述所篩選出的變量集合中篩選出與所述變量需求對應(yīng)的變量。

可選的,所述篩選出所屬作用域?qū)傩园谒鲎饔糜蚣系淖兞考?,包括:從預(yù)先生成的作用域類中,讀取所述作用域集合對應(yīng)的作用域集合屬性;從預(yù)先生成的變量類中,讀取所述變量對應(yīng)的作用域?qū)傩裕粡乃鲎饔糜蚣蠈傩灾?,篩選出所述變量對應(yīng)的作用域?qū)傩园谒鲎饔糜蚣蠈傩缘淖兞考稀?/p>

可選的,所述作用域類為適于管理所述生成的作用域的類;所述作用域類中的信息包括:所述生成的作用域的標識及對應(yīng)的作用域集合。

可選的,采用如下方法生成所述作用域類:生成作用域,以及所述生成的作用域?qū)?yīng)的標識和作用域集合;判斷所述生成的作用域是否存在父作用域;當所述生成的作用域不存在所述父作用域時,將所述生成的作用域的標識添加到所述生成的作用域?qū)?yīng)的作用域集合中;當所述生成的作用域存在所述父作用域時,讀取所述父作用域?qū)?yīng)的作用域集合中的所有數(shù)據(jù),并添加至所述生成的作用域?qū)?yīng)的作用域集合中。

可選的,所述變量類為適于管理所述生成的變量的類;所述變量類中的信息包括:所述生成的變量的標識、所述生成的變量的數(shù)據(jù)類型、所述生成的變量的數(shù)據(jù)值以及所述生成的變量的所屬作用域。

本發(fā)明實施例還提供了一種測試用例自動生成裝置,包括:作用域標識獲取單元,用于獲取存在變量需求的作用域的標識;作用域集合獲取單元,用于根據(jù)所述作用域的標識,獲取所述作用域?qū)?yīng)的作用域集合;變量集合篩選單元,用于從所述作用域集合中,篩選出所屬作用域?qū)傩缘臉俗R包含于所述作用域集合的變量集合;變量篩選單元,用于從所篩選出的所述變量集合中篩選出與所述變量需求對應(yīng)的變量;測試用例生成單元,用于根據(jù)篩選出的所述變量構(gòu)建表達式,生成所述測試用例。

可選的,所述變量篩選單元,用于根據(jù)所述變量的數(shù)據(jù)類型,從所述所篩選出的變量集合中篩選出與所述變量需求對應(yīng)的變量。

可選的,所述變量集合篩選單元,用于從預(yù)先生成的作用域類中讀取所述作用域集合對應(yīng)的作用域集合屬性;從預(yù)先生成的變量類中讀取所述變量對應(yīng)的作用域?qū)傩?;從所述作用域集合屬性中,篩選出所述變量對應(yīng)的作用與屬性包含于所述作用域集合屬性的變量集合。

可選的,所述作用域類為適于管理所述生成的作用域的類;所述作用域類中的信息包括:所述生成的作用域的標識及對應(yīng)的作用域集合。

可選的,采用如下方法生成所述作用域類:生成作用域,以及所述生成的作用域?qū)?yīng)的標識和作用域集合;判斷所述生成的作用域是否存在父作用域;當所述生成的作用域不存在所述父作用域時,將所述生成的作用域的標識添加到所述生成的作用域?qū)?yīng)的作用域集合中;當所述生成的作用域存在所述父作用域時,讀取所述父作用域?qū)?yīng)的作用域集合中的所有數(shù)據(jù),并添加至所述生成的作用域?qū)?yīng)的作用域集合中。

可選的,所述變量類為適于管理所述生成的變量的類;所述變量類中的信息包括:所述生成的變量的標識、所述生成的變量的數(shù)據(jù)類型、所述生成的變量的數(shù)據(jù)值以及所述生成的變量的所屬作用域。

與現(xiàn)有技術(shù)相比,本發(fā)明實施例的技術(shù)方案具有以下有益效果:

當某一個作用域存在變量需求時,根據(jù)作用域的標識選取對應(yīng)的作用域集合;從作用域集合中,選取所屬作用域?qū)傩缘臉俗R包含于作用域集合的變量集合,再從變量集合中選取出與變量需求對應(yīng)的變量。也就是說,作用域集合包含作用域所引用的已生成的變量對應(yīng)的所屬作用域?qū)傩裕瑩Q句話說,作用域所引用的已生成的變量為合法有效的變量,因此生成的測試用例的正確率較高,進而提高了對編譯器進行測試的質(zhì)量和效率。

進一步,根據(jù)變量的數(shù)據(jù)類型,從篩選出的變量集合中篩選出變量,可以更進一步地提高生成的測試用例的正確率。

附圖說明

圖1是本發(fā)明實施例中的一種測試用例自動生成方法的流程圖;

圖2是本發(fā)明實施例中的一種生成作用域類的流程圖;

圖3是本發(fā)明實施例中的一種測試用例自動生成裝置的結(jié)構(gòu)示意圖。

具體實施方式

在測試用例中,變量是測試用例代碼中最基本的組成元素。變量在測試用例代碼中的每個位置的正確應(yīng)用與否,是判斷編譯器是否能夠正確工作的條件之一。因此,在自動生成測試用例時,所生成的變量是否能夠在其有效的作用域中被正確引用,對生成正確的測試用例起著至關(guān)重要的作用。目前,自動生成的測試用例的正確率較低,導(dǎo)致編譯器對測試用例的編譯經(jīng)常出錯,進而導(dǎo)致對編譯器進行測試的質(zhì)量和效率較低。

在本發(fā)明實施例中,當某一個作用域存在變量需求時,根據(jù)作用域的標識選取對應(yīng)的作用域集合;從作用域集合中,選取所屬作用域?qū)傩缘臉俗R包含于作用域集合的變量集合,再從變量集合中選取出與變量需求對應(yīng)的變量。也就是說,作用域集合包含作用域所引用的已生成的變量對應(yīng)的所屬作用域?qū)傩?,換句話說,作用域所引用的已生成的變量為合法有效的變量,因此生成的測試用例的正確率較高,進而提高了對編譯器進行測試的質(zhì)量和效率。

為使本發(fā)明的上述目的、特征和有益效果能夠更為明顯易懂,下面結(jié)合附圖對本發(fā)明的具體實施例做詳細的說明。

本發(fā)明實施例提供了一種測試用例自動生成方法,參照圖1,以下通過具體步驟進行詳細說明。

步驟s101,獲取存在變量需求的作用域的標識。

在實際應(yīng)用中,可以在上位機中運行適于完成程序自動生成測試用例的應(yīng)用軟件,來測試用例的自動生成。為便于描述,本發(fā)明下述實施例中所稱的應(yīng)用軟件均為能夠完成程序自動生成測試用例的軟件。

應(yīng)用軟件在生成測試用例時,需要使用已生成的變量構(gòu)建表達式,進而根據(jù)表達式生成測試用例。在構(gòu)建表達式的過程中,作用域需要引用已生成的變量。在構(gòu)建表達式時,可以先獲取存在變量需求的作用域的標識。

在具體實施中,獲取到的存在變量需求的作用域的標識可以是存在變量需求的作用域的名稱。例如,獲取到的存在變量需求的作用域的名稱為“for_001”。

步驟s102,根據(jù)所述作用域的標識,獲取所述作用域?qū)?yīng)的作用域集合。

在具體實施中,應(yīng)用軟件可以預(yù)先生成作用域類,作用域類為適于管理生成的作用域的類,作用域類中的信息包括:生成的作用域的標識以及對應(yīng)的作用域集合,作用域集合屬性用于保存所有可對當前作用域有效的作用域的集合。

應(yīng)用軟件在獲取到作用域的標識之后,即可根據(jù)作用域的標識,在作用域類中查找作用域的標識所對應(yīng)的作用域集合。

在本發(fā)明實施例中,作用域類可以為actionscope類,actionscope類的基本信息包括生成的作用域的名稱(name)以及對應(yīng)的作用域集合(effectiveactionscope)等,actionscope類的作用域集合屬性用于保存所有可對當前作用域有效的作用域的集合。

下面對本發(fā)明實施例中作用域類的生成方法進行詳細說明。

步驟s201,生成作用域,以及所述生成的作用域?qū)?yīng)的標識和作用域集合。

在具體實施中,由于測試用例是由應(yīng)用軟件自動生成的,因此應(yīng)用軟件在生成作用域時,所生成的作用域的標識可以是隨機生成的。應(yīng)用軟件在生成作用域的標識時,可以同時生成與生成的作用域的標識對應(yīng)的作用域集合。此時,與生成的作用域的標識對應(yīng)的作用域集合為空的集合。

步驟s202,判斷所述生成的作用域是否存在父作用域。

在具體實施中,當所述生成的作用域存在父作用域時,執(zhí)行步驟s204;當所述生成的作用域不存在父作用域時,執(zhí)行步驟s203。

在具體實施中,生成的作用域可能是一個單獨的作用域,也可能是一個嵌套的作用域。

在本發(fā)明實施例中,單獨的作用域是指該作用域不包含其他的作用域,在該作用域中生成的變量,只能在該作用域中被訪問,在其他作用域中無效。

嵌套的作用域是指作用域可以互相包含,被包含的是內(nèi)層作用域,包含該內(nèi)層作用域的作用域是外層作用域,外層作用域也可稱之為內(nèi)層作用域的父作用域。在父作用域中定義的變量,在它所包含的內(nèi)層作用域中都能夠被訪問。在內(nèi)層作用域中定義的變量不能被父作用域訪問,只能被內(nèi)層作用域自身訪問,或者被內(nèi)層作用域所包含的作用域訪問。

步驟s203,將所述生成的作用域的標識添加到所述生成的作用域?qū)?yīng)的作用域集合中。

在具體實施中,當生成的作用域不存在父作用域時,生成的作用域的標識適于標識該生成的作用域,作用域的作用域集合屬性用于保存所有對該生成的作用域有效的作用域,每個作用域都至少包括其自身的有效作用域,因此,可以將生成的作用域的標識添加到對應(yīng)的作用域集合中。

例如,生成的作用域為main函數(shù)對應(yīng)的作用域。main函數(shù)對應(yīng)的作用域的標識為“main”,對應(yīng)的作用域集合為{“main”},{“main”}表示為所有作用域為“main”的變量才能在main作用域內(nèi)被引用。

步驟s204,讀取所述父作用域?qū)?yīng)的作用域集合中的所有數(shù)據(jù),并添加至所述生成的作用域?qū)?yīng)的作用域集合中。

在具體實施中,如果兩個作用域形成作用域嵌套,也可以生成對應(yīng)的作用域類。例如,作用域b對應(yīng)的代碼段b嵌套于作用域a對應(yīng)的代碼段a,則稱作用域a為外層作用域,作用域b為內(nèi)層作用域,也即作用域a為作用域b的父作用域。外層作用域a內(nèi)的有效變量在內(nèi)層作用域b中同樣為有效變量,內(nèi)層作用域b中的有效變量不一定是外層作用域a的有效變量。

由于外層作用域內(nèi)的有效變量在內(nèi)層作用域中同樣為有效變量,因此在生成內(nèi)層作用域的作用類時,可以將外層作用域的作用域集合中的所有數(shù)據(jù)都添加到內(nèi)層作用域的作用域集合中,以此來表示對外層作用域有效的變量同樣對內(nèi)層作用域有效。

例如,main作用域中包括if代碼段,為if代碼段生成一個新的作用域類。生成的新的作用域的標識為“if_001”,作用域集合為{“if_001”}。之后,將main作用域的作用域集合中所有的數(shù)據(jù)都添加到“if_001”的作用域集合中。新生成的作用域集合為{“main”,“if_001”},表示所有作用域為“main”、“if_001”的變量能夠在if_001的作用域內(nèi)被引用。

如果多個作用域形成作用域嵌套,也可以生成對應(yīng)的作用域類。

繼續(xù)參照上述舉例,設(shè)定main作用域中包括的if代碼段中,又嵌套了for循環(huán)語句,為for循環(huán)語句代碼段生成一個新的作用域類。生成的新的作用域的標識為“for_001”,作用域集合為{“for_001”}。由于for循環(huán)語句嵌套在if代碼段中,因此,需要把作用域集合{“if_001”}中的所有數(shù)據(jù)都添加到作用域集合{“for_001”}中,新生成的作用域集合為{“main”,“if_001”,“for_001”},表示所有作用域為“main”、“if_001”、“for_001”的變量能在for_001的作用域內(nèi)被引用。

通過步驟s201~步驟s204,即可實現(xiàn)作用域類的生成。

步驟s103,從所述作用域集合中,篩選出所屬作用域?qū)傩缘臉俗R包含于所述作用域集合的變量集合。

在具體實施中,應(yīng)用軟件可以預(yù)先生成變量類,變量類為適于管理生成的變量的類,變量類中的基本信息可以包括:生成的變量的標識、生成的變量的數(shù)據(jù)類型、生成的變量的數(shù)據(jù)值以及生成的變量的所屬作用域。

在具體實施中,應(yīng)用軟件可以根據(jù)所需變量的所屬作用域,從作用域集合中,篩選出變量集合。

在本發(fā)明實施例中,變量類可以為variable類。生成的變量的標識為生成的變量的名稱(name),生成的變量的所屬作用域為actionscopezone。變量類的actionscopezone屬性保存為該變量生成時所述的actionscope類,也即該變量生成時所述的作用域類。

例如,main作用域下生成的字符串變量,標識為“string001”,數(shù)據(jù)類型為“string”,數(shù)值為“abc”,所屬作用域保存為“main”作用域。字符串變量的actionscopezone屬性保存為“main”作用域,表示該變量的作用域為main,任何作用域?qū)傩约蠈傩园ā癿ain”的作用域都可以有效地引用該變量。

在篩選變量集合時,若變量m的actionscopezone屬性的名稱包含于存在變量需求的作用域n的effectiveactionscope屬性中時,則可以判定變量m可以作用于作用域n,也即作用域n可以使用變量m構(gòu)建表達式。

若變量m的actionscopezone屬性的名稱未包含于存在變量需求的作用域n的effectiveactionscope屬性中時,則可以判定變量m不可作用于作用域n,也即作用域n不可以使用變量m構(gòu)建表達式。

步驟s104,從所篩選出的所述變量集合中篩選出與變量需求對應(yīng)的變量。

在具體實施中,應(yīng)用軟件可以根據(jù)變量的數(shù)據(jù)類型,從篩選出的變量集合中篩選出與變量需求對應(yīng)的變量。

在實際應(yīng)用中可知,變量的數(shù)據(jù)類型可以包括數(shù)字型、字節(jié)型、文本型等。因此,當所需變量為數(shù)字型時,即可從變量集合中篩選出數(shù)據(jù)類型為數(shù)字型的變量。

步驟s105,根據(jù)篩選出的所述變量構(gòu)建表達式,生成所述測試用例。

在具體實施中,應(yīng)用軟件在篩選出變量之后,即可根據(jù)篩選出的變量構(gòu)建相應(yīng)的表達式,從而生成測試用例。

下面通過舉例,對本發(fā)明實施例中提供的測試用例自動生成方法進行說明。

設(shè)定main作用域中包含if語句的代碼段中,又嵌套了for循環(huán)語句。在自動生成測試用例時,需要為for語句代碼段篩選出一個字符串變量來構(gòu)造表達式。

第一步,獲取存在變量需求的作用域的標識為“for_001”。

第二步,根據(jù)作用域的標識“for_001”,獲取作用域?qū)?yīng)的作用域集合{“main”,“if_001”,“for_001”}。

第三步,從作用域集合{“main”,“if_001”,“for_001”}中,篩選出所屬作用域?qū)傩詾椤癿ain”、“if_001”或“for_001”的變量集合,篩選出的變量集合對“for_001”代碼段均有效。

第四步,從變量集合中,篩選出數(shù)據(jù)類型為字符串類型的變量。篩選出的變量為及符合作用域要求,又符合數(shù)據(jù)類型要求的合法變量,可以用于構(gòu)建表達式。

在現(xiàn)有技術(shù)中,在自動生成測試用例時,作用域所引用的變量可能位于其他作用域內(nèi),不能被當前作用域所引用,導(dǎo)致自動生成的測試用例的正確率較低,進而導(dǎo)致編譯器對測試用例的編譯經(jīng)常出錯,對編譯器進行測試的質(zhì)量和效率較低。

由此可見,當某一個作用域存在變量需求時,根據(jù)作用域的標識選取對應(yīng)的作用域集合;從作用域集合中,選取所屬作用域?qū)傩缘臉俗R包含于作用域集合的變量集合,再從變量集合中選取出所需的變量。也就是說,作用域集合包含作用域所引用的已生成的變量對應(yīng)的所屬作用域?qū)傩?,換句話說,作用域所引用的已生成的變量為合法有效的變量,因此生成的測試用例的正確率較高,進而提高了對編譯器進行測試的質(zhì)量和效率。

參照圖3,給出了本發(fā)明實施例中的一種測試用例自動生成裝置30,包括:作用域標識獲取單元301、作用域集合獲取單元302、變量集合篩選單元303、變量篩選單元304以及測試用例生成單元305,其中:

作用域標識獲取單元301,用于獲取存在變量需求的作用域的標識;

作用域集合獲取單元302,用于根據(jù)所述作用域的標識,獲取所述作用域?qū)?yīng)的作用域集合;

變量集合篩選單元303,用于從所述作用域集合中,篩選出所屬作用域?qū)傩缘臉俗R包含于所述作用域集合的變量集合;

變量篩選單元304,用于從所篩選出的變量集合中篩選出與所述變量需求對應(yīng)的變量;

測試用例生成單元305,用于根據(jù)篩選出的所述變量構(gòu)建表達式,生成所述測試用例。

在具體實施中,所述變量篩選單元304,可以用于根據(jù)所述變量的數(shù)據(jù)類型,從所述所篩選出的變量集合中篩選出與所述變量需求對應(yīng)的變量。

在具體實施中,所述變量集合篩選單元303,可以用于從預(yù)先生成的作用域類中讀取所述作用域集合對應(yīng)的作用域集合屬性;從預(yù)先生成的變量類中讀取所述變量對應(yīng)的作用域?qū)傩?;從所述作用域集合屬性中,篩選出所述變量對應(yīng)的作用與屬性包含于所述作用域集合屬性的變量集合。

在具體實施中,所述作用域類為適于管理所述生成的作用域的類;所述作用域類中的信息包括:所述作用域的標識及作用域集合。

在具體實施中,可以采用如下方法生成所述作用域類:生成作用域,以及所述生成的作用域?qū)?yīng)的標識和作用域集合;判斷所述生成的作用域是否存在父作用域;當所述生成的作用域不存在所述父作用域時,將所述生成的作用域的標識添加到所述生成的作用域?qū)?yīng)的作用域集合中;當所述生成的作用域存在所述父作用域時,讀取所述父作用域?qū)?yīng)的作用域集合中的所有數(shù)據(jù),并添加至所述生成的作用域?qū)?yīng)的作用域集合中。

在具體實施中,所述變量類為適于管理所述生成的變量的類;所述變量類中的信息包括:所述生成的變量的標識、所述生成的變量的數(shù)據(jù)類型、所述生成的變量的數(shù)據(jù)值以及所述生成的變量的所屬作用域。

本領(lǐng)域普通技術(shù)人員可以理解上述實施例的各種方法中的全部或部分步驟是可以通過程序來指示相關(guān)的硬件來完成,該程序可以存儲于一計算機可讀存儲介質(zhì)中,存儲介質(zhì)可以包括:rom、ram、磁盤或光盤等。

雖然本發(fā)明披露如上,但本發(fā)明并非限定于此。任何本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),均可作各種更動與修改,因此本發(fā)明的保護范圍應(yīng)當以權(quán)利要求所限定的范圍為準。

當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
景宁| 防城港市| 江陵县| 鸡泽县| 通许县| 正宁县| 新竹县| 谷城县| 宣化县| 定南县| 清涧县| 山西省| 潢川县| 莱芜市| 昆山市| 陆丰市| 锦州市| 新宾| 昌吉市| 汶上县| 开平市| 宁河县| 龙口市| 郓城县| 南木林县| 溧水县| 徐州市| 环江| 大城县| 巴林右旗| 宁德市| 嫩江县| 荣昌县| 抚远县| 北票市| 黑龙江省| 潞城市| 疏勒县| 高陵县| 尉氏县| 台南市|