<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 嵌入式軟件運行剖面建模及測試用例生成

          嵌入式軟件運行剖面建模及測試用例生成

          作者: 時間:2010-04-21 來源:網(wǎng)絡 收藏

            每一個經算法作用后,都表示為一Markov鏈,根據(jù)算法,可以看出,該Markov鏈之包含了中的帶有輸入的節(jié)點以及其中的一些關鍵節(jié)點,該Markov鏈綜合了每個的運行圖以及其狀態(tài)細化圖,以下的程序處理都基于此Markov鏈。


            3. 用例自動

            用例是根據(jù)運行隨機的。在運行中已經規(guī)定了每個輸入變量的取值類型以及取值范圍,并且認為變量在取值范圍內均勻分布或分段均勻分布(由于很難確定變量的具體分布,這里假設為均勻分布)。可靠性是一種隨機測試,測試用例的選取方式是隨機選取。因此,根據(jù)隨機測試的原則,在運行給定的輸入變量的取值區(qū)間內任意抽取一個變量的實際取值。將各個變量按順序組合起來便了測試用例。用于可靠性測試的測試用例可以定義為:根據(jù)運行剖面生成的、完成對某一功能進行測試的、按順序輸入到被測的一系列輸入變量的有序組合。

            系統(tǒng)中,輸入可能為硬件信號或者人機接口,這就需要在標示測試輸入類型時進行特殊標記,這里,可采用兩種方法,一是軟件模擬硬件信號,即當需要硬件信號時,由軟件模擬此硬件信號,來保證測試的執(zhí)行。二是對需要的硬件信號進行標示,當需要硬件信號時,系統(tǒng)會提示需要某個硬件信號的觸發(fā)。

            根據(jù)運行剖面生成測試用例的過程為:運行剖面由一系列變量的取值區(qū)間和該運行發(fā)生的概率組成。

            首先,要隨機抽取一個運行來實現(xiàn)對某一功能的一次測試。抽取運行的過程如下:

            ① 將運行剖面{OPi|OPi=<Oi,Pi>,i=1,2,…,N}中所有運行發(fā)生的概率Pi求前j項和,形成一個數(shù)列{Sj},Sj=∑Pi,其中,i=1,…j,j=1,2,…,N;N為軟件運行剖面中運行總數(shù),規(guī)定S0=0,并有S1=P1,Sn=1.0,Sj-Sj-1=Pj。這里運行相互獨立。

           ?、?任給一個隨機數(shù)η∈(0,1.0),觀察η落在哪個區(qū)間,若η滿足Sj-1<η≤Sj,則該隨機數(shù)η與Pj這個概率值對應,那么這次隨機抽到的運行為Oj。

           ?、?確定了抽到的運行為Oi后,就可以確定該運行的輸入情況,假設該運行有m個輸入,每個輸入的可選值分別為I1,I2…Im,將其排列為一個二進制串,若I1有m1個可選輸入,I2有m2個可選輸入Im有mm個可選輸入,則二進制串為(00…0) (00…0)……(00…0),其中,第一個括號內的0有m1個,第二個括號中的0有m2個,第m個括號中的0有mm個,構造一個布爾類型的數(shù)組,數(shù)組的大小為2(I1+I2+…+Im),數(shù)組的初始值均為false,每次產生一個測試用例時,從m個輸入的I1,I2…Im中每一個輸入的可選值中各選一個,并把二進制串中的相應位置1,m個輸入都選好后,把對應的標記數(shù)組置為true。生成一個測試用例后,首先判斷對應的標記數(shù)組,若為true,則需要重新生成一個用例。

           ?、?其中,要進行第二次抽樣來確定運行中每個輸入的取值區(qū)間將取到的實體(即具體取值)。實體的確定將按照輸入變量的屬性分兩種情況進行:

            ① 對于連續(xù)型輸入變量,運行剖面給出的是該變量的取值區(qū)間的上下限[I.down,I.up]。抽樣時將根據(jù)輸入變量的數(shù)據(jù)類型,在區(qū)間[I.down,I.up]內隨機抽取一個滿足輸入變量數(shù)據(jù)類型的具體值,作為該輸入變量的實體。


            ② 對于可選離散型輸入變量,運行剖面給出的是一組離散點Ii,i=1,2,…,mi;mi為離散點的個數(shù)。抽樣時將在[1,mi]內隨機抽取一個整數(shù)j,以確定選哪一個離散點作為該輸入變量的實體,并將該實體轉化為該輸入變量的數(shù)據(jù)類型。

           ?、?通過對運行和各個實體兩個步驟的抽樣,完成一個測試用例的生成。

            應用測試用例可以進行軟件可靠性測試: 圖1 測試系統(tǒng)

            系統(tǒng)負責根據(jù)以上算法策略等產生測試用例,輸入到整個測試系統(tǒng)中,執(zhí)行可靠性測試,測試系統(tǒng)根據(jù)某種判斷策略,來決定此用例是否通過測試,若在規(guī)定的時間內,規(guī)定的輸入條件下,所有用例均通過測試,則測試完成,若其中有測試用例沒有通過測試,只需要對被測軟件進行修改,消除其中的錯誤,再次進行測試,而整個測試系統(tǒng)不需要任何改動,大大的提高了測試的效率和靈活性。這種測試是統(tǒng)計測試,測試完全根據(jù)各個運行所發(fā)生的概率以及運行的權重來進行的,在測試中, 優(yōu)先測試那些最重要或最頻繁使用的功能,釋放和緩解最高級別的風險,有助于盡早發(fā)現(xiàn)那些對可靠性有最大影響的故障。

            4.結束語

            本文完全從工程應用的角度出發(fā),根據(jù)被測軟件的需求規(guī)格說明書,通過和軟件使用人員充分的交流,由測試人員構造出軟件的運行剖面,并用文中定義的運行圖來描述,經過算法轉化為帶標記的 Markov鏈描述,依據(jù)該Markov鏈,可以自動生成測試用例。配合相應的測試環(huán)境,進行自動化的可靠性測試,可以極大的提高測試的效率,被測系統(tǒng)的可靠性也可以進行更加充分的驗證。

            今后的工作主要是輸入模型的提取與識別以及重組,從本文的前面,可以看出,系統(tǒng)的輸入還是比較繁瑣的,如果能夠直接讀取被測軟件的UML圖,從圖中提取各種信息,從而自動構造軟件的運行剖面,則可以使整個過程更加高效,符合軟件測試的發(fā)展趨勢。此外,支撐測試環(huán)境的搭建,也需要認真的研究。

            本文作者創(chuàng)新點:

            1.傳統(tǒng)的軟件測試都是根據(jù)軟件的源代碼進行測試,本文則根據(jù)軟件的需求規(guī)格說明書進行測試,大大提高了測試的效率和靈活性。

            2.用帶標記的Markov鏈對軟件運行剖面,為自動產生測試用例打下了基礎。

            3.能對產生的測試用例情況進行標記,避免產生相同的測試用例,提高了測試的效率。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();