亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于模型的聯(lián)鎖軟件測試用例生成方法

        2022-12-01 07:03:42彭麗維宋鵬飛江雪瑩
        鐵路通信信號工程技術(shù) 2022年11期
        關(guān)鍵詞:模型

        彭麗維,宋鵬飛,江雪瑩,謝 林

        (1.卡斯柯信號(成都)有限公司,成都 610083;2.卡斯柯信號有限公司,上海 200071)

        隨著科技飛速發(fā)展,軌道交通等領(lǐng)域軟件的復(fù)雜性和規(guī)模性越來越高,保證這些軟件的可靠性和安全性有重要意義。軟件測試是保證軟件質(zhì)量的重要環(huán)節(jié)和依據(jù)[1],然而,軟件測試工作是一項(xiàng)費(fèi)時費(fèi)力的活動,軟件測試成本日益增加。因此,如何高效、正確、快速地對軟件進(jìn)行測試逐漸成為研究的主流方向。

        文獻(xiàn)[2]著重介紹了分塊劃分的原理,分析節(jié)點(diǎn)和分區(qū)兩種類型的模塊結(jié)構(gòu),將所有的代碼分成若干個模塊,分別在測試引擎中編譯鏈接每個模塊,并將結(jié)果存儲在臨時數(shù)據(jù)庫中。測試引擎將自動測試模塊和額外的可執(zhí)行程序結(jié)合起來,使得測試工具可以根據(jù)新的測試需求和不同的測試標(biāo)準(zhǔn)來實(shí)時進(jìn)行測試。利用上述原理設(shè)計(jì)了計(jì)算機(jī)輔助軟件測試工具。文獻(xiàn)[3]將軟件的檢驗(yàn)和驗(yàn)證(V&V)與商業(yè)計(jì)算機(jī)輔助軟件工具(CASE)結(jié)合,在實(shí)時的硬件環(huán)境下循環(huán)測試,相比于傳統(tǒng)的CASE,在軟件測試方面增加了Matlab需求仿真工具箱、逆向工程工具箱、生成單元測試程序工具箱和在線幫助以及信息輔助控制,實(shí)例證明在很大程度上減少了測試所需時間和物力。

        楊波等從軟件的需求分析出發(fā)提出了基于需求建模的測試用例生成方法,從軟件開發(fā)的需求階段著手,利用UML建立需求元模型,再從元模型中提取出測試特征元模型,采用OCL約束對模型進(jìn)行驗(yàn)證,生成抽象測試用例[4]。

        上述方案中在一定程度上提高了測試效率,但是僅針對某一種具體應(yīng)用的聯(lián)鎖軟件,測試模型通用性不強(qiáng),仍需要大量地人工編寫測試用例。

        1 總體框架

        為解決上述問題,本文提出一種通用聯(lián)鎖軟件測試用例的生成方法,如圖1所示,從狀態(tài)信息表生成、狀態(tài)信息處理、測試用例生成3個階段來展開研究。根據(jù)計(jì)算機(jī)聯(lián)鎖技術(shù)條件羅列出每個階段的所有狀態(tài)及狀態(tài)之間的轉(zhuǎn)換條件和轉(zhuǎn)換關(guān)系,利用這些狀態(tài)和關(guān)系生成若干四元組合,形成聯(lián)鎖狀態(tài)轉(zhuǎn)換模型的樹形網(wǎng)狀結(jié)果,最后通過解析該樹形網(wǎng)狀結(jié)果來生成測試用例。

        圖1 總體框架Fig.1 General framework

        2 狀態(tài)信息表生成階段

        狀態(tài)信息表生成階段是指根據(jù)計(jì)算機(jī)聯(lián)鎖技術(shù)條件中描述的進(jìn)路建立、進(jìn)路鎖閉、信號開放、進(jìn)路解鎖、聯(lián)鎖結(jié)合功能和聯(lián)鎖接口功能各個階段所需的聯(lián)鎖條件,列出每個階段所有的狀態(tài)及狀態(tài)之間轉(zhuǎn)換的條件,利用聯(lián)鎖自動化工具將這些狀態(tài)和狀態(tài)之間的轉(zhuǎn)換條件輸出到狀態(tài)信息表中。

        其中狀態(tài)信息表中包括所有狀態(tài)的名稱、初始狀態(tài)和結(jié)束狀態(tài),以及每個狀態(tài)下可執(zhí)行的操作、操作對應(yīng)的結(jié)果狀態(tài)和操作對應(yīng)的聯(lián)鎖條件。

        針對每個階段包含若干狀態(tài),在信息表中需要指定初始狀態(tài)、結(jié)束狀態(tài)和操作對應(yīng)的結(jié)果狀態(tài),其中初始狀態(tài)和結(jié)束狀態(tài)是指從每個階段羅列出的所有狀態(tài)中,指定一個初始狀態(tài)作為后續(xù)搜索的起點(diǎn)和若干結(jié)束狀態(tài)作為后續(xù)搜索的結(jié)束條件[5]。

        在狀態(tài)信息表中,每個狀態(tài)還需包含可執(zhí)行的操作和操作對應(yīng)的結(jié)果狀態(tài),這些操作和結(jié)果是通用聯(lián)鎖軟件根據(jù)先驗(yàn)閾值設(shè)定的適用于所有類型車站的通用判斷條件和操作,再結(jié)合具體站場的實(shí)際聯(lián)鎖邏輯變?yōu)榫唧w的值來進(jìn)行使用,其中操作對應(yīng)的轉(zhuǎn)化條件和狀態(tài)下可執(zhí)行的操作是一個適用于所有站型的通用條件判斷和操作,需要結(jié)合具體車站數(shù)據(jù),將通用條件判斷和操作描述用實(shí)際的站場元素來替代[6]。

        3 狀態(tài)信息處理階段

        狀態(tài)信息處理階段是指根據(jù)狀態(tài)信息表提供的狀態(tài)轉(zhuǎn)換名稱、結(jié)束狀態(tài)、初始化狀態(tài)及狀態(tài)下可執(zhí)行的操作及該操作對應(yīng)的結(jié)果狀態(tài),得到聯(lián)鎖狀態(tài)轉(zhuǎn)換模型,過程如下。

        本階段劃分為2個模塊,分別為:狀態(tài)及條件信息組合模塊、聯(lián)鎖狀態(tài)轉(zhuǎn)換模塊,各模塊詳細(xì)處理分為以下若干步。

        1)狀態(tài)及條件信息組合模塊,用3個子模塊Module1-1,Module1-2,Module1-3來表示。

        Module1-1:將狀態(tài)信息表中描述的初始狀態(tài)作為入口點(diǎn)狀態(tài),識別該狀態(tài)下可執(zhí)行的所有操作,并找到操作對應(yīng)的狀態(tài)結(jié)果,操作對應(yīng)的轉(zhuǎn)化條件,針對每一個操作生成一個入口四元組合:“入口點(diǎn)狀態(tài)”“轉(zhuǎn)換條件”“可執(zhí)行的操作”“結(jié)果狀態(tài)”。

        “結(jié)果狀態(tài)”可能包含多個,這里將所有的結(jié)果狀態(tài)用“結(jié)果狀態(tài)1”“結(jié)果狀態(tài)2”……“結(jié)果狀態(tài)n”來描述。

        Module1-2:每一個結(jié)果狀態(tài)下也包括若干個可執(zhí)行的操作,重復(fù)Module1的操作,針對每一個結(jié)果狀態(tài)下的每個操作生成一個執(zhí)行四元組合:結(jié)果狀態(tài)1、轉(zhuǎn)換條件、結(jié)果狀態(tài)2,循環(huán)執(zhí)行Module1-2,最終生成若干個執(zhí)行四元組合:結(jié)果狀態(tài)n-1、轉(zhuǎn)換條件、結(jié)果狀態(tài)n。

        Module1-3:將狀態(tài)信息表中描述的結(jié)束狀態(tài)作為出口點(diǎn)狀態(tài),識別所有能轉(zhuǎn)換到該狀態(tài)下的操作對應(yīng)的狀態(tài)及轉(zhuǎn)化條件,針對每一個操作生成一個出口四元組合:“結(jié)果狀態(tài)”“轉(zhuǎn)換條件”“可執(zhí)行的操作”“出口點(diǎn)狀態(tài)”。

        2)聯(lián)鎖狀態(tài)轉(zhuǎn)換模塊,將1)描述的所有四元組合拼接起來,形成一棵以入口點(diǎn)狀態(tài)為起點(diǎn),出口點(diǎn)狀態(tài)為結(jié)束點(diǎn)的中間連接若干結(jié)果狀態(tài),并帶有轉(zhuǎn)換條件和可執(zhí)行操作的樹形網(wǎng)狀結(jié)構(gòu)。如圖2所示,具體步驟如下[7]。

        圖2 樹形網(wǎng)狀結(jié)構(gòu)生成邏輯Fig.2 Tree network structure generation logic

        定義任意一個四元組合中,第一個狀態(tài)為源狀態(tài),第三個狀態(tài)為目標(biāo)狀態(tài)。

        S1:尋找所有包含入口點(diǎn)狀態(tài)的四元組合,確定目標(biāo)狀態(tài)和源狀態(tài),每一個四元組合循環(huán)執(zhí)行以下搜索。

        S2:以S1步驟中找到的每一個四元組合的目標(biāo)狀態(tài)為搜索起點(diǎn),在所有四元組合中搜索以該目標(biāo)狀態(tài)為源狀態(tài)的所有四元組合,并記錄四元組合中的轉(zhuǎn)換條件和可執(zhí)行操作。

        S3:若S2中搜索到的四元組合中的目標(biāo)狀態(tài)包含結(jié)果狀態(tài)或者目標(biāo)狀態(tài)或者源狀態(tài)在前一次的搜索結(jié)果中出現(xiàn),則以該四元組合的目標(biāo)狀態(tài)為源狀態(tài)的搜索結(jié)束,將本次搜索的內(nèi)容組合起來形成一個分支。

        S4:若S3搜索未結(jié)束,取下一個四元組合繼續(xù)S2步搜索,直到所有三元S1中描述的所有四元組合搜索完成。

        S5:S4執(zhí)行完成后,將S3中組合起來的若干分支合并,形成一棵以入口點(diǎn)狀態(tài)為起點(diǎn),出口點(diǎn)狀態(tài)為結(jié)束點(diǎn)的中間連接若干結(jié)果狀態(tài),并帶有轉(zhuǎn)換條件和可執(zhí)行操作的樹形網(wǎng)狀結(jié)構(gòu)[8]。

        4 生成測試用例

        測試用例生成階段是指解析狀態(tài)信息處理階段得到的樹形網(wǎng)狀結(jié)構(gòu),生成抽象的測試用例,根據(jù)抽象測試用例中的每個四元組合的源狀態(tài)、轉(zhuǎn)換條件、可執(zhí)行操作和目標(biāo)狀態(tài),注入實(shí)際車站數(shù)據(jù),生成實(shí)例化的測試用例。

        4.1 抽象測試用例生成

        在得到具體的測試用例前,必須要有符合邏輯的狀態(tài)轉(zhuǎn)換過程作為對應(yīng)的輸出,因此必須要生成抽象的測試用例。

        抽象測試用例生成過程中不考慮遷移的條件,只考慮所有的狀態(tài)轉(zhuǎn)化過程。采用狀態(tài)覆蓋準(zhǔn)則生成的用例會遺漏很多過程,嚴(yán)重影響測試質(zhì)量,為了保證測試用例的完備性,必須要能夠覆蓋到所有遷移條件。在遷移覆蓋準(zhǔn)則的前提下,設(shè)計(jì)深度優(yōu)先搜索算法,解析聯(lián)鎖狀態(tài)轉(zhuǎn)換模型得到的樹形結(jié)構(gòu)。

        1)以樹形結(jié)構(gòu)中每個四元組合的入口點(diǎn)狀態(tài)為起點(diǎn),取出每個入口點(diǎn)包含的所有分支;

        2)解析每條分支中包含的n個四元組合,其中第一個四元組合的源狀態(tài)必須是入口點(diǎn)狀態(tài),第二個四元組合源狀態(tài)為第一個四元組合的目標(biāo)狀態(tài),第三個四元組合源狀態(tài)為第二個四元組合的目標(biāo)狀態(tài),依次類推,第n個四元組合的源狀態(tài)為第n-1個四元組合的目標(biāo)狀態(tài),第n個四元組合的目標(biāo)狀態(tài)為出口點(diǎn)狀態(tài)或者第1個到第n-1個四元組合中出現(xiàn)過的目標(biāo)狀態(tài)或者源狀態(tài);

        3)將步驟2)中每條分支得到的所有狀態(tài)按四元組合出現(xiàn)的順序組合在一起,構(gòu)成一條抽象測試用例[9]。

        4.2 實(shí)例化用例生成

        根據(jù)JAVA語言提供的反射機(jī)制,動態(tài)調(diào)用類中的函數(shù)和方法,結(jié)合模型的建立情況,為模型中的每個模板建立一個類。該類中包含模型中所有遷移涉及到的方法,每個方法有關(guān)的輸入通過該方法返回,以便在對模型解析時能夠得到具體的輸入,具體過程如下:

        1)取4.1中得到的抽象測試用例,取出抽象用例得到所有狀態(tài)信息,并結(jié)合樹形結(jié)構(gòu),獲取狀態(tài)之間的聯(lián)鎖條件及可執(zhí)行的操作;

        2)利用JAVA反射機(jī)制解析步驟1)中抽象用例的聯(lián)鎖條件和可執(zhí)行操作,注入實(shí)際車站數(shù)據(jù),將適用于所有站的轉(zhuǎn)換條件和可執(zhí)行操作以實(shí)際站的數(shù)據(jù)中描述的元素來替代;

        3)將步驟2)中解析好的聯(lián)鎖條件和可執(zhí)行操作按步驟1)中取出的抽象測試用例中的四元組合順序條件到抽象用例的源狀態(tài)和目標(biāo)狀態(tài)之間,構(gòu)成一條可執(zhí)行的實(shí)例化的測試用例;

        4)每個抽象案例對應(yīng)軟件的一個測試用例,解析所有的抽象測試用例,最終生成軟件所有的測試用例[10]。

        5 結(jié)論

        安全軟件潛在的危險(xiǎn)性對系統(tǒng)可靠性有很大影響,本文提出了一種基于模型的聯(lián)鎖軟件測試用例生成方法。以鐵路信號系統(tǒng)中的安全軟件計(jì)算機(jī)聯(lián)鎖系統(tǒng)部分設(shè)計(jì)過程為實(shí)例,根據(jù)軟件的需求規(guī)范和可能影響軟件安全的環(huán)境因素著手,建立聯(lián)鎖安全軟件的狀態(tài)機(jī)模型,來生成測試用例,在一定程度上提高了軟件測試的可靠性,將傳統(tǒng)測試軟件的方法由黑盒測試逐步轉(zhuǎn)化為白盒測試,有效地避免了由于軟件的保密性而造成軟件內(nèi)部運(yùn)行程序的不可靠性引起測試不全面的問題。

        猜你喜歡
        模型
        一半模型
        一種去中心化的域名服務(wù)本地化模型
        適用于BDS-3 PPP的隨機(jī)模型
        提煉模型 突破難點(diǎn)
        函數(shù)模型及應(yīng)用
        p150Glued在帕金森病模型中的表達(dá)及分布
        函數(shù)模型及應(yīng)用
        重要模型『一線三等角』
        重尾非線性自回歸模型自加權(quán)M-估計(jì)的漸近分布
        3D打印中的模型分割與打包
        亚洲成片在线看一区二区| 狠狠爱婷婷网五月天久久| 被灌醉的日本人妻中文字幕| 国产婷婷色一区二区三区| 中字幕人妻一区二区三区 | 蜜桃视频永久免费在线观看 | 尤物yw午夜国产精品视频 | 啦啦啦www在线观看免费视频| 亚洲avav天堂av在线网爱情| 亚洲欧美另类激情综合区| 99精品国产兔费观看久久99| 18无码粉嫩小泬无套在线观看| 亚洲av无码av在线播放| 欧美三级超在线视频| 亚洲区福利视频免费看| 国产精品一级黄色大片| 国产自拍伦理在线观看| 亚洲av熟女天堂久久天堂| 中文字幕一区二区av| 国产成人久久精品一区二区三区 | 男女18禁啪啪无遮挡| 亚洲一区sm无码| 99精品欧美一区二区三区美图| 人妻少妇中文字幕av| 我要看免费久久99片黄色| 亚洲av高清一区二区三| 偷拍偷窥女厕一区二区视频| 亚洲免费网站观看视频 | 国产精品视频免费的| 丝袜美女美腿一区二区| av网站大全免费在线观看| 高潮抽搐潮喷毛片在线播放| 日本在线观看| av狼人婷婷久久亚洲综合| 日本黄色高清视频久久| 国产嫩草av一区二区三区| 日韩精品视频一区二区三区| 伊人久久综合影院首页| 素人激情福利视频| 亚洲一区二区三区99区| 人妻精品久久一区二区三区|