• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      論一種基于編碼規(guī)則的動態(tài)驗證測試方法

      2018-09-10 09:07:56嚴漪敏曹斌陳琦
      中國科技博覽 2018年32期
      關(guān)鍵詞:測試工具嵌入式軟件

      嚴漪敏 曹斌 陳琦

      [摘 要]借助代碼規(guī)則檢查問題單來逐一排查動態(tài)驗證,通過邏輯覆蓋測試來設(shè)計用例到達每一條,以驗證故障的方法。在編碼規(guī)則檢查時,存在規(guī)則問題,在用例設(shè)計后,進行動態(tài)驗證。緩存隊列在加入指令時,未考慮隊列滿時需要釋放隊列,導致,在間接指令隊列滿后,繼續(xù)插入指令時,因隊列未釋放導致軟件復位。

      [關(guān)鍵詞]嵌入式軟件 測試工具 TESTBED 緩存隊列 未釋放 編碼規(guī)則 ada語言

      中圖分類號:TS339 文獻標識碼:A 文章編號:1009-914X(2018)32-0112-02

      1 引言

      編碼規(guī)則是程序編碼所要遵循的規(guī)則,首先就要注意代碼的正確性、穩(wěn)定性和可讀性。遵照代碼規(guī)則也是一種良好的編碼習慣。作為測試人員可以依據(jù)代碼規(guī)則檢查工具來檢測代碼是否遵循規(guī)則來編寫,還可以借助代碼規(guī)則檢查問題單來逐一排查動態(tài)測試問題。

      2 編碼規(guī)則檢查

      某嵌入式大型軟件,具有實行多任務(wù)、實時控制特點。

      軟件通過接收遙控指令進行數(shù)據(jù)解析,若遙控包數(shù)據(jù)內(nèi)容為間接指令,將間接指令插入間接指令隊列,然后再通過周期調(diào)用發(fā)送間接指令函數(shù)依次將隊列中間接指令按照時間順序發(fā)送至遙控終端。

      在規(guī)則檢查時,利用TESTBED工具進行編譯,選取最重要強制項代碼形成LDRA Testbed Code Review Report。如表1所示。

      其中在函數(shù)JinsertQueue里發(fā)現(xiàn)了一個規(guī)則錯誤:

      Violation Number : 7 - Procedure has more than one exit point(一個函數(shù)最好只包含一個return語句,且位于函數(shù)的最后。)

      Location : INDIRCMDQUE.JINSERTQUEUE

      在代碼審查時,根據(jù)TESTBED提示的規(guī)則錯誤進行排查,發(fā)現(xiàn)當間接隊列滿時,程序直接RETUEN返回,并沒有釋放隊列“Queue_Mux.Release;”。

      3 動態(tài)驗證方法

      根據(jù)指令數(shù)據(jù)的格式表2,指令數(shù)據(jù)分為2種,一種是立即指令,時間碼全填充為0x00,另一種是延遲指令,時間碼填充為需要發(fā)送指令的時間。

      嵌入式軟件先讀取指令數(shù)據(jù)包緩存區(qū)指令進行處理,如果是立即指令的就直接串口發(fā)送,如果是延遲指令的存入指令隊列緩存區(qū)。在另一任務(wù)中,實時讀取指令隊列緩存區(qū),如果基準時間等于指令時間,則立即進行串口發(fā)送,如果基準時間小于指令時間,則不作處理。

      根據(jù)隊列的結(jié)構(gòu)特點和發(fā)送隊列指令的時序考慮,如果需要動態(tài)驗證以上錯誤分支,必須通過邏輯覆蓋遍歷。判定覆蓋或分支覆蓋時較強的邏輯覆蓋準則。該準側(cè)要求必須編寫出足夠的測試用例,使得每一個判斷都至少有一個為真或為假的輸出結(jié)果。換句話說,也就是每條分支路徑都必須至少遍歷一次。

      圖1中有N1、N2、N3、N4四個節(jié)點,如果都要遍歷到,其路徑如下:

      所以要測試所有分支,必須滿足五種情況:

      1、隊列滿時

      2、當前隊列中未有指令

      3、當插入指令為最后一條指令

      4、當插入指令指令不為最后一條指令,需要將指令隊列中指令向后挪一個空間

      5、當插入指令指令不為最后一條指令,不需要將指令隊列中指令向后挪一個空間

      如果要走入錯誤分支,則必須遍歷ab分支。對指令隊列進行測試,在時間碼處填上時間,嵌入式軟件在運行時,會根據(jù)基準時間進行判斷,晚于基準時間的指令會存入指令隊列,當基準時間與發(fā)送指令時間一致時,會從隊列中讀取指令并發(fā)送。持續(xù)不斷向嵌入式軟件發(fā)送延遲指令,使指令發(fā)送時間晚于當前時間,持續(xù)發(fā)送511條,將緩存區(qū)填滿,遙測下傳的間接指令隊列深度為1FF。然后,再發(fā)送一條間接延遲指令給嵌入式軟件,預(yù)期結(jié)果是,間接指令隊列深度不變,隊列內(nèi)容不變,此間接延遲指令丟棄。

      實際結(jié)果時,軟件復位,間接指令隊列深度清零。

      4 故障排查分析

      當進入模塊是指令的隊列進行鎖定操作,然后根據(jù)當前指令的插入時間進行順序插入隊列,最后進行隊列釋放操作。當隊列未滿時,流程未出現(xiàn)錯誤。當隊列滿時,流程直接退出模塊,導致指令隊列鎖定后未釋放。當再次發(fā)送指令給嵌入式軟件,就會發(fā)生因隊列未釋放導致緩存區(qū)錯誤引起軟件復位問題。

      5 故障糾正措施

      基于編碼規(guī)則,鎖定和釋放操作是要成對出現(xiàn)?,F(xiàn)在只要將隊列鎖定和隊列釋放操作在整個判斷隊列滿的條件之外,確保不論隊列滿還是隊列不滿時,鎖定和釋放操作時成對出現(xiàn)的。將隊列滿的條件加在整個插入隊列。

      6 總結(jié)

      閱讀代碼對于構(gòu)成完善的軟件測試和調(diào)試手段的價值是非常大的,人工測試技術(shù)結(jié)合代碼規(guī)則檢查,在查找錯誤方面非常有效。同樣在測試用例設(shè)計時,通過不同的測試要素組合起來得到一種合理的測試策略也是非常關(guān)鍵的。

      參考文獻

      [1] 姜靜波,Ada程序設(shè)計語言高級編程,解放軍出版社,1999.

      [2] Tucker S.Taft,綜合ADA參考手冊,Oversea Publishing House,2002.

      [3] GlenFord J.Myers,軟件測試的藝術(shù),機械工業(yè)出版社,2007.

      作者簡介

      嚴漪敏,上海航天電子技術(shù)研究所,工程師。

      曹斌,上海航天控制技術(shù)研究所,高級工程師。

      陳琦,上海航天電子技術(shù)研究所,工程師。

      猜你喜歡
      測試工具嵌入式軟件
      Web應(yīng)用的自動化測試研究
      邊緣智力兒童及其智力測試工具的研究進展
      基于人工智能的模塊化嵌入式軟件開發(fā)研究
      Http并發(fā)連接測試工具
      實時嵌入式軟件的測試技術(shù)
      電子測試(2018年10期)2018-06-26 05:54:08
      全景相機遙控器嵌入式軟件V1.0 相關(guān)操作分析
      電子制作(2017年17期)2017-12-18 06:40:56
      基于移動平臺APP 測試
      基于Eclipse的航天嵌入式軟件集成開發(fā)環(huán)境設(shè)計與實現(xiàn)
      航天嵌入式軟件浮點運算誤差分析與控制
      福祿克推出先進的連接式測試工具系統(tǒng)
      左贡县| 徐水县| 苍梧县| 平阴县| 武安市| 沽源县| 自贡市| 南城县| 义乌市| 五指山市| 凤冈县| 中卫市| 金昌市| 浮梁县| 牟定县| 全椒县| 金秀| 奉节县| 棋牌| 兴隆县| 滨州市| 阿城市| 昌乐县| 江门市| 河北区| 昌平区| 绥棱县| 富平县| 瓦房店市| 邛崃市| 广昌县| 曲周县| 任丘市| 巩留县| 东丽区| 江华| 崇文区| 本溪市| 富蕴县| 临高县| 舞阳县|