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

針對規(guī)則流的測試用例生成裝置、方法和系統(tǒng)與流程

文檔序號:11829431閱讀:365來源:國知局
針對規(guī)則流的測試用例生成裝置、方法和系統(tǒng)與流程

本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,尤其涉及一種針對規(guī)則流的測試用例生成裝置、方法和系統(tǒng)。



背景技術(shù):

在業(yè)務(wù)規(guī)則管理系統(tǒng)(BRMS,Business Rule Management System)中,業(yè)務(wù)邏輯是通過規(guī)則的形式來表示的。BRMS使得用戶可以通過修改規(guī)則而不是修改代碼來改變業(yè)務(wù)邏輯。由于業(yè)務(wù)規(guī)則相對于代碼來說更便于業(yè)務(wù)專家理解和修改,因此BRMS相對于傳統(tǒng)軟件來說更加靈活。通過將實(shí)例(facts)與規(guī)則的條件進(jìn)行模式匹配,BRMS規(guī)則引擎可以找出滿足條件的實(shí)例和相應(yīng)的規(guī)則,并在解決沖突后執(zhí)行規(guī)則。其中,Rete算法是規(guī)則引擎中的模式匹配算法之一,它通過在節(jié)點(diǎn)之間共享部分匹配結(jié)果來提高模式匹配的效率。

對于BRMS來說,其中一個(gè)問題是如何對這些規(guī)則進(jìn)行測試以保證這些規(guī)則的正確性、完整性和一致性。目前,針對規(guī)則流(rule flow),沒有一種方法可以自動地生成測試用例。規(guī)則流中包含多組(group)規(guī)則。只有當(dāng)這個(gè)組處于被激活的狀態(tài),這組規(guī)則才能被執(zhí)行。而這組規(guī)則也可能會創(chuàng)建并往工作內(nèi)存(working memory)中插入實(shí)例,這些實(shí)例也可以作為后續(xù)規(guī)則組的輸入。因此,傳統(tǒng)的測試用例生成方法,包括基于Rete遍歷的方法,都不再適用。

應(yīng)該注意,上面對技術(shù)背景的介紹只是為了方便對本發(fā)明的技術(shù)方案進(jìn)行清楚、完整的說明,并方便本領(lǐng)域技術(shù)人員的理解而闡述的。不能僅僅因?yàn)檫@些方案在本發(fā)明的背景技術(shù)部分進(jìn)行了闡述而認(rèn)為上述技術(shù)方案為本領(lǐng)域技術(shù)人員所公知。



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

為了解決背景技術(shù)指出的問題,本發(fā)明實(shí)施例提供一種針對規(guī)則流的測試用例生成裝置、方法和系統(tǒng)。

根據(jù)本發(fā)明實(shí)施例的第一方面,提供了一種測試用例生成裝置,其中,所述裝置包括:

解析單元,其解析給定規(guī)則流以及所述規(guī)則流中的規(guī)則,確定所述規(guī)則流的實(shí)例集合;

提取單元,從所述規(guī)則流中的規(guī)則中提取各規(guī)則所期望的實(shí)例的屬性的顯式取值范圍和關(guān)系,得到第一范圍集合和關(guān)系集合;

確定單元,其根據(jù)所述第一范圍集合和關(guān)系集合確定隱式取值范圍,得到包含顯式取值范圍和/或隱式取值范圍的第二范圍集合;

生成單元,其根據(jù)所述實(shí)例集合、以及所述第二范圍集合生成所述規(guī)則流的測試用例。

根據(jù)本發(fā)明實(shí)施例的第二方面,提供了一種測試用例生成方法,其中,所述方法包括:

解析給定規(guī)則流以及所述規(guī)則流中的規(guī)則,確定所述規(guī)則流的實(shí)例集合;

從所述規(guī)則流中的規(guī)則中提取各規(guī)則所期望的實(shí)例的屬性的顯式取值范圍和關(guān)系,得到第一范圍集合和關(guān)系集合;

根據(jù)所述第一范圍集合和關(guān)系集合確定隱式取值范圍,得到包含顯式取值范圍和/或隱式取值范圍的第二范圍集合;

根據(jù)所述實(shí)例集合、以及所述第二范圍集合生成所述規(guī)則流的測試用例。

根據(jù)本發(fā)明實(shí)施例的第三方面,提供了一種計(jì)算機(jī)系統(tǒng),其中,所述計(jì)算機(jī)系統(tǒng)被配置為:

解析給定規(guī)則流以及所述規(guī)則流中的規(guī)則,確定所述規(guī)則流的實(shí)例集合;

從所述規(guī)則流中的規(guī)則中提取各規(guī)則所期望的實(shí)例的屬性的顯式取值范圍和關(guān)系,得到第一范圍集合和關(guān)系集合;

根據(jù)所述第一范圍集合和關(guān)系集合確定隱式取值范圍,得到包含顯式取值范圍和/或隱式取值范圍的第二范圍集合;

根據(jù)所述實(shí)例集合、以及所述包含顯式取值范圍和/或所述隱式取值范圍的第二范圍集合生成所述規(guī)則流的測試用例。

本發(fā)明的有益效果在于:通過本實(shí)施例的裝置、方法和系統(tǒng),解決了現(xiàn)有的測試用例生成方法不能識別應(yīng)該被包含于產(chǎn)生的測試用例中的精確的實(shí)例集合的問題。

參照后文的說明和附圖,詳細(xì)公開了本發(fā)明的特定實(shí)施方式,指明了本發(fā)明的原理可以被采用的方式。應(yīng)該理解,本發(fā)明的實(shí)施方式在范圍上并不因而受到限制。在所附權(quán)利要求的精神和條款的范圍內(nèi),本發(fā)明的實(shí)施方式包括許多改變、修改和等同。

針對一種實(shí)施方式描述和/或示出的特征可以以相同或類似的方式在一個(gè)或更多個(gè)其它實(shí)施方式中使用,與其它實(shí)施方式中的特征相組合,或替代其它實(shí)施方式中的特征。

應(yīng)該強(qiáng)調(diào),術(shù)語“包括/包含”在本文使用時(shí)指特征、整件、步驟或組件的存在,但并不排除一個(gè)或更多個(gè)其它特征、整件、步驟或組件的存在或附加。

附圖說明

所包括的附圖用來提供對本發(fā)明實(shí)施例的進(jìn)一步的理解,其構(gòu)成了說明書的一部分,用于例示本發(fā)明的實(shí)施方式,并與文字描述一起來闡釋本發(fā)明的原理。顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。在附圖中:

圖1是實(shí)施例1的測試用例生成裝置的一構(gòu)成示意圖;

圖2是實(shí)施例1的測試用例生成裝置的解析單元的組成示意圖;

圖3是圖2的解析單元的解析流程示意圖;

圖4是實(shí)施例1的測試用例生成裝置的提取單元的組成示意圖;

圖5是利用AST解析器提取取值范圍和關(guān)系的一個(gè)例子的示意圖;

圖6是實(shí)施例1的測試用例生成裝置的確定單元的組成示意圖;

圖7是確定單元確定隱式取值范圍的流程圖;

圖8是確定單元確定隱式取值范圍的一個(gè)例子的流程圖;

圖9是實(shí)施例2的測試用例生成方法的流程圖;

圖10是圖9的方法中確定規(guī)則流的實(shí)例集合的一個(gè)實(shí)施方式的流程圖;

圖11是圖10的方法中步驟1004的一個(gè)實(shí)施方式的流程圖;

圖12是圖9的方法中確定第一范圍集合和關(guān)系集合的一個(gè)實(shí)施方式的流程圖;

圖13是圖12的方法中步驟1202的一個(gè)實(shí)施方式的流程圖;

圖14是圖9的方法中確定第二范圍集合的一個(gè)實(shí)施方式的流程圖;

圖15是圖14的方法中步驟1401的一個(gè)實(shí)施方式的流程圖;

圖16是實(shí)施例3的計(jì)算機(jī)系統(tǒng)的組成示意圖。

具體實(shí)施方式

參照附圖,通過下面的說明書,本發(fā)明的前述以及其它特征將變得明顯。在說明書和附圖中,具體公開了本發(fā)明的特定實(shí)施方式,其表明了其中可以采用本發(fā)明的原則的部分實(shí)施方式,應(yīng)了解的是,本發(fā)明不限于所描述的實(shí)施方式,相反,本發(fā)明包括落入所附權(quán)利要求的范圍內(nèi)的全部修改、變型以及等同物。

實(shí)施例1

本發(fā)明實(shí)施例提供了一種測試用例生成裝置,圖1是該裝置的組成示意圖。如圖1所示,該裝置100包括:解析單元101、提取單元102、確定單元103、以及生成單元104。其中,

解析單元101用于解析給定規(guī)則流以及該規(guī)則流中的規(guī)則,確定該規(guī)則流的實(shí)例集合。

提取單元102用于從該規(guī)則流中的規(guī)則中提取各規(guī)則所期望的實(shí)例的屬性的顯示范圍和關(guān)系,得到第一范圍集合和關(guān)系集合。

確定單元103用于根據(jù)該第一范圍集合和該關(guān)系集合確定隱式取值范圍,得到包含該顯示范圍和/或該隱式取值范圍的第二范圍集合。

生成單元104用于根據(jù)該實(shí)例集合和該第二范圍集合生成該規(guī)則流的測試用例。

通過本實(shí)施例的測試用例生成裝置,利用了規(guī)則流中不同規(guī)則組之間的順序來進(jìn)行實(shí)例識別,解決了現(xiàn)有的測試用例生成方法中不能識別應(yīng)該被包含于產(chǎn)生的測試用例中的精確的實(shí)例集合的問題。

在本實(shí)施例中,解析單元101用于識別需要包含在測試用例中的實(shí)例,其可以利用基于RETE遍歷的方法計(jì)算出規(guī)則流的每個(gè)規(guī)則組中的規(guī)則所期望的實(shí)例集合,然后對于每個(gè)規(guī)則組的實(shí)例集合,過濾掉其中已經(jīng)被之前的規(guī)則組的實(shí)例集合所覆蓋的實(shí)例,最終得到該規(guī)則流的實(shí)例集合。

圖2是解析單元101的一個(gè)實(shí)施方式的組成示意圖,如圖2所示,在該實(shí)施方式中,該解析單元101包括:第一解析模塊201、第二解析模塊202、第一確定模塊203、以及第二確定模塊204。其中,第一解析模塊201用于解析給定規(guī)則流,得到規(guī)則組之間的關(guān)系,第二解析模塊202用于解析每一條規(guī)則,得到每一條規(guī)則的實(shí)例集合和 類型集合,第一確定模塊203用于根據(jù)每一條規(guī)則的實(shí)例集合和類型集合,得到每一個(gè)規(guī)則組的實(shí)例集合和類型集合,第二確定模塊204用于根據(jù)規(guī)則組之間的關(guān)系以及每一個(gè)規(guī)則組的實(shí)例集合和類型集合,得到所述規(guī)則流的實(shí)例集合。

在本實(shí)施方式中,第一解析模塊201可以是一個(gè)規(guī)則流解析器,其通過解析規(guī)則流,將規(guī)則流解析成規(guī)則流模型,由此得到規(guī)則流中各個(gè)規(guī)則組之間的關(guān)系,例如各個(gè)規(guī)則組之間的先后順序。

在本實(shí)施方式中,第二解析模塊202通過解析每一條規(guī)則,可以得到每一條規(guī)則的實(shí)例集和和類型集合。其中,該第二解析模塊202可以包含兩部分,一部分為實(shí)例識別模塊,其利用基于RETE遍歷的方法,解析每條規(guī)則的條件部分(LHS),由此得到每條規(guī)則的實(shí)例集合,另一部分為AST(Abstract Syntax Tree,抽象語法樹)解析器,其可以通過解析每條規(guī)則的動作部分(RHS)得到每條規(guī)則的類型集合。

在本實(shí)施方式中,第一確定模塊203可以包含兩個(gè)分組器,其中一個(gè)分組器通過對屬于同一規(guī)則組的規(guī)則的實(shí)例集合進(jìn)行合并,得到每個(gè)規(guī)則組的實(shí)例集合,類似的,另一個(gè)分組器通過對屬于同一規(guī)則組的規(guī)則的類型集合進(jìn)行合并,得到每個(gè)規(guī)則組的類型集合。

在本實(shí)施方式中,第二確定模塊204用于最終確定規(guī)則流的實(shí)例集合。其中,由于在規(guī)則流中,規(guī)則以規(guī)則組的形式進(jìn)行組織,即使條件滿足,規(guī)則也只能在規(guī)則組處于被激活狀態(tài)才能執(zhí)行,因此,為了得到規(guī)則流的實(shí)例集合,如前所述,先通過Rete遍歷的方法得到每個(gè)規(guī)則組的實(shí)例集合,然后將這些實(shí)例集合合并成規(guī)則流的實(shí)例集合。然而,在合并這些實(shí)例集合之前,有兩點(diǎn)需要考慮:首先,在先規(guī)則組的輸入實(shí)例可能作為后續(xù)規(guī)則組的輸入實(shí)例;其次,在先規(guī)則組的輸出實(shí)例可能作為后續(xù)規(guī)則組的輸入實(shí)例。因此,考慮到這兩點(diǎn),該第二確定模塊204可以包括:第一濾除模塊2041、第二濾除模塊2042、以及合并模塊2043。其中,

第一濾除模塊2041用于根據(jù)規(guī)則組之間的關(guān)系,濾除每一個(gè)規(guī)則組的實(shí)例集中、實(shí)例與所述規(guī)則組的在先規(guī)則組的實(shí)例集中的實(shí)例相同的實(shí)例,得到第一次過濾后的每一個(gè)規(guī)則組的實(shí)例集。

第二濾除模塊2042用于根據(jù)規(guī)則組之間的關(guān)系,濾除所述第一次過濾后的每一個(gè)規(guī)則組的實(shí)例集中、實(shí)例的類型與所述規(guī)則組的在先規(guī)則組的類型集中的類型相同的實(shí)例,得到第二次過濾后的每一個(gè)規(guī)則組的實(shí)例集。

合并模塊2043用于將所述第二次過濾后的每一個(gè)規(guī)則組的實(shí)例集合并,得到所述規(guī)則流的實(shí)例集。

其中,第一濾除模塊2041可以是一個(gè)過濾器,其用于過濾在先驅(qū)規(guī)則組中被重用的輸入實(shí)例。該過濾器可以利用第一解析模塊201通過解析規(guī)則流得到的規(guī)則組之間的關(guān)系(順序),在每個(gè)規(guī)則組的實(shí)例集合中過濾掉那些已經(jīng)在之前的規(guī)則組的實(shí)例集合中出現(xiàn)過的實(shí)例。

其中,第二濾除模塊2042也可以是一個(gè)過濾器,其用于過濾在先規(guī)則組創(chuàng)建并插入的實(shí)例。該過濾器可以在每個(gè)規(guī)則組的實(shí)例集合中過濾掉那些類型已經(jīng)在之前的規(guī)則組的類型集合中出現(xiàn)過的實(shí)例。

其中,合并模塊2043可以在第一濾除模塊2041和第二濾除模塊2042過濾掉一部分實(shí)例后,通過合并剩下的所有的實(shí)例集合,得到該規(guī)則流的實(shí)例集合。

圖3是該解析單元101的解析過程示意圖,通過圖3,可以明確解析單元101的組成及其解析過程。其中,規(guī)則流解析器可以通過前述第一解析模塊201來實(shí)現(xiàn),基于RETE的實(shí)例識別模塊和AST解析器可以通過前述第二解析模塊202來實(shí)現(xiàn),兩個(gè)分組器可以通過前述第一確定模塊203來實(shí)現(xiàn),第一過濾器、第二過濾器、和合并器可以通過前述第二確定模塊204來實(shí)現(xiàn),其中,第一過濾器對應(yīng)前述第一濾除模塊2041,第二過濾器對應(yīng)前述第二濾除模塊2042,合并器對應(yīng)前述合并模塊2043。

在本實(shí)施例中,提取單元102用于從規(guī)則中提取每個(gè)屬性的顯式取值范圍,以及屬性和實(shí)例之間的關(guān)系,其中,提取的過程也可以分為條件部分和動作部分。

圖4是提取單元102的一個(gè)實(shí)施方式的組成示意圖,如圖4所示,在該實(shí)施方式中,該提取單元102包括:第一提取模塊401、第二提取模塊402、以及組合模塊403。其中,第一提取模塊401用于從每一條規(guī)則的條件部分提取所述規(guī)則所期望的實(shí)例的屬性的顯式取值范圍和/或關(guān)系;第二提取模塊402用于從每一條規(guī)則的動作部分提取所述規(guī)則所期望的實(shí)例的屬性的顯式取值范圍和/或關(guān)系;組合模塊403用于將所述第一提取模塊401和所述第二提取模塊402提取的各規(guī)則所期望的實(shí)例的屬性的顯式取值范圍和關(guān)系分別組成第一范圍集合和關(guān)系集合。

在本實(shí)施方式中,并不限制該第一提取模塊401如何從規(guī)則的條件部分提取該規(guī)則所期望的實(shí)例的屬性的顯式取值范圍和/或關(guān)系,例如,其可以采用現(xiàn)有手段完成,也可以采用其它任何可實(shí)施的方式完成。

在本實(shí)施方式中,第二提取模塊402用于從規(guī)則的動作部分提取該規(guī)則所期望的實(shí)例的屬性的顯式取值范圍和/或關(guān)系。其中,在規(guī)則的動作部分,每一條記錄(每個(gè)代碼片段)可以表示一個(gè)取值范圍或一個(gè)關(guān)系,因此,在本實(shí)施例中,可以通過多個(gè)表示取值范圍或關(guān)系的模式來從規(guī)則的動作部分提取上述顯式取值范圍和/或關(guān)系。

表1列出了一些可以從動作部分提取上述顯式取值范圍和/或關(guān)系的模式。表1只是舉例說明,為了更全面地表示取值范圍和關(guān)系,可以利用更多的模式來抽取。在表1中,類型(type1、type2)是實(shí)例(fact1、fact2)所屬的類型,而屬性(field1、field2)分別是實(shí)例(fact1、fact2)的屬性。例如tom的類型是Person,age是Person的一個(gè)屬性。

表1:表示取值范圍或關(guān)系的模式

在本實(shí)施方式中,如圖4所示,該第二提取模塊402可以包括:第三提取模塊4021、匹配模塊4022、第三確定模塊4023、以及第四確定模塊4024。其中,第三提取模塊4021用于提取規(guī)則的動作部分的每一條記錄;匹配模塊4022用于根據(jù)預(yù)先設(shè)定的代表范圍或關(guān)系的多個(gè)模式,將該記錄與該多個(gè)模式進(jìn)行匹配;第三確定模塊 4023用于根據(jù)匹配結(jié)果確定該記錄對應(yīng)的范圍或關(guān)系;第四確定模塊4024用于根據(jù)每一條記錄對應(yīng)的范圍或關(guān)系得到該規(guī)則所期望的實(shí)例的屬性的顯式取值范圍和/或關(guān)系。

在本實(shí)施方式中,該匹配模塊4022可以通過AST解析器來實(shí)現(xiàn),圖5示意了利用該AST解析器對從規(guī)則的動作部分提取出的一條記錄(代碼片段)進(jìn)行解析和匹配的過程。在這個(gè)例子中,首先,代碼片段hcmm40.setTargetWeightTo(49)被編譯成一棵抽象語法樹(AST),然后,該AST解析器通過解析該抽象語法樹(AST),將其與預(yù)先設(shè)定的上述多個(gè)模式中的每一個(gè)進(jìn)行對比,例如,對于某一個(gè)模式,從該模式的變量聲明語句(VariableDeclarationStatement)中查找這條記錄的實(shí)例“hcmm40”的類型,從該模式的方法調(diào)用(MethodInvocation)中判斷這條記錄的“targetWeightTo”是否是這個(gè)類型的一個(gè)屬性。如果是,那么可以根據(jù)該方法調(diào)用的數(shù)字(NumberLiteral),得到該記錄的“targetWeightTo”的字面值,也即49。最后,便得到了該記錄的“targetWeightTo”屬性的一個(gè)取值范圍。如果這條記錄的“targetWeightTo”不是這個(gè)類型的一個(gè)屬性,那就說明這條記錄不是當(dāng)前模式,則繼續(xù)將該記錄與下一個(gè)模式進(jìn)行對比,對比方式如前所述,此處不再贅述。

在本實(shí)施例中,確定單元103可以根據(jù)提取單元102提取得到的顯式取值范圍和關(guān)系,通過推理得到隱式取值范圍,以彌補(bǔ)顯式取值范圍不足以覆蓋所有條件的缺陷。

圖6是該確定單元103的一個(gè)實(shí)施方式的組成示意圖,如圖6所示,在該實(shí)施方式中,該確定單元103包括:第一生成模塊601、第一判斷模塊602、以及第一處理模塊603。其中,第一生成模塊601用于根據(jù)前述第一范圍集合和前述關(guān)系集合生成隱式取值范圍,得到第二范圍集合;第一判斷模塊602用于判定該第二范圍集合相對該第一范圍集合是否增加了隱式取值范圍;第一處理模塊603在該第一判斷模塊602判斷為否時(shí),結(jié)束處理,在該第一判斷模塊602判斷為是時(shí),將第二范圍集合作為新的第一范圍集合,并提供給所述第一生成模塊繼續(xù)處理。

在本實(shí)施方式中,該第一生成模塊601可以利用第一范圍集合和關(guān)系集合生成第二范圍集合。其中,該第一生成模塊601可以包括:第二生成模塊6011、第三生成模塊6012、第二判斷模塊6013、以及第二處理模塊6014。該第二生成模塊6011用于對所述第一范圍集合中每一個(gè)范圍,在所述范圍未對應(yīng)任何一個(gè)具體值時(shí),生成一個(gè)所述范圍內(nèi)的具體值與所述范圍對應(yīng);該第三生成模塊6012用于根據(jù)所述范圍對 應(yīng)的具體值以及所述關(guān)系集合中與所述范圍的屬性相關(guān)聯(lián)的所有關(guān)系生成隱式范圍;該第二判斷模塊6013用于對于每個(gè)新生成的隱式范圍,判斷導(dǎo)出所述隱式范圍的范圍是否是從所述新生成的隱式范圍的屬性的其中一個(gè)范圍所導(dǎo)出;該第二處理模塊6014用于在所述第二判斷模塊6013判斷為否時(shí),將所述隱式范圍加入所述第一范圍集合,得到第二范圍集合,在所述第二判斷模塊6014判斷為是時(shí),不將所述隱式范圍加入所述第一范圍集合,得到第二范圍集合。

在本實(shí)施方式中,第一判斷模塊602會判斷該第二范圍集合相對于第一范圍集合是否增加了新的隱式取值范圍。如前所述,第一生成模塊601可能生成一個(gè)隱式取值范圍,將該新生成的隱式取值范圍加入到第一范圍集合中就構(gòu)成了第二范圍集合,此時(shí),該第二范圍集合相對于之前的第一范圍集合就增加了該新生成的隱式取值范圍,則該第一判斷模塊602判斷為是。相反,第一生成模塊601在不滿足條件的情況下可能無法生成新的隱式取值范圍,此時(shí),該第二范圍集合和之前的第一范圍集合中取值范圍是相同的,則該第一判斷模塊602判斷為否。

在本實(shí)施方式中,如果第一判斷模塊602判斷為是,則意味著第一范圍集合中有了新的取值范圍,且還沒有對該新的取值范圍進(jìn)行過隱式取值范圍的推測,則回到前面,繼續(xù)處理。相反,如果第一判斷模塊602判斷為否,則意味著第一范圍集合中的取值范圍都處理過了,此時(shí)可以結(jié)束處理,由此得到了包含顯式取值范圍和/或隱式取值范圍的第二范圍集合。

圖7是該確定單元103確定隱式取值范圍的整體流程圖,如圖7所示,首先,對第一范圍集合中的每個(gè)(顯式或隱式的)取值范圍,如果尚未為其生成具體值,那么第二生成模塊6011在該范圍內(nèi)選擇一個(gè)值作為該取值范圍的具體值。然后,第三生成模塊6012利用該具體值和關(guān)系集合中的相應(yīng)關(guān)系,生成新的必要的取值范圍(第二判斷模塊6013判斷為否),并保存到第一范圍集合中(第二處理模塊6014將新的隱式取值范圍加入第一范圍集合),構(gòu)成第二范圍集合。如果有新的取值范圍生成了(第一判斷模塊602判斷為是),那么返回生成具體值的那一步(第一處理模塊603將第二范圍集合作為新的第一范圍集合)。否則,結(jié)束隱含取值范圍的推測。

圖8示意了該確定單元103確定隱式取值范圍的一個(gè)例子,如圖8所示,最初,只有一個(gè)取值范圍A>10和一個(gè)關(guān)系A(chǔ)>B。首先,需要為每個(gè)取值范圍生成一個(gè)具體值。所以對于A>10,假設(shè)生成了一個(gè)具體值15。然后,根據(jù)關(guān)系A(chǔ)>B和A的具體 值15,得到了一個(gè)新的取值范圍B<15。由于有一個(gè)新的取值范圍生成了,因此回到生成具體值那一步。這時(shí),對于B<15,生成一個(gè)具體值9。然后,在新的取值范圍確定環(huán)節(jié),由于B<15是從A衍生出來的,所以不再生成A>9這個(gè)取值范圍了。添加這個(gè)限制是為了保證算法的收斂性。到這時(shí),由于沒有新的取值范圍生成了,所以這整個(gè)流程也就結(jié)束了。

在本實(shí)施例中,通過解析單元101得到了規(guī)則流的實(shí)例集合,通過確定單元103得到了包含顯式取值范圍和/或隱式取值范圍的第二范圍集合,生成單元104即可根據(jù)該實(shí)例集合和該第二范圍集合生成該規(guī)則流的測試用例。

其中,該生成單元104可以通過組合測試的方法,如PICT(Pairwise Independent Combinatorial Testing,兩兩組合的獨(dú)立測試),生成最終的測試用例,但本實(shí)施例并不以此作為限制。

在本實(shí)施例中,可選的,該測試用例生成裝置還可以包括存儲單元,用于存儲前述多個(gè)模式以及其它運(yùn)行程序所需要的數(shù)據(jù)或信息。

本實(shí)施例的測試用例生成裝置使用規(guī)則流中不同規(guī)則組之間的順序來進(jìn)行實(shí)例識別,解決了現(xiàn)有的測試用例生成方法不能識別應(yīng)該被包含于產(chǎn)生的測試用例中的精確的實(shí)例集合的問題。

實(shí)施例2

本發(fā)明實(shí)施例還提供了一種測試用例的生成方法,由于該方法解決問題的原理與實(shí)施例1的裝置類似,因此其具體的實(shí)施可以參照實(shí)施例1的方法的實(shí)施,內(nèi)容相同之處,不再重復(fù)說明。

圖9是本實(shí)施例的方法的流程圖,請參照圖9,該方法包括:

步驟901:解析給定規(guī)則流以及所述規(guī)則流中的規(guī)則,確定所述規(guī)則流的實(shí)例集合;

步驟902:從所述規(guī)則流中的規(guī)則中提取各規(guī)則所期望的實(shí)例的屬性的顯式范圍和關(guān)系,得到第一范圍集合和關(guān)系集合;

步驟903:根據(jù)所述第一范圍集合和關(guān)系集合確定隱式范圍,得到包含顯式范圍和/或隱式范圍的第二范圍集合;

步驟904:根據(jù)所述實(shí)例集合、以及所述第二范圍集合生成所述規(guī)則流的測試用 例。

其中,如前所述,步驟901與步驟902和步驟903可以并行執(zhí)行,也即在步驟901確定上述規(guī)則流中的實(shí)例集合的同時(shí),步驟902和步驟903確定上述第二范圍集合。

在本實(shí)施例中,步驟901可以通過圖10的流程來實(shí)現(xiàn),請參照圖10,該流程包括:

步驟1001:解析給定規(guī)則流,得到規(guī)則組之間的關(guān)系;

步驟1002:解析每一條規(guī)則,得到每一條規(guī)則的實(shí)例集合和類型集合;

步驟1003:根據(jù)每一條規(guī)則的實(shí)例集合和類型集合,得到每一條規(guī)則組的實(shí)例集合和類型集合;

步驟1004:根據(jù)規(guī)則組之間的關(guān)系以及每一個(gè)規(guī)則組的實(shí)例集合和類型集合,得到規(guī)則流的實(shí)例集合。

其中,如前所述,步驟1001與步驟1002和步驟1003可以并行執(zhí)行,也即在步驟1001解析給定規(guī)則流的同時(shí),步驟1002解析每一條規(guī)則,步驟1003將屬于同一個(gè)規(guī)則組的規(guī)則的實(shí)例集合合并得到每個(gè)規(guī)則組的實(shí)例集合,并且,將屬于同一個(gè)規(guī)則組的規(guī)則的類型集合合并得到每個(gè)規(guī)則組的類型集合。

其中,步驟1004可以通過圖11的流程來實(shí)現(xiàn),請參照圖11,該流程包括:

步驟1101:根據(jù)規(guī)則組之間的關(guān)系,濾除每一個(gè)規(guī)則組的實(shí)例集合中、實(shí)例與所述規(guī)則組的在先規(guī)則組的實(shí)例集合中的實(shí)例相同的實(shí)例,得到第一次過濾后的每一個(gè)規(guī)則組的實(shí)例集合;

步驟1102:根據(jù)規(guī)則組之間的關(guān)系,濾除所述第一次過濾后的每一個(gè)規(guī)則組的實(shí)例集合中、實(shí)例的類型與所述規(guī)則組的在先規(guī)則組的類型集合中的類型相同的實(shí)例,得到第二次過濾后的每一個(gè)規(guī)則組的實(shí)例集合;

步驟1103:將所述第二次過濾后的每一個(gè)規(guī)則組的實(shí)例集合合并,得到所述規(guī)則流的實(shí)例集合。

在本實(shí)施例中,步驟902可以通過圖12的流程來實(shí)現(xiàn),請參照圖12,該流程包括:

步驟1201:從每一條規(guī)則的條件部分提取所述規(guī)則所期望的實(shí)例的屬性的顯式范圍和/或關(guān)系;

步驟1202:從每一條規(guī)則的動作部分提取所述規(guī)則所期望的實(shí)例的屬性的顯式范圍和/或關(guān)系;

步驟1203:將所述提取的各規(guī)則所期望的實(shí)例的屬性的顯式范圍和關(guān)系分別組成第一范圍集合和關(guān)系集合。

其中,步驟1201和步驟1202可以并行執(zhí)行,也即,在步驟1201從規(guī)則的條件部分提取所述顯式取值范圍和/或關(guān)系的同時(shí),步驟1202從規(guī)則的條件部分提取所述顯式取值范圍和/或關(guān)系。

其中,步驟1202可以通過圖13的流程來實(shí)現(xiàn),請參照圖13,該流程包括:

步驟1301:提取所述規(guī)則的動作部分的每一條記錄;

步驟1302:根據(jù)預(yù)先設(shè)定的代表范圍或關(guān)系的多個(gè)模式,將所述記錄與所述多個(gè)模式進(jìn)行匹配;

步驟1303:根據(jù)匹配結(jié)果確定所述記錄對應(yīng)的范圍或關(guān)系;

步驟1304:根據(jù)每一條記錄對應(yīng)的范圍或關(guān)系得到所述規(guī)則所期望的實(shí)例的屬性的顯式范圍和/或關(guān)系。

在本實(shí)施例中,步驟903可以通過圖14的流程來實(shí)現(xiàn),請參照圖14,該流程包括:

步驟1401:根據(jù)所述第一范圍集合和關(guān)系集合生成隱式范圍,得到第二范圍集合;

步驟1402:判斷第二范圍集合相對第一范圍集合是否增加了任何隱式范圍,如果判斷為是,則執(zhí)行步驟1403,如果判斷為否,則結(jié)束處理。

步驟1403:將第二范圍集合作為新的第一范圍集合,回到步驟1401。

其中,在步驟1401中,對于第一范圍集合中的每個(gè)范圍,可以通過圖15的流程來實(shí)現(xiàn),請參照圖15,該流程包括:

步驟1501:如果所述范圍未對應(yīng)任何一個(gè)具體值,則生成一個(gè)所述范圍內(nèi)的具體值與所述范圍對應(yīng);

步驟1502:根據(jù)所述范圍對應(yīng)的具體值以及關(guān)系集合中與所述范圍的屬性相關(guān)聯(lián)的所有關(guān)系生成隱式范圍;

步驟1503:對于每個(gè)新生成的隱式范圍,判斷導(dǎo)出所述隱式范圍的范圍是否是從所述新生成的隱式范圍的屬性的其中一個(gè)范圍所導(dǎo)出,如果判斷為否,則執(zhí)行步驟 1504,如果判斷為是,則結(jié)束處理,得到與第一范圍集合內(nèi)容相同的第二范圍集合。

步驟1504:將所述隱式范圍加入所述第一范圍集合,并生成第二范圍集合。

本實(shí)施例的測試用例生成方法使用規(guī)則流中不同規(guī)則組之間的順序來進(jìn)行實(shí)例識別,解決了現(xiàn)有的測試用例生成方法不能識別應(yīng)該被包含于產(chǎn)生的測試用例中的精確的實(shí)例集合的問題。

實(shí)施例3

本發(fā)明實(shí)施例還提供了一種計(jì)算機(jī)系統(tǒng),該計(jì)算機(jī)系統(tǒng)可以包括實(shí)施例1所述的無測試用例生成裝置。

圖16是本實(shí)施例的計(jì)算機(jī)系統(tǒng)的構(gòu)成示意圖,如圖16所示,該計(jì)算機(jī)系統(tǒng)1600可以包括:中央處理器(CPU)1601和存儲器1602;存儲器1602耦合到中央處理器1601。其中該存儲器1602可存儲各種數(shù)據(jù);此外還存儲信息處理的程序,并且在中央處理器1601的控制下執(zhí)行該程序。

在一個(gè)實(shí)施方式中,實(shí)施例1所述的測試用例生成裝置的功能可以被集成到中央處理器2501中。

在另一個(gè)實(shí)施方式中,如實(shí)施例1所述的測試用例生成裝置可以與中央處理器1601分開配置,例如可以將測試用例生成裝置配置為與中央處理器1601連接的芯片,通過中央處理器1601的控制來實(shí)現(xiàn)測試用例生成裝置的功能。

此外,如圖16所示,該計(jì)算機(jī)系統(tǒng)1600還可以包括:輸入裝置1603和輸出裝置1604等;其中,上述部件的功能與現(xiàn)有技術(shù)類似,此處不再贅述。值得注意的是,計(jì)算機(jī)系統(tǒng)1600也并不是必須要包括圖16中所示的所有部件;此外,計(jì)算機(jī)系統(tǒng)1600還可以包括圖16中沒有示出的部件,可以參考現(xiàn)有技術(shù)。

通過本實(shí)施例的計(jì)算機(jī)系統(tǒng),使用規(guī)則流中不同規(guī)則組之間的順序來進(jìn)行實(shí)例識別,解決了現(xiàn)有的測試用例生成方法不能識別應(yīng)該被包含于產(chǎn)生的測試用例中的精確的實(shí)例集合的問題。

本發(fā)明實(shí)施例還提供一種計(jì)算機(jī)可讀程序,其中當(dāng)在信息處理裝置或測試用例生成裝置中執(zhí)行所述程序時(shí),所述程序使得計(jì)算機(jī)在所述信息處理裝置或測試用例生成裝置中執(zhí)行實(shí)施例2所述的測試用例生成方法。

本發(fā)明實(shí)施例還提供一種存儲有計(jì)算機(jī)可讀程序的存儲介質(zhì),其中所述計(jì)算機(jī)可讀程序使得計(jì)算機(jī)在信息處理裝置或測試用例生成裝置中執(zhí)行實(shí)施例2所述的測試用例生成方法。

本發(fā)明以上的裝置和方法可以由硬件實(shí)現(xiàn),也可以由硬件結(jié)合軟件實(shí)現(xiàn)。本發(fā)明涉及這樣的計(jì)算機(jī)可讀程序,當(dāng)該程序被邏輯部件所執(zhí)行時(shí),能夠使該邏輯部件實(shí)現(xiàn)上文所述的裝置或構(gòu)成部件,或使該邏輯部件實(shí)現(xiàn)上文所述的各種方法或步驟。本發(fā)明還涉及用于存儲以上程序的存儲介質(zhì),如硬盤、磁盤、光盤、DVD、flash存儲器等。

以上結(jié)合具體的實(shí)施方式對本發(fā)明進(jìn)行了描述,但本領(lǐng)域技術(shù)人員應(yīng)該清楚,這些描述都是示例性的,并不是對本發(fā)明保護(hù)范圍的限制。本領(lǐng)域技術(shù)人員可以根據(jù)本發(fā)明的精神和原理對本發(fā)明做出各種變型和修改,這些變型和修改也在本發(fā)明的范圍內(nèi)。

關(guān)于包括以上實(shí)施例的實(shí)施方式,還公開下述的附記:

附記1、一種測試用例生成裝置,其中,所述裝置包括:

解析單元,其解析給定規(guī)則流以及所述規(guī)則流中的規(guī)則,確定所述規(guī)則流的實(shí)例集合;

提取單元,從所述規(guī)則流中的規(guī)則中提取各規(guī)則所期望的實(shí)例的屬性的顯式取值范圍和關(guān)系,得到第一范圍集合和關(guān)系集合;

確定單元,其根據(jù)所述第一范圍集合和關(guān)系集合確定隱式取值范圍,得到包含顯式取值范圍和/或隱式取值范圍的第二范圍集合;

生成單元,其根據(jù)所述實(shí)例集合、以及所述第二范圍集合生成所述規(guī)則流的測試用例。

附記2、根據(jù)附記1所述的裝置,其中,所述解析單元包括:

第一解析模塊,其解析給定規(guī)則流,得到規(guī)則組之間的關(guān)系;

第二解析模塊,其解析每一條規(guī)則,得到每一條規(guī)則的實(shí)例集合和類型集合;

第一確定模塊,其根據(jù)每一條規(guī)則的實(shí)例集合和類型集合,得到每一個(gè)規(guī)則組的實(shí)例集合和類型集合;

第二確定模塊,其根據(jù)規(guī)則組之間的關(guān)系以及每一個(gè)規(guī)則組的實(shí)例集合和類型集 合,得到規(guī)則流的實(shí)例集合。

附記3、根據(jù)附記2所述的裝置,其中,所述第二確定模塊包括:

第一濾除模塊,其根據(jù)規(guī)則組之間的關(guān)系,濾除每一個(gè)規(guī)則組的實(shí)例集合中、實(shí)例與所述規(guī)則組的在先規(guī)則組的實(shí)例集合中的實(shí)例相同的實(shí)例,得到第一次過濾后的每一個(gè)規(guī)則組的實(shí)例集合;

第二濾除模塊,其根據(jù)規(guī)則組之間的關(guān)系,濾除所述第一次過濾后的每一個(gè)規(guī)則組的實(shí)例集合中、實(shí)例的類型與所述規(guī)則組的在先規(guī)則組的類型集合中的類型相同的實(shí)例,得到第二次過濾后的每一個(gè)規(guī)則組的實(shí)例集合;

合并模塊,其將所述第二次過濾后的每一個(gè)規(guī)則組的實(shí)例集合并,得到所述規(guī)則流的實(shí)例集合。

附記4、根據(jù)附記1所述的裝置,其中,所述提取單元包括:

第一提取模塊,其從每一條規(guī)則的條件部分提取所述規(guī)則所期望的實(shí)例的屬性的顯式取值范圍和/或關(guān)系;

第二提取模塊,其從每一條規(guī)則的動作部分提取所述規(guī)則所期望的實(shí)例的屬性的顯式取值范圍和/或關(guān)系;

組合單元,其將所述第一提取模塊和所述第二提取模塊提取的各規(guī)則所期望的實(shí)例的屬性的顯式取值范圍和關(guān)系分別組成第一范圍集合和關(guān)系集合。

附記5、根據(jù)附記4所述的裝置,其中,所述第二提取模塊包括:

第三提取模塊,其提取所述規(guī)則的動作部分的每一條記錄;

匹配模塊,根據(jù)預(yù)先設(shè)定的代表范圍或關(guān)系的多個(gè)模式,將所述記錄與所述多個(gè)模式進(jìn)行匹配;

第三確定模塊,其根據(jù)匹配結(jié)果確定所述記錄對應(yīng)的范圍或關(guān)系;

第四確定模塊,其根據(jù)每一條記錄對應(yīng)的范圍或關(guān)系得到所述規(guī)則所期望的實(shí)例的屬性的顯式取值范圍和/或關(guān)系。

附記6、根據(jù)附記1所述的裝置,其中,所述確定單元包括:

第一生成模塊,其根據(jù)所述第一范圍集合和關(guān)系集合生成隱式取值范圍,得到第二范圍集合;

第一判斷模塊,其判定第二范圍集合相對第一范圍集合是否增加了隱式取值范圍;

第一處理模塊,其在所述第一判斷模塊判斷為否時(shí),結(jié)束處理,在所述判斷模塊判斷為是時(shí),將第二范圍集合作為新的第一范圍集合,并提供給所述第一生成模塊。

附記7、根據(jù)附記6所述的裝置,其中,所述第一生成模塊包括:

第二生成模塊,其對所述第一范圍集合中每一個(gè)范圍,在所述范圍未對應(yīng)任何一個(gè)具體值時(shí),生成一個(gè)所述范圍內(nèi)的具體值與所述范圍對應(yīng);

第三生成模塊,其根據(jù)所述范圍對應(yīng)的具體值以及所述關(guān)系集合中與所述范圍的屬性相關(guān)聯(lián)的所有關(guān)系生成隱式取值范圍;

第二判斷模塊,其對于每個(gè)新生成的隱式取值范圍,判斷導(dǎo)出所述隱式取值范圍的范圍是否是從所述新生成的隱式取值范圍的屬性的其中一個(gè)范圍所導(dǎo)出;

第二處理模塊,其在所述第二判斷模塊判斷為否時(shí),將所述隱式取值范圍加入所述第一范圍集合,并生成第二范圍集合,在所述第二判斷模塊判斷為是時(shí),不將所述隱式取值范圍加入所述第一范圍集合,直接得到第二范圍集合。

附記8、一種測試用例生成方法,其中,所述方法包括:

解析給定規(guī)則流以及所述規(guī)則流中的規(guī)則,確定所述規(guī)則流的實(shí)例集合;

從所述規(guī)則流中的規(guī)則中提取各規(guī)則所期望的實(shí)例的屬性的顯式取值范圍和關(guān)系,得到第一范圍集合和關(guān)系集合;

根據(jù)所述第一范圍集合和關(guān)系集合確定隱式取值范圍,得到包含顯式取值范圍和/或隱式取值范圍的第二范圍集合;

根據(jù)所述實(shí)例集合、以及所述第二范圍集合生成所述規(guī)則流的測試用例。

附記9、根據(jù)附記8所述的方法,其中,解析給定規(guī)則流以及所述規(guī)則流中的規(guī)則,確定所述規(guī)則流的實(shí)例集合,包括:

解析給定規(guī)則流,得到規(guī)則組之間的關(guān)系;

解析每一條規(guī)則,得到每一條規(guī)則的實(shí)例集合和類型集合;

根據(jù)每一條規(guī)則的實(shí)例集和類型集,得到每一個(gè)規(guī)則組的實(shí)例集合和類型集合;

根據(jù)規(guī)則組之間的關(guān)系以及每一個(gè)規(guī)則組的實(shí)例集合和類型集合,得到規(guī)則流的實(shí)例集合。

附記10、根據(jù)附記9所述的方法,其中,根據(jù)規(guī)則組之間的關(guān)系以及每一個(gè)規(guī)則組的實(shí)例集合和類型集合,得到規(guī)則流的實(shí)例集合,包括:

根據(jù)規(guī)則組之間的關(guān)系,濾除每一個(gè)規(guī)則組的實(shí)例集合中、實(shí)例與所述規(guī)則組的 在先規(guī)則組的實(shí)例集合中的實(shí)例相同的實(shí)例,得到第一次過濾后的每一個(gè)規(guī)則組的實(shí)例集;

根據(jù)規(guī)則組之間的關(guān)系,濾除所述第一次過濾后的每一個(gè)規(guī)則組的實(shí)例集合中、實(shí)例的類型與所述規(guī)則組的在先規(guī)則組的類型集合中的類型相同的實(shí)例,得到第二次過濾后的每一個(gè)規(guī)則組的實(shí)例集合;

將所述第二次過濾后的每一個(gè)規(guī)則組的實(shí)例集合合并,得到所述規(guī)則流的實(shí)例集合。

附記11、根據(jù)附記8所述的方法,其中,從所述規(guī)則流中的規(guī)則中提取各規(guī)則所期望的實(shí)例的屬性的顯式取值范圍和關(guān)系,得到第一范圍集合和關(guān)系集合,包括:

從每一條規(guī)則的條件部分提取所述規(guī)則所期望的實(shí)例的屬性的顯式取值范圍和/或關(guān)系;

從每一條規(guī)則的動作部分提取所述規(guī)則所期望的實(shí)例的屬性的顯式取值范圍和/或關(guān)系;

將所述提取的各規(guī)則所期望的實(shí)例的屬性的顯式取值范圍和關(guān)系分別組成第一范圍集合和關(guān)系集合。

附記12、根據(jù)附記11所述的方法,其中,從每一條規(guī)則的動作部分提取所述規(guī)則所期望的實(shí)例的屬性的顯式取值范圍和/或關(guān)系,包括:

提取所述規(guī)則的動作部分的每一條記錄;

根據(jù)預(yù)先設(shè)定的代表范圍或關(guān)系的多個(gè)模式,將所述記錄與所述多個(gè)模式進(jìn)行匹配;

根據(jù)匹配結(jié)果確定所述記錄對應(yīng)的范圍或關(guān)系;

根據(jù)每一條記錄對應(yīng)的范圍或關(guān)系得到所述規(guī)則所期望的實(shí)例的屬性的顯式取值范圍和/或關(guān)系。

附記13、根據(jù)附記8所述的方法,其中,根據(jù)所述第一范圍集合和關(guān)系集合確定隱式取值范圍,得到包含顯式取值范圍和/或隱式取值范圍的第二范圍集合,包括:

根據(jù)所述第一范圍集合和關(guān)系集合生成隱式取值范圍,得到第二范圍集合;

如果第二范圍集合相對第一范圍集合未增加任何隱式取值范圍,則結(jié)束處理,否則將第二范圍集合作為新的第一范圍集合。

附記14、根據(jù)附記13所述的方法,其中,根據(jù)所述第一范圍集合和關(guān)系集合生 成隱式取值范圍,得到第二范圍集合,包括:

對第一范圍集合中每一個(gè)范圍進(jìn)行如下操作:

如果所述范圍未對應(yīng)任何一個(gè)具體值,則生成一個(gè)所述范圍內(nèi)的具體值與所述范圍對應(yīng);

根據(jù)所述范圍對應(yīng)的具體值以及關(guān)系集合中與所述范圍的屬性相關(guān)聯(lián)的所有關(guān)系生成隱式取值范圍;

對于每個(gè)新生成的隱式取值范圍,如果導(dǎo)出所述隱式取值范圍的范圍不是從所述新生成的隱式取值范圍的屬性的其中一個(gè)范圍所導(dǎo)出,那么將其加入所述第一范圍集合,并生成第二范圍集合,否則,不將其加入所述第一范圍集合。

附記15、一種計(jì)算機(jī)系統(tǒng),其中,所述計(jì)算機(jī)系統(tǒng)被配置為:

解析給定規(guī)則流以及所述規(guī)則流中的規(guī)則,確定所述規(guī)則流的實(shí)例集合;

從所述規(guī)則流中的規(guī)則中提取各規(guī)則所期望的實(shí)例的屬性的顯式取值范圍和關(guān)系,得到第一范圍集合和關(guān)系集合;

根據(jù)所述第一范圍集合和關(guān)系集合確定隱式取值范圍,得到包含顯式取值范圍和/或隱式取值范圍的第二范圍集合;

根據(jù)所述實(shí)例集合、以及所述包含顯式取值范圍和/或所述隱式取值范圍的第二范圍集合生成所述規(guī)則流的測試用例。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
繁昌县| 曲靖市| 榆社县| 绵阳市| 岑溪市| 平乡县| 鄂伦春自治旗| 丹阳市| 亚东县| 南平市| 华坪县| 湟源县| 安岳县| 芒康县| 新民市| 通道| 永修县| 永嘉县| 万安县| 武冈市| 维西| 洛宁县| 宝应县| 顺昌县| 普定县| 安达市| 屯昌县| 张掖市| 武义县| 乌拉特中旗| 邢台县| 宣城市| 高淳县| 大关县| 诸城市| 太谷县| 东阿县| 吉首市| 吉木萨尔县| 蒲江县| 额敏县|