一種對含有特殊轉(zhuǎn)換過程的非通用有限狀態(tài)機(jī)進(jìn)行改造的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于系統(tǒng)測試領(lǐng)域,具體涉及一種對非通用有限狀態(tài)機(jī)中的特殊轉(zhuǎn)換過程進(jìn)行改造的方法。
【背景技術(shù)】
[0002]軟件測試目的是發(fā)現(xiàn)全部軟件錯誤,在典型軟件開發(fā)過程中,軟件測試主要分為單元測試、集成測試、系統(tǒng)測試、回歸測試四個階段。由于測試工作具有龐大的工作量,占據(jù)了大量的資源,為了降低成本提升效率,人們提出了基于模型的自動化測試方式。該方式能夠自動的從系統(tǒng)的設(shè)計(jì)規(guī)范得到測試方案,使用測試方案檢驗(yàn)系統(tǒng)實(shí)現(xiàn)與設(shè)計(jì)規(guī)范是否等價(jià),在一定程度上實(shí)現(xiàn)自動化,降低了測試成本。
[0003]有限狀態(tài)機(jī)(FSM,F(xiàn)inite State Machine)模型是一種數(shù)學(xué)模型,該模型分為Moore機(jī)和Mealy機(jī),本發(fā)明中提到的狀態(tài)機(jī)均為Mealy機(jī)。FSM模型是由一個六元組(Q, X, Y, q_0, δ,Ο)組成的,其中:
[0004]Q,是有窮的狀態(tài)集合;
[0005]X,是有窮的輸入集合;
[0006]Y,是有窮的輸出集合;
[0007]q_0 e Q,是FSM模型的初始狀態(tài);
[0008]δ:QXX—Q,是狀態(tài)轉(zhuǎn)換函數(shù);
[0009]0:QXX —0,是輸出函數(shù)。
[0010]在本專利中對符合上述定義的FSM稱為通用FSM,對不符合定義的FSM稱為非通用FSM。在軟件測試過程中,通過采用FSM模型進(jìn)行建模,可以精確刻畫各階段的軟件系統(tǒng)行為。但由于FSM模型在描述大型系統(tǒng)時會出現(xiàn)不便,人們又提出了分層有限狀態(tài)機(jī)(HFSM,Hierarchical Finite State Machine)模型。HFSM允許將FSM模型中的單個狀態(tài)作為一個FSM,在此狀態(tài)內(nèi)可添加其他狀態(tài)或FSM,從而實(shí)現(xiàn)分層模式。
[0011 ] 在實(shí)際測試過程中,大部分被測對象是具有特殊轉(zhuǎn)換過程的非通用FSM,而目前的測試方案生成方法只適用于通用FSM模型,嚴(yán)重影響了 FSM的適用范圍,因而本發(fā)明設(shè)計(jì)了一種將含有特殊轉(zhuǎn)換過程的非通用FSM轉(zhuǎn)化為通用FSM的方法。
[0012]此外,由于現(xiàn)階段對非通用FSM的具體表現(xiàn)特征尚未做出定義,缺少可繪制FSM模型并同時生成測試方案的系統(tǒng),本專利中同時解決了以上問題。
【發(fā)明內(nèi)容】
[0013]本發(fā)明針對非通用FSM中的特殊轉(zhuǎn)換,提出一種FSM模型改造方法,將非通用FSM模型轉(zhuǎn)換為通用FSM模型。通過構(gòu)建一組表示非通用FSM特點(diǎn)的特征圖元,實(shí)現(xiàn)非通用有限狀態(tài)機(jī)的XML文件存儲化。
[0014]為實(shí)現(xiàn)上述目的,本專利的技術(shù)實(shí)現(xiàn)方案包括如下步驟:
[0015]步驟(I)構(gòu)建非通用FSM特征圖元及數(shù)據(jù)結(jié)構(gòu)
[0016]具有特殊轉(zhuǎn)換過程的非通用FSM是由狀態(tài)、普通轉(zhuǎn)換、特殊轉(zhuǎn)換、子狀態(tài)機(jī)組成的,在本專利中構(gòu)建的特征圖元及數(shù)據(jù)結(jié)構(gòu)如下:
[0017]描述轉(zhuǎn)換過程的轉(zhuǎn)換線圖元,其數(shù)據(jù)結(jié)構(gòu)中含有唯一性圖元ID、表示圖元類別的標(biāo)記符、轉(zhuǎn)換激發(fā)條件、轉(zhuǎn)換激發(fā)結(jié)果、所連接頭節(jié)點(diǎn)和尾節(jié)點(diǎn)的圖元ID、所屬特殊轉(zhuǎn)換類別;
[0018]表示狀態(tài)的狀態(tài)圖元,其數(shù)據(jù)結(jié)構(gòu)中含有唯一性圖元ID、表示圖元類別的標(biāo)記符、狀態(tài)名稱;
[0019]包含狀態(tài)及轉(zhuǎn)換線的子狀態(tài)機(jī)圖元,表示HFSM中的子狀態(tài)機(jī)。其數(shù)據(jù)結(jié)構(gòu)中含有唯一性圖元ID、表示圖元類別的標(biāo)記符、子狀態(tài)機(jī)名稱;
[0020]步驟(2)使用特征圖元表示被測對象的執(zhí)行流程,標(biāo)記特殊轉(zhuǎn)換過程
[0021]步驟(2.1)以狀態(tài)圖元表示被測對象執(zhí)行過程中的運(yùn)行狀態(tài);以轉(zhuǎn)換線圖元表示在被測對象不同狀態(tài)之間的跳轉(zhuǎn)方向,以及執(zhí)行跳轉(zhuǎn)所需的激發(fā)條件和激發(fā)結(jié)果;以子狀態(tài)機(jī)圖元表示被測對象中含有的模塊和子流程;
[0022]步驟(2.2)在轉(zhuǎn)換線圖元上標(biāo)記被測對象中含有的并行轉(zhuǎn)換。標(biāo)記過程為首先選中所有轉(zhuǎn)換線圖元,之后將頭節(jié)點(diǎn)尾節(jié)點(diǎn)相同的轉(zhuǎn)換線劃分為同一組。如果該組轉(zhuǎn)換線所屬的頭節(jié)點(diǎn)只在該組內(nèi)所有轉(zhuǎn)換線全部執(zhí)行完畢之后,才可以跳轉(zhuǎn)到下一狀態(tài),就將該組內(nèi)的所有轉(zhuǎn)換線圖元標(biāo)記為并行轉(zhuǎn)換;
[0023]步驟(2.3)在轉(zhuǎn)換線圖元上標(biāo)記被測對象中含有的次序轉(zhuǎn)換。標(biāo)記過程為逐一選中所有狀態(tài),獲取以所選狀態(tài)作為頭節(jié)點(diǎn)的所有轉(zhuǎn)換線,如果這些轉(zhuǎn)換線有先后執(zhí)行順序,就標(biāo)記這些轉(zhuǎn)換線為次序轉(zhuǎn)換;
[0024]步驟(2.4)在轉(zhuǎn)換線圖元上標(biāo)記被測對象中含有的約束轉(zhuǎn)換。標(biāo)記過程為逐一選中所有狀態(tài),獲取以所選狀態(tài)作為尾節(jié)點(diǎn)的所有轉(zhuǎn)換線,之后遍歷這些轉(zhuǎn)換線;如經(jīng)過該轉(zhuǎn)換線到達(dá)所選狀態(tài)后,必須按照特定路徑進(jìn)行跳轉(zhuǎn),就將這條轉(zhuǎn)換線標(biāo)記為約束輸入,將表示特定路徑的轉(zhuǎn)換線標(biāo)記為約束輸出;
[0025]步驟(3)對具有特殊轉(zhuǎn)換過程的非通用有限狀態(tài)機(jī)進(jìn)行改造
[0026]步驟(3.1)對并行轉(zhuǎn)換過程進(jìn)行改造。改造方式是在并行轉(zhuǎn)換的頭結(jié)點(diǎn)、尾節(jié)點(diǎn)之間新建η-1個虛擬節(jié)點(diǎn)(η為并行轉(zhuǎn)換條數(shù)),把并行轉(zhuǎn)換依次利用虛擬節(jié)點(diǎn)連接,并更改并行轉(zhuǎn)換的頭尾節(jié)點(diǎn);
[0027]步驟(3.2)對次序轉(zhuǎn)換進(jìn)行改造。首先按照次序轉(zhuǎn)換優(yōu)先級對轉(zhuǎn)換進(jìn)行排序,并在按序排列后的前后兩條轉(zhuǎn)換之間添加I個虛擬節(jié)點(diǎn),總共添加η-1個,其中η為次序轉(zhuǎn)換條數(shù);之后復(fù)制I個次序轉(zhuǎn)換頭結(jié)點(diǎn),將優(yōu)先級最低的次序轉(zhuǎn)換的尾節(jié)點(diǎn)改為復(fù)制的頭結(jié)點(diǎn),至此完成次序轉(zhuǎn)換的通用化;
[0028]步驟(3.3)對約束轉(zhuǎn)換過程進(jìn)行改造,首先復(fù)制處于約束輸入、約束輸出之間的狀態(tài),復(fù)制的次數(shù)為到達(dá)該狀態(tài)的約束輸入條數(shù);將每個約束輸入的尾節(jié)點(diǎn)更改為復(fù)制的新狀態(tài)中的任意一個,并更改約束輸出的頭結(jié)點(diǎn)為復(fù)制的新狀態(tài)中的任意一個;最后在原狀態(tài)處刪除約束輸出;
[0029]步驟⑷定義5個XML標(biāo)簽,在XML標(biāo)簽的文本位置中存儲如下內(nèi)容:
[0030]標(biāo)簽I文本內(nèi)容:按照轉(zhuǎn)換線圖元ID的大小順序,存儲所有轉(zhuǎn)換線的激發(fā)條件,單個激發(fā)條件的文本長度小于100個字符;
[0031]標(biāo)簽2文本內(nèi)容:按照轉(zhuǎn)換線圖元ID的大小順序,存儲所有轉(zhuǎn)換線的激發(fā)結(jié)果,單個激發(fā)結(jié)果的文本長度小于100個字符;
[0032]標(biāo)簽3文本內(nèi)容:按照轉(zhuǎn)換線圖元ID的大小順序,存儲每個轉(zhuǎn)換線圖元的頭節(jié)點(diǎn)ID、尾節(jié)點(diǎn)ID、激發(fā)條件、激發(fā)結(jié)果;
[0033]標(biāo)簽4文本內(nèi)容:所有狀態(tài)圖元名稱,單個狀態(tài)圖元名的文本長度小于10個字符;
[0034]標(biāo)簽5文本內(nèi)容:所有子狀態(tài)機(jī)圖元名稱,單個子狀態(tài)機(jī)圖元名的文本長度小于10個字符;
[0035]至此完成有限狀態(tài)機(jī)信息XML存儲化。最后,對改造后的非通用FSM進(jìn)行邊遍歷,覆蓋所有執(zhí)行路徑,得到測試方案。
[0036]本發(fā)明與現(xiàn)有技術(shù)相比,具有以下明顯的優(yōu)勢和有益效果:
[0037]本發(fā)明通過對非通用FSM進(jìn)行改造,使得具有特殊轉(zhuǎn)換過程的非通用FSM也可適用于測試用例生成方案,擴(kuò)充了有限狀態(tài)機(jī)在軟件測試各階段中的適用范圍。此外,構(gòu)建了表示非通用FSM的特征圖元及其數(shù)據(jù)結(jié)構(gòu),實(shí)現(xiàn)了非通用FSM的XML存儲方式。
【附圖說明】
[0038]圖1實(shí)施例中web登陸及用戶名修改的測試流程執(zhí)行圖;
[0039]圖2符號化表示的含有特殊轉(zhuǎn)換過程的非通用FSM圖;
[0040]圖3改造后的通用FSM;
[0041]圖4實(shí)施過程的完整執(zhí)行流程。
【具體實(shí)施方式】
[0042]下面將結(jié)合本發(fā)明實(shí)施例中的示意圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。應(yīng)注意到:除非另外具體說明,否則在這些實(shí)施例中闡述的部件和步驟的相對布置不限制本發(fā)明的范圍。
[0043]以下對至少一個示例性實(shí)施例的描述實(shí)際上僅僅是說明性的,決不作為對本發(fā)明及其應(yīng)用或使用的任何限制?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0044]對于相關(guān)領(lǐng)域普通技術(shù)人員已知的技術(shù)、方法和系統(tǒng)可能不作詳細(xì)討論,但在適當(dāng)情況下,所述技術(shù)、方法和系統(tǒng)應(yīng)當(dāng)被視為授權(quán)說明書的一部分。
[0045]在這里示出和討論的所有示例中,任何具體值應(yīng)被解釋為僅僅是示例性的,而不是作為限制。因此,示例性實(shí)施例的其它示例可以具有不同的值。
[0046]通過使用本專利提出的方法,我們設(shè)計(jì)了一種非通用有限狀態(tài)機(jī)測試方案生成系統(tǒng),實(shí)現(xiàn)了對非通用有限狀態(tài)機(jī)的繪制及改造過程,并可將非通用有限狀態(tài)機(jī)信息存儲為XML文件。在實(shí)際應(yīng)用中,可將非通用FSM應(yīng)用在測試工作的單元測試、集成測試、系統(tǒng)測試階段中,測試人員根據(jù)被測對象的執(zhí)行流程進(jìn)行建模。本實(shí)施例中以Web登錄及修改用戶名過程為被測對象,步驟如下:
[0047]步驟1:確定非通用FSM特征圖元的表示樣式,按照被測對象執(zhí)行流程進(jìn)行非通用FSM建模
[0048]按照本專利提出的特征圖元定義,用圓形表示狀態(tài)圖元;用箭頭一曲線連接線表示轉(zhuǎn)換線圖元,箭頭指向該轉(zhuǎn)換線所連接尾節(jié)點(diǎn),另一端指向頭結(jié)點(diǎn);用矩形表示子狀態(tài)機(jī)圖元。使用以上圖形,按照被測對象執(zhí)行流程,完成如圖1中的非通用FSM建模。
[0049]在圖1中,狀態(tài)圖元內(nèi)標(biāo)明了當(dāng)前所處的狀態(tài)名稱;轉(zhuǎn)換線圖元標(biāo)明了在當(dāng)前狀態(tài)下,輸入激發(fā)條件后應(yīng)當(dāng)輸出的激發(fā)結(jié)果,以及下一步應(yīng)到達(dá)的狀態(tài);矩形代表程序的子模塊。
[0050]為便于下文說明,將圖1中的文字以圖2中的符號進(jìn)行代替,圖1和圖2完全等價(jià)。
[0051]步驟2:標(biāo)記非通用FSM中的特殊轉(zhuǎn)換過程
[0052]圖2中的非通用FSM為符號化表示的Web登錄及修改用戶名執(zhí)行過程,其中,狀態(tài)s2與狀態(tài)s3之間的a/Ι與b/0為2條并行轉(zhuǎn)換,當(dāng)這兩條轉(zhuǎn)換均執(zhí)行完畢后,才到達(dá)狀態(tài)s3 ;
[0053]狀態(tài)sO射出的轉(zhuǎn)換a/0,b/0為2條次序轉(zhuǎn)換,且a/Ο優(yōu)先權(quán)較高,優(yōu)先執(zhí)行a/Ο ;
[0054]狀態(tài)s4經(jīng)a/Ο到達(dá)狀態(tài)s5后,必須通過a/Ι到達(dá)狀態(tài)s6,而不能通過b/Ο到達(dá)狀態(tài)s7。將s4的a/Ο及s5的a/Ι稱為I個約束轉(zhuǎn)換組,s4的a/Ο為約束輸入,s5的a/1為約束輸出。
[0055]步驟3:對特殊轉(zhuǎn)換過程進(jìn)行轉(zhuǎn)換,改造非通用FSM<