一種生成狀態(tài)轉(zhuǎn)換測試用例的方法及裝置制造方法
【專利摘要】本申請?zhí)峁┝艘环N生成狀態(tài)轉(zhuǎn)換測試用例的方法及裝置,方法包括:生成包括系統(tǒng)存在的各個狀態(tài)和狀態(tài)轉(zhuǎn)換信息的狀態(tài)轉(zhuǎn)換表,狀態(tài)轉(zhuǎn)換信息用于指示狀態(tài)與狀態(tài)之間是否能夠進(jìn)行轉(zhuǎn)換;依據(jù)狀態(tài)轉(zhuǎn)換表生成N-Switch狀態(tài)轉(zhuǎn)換樹,并依據(jù)N-Switch狀態(tài)轉(zhuǎn)換樹生成有效的狀態(tài)轉(zhuǎn)換測試路徑;依據(jù)狀態(tài)轉(zhuǎn)換表生成無效的狀態(tài)轉(zhuǎn)換測試路徑;通過有效的狀態(tài)轉(zhuǎn)換測試路徑和無效的狀態(tài)轉(zhuǎn)換測試路徑生成狀態(tài)轉(zhuǎn)換測試用例集。本申請?zhí)峁┑姆椒把b置,能覆蓋系統(tǒng)的所有狀態(tài)以及狀態(tài)與狀態(tài)之間的轉(zhuǎn)換關(guān)系,因此能夠保證測試用例的充分性,并且,能夠保證生成的狀態(tài)轉(zhuǎn)換測試用例集的確定性和唯一性,避免產(chǎn)生不同人設(shè)計出的測試用例不同的情況。
【專利說明】一種生成狀態(tài)轉(zhuǎn)換測試用例的方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及軟件測試【技術(shù)領(lǐng)域】,尤其涉及一種生成狀態(tài)轉(zhuǎn)換測試用例的方法及裝置。
【背景技術(shù)】
[0002]在軟件測試中,當(dāng)被測對象有多個狀態(tài)時,各個狀態(tài)之間存在一定的邏輯轉(zhuǎn)換關(guān)系,狀態(tài)與狀態(tài)之間的轉(zhuǎn)換由事件來觸發(fā)或者由一些動作來產(chǎn)生,為了充分驗證事件、動作、狀態(tài)與狀態(tài)轉(zhuǎn)換之間的關(guān)系,以及系統(tǒng)對輸入事件是否能做出正確的響應(yīng),需要采用一定的方法和技術(shù)來設(shè)計測試用例。
[0003]現(xiàn)有技術(shù)中所使用的最簡單直接的方法是根據(jù)系統(tǒng)的需求及設(shè)計,采用窮舉法列出系統(tǒng)中可能的狀態(tài)轉(zhuǎn)換場景,形成相應(yīng)的測試用例。發(fā)明人在實現(xiàn)本發(fā)明創(chuàng)造的過程中發(fā)現(xiàn):現(xiàn)有技術(shù)中通過窮舉法設(shè)計的測試用例,具有較大的隨意性,有可能會漏掉一些狀態(tài)轉(zhuǎn)換路徑,不能保證測試用例的完整性。
【發(fā)明內(nèi)容】
[0004]有鑒于此,本發(fā)明提供了一種生成狀態(tài)轉(zhuǎn)換測試用例的方法及裝置,用以解決現(xiàn)有技術(shù)中通過窮舉法設(shè)計的測試用例,具有較大的隨意性,有可能會漏掉一些狀態(tài)轉(zhuǎn)換路徑,不能保證測試用例的完整性的問題,其技術(shù)方案如下:
[0005]一種生成狀態(tài)轉(zhuǎn)換測試用例的方法,包括:
[0006]生成包括系統(tǒng)存在的各個狀態(tài)和狀態(tài)轉(zhuǎn)換信息的狀態(tài)轉(zhuǎn)換表,所述狀態(tài)轉(zhuǎn)換信息用于指示狀態(tài)與狀態(tài)之間是否能夠進(jìn)行轉(zhuǎn)換;
[0007]依據(jù)所述狀態(tài)轉(zhuǎn)換表生成N-Switch狀態(tài)轉(zhuǎn)換樹,并依據(jù)所述N-Switch狀態(tài)轉(zhuǎn)換樹生成有效的狀態(tài)轉(zhuǎn)換測試路徑;
[0008]依據(jù)所述狀態(tài)轉(zhuǎn)換表生成無效的狀態(tài)轉(zhuǎn)換測試路徑;
[0009]通過所述有效的狀態(tài)轉(zhuǎn)換測試路徑和所述無效的狀態(tài)轉(zhuǎn)換測試路徑生成狀態(tài)轉(zhuǎn)換測試用例集。
[0010]其中,所述N-Switch狀態(tài)轉(zhuǎn)換樹為O-Switch狀態(tài)轉(zhuǎn)換樹或1-SwitCh狀態(tài)轉(zhuǎn)換樹;
[0011]則當(dāng)所述N-Switch狀態(tài)轉(zhuǎn)換樹為O-Switch狀態(tài)轉(zhuǎn)換樹時,依據(jù)所述狀態(tài)轉(zhuǎn)換表生成N-Switch狀態(tài)轉(zhuǎn)換樹,具體為:
[0012]依據(jù)所述狀態(tài)轉(zhuǎn)換表生成O-Switch狀態(tài)轉(zhuǎn)換樹;
[0013]則當(dāng)所述N-Switch狀態(tài)轉(zhuǎn)換樹為1-Switch狀態(tài)轉(zhuǎn)換樹時,依據(jù)所述狀態(tài)轉(zhuǎn)換表生成N-Switch狀態(tài)轉(zhuǎn)換樹,具體為:
[0014]依據(jù)所述狀態(tài)轉(zhuǎn)換表生成O-Switch狀態(tài)轉(zhuǎn)換樹;
[0015]依據(jù)所述狀態(tài)轉(zhuǎn)換表確定能夠與所述O-Switch狀態(tài)轉(zhuǎn)換樹的葉子結(jié)點(diǎn)進(jìn)行轉(zhuǎn)換的狀態(tài),并將能夠與所述O-Switch狀態(tài)轉(zhuǎn)換樹的葉子結(jié)點(diǎn)轉(zhuǎn)換的狀態(tài)作為所述1-Switch狀態(tài)轉(zhuǎn)換樹的葉子結(jié)點(diǎn)。
[0016]其中,所述系統(tǒng)存在的各個狀態(tài)至少包括起始狀態(tài),所述狀態(tài)轉(zhuǎn)換表的各行對應(yīng)所述系統(tǒng)的各個狀態(tài),所述狀態(tài)轉(zhuǎn)換表的各列對應(yīng)除所述起始狀態(tài)外的其它狀態(tài);
[0017]則所述O-Switch狀態(tài)轉(zhuǎn)換樹生成子模塊,包括:
[0018]根結(jié)點(diǎn)添加子模塊,用于將所述起始狀態(tài)作為根結(jié)點(diǎn),為所述O-Switch狀態(tài)轉(zhuǎn)換樹添加根結(jié)點(diǎn),并將所述根結(jié)點(diǎn)所在的層次作為所述O-Switch狀態(tài)轉(zhuǎn)換樹的第I層;
[0019]子結(jié)點(diǎn)添加子模塊,用于從所述O-Switch狀態(tài)轉(zhuǎn)換樹的第I層開始,依據(jù)所述狀態(tài)轉(zhuǎn)換表,利用廣度搜索法按從左到右的順序,確定各層上的各個結(jié)點(diǎn)是否能夠和所述狀態(tài)轉(zhuǎn)換表中各列的狀態(tài)進(jìn)行轉(zhuǎn)換,如果所述第一結(jié)點(diǎn)已出現(xiàn)在第J層上,或者,所述第K層上的第一結(jié)點(diǎn)與各列的狀態(tài)都不能進(jìn)行轉(zhuǎn)換,則將所述第一結(jié)點(diǎn)作為所述O-SwitCh狀態(tài)轉(zhuǎn)換樹的葉子結(jié)點(diǎn),如果所述第K層上的第一結(jié)點(diǎn)能夠與至少一列的狀態(tài)進(jìn)行轉(zhuǎn)換,則將能夠與所述第一結(jié)點(diǎn)轉(zhuǎn)換的狀態(tài)作為所述第一結(jié)點(diǎn)的子結(jié)點(diǎn),直至確定出O-Switch狀態(tài)轉(zhuǎn)換樹的所有葉子結(jié)點(diǎn)為止,其中,J小于等于K,所述葉子結(jié)點(diǎn)不具有子結(jié)點(diǎn)。
[0020]其中,依據(jù)所述狀態(tài)轉(zhuǎn)換表中生成無效的轉(zhuǎn)換測試路徑,具體為:
[0021 ] 對于所述狀態(tài)轉(zhuǎn)換表中的目標(biāo)狀態(tài),通過所述狀態(tài)轉(zhuǎn)換信息確定不能與所述目標(biāo)狀態(tài)進(jìn)行轉(zhuǎn)換的狀態(tài);
[0022]通過所述目標(biāo)狀態(tài)和確定出的不能與所述目標(biāo)狀態(tài)進(jìn)行轉(zhuǎn)換的狀態(tài)生成無效的狀態(tài)轉(zhuǎn)換測試路徑。
[0023]其中,依據(jù)所述N-Switch狀態(tài)轉(zhuǎn)換樹生成有效的狀態(tài)轉(zhuǎn)換測試路徑,具體為:
[0024]從所述N-Switch狀態(tài)轉(zhuǎn)換樹的葉子結(jié)點(diǎn)逐層尋找上一層的父結(jié)點(diǎn),直至尋找到的父結(jié)點(diǎn)為根結(jié)點(diǎn)為止;
[0025]確定從所述葉子結(jié)點(diǎn)逐層尋找到所述根結(jié)點(diǎn)的路徑為有效的狀態(tài)轉(zhuǎn)換測試路徑,所述有效的狀態(tài)轉(zhuǎn)換測試路徑的數(shù)量與所述N-Switch狀態(tài)轉(zhuǎn)換樹中葉子結(jié)點(diǎn)的數(shù)量相同。
[0026]一種生成狀態(tài)轉(zhuǎn)換測試用例的裝置,包括:
[0027]狀態(tài)轉(zhuǎn)換表生成模塊,用于生成包括系統(tǒng)存在的各個狀態(tài)和狀態(tài)轉(zhuǎn)換信息的狀態(tài)轉(zhuǎn)換表,所述狀態(tài)轉(zhuǎn)換信息用于指示狀態(tài)與狀態(tài)之間是否能夠進(jìn)行轉(zhuǎn)換;
[0028]狀態(tài)轉(zhuǎn)換樹生成模塊,用于依據(jù)所述狀態(tài)轉(zhuǎn)換表生成模塊生成的所述狀態(tài)轉(zhuǎn)換表生成N-Switch狀態(tài)轉(zhuǎn)換樹;
[0029]有效路徑生成模塊,用于依據(jù)所述狀態(tài)轉(zhuǎn)換樹生成模塊生成的所述N-Switch狀態(tài)轉(zhuǎn)換樹生成有效的狀態(tài)轉(zhuǎn)換測試路徑;
[0030]無效路徑生成模塊,用于依據(jù)所述狀態(tài)轉(zhuǎn)換表生成模塊生成的所述狀態(tài)轉(zhuǎn)換表生成無效的狀態(tài)轉(zhuǎn)換測試路徑;
[0031]測試用例生成模塊,用于通過所述有效路徑生成模塊生成的所述有效的狀態(tài)轉(zhuǎn)換測試路徑和所述無效路徑生成模塊生成的所述無效的狀態(tài)轉(zhuǎn)換測試路徑生成狀態(tài)轉(zhuǎn)換測試用例集。
[0032]其中,所述N-Switch狀態(tài)轉(zhuǎn)換樹為O-Switch狀態(tài)轉(zhuǎn)換樹或1-Switch狀態(tài)轉(zhuǎn)換樹;
[0033]則當(dāng)所述N-Switch狀態(tài)轉(zhuǎn)換樹為1-Switch狀態(tài)轉(zhuǎn)換樹時,所述狀態(tài)轉(zhuǎn)換樹生成模塊包括:
[0034]O-Switch狀態(tài)轉(zhuǎn)換樹生成子模塊,用于依據(jù)所述狀態(tài)轉(zhuǎn)換表生成O-Switch狀態(tài)轉(zhuǎn)換樹;
[0035]則當(dāng)所述N-Switch狀態(tài)轉(zhuǎn)換樹為1-Switch狀態(tài)轉(zhuǎn)換樹時,所述狀態(tài)轉(zhuǎn)換樹生成模塊包括:
[0036]O-Switch狀態(tài)轉(zhuǎn)換樹生成子模塊,用于依據(jù)所述狀態(tài)轉(zhuǎn)換表生成O-Switch狀態(tài)轉(zhuǎn)換樹;
[0037]1-Switch狀態(tài)轉(zhuǎn)換樹生成子模塊,用于依據(jù)所述狀態(tài)轉(zhuǎn)換表確定能夠與所述O-Switch狀態(tài)轉(zhuǎn)換樹的葉子結(jié)點(diǎn)進(jìn)行轉(zhuǎn)換的狀態(tài),并將能夠與所述O-Switch狀態(tài)轉(zhuǎn)換樹的葉子結(jié)點(diǎn)轉(zhuǎn)換的狀態(tài)作為所述1-Switch狀態(tài)轉(zhuǎn)換樹的葉子結(jié)點(diǎn)。
[0038]其中,所述系統(tǒng)存在的各個狀態(tài)至少包括起始狀態(tài),所述狀態(tài)轉(zhuǎn)換表的各行對應(yīng)所述系統(tǒng)的各個狀態(tài),所述狀態(tài)轉(zhuǎn)換表的各列對應(yīng)除所述起始狀態(tài)外的其它狀態(tài);
[0039]則所述O-Switch狀態(tài)轉(zhuǎn)換樹生成子模塊,具體用于將所述起始狀態(tài)作為根結(jié)點(diǎn),并將所述根結(jié)點(diǎn)所在的層次作為所述O-Switch狀態(tài)轉(zhuǎn)換樹的第I層,從所述O-Switch狀態(tài)轉(zhuǎn)換樹的第I層開始,依據(jù)所述狀態(tài)轉(zhuǎn)換表,利用廣度搜索法按從左到右的順序,確定各層上的各個結(jié)點(diǎn)是否能夠和所述狀態(tài)轉(zhuǎn)換表中各列的狀態(tài)進(jìn)行轉(zhuǎn)換,如果所述第一結(jié)點(diǎn)已出現(xiàn)在第J層上,或者,所述第K層上的第一結(jié)點(diǎn)與各列的狀態(tài)都不能進(jìn)行轉(zhuǎn)換,則將所述第一結(jié)點(diǎn)作為所述O-Switch狀態(tài)轉(zhuǎn)換樹的葉子結(jié)點(diǎn),如果所述第K層上的第一結(jié)點(diǎn)能夠與至少一列的狀態(tài)進(jìn)行轉(zhuǎn)換,則將能夠與所述第一結(jié)點(diǎn)轉(zhuǎn)換的狀態(tài)作為所述第一結(jié)點(diǎn)的子結(jié)點(diǎn),直至確定出O-Switch狀態(tài)轉(zhuǎn)換樹的所有葉子結(jié)點(diǎn)為止,其中,J小于等于K,所述葉子結(jié)點(diǎn)不具有子結(jié)點(diǎn)。
[0040]其中,所述無效路徑生成模塊路徑,具體用于對于所述狀態(tài)轉(zhuǎn)換表中的目標(biāo)狀態(tài),通過所述狀態(tài)轉(zhuǎn)換信息確定不能與所述目標(biāo)狀態(tài)進(jìn)行轉(zhuǎn)換的狀態(tài),通過所述目標(biāo)狀態(tài)和確定出的不能與所述目標(biāo)狀態(tài)進(jìn)行轉(zhuǎn)換的狀態(tài)生成無效的狀態(tài)轉(zhuǎn)換測試路徑。
[0041]其中,所述有效路徑生成模塊,具體用于從所述N-Switch狀態(tài)轉(zhuǎn)換樹的葉子結(jié)點(diǎn)逐層尋找上一層的父結(jié)點(diǎn),直至尋找到的父結(jié)點(diǎn)為根結(jié)點(diǎn)為止,確定從所述葉子結(jié)點(diǎn)逐層尋找到所述根結(jié)點(diǎn)的路徑為有效的狀態(tài)轉(zhuǎn)換測試路徑,所述有效的狀態(tài)轉(zhuǎn)換測試路徑的數(shù)量與所述N-Switch狀態(tài)轉(zhuǎn)換樹中葉子結(jié)點(diǎn)的數(shù)量相同。
[0042]上述技術(shù)方案具有如下有益效果:
[0043]本發(fā)明提供的生成狀態(tài)轉(zhuǎn)換測試用例的方法及裝置,可依據(jù)系統(tǒng)存在的狀態(tài)以及狀態(tài)與狀態(tài)之間的轉(zhuǎn)換關(guān)系生成狀態(tài)轉(zhuǎn)換表,通過狀態(tài)轉(zhuǎn)換表可生成有效的狀態(tài)轉(zhuǎn)換測試路徑和無效的狀態(tài)轉(zhuǎn)換測試路徑,最終通過有效的狀態(tài)轉(zhuǎn)換測試路徑和無效的狀態(tài)轉(zhuǎn)換測試路徑生成狀態(tài)轉(zhuǎn)換測試用例集。本發(fā)明提供的方法及裝置能覆蓋系統(tǒng)的所有狀態(tài)以及狀態(tài)與狀態(tài)之間的轉(zhuǎn)換關(guān)系,能保證測試用例的完整性,并且,在狀態(tài)轉(zhuǎn)換表確定后,依據(jù)狀態(tài)轉(zhuǎn)換表生成的無效的狀態(tài)轉(zhuǎn)換測試路徑是確定的,依據(jù)狀態(tài)轉(zhuǎn)換表生成的狀態(tài)轉(zhuǎn)換樹是確定的,與狀態(tài)轉(zhuǎn)換樹對應(yīng)的有效的狀態(tài)轉(zhuǎn)換測試路徑也是確定的,因此,保證了依據(jù)有效的狀態(tài)轉(zhuǎn)換測試路徑和無效的狀態(tài)轉(zhuǎn)換測試路徑生成的狀態(tài)轉(zhuǎn)換測試用例集也是唯一確定的,從而避免產(chǎn)生不同人設(shè)計出的測試用例不同的情況。另外,本發(fā)明實施例提供的方法和裝置還可大大減少人工分析生成狀態(tài)轉(zhuǎn)換測試用例的時間,提高設(shè)計狀態(tài)轉(zhuǎn)換測試用例的效率。
【專利附圖】
【附圖說明】
[0044]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
[0045]圖1為本發(fā)明實施例提供的一種生成狀態(tài)轉(zhuǎn)換測試用例的方法的流程示意圖;
[0046]圖2為本發(fā)明實施例提供的生成狀態(tài)轉(zhuǎn)換測試用例的方法中,依據(jù)狀態(tài)轉(zhuǎn)換表生成O-Switch狀態(tài)轉(zhuǎn)換樹的實現(xiàn)方式的流程示意圖;
[0047]圖3為本發(fā)明實施例提供的生成狀態(tài)轉(zhuǎn)換測試用例的方法中,為O-Switch狀態(tài)轉(zhuǎn)換的第K層結(jié)點(diǎn)添加子結(jié)點(diǎn)的實現(xiàn)方式的流程示意圖;
[0048]圖4為依據(jù)表I生成的O-Switch狀態(tài)轉(zhuǎn)換樹示意圖;
[0049]圖5為依據(jù)表I生成的1-Switch狀態(tài)轉(zhuǎn)換樹示意圖;
[0050]圖6為通過本發(fā)明實施例提供的生成狀態(tài)轉(zhuǎn)換測試用例的方法生成的測試用例示意圖;
[0051]圖7為本發(fā)明實施例提供的生成狀態(tài)轉(zhuǎn)換測試用例的裝置50的結(jié)構(gòu)示意圖;
[0052]圖8為本發(fā)明實施例提供的生成狀態(tài)轉(zhuǎn)換測試用例的裝置70中狀態(tài)轉(zhuǎn)換樹生成模塊702的一種結(jié)構(gòu)示意圖;
[0053]圖9為本發(fā)明實施例提供的生成狀態(tài)轉(zhuǎn)換測試用例的裝置70中狀態(tài)轉(zhuǎn)換樹生成豐旲塊702的另一種結(jié)構(gòu)不意圖;
[0054]圖10為本發(fā)明實施例提供的狀態(tài)轉(zhuǎn)換樹生成模塊702中O-Switch狀態(tài)轉(zhuǎn)換樹生成子模塊801的結(jié)構(gòu)示意圖。
【具體實施方式】
[0055]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
[0056]請參閱圖1,為本發(fā)明實施例提供的一種生成狀態(tài)轉(zhuǎn)換測試用例的方法的流程示意圖,該方法可以包括:
[0057]步驟SlOl:生成狀態(tài)轉(zhuǎn)換表。
[0058]其中,狀態(tài)轉(zhuǎn)換表包括系統(tǒng)存在的各個狀態(tài)和狀態(tài)轉(zhuǎn)換信息,狀態(tài)轉(zhuǎn)換信息用于指示狀態(tài)與狀態(tài)之間是否能夠進(jìn)行轉(zhuǎn)換。
[0059]在本實施例中,生成狀態(tài)轉(zhuǎn)換表具體為:根據(jù)被測對象的需求分析及設(shè)計內(nèi)容,分析系統(tǒng)中存在哪些狀態(tài),狀態(tài)與狀態(tài)之間是否能夠進(jìn)行轉(zhuǎn)換,然后基于分析結(jié)果生成狀態(tài)轉(zhuǎn)換表。
[0060]示例性的,系統(tǒng)中存在的狀態(tài)可以包括初始狀態(tài)、初始化、運(yùn)行中、暫停和停止。生成的狀態(tài)轉(zhuǎn)換表如表I所示:[0061]表1
[0062]
【權(quán)利要求】
1.一種生成狀態(tài)轉(zhuǎn)換測試用例的方法,其特征在于,包括: 生成包括系統(tǒng)存在的各個狀態(tài)和狀態(tài)轉(zhuǎn)換信息的狀態(tài)轉(zhuǎn)換表,所述狀態(tài)轉(zhuǎn)換信息用于指示狀態(tài)與狀態(tài)之間是否能夠進(jìn)行轉(zhuǎn)換; 依據(jù)所述狀態(tài)轉(zhuǎn)換表生成N-Switch狀態(tài)轉(zhuǎn)換樹,并依據(jù)所述N-Switch狀態(tài)轉(zhuǎn)換樹生成有效的狀態(tài)轉(zhuǎn)換測試路徑; 依據(jù)所述狀態(tài)轉(zhuǎn)換表生成無效的狀態(tài)轉(zhuǎn)換測試路徑; 通過所述有效的狀態(tài)轉(zhuǎn)換測試路徑和所述無效的狀態(tài)轉(zhuǎn)換測試路徑生成狀態(tài)轉(zhuǎn)換測試用例集。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述N-Switch狀態(tài)轉(zhuǎn)換樹為O-Switch狀態(tài)轉(zhuǎn)換樹或1-Switch狀態(tài)轉(zhuǎn)換樹; 則當(dāng)所述N-Switch狀態(tài)轉(zhuǎn)換樹為O-Switch狀態(tài)轉(zhuǎn)換樹時,依據(jù)所述狀態(tài)轉(zhuǎn)換表生成N-Switch狀態(tài)轉(zhuǎn)換樹,具體為: 依據(jù)所述狀態(tài)轉(zhuǎn)換表生成O-Switch狀態(tài)轉(zhuǎn)換樹; 則當(dāng)所述N-Switch狀態(tài)轉(zhuǎn)換樹為1-Switch狀態(tài)轉(zhuǎn)換樹時,依據(jù)所述狀態(tài)轉(zhuǎn)換表生成N-Switch狀態(tài)轉(zhuǎn)換樹,具體為: 依據(jù)所述狀態(tài)轉(zhuǎn)換表生成O-Switch狀態(tài)轉(zhuǎn)換樹; 依據(jù)所述狀態(tài)轉(zhuǎn)換表確定能夠與所述O-Switch狀態(tài)轉(zhuǎn)換樹的葉子結(jié)點(diǎn)進(jìn)行轉(zhuǎn)換的狀態(tài),并將能夠與所述O-Switch狀態(tài)轉(zhuǎn)換樹的葉子結(jié)點(diǎn)轉(zhuǎn)換的狀態(tài)作為所述1-Switch狀態(tài)轉(zhuǎn)換樹的葉子結(jié)點(diǎn)。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述系統(tǒng)存在的各個狀態(tài)至少包括起始狀態(tài),所述狀態(tài)轉(zhuǎn)換表的各行對應(yīng)所述系統(tǒng)的各個狀態(tài),所述狀態(tài)轉(zhuǎn)換表的各列對應(yīng)除所述起始狀態(tài)外的其它狀態(tài),依據(jù)所述狀態(tài)轉(zhuǎn)換表生成O-Switch狀態(tài)轉(zhuǎn)換樹,具體為: 將所述起始狀態(tài)作為根結(jié)點(diǎn),為所述O-Switch狀態(tài)轉(zhuǎn)換樹添加根結(jié)點(diǎn),并將所述根結(jié)點(diǎn)所在的層次作為所述O-Switch狀態(tài)轉(zhuǎn)換樹的第I層; 從所述O-Switch狀態(tài)轉(zhuǎn)換樹的第I層開始,依據(jù)所述狀態(tài)轉(zhuǎn)換表,利用廣度搜索法按從左到右的順序,確定各層上的各個結(jié)點(diǎn)是否能夠和所述狀態(tài)轉(zhuǎn)換表中各列的狀態(tài)進(jìn)行轉(zhuǎn)換,如果所述第一結(jié)點(diǎn)已出現(xiàn)在第J層上,或者,所述第K層上的第一結(jié)點(diǎn)與各列的狀態(tài)都不能進(jìn)行轉(zhuǎn)換,則將所述第一結(jié)點(diǎn)作為所述O-Switch狀態(tài)轉(zhuǎn)換樹的葉子結(jié)點(diǎn),如果所述第K層上的第一結(jié)點(diǎn)能夠與至少一列的狀態(tài)進(jìn)行轉(zhuǎn)換,則將能夠與所述第一結(jié)點(diǎn)轉(zhuǎn)換的狀態(tài)作為所述第一結(jié)點(diǎn)的子結(jié)點(diǎn),直至確定出O-Switch狀態(tài)轉(zhuǎn)換樹的所有葉子結(jié)點(diǎn)為止,其中,J小于等于K,所述葉子結(jié)點(diǎn)不具有子結(jié)點(diǎn)。
4.根據(jù)權(quán)利要求1~3中任意一項所述的方法,其特征在于,依據(jù)所述狀態(tài)轉(zhuǎn)換表中生成無效的轉(zhuǎn)換測試路徑,具體為: 對于所述狀態(tài)轉(zhuǎn)換表中的目標(biāo)狀態(tài),通過所述狀態(tài)轉(zhuǎn)換信息確定不能與所述目標(biāo)狀態(tài)進(jìn)行轉(zhuǎn)換的狀態(tài); 通過所述目標(biāo)狀態(tài)和確定出的不能與所述目標(biāo)狀態(tài)進(jìn)行轉(zhuǎn)換的狀態(tài)生成無效的狀態(tài)轉(zhuǎn)換測試路徑。
5.根據(jù)權(quán)利要求1~3中任意一項所述的方法,其特征在于,依據(jù)所述N-Switch狀態(tài)轉(zhuǎn)換樹生成有效的狀態(tài)轉(zhuǎn)換測試路徑,具體為:從所述N-Switch狀態(tài)轉(zhuǎn)換樹的葉子結(jié)點(diǎn)逐層尋找上一層的父結(jié)點(diǎn),直至尋找到的父結(jié)點(diǎn)為根結(jié)點(diǎn)為止; 確定從所述葉子結(jié)點(diǎn)逐層尋找到所述根結(jié)點(diǎn)的路徑為有效的狀態(tài)轉(zhuǎn)換測試路徑,所述有效的狀態(tài)轉(zhuǎn)換測試路徑的數(shù)量與所述N-Switch狀態(tài)轉(zhuǎn)換樹中葉子結(jié)點(diǎn)的數(shù)量相同。
6.一種生成狀態(tài)轉(zhuǎn)換測試用例的裝置,其特征在于,包括: 狀態(tài)轉(zhuǎn)換表生成模塊,用于生成包括系統(tǒng)存在的各個狀態(tài)和狀態(tài)轉(zhuǎn)換信息的狀態(tài)轉(zhuǎn)換表,所述狀態(tài)轉(zhuǎn)換信息用于指示狀態(tài)與狀態(tài)之間是否能夠進(jìn)行轉(zhuǎn)換; 狀態(tài)轉(zhuǎn)換樹生成模塊,用于依據(jù)所述狀態(tài)轉(zhuǎn)換表生成模塊生成的所述狀態(tài)轉(zhuǎn)換表生成N-Switch狀態(tài)轉(zhuǎn)換樹; 有效路徑生成模塊,用于依據(jù)所述狀態(tài)轉(zhuǎn)換樹生成模塊生成的所述N-Switch狀態(tài)轉(zhuǎn)換樹生成有效的狀態(tài)轉(zhuǎn)換測試路徑; 無效路徑生成模塊,用于依據(jù)所述狀態(tài)轉(zhuǎn)換表生成模塊生成的所述狀態(tài)轉(zhuǎn)換表生成無效的狀態(tài)轉(zhuǎn)換測試路徑; 測試用例生成模塊,用于通過所述有效路徑生成模塊生成的所述有效的狀態(tài)轉(zhuǎn)換測試路徑和所述無效路徑生成模塊生成的所述無效的狀態(tài)轉(zhuǎn)換測試路徑生成狀態(tài)轉(zhuǎn)換測試用例集。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述N-Switch狀態(tài)轉(zhuǎn)換樹為O-Switch狀態(tài)轉(zhuǎn)換樹或1-Switch狀態(tài)轉(zhuǎn)換樹; 則當(dāng)所述N-Switch狀態(tài)轉(zhuǎn)換樹為1-Switch狀態(tài)轉(zhuǎn)換樹時,所述狀態(tài)轉(zhuǎn)換樹生成模塊包括: O-Switch狀態(tài)轉(zhuǎn)換樹生成子模塊,用于依據(jù)所述狀態(tài)轉(zhuǎn)換表生成O-Switch狀態(tài)轉(zhuǎn)換樹; 則當(dāng)所述N-Switch狀態(tài)轉(zhuǎn)換樹為1-Switch狀態(tài)轉(zhuǎn)換樹時,所述狀態(tài)轉(zhuǎn)換樹生成模塊包括: 0-Switch狀態(tài)轉(zhuǎn)換樹生成子模塊,用于依據(jù)所述狀態(tài)轉(zhuǎn)換表生成O-Switch狀態(tài)轉(zhuǎn)換樹; 1-Switch狀態(tài)轉(zhuǎn)換樹生成子模塊,用于依據(jù)所述狀態(tài)轉(zhuǎn)換表確定能夠與所述O-Switch狀態(tài)轉(zhuǎn)換樹的葉子結(jié)點(diǎn)進(jìn)行轉(zhuǎn)換的狀態(tài),并將能夠與所述O-Switch狀態(tài)轉(zhuǎn)換樹的葉子結(jié)點(diǎn)轉(zhuǎn)換的狀態(tài)作為所述1-Switch狀態(tài)轉(zhuǎn)換樹的葉子結(jié)點(diǎn)。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述系統(tǒng)存在的各個狀態(tài)至少包括起始狀態(tài),所述狀態(tài)轉(zhuǎn)換表的各行對應(yīng)所述系統(tǒng)的各個狀態(tài),所述狀態(tài)轉(zhuǎn)換表的各列對應(yīng)除所述起始狀態(tài)外的其它狀態(tài); 則所述O-Switch狀態(tài)轉(zhuǎn)換樹生成子模塊,包括: 根結(jié)點(diǎn)添加子模塊,用于將所述起始狀態(tài)作為根結(jié)點(diǎn),為所述O-Switch狀態(tài)轉(zhuǎn)換樹添加根結(jié)點(diǎn),并將所述根結(jié)點(diǎn)所在的層次作為所述O-Switch狀態(tài)轉(zhuǎn)換樹的第I層; 子結(jié)點(diǎn)添加子模塊,用于從所述O-Switch狀態(tài)轉(zhuǎn)換樹的第1層開始,依據(jù)所述狀態(tài)轉(zhuǎn)換表,利用廣度搜索法按從左到右的順序,確定各層上的各個結(jié)點(diǎn)是否能夠和所述狀態(tài)轉(zhuǎn)換表中各列的狀態(tài)進(jìn)行轉(zhuǎn)換,如果所述第一結(jié)點(diǎn)已出現(xiàn)在第J層上,或者,所述第K層上的第一結(jié)點(diǎn)與各列的狀態(tài)都不能進(jìn)行轉(zhuǎn)換,則將所述第一結(jié)點(diǎn)作為所述O-Switch狀態(tài)轉(zhuǎn)換樹的葉子結(jié)點(diǎn),如果所述第K層上的第一結(jié)點(diǎn)能夠與至少一列的狀態(tài)進(jìn)行轉(zhuǎn)換,則將能夠與所述第一結(jié)點(diǎn)轉(zhuǎn)換的狀態(tài)作為所述第一結(jié)點(diǎn)的子結(jié)點(diǎn),直至確定出O-Switch狀態(tài)轉(zhuǎn)換樹的所有葉子結(jié)點(diǎn)為止,其中,J小于等于K,所述葉子結(jié)點(diǎn)不具有子結(jié)點(diǎn)。
9.根據(jù)權(quán)利要求6~8中任意一項所述的裝置,其特征在于, 所述無效路徑生成模塊路徑,具體用于對于所述狀態(tài)轉(zhuǎn)換表中的目標(biāo)狀態(tài),通過所述狀態(tài)轉(zhuǎn)換信息確定不能與所述目標(biāo)狀態(tài)進(jìn)行轉(zhuǎn)換的狀態(tài),通過所述目標(biāo)狀態(tài)和確定出的不能與所述目標(biāo)狀態(tài)進(jìn)行轉(zhuǎn)換的狀態(tài)生成無效的狀態(tài)轉(zhuǎn)換測試路徑。
10.根據(jù)權(quán)利要求6~8中任意一項所述的裝置,其特征在于, 所述有效路徑生成模塊,具體用于從所述N-Switch狀態(tài)轉(zhuǎn)換樹的葉子結(jié)點(diǎn)逐層尋找上一層的父結(jié)點(diǎn),直至尋找到的父結(jié)點(diǎn)為根結(jié)點(diǎn)為止,確定從所述葉子結(jié)點(diǎn)逐層尋找到所述根結(jié)點(diǎn)的路徑為有效的狀態(tài)轉(zhuǎn)換測試路徑,所述有效的狀態(tài)轉(zhuǎn)換測試路徑的數(shù)量與所述N-Switch狀態(tài)轉(zhuǎn)換樹中`葉子結(jié)點(diǎn)的數(shù)量相同。
【文檔編號】G06F11/36GK103678138SQ201410003501
【公開日】2014年3月26日 申請日期:2014年1月3日 優(yōu)先權(quán)日:2014年1月3日
【發(fā)明者】殷紅珍, 陳義林 申請人:北京經(jīng)緯恒潤科技有限公司