靜網PWA視頻評論

基於IS0 26262的嵌入式軟體測試研究

2023年10月29日

- txt下載

吳玲玉 張宗哲 馬凱
摘 要:當前,嵌入式系統已發展成為汽車電子行業的焦點,鑒於其自身設計特性,為保證軟體質量可靠性,軟體測試必不可少。在介紹軟體測試基本概念的基礎上,針對IS0 26262功能安全標準,從靜態測試和動態測試解決方案上介紹了相關嵌入式軟體測試工具,並根據測試結果分析工具的有效性。結果表明,軟體測試工具可以將代碼質量講行量化.古觀得到修改意見.極大提高款件開發效率.同時減少產品開發後期問題出現率、
關鍵詞:嵌入式系統;IS0 26262;MISRA;軟體測試
DOI: 10. 11907/rjdk.191548
開放科學(資源服務)標識碼(OSID):
中圖分類號:TP319
文獻標識碼:A
文章編號:1672-7800(2020)004-0152-07
Research on Embedded Software Testing Based on IS0 26262
WU Ling-yu, ZHANG Zong-zhe, MA Kai
(DIAS Automotive Ele.ctronic.s SYstem Co.Ltd.Shanghai 200000.China )
Abstract: At present, embedded sy stem has developed into the focus of' automotive electronics industry. At the same time. due to thecharacteristics of its own design, in order to ensure the quality and reliability of sof'tware . software testing is obviously necessary . Thispaper briefly introduces the basic concept of' software testing, introduces the relevant embedded software testing tools from static test-ing and dynamic testing solutions according to IS0 26262 functional safety standard. and analy zes the effectiveness of the tools accord-ing to the test results. The results sho,,-, that the soft,,-are testing tools can quantif'y the code quality and obtain the modification opinionsintuitively, which can greatly improve the efficiency of' sof'tu-are development and reduce the occurrence rate of problerus in the laterstage of product developruent.Key Words: eiubedded system; IS0 26262; MISRA; software testing
O 引言
隨著嵌入式技術的快速發展,嵌入式系統複雜性不斷提高,同時嵌入式軟體測試難度也相應增加。一些不可靠的嵌入式軟體在投入使用後會由於軟體質量問題造成人類生命與財產的重大損失[1]。對於軟體測試研究,國外起步於20世紀70年代,1980年,RobertL2發表了著名文章——「調試和測試的失落世界」,總結了嵌入式軟體現狀。此後,許多研究機構針對嵌入式軟體進行了大量研究,美國和歐洲在技術上處於領先地位,以NASA、Boeing、ESA,Airbus為代表的機構帶動了整個嵌入式系統的發展[3]。國內起步相對較晚,最先用於國防電子領域,並逐漸拓展到其它行業,如汽車電子、鐵路、醫療等。我國目前缺少商業化的嵌入式系統測試平台,但開展了一定研究[4-7],有基於研究目的開發的測試系統,如EASTT、圖形化測試用例生成系統等。筆者根據我國軟體測試現狀,結合軟體測工作經驗,對目前國際上較為流行的符合標準的測試工具進行研究,為國內軟體測試T具開發提供一定參考。
1汽車電子軟體驗證標準
在汽車電子領域,IS0 26262和MISRA是通用的用於驗證和確認車載軟體的兩大標準。
IS0 26262是《道路車輛一功能安全》標準[8],採用完整的安全等級(ASII)判斷系統功能安全程度。ASIL由4個等級組成,其中ASIL A最低,ASIL D最高,等級越高表明系統功能安全評估越嚴格,即系統可靠性越高[9]。ISO26262-6提出將軟體測試和驗證作為軟體開發標準的一部分,並將軟體生命周期劃分為5個階段[10],基於V模式的軟體生命周期如圖l所示。
MISRA(The Motor Industrv Software Reliahilitv Associa-tlnn,汽車T業軟體可靠性聯會)組織發布的一套汽車-業軟體安全性的C語言編程規範《汽車專業軟體的C語言編程指南》(Guidelines for the Use of the C Language in VehicleBased Software),稱為MISRA C[11-13]。嵌入式開發者以MISRA C衡量白己的代碼質量,比如著名的uC/OS-II,宣傳白己的代碼99%遵守了MISRA標準[14]。
2軟體測試技術
軟體測試是以評價一個程序或者系統屬性為目標的活動[15]。根據測試時的軟體運行狀態,將軟體測試分為靜態測試和動態測試。
2.1靜態測試解決方案
靜態測試指在不需要運行被測代碼的情況下,藉助軟體測試工具對軟體文檔或程序進行評審,度量複雜度,檢查軟體與編程規範的一致性,減少錯誤出現機率[16]。
2.1.1
IS0 26262編碼規約
IS0 26262的Part6中,對編碼規約確保品質的方法和妥當性證明有著嚴格要求:①遵守組織所規定的設計準則(Part6-5);②防止混入危險(Part6-8)。本文針對表1給出具體案例描述[17].
(1)低複雜度強制執行。為了降低代碼複雜度,儘量使用邏輯比較簡單的編碼方式,例如:
代碼1:不當用法
for( i=0;循環條件l;i++)
{
循環處理1;
if(條件2)
{
continue:
}
循環體內處理2;
}
代碼2:正確用法
for( i=0;循環條件l;i++)
{
循環處理1;
if(條件2)
{
循環體內處理2;
}
}
經過總結,發現當代碼中存在以下代碼時,可維護性會降低:①分支語句( goto/continue/break)的使用[18];②復合運算處理(一條語句中多個賦值處理);③複雜指針運算(3層及3層以上的指針)。
(2)語言子集使用。
代碼1:不當用法
char c=-l;
if(c>O){…}
enum num
{
NUM_MAX= INT_MAX+l;
}
代碼2:正確用法
char c=『a:
Int8~t i8=一l;
enum num
{
NUM_MAX= INT_MAX;
}
在代碼1中定義字符c值為一l,不符合編碼規範,正確用法可參考代碼2。
在進行C語言編程時,其編程描述的白由度高,導致編譯檢查過程變緩,編譯器或機器變更時可能出現故障。建議使用C語言子集的編碼標準,例如MISRA-C等。
(3)強類型強制執行。編譯器不同時,基本類型大小可能不同。使用基本類型時,如果不區分類型大小,可能導致變量間賦值錯誤或比較錯誤等。例如下面兩個代碼:
代碼1:不當用法
unsigned int flag32;
代碼2:正確用法
typedef unsigned int uint32_t;
uint32_t flag32;
(4)防守性編碼實裝方法。使用合適的編碼,將錯誤降至最低程度。
代碼1:不當用法
void func( int vall .int va12)
{
int ans:
ans= vall/va12:
}
代碼2:正確用法
void fune( int vall. int va12)
{
int ans:
if( va12==O)
ans=O:
else
ans= vall/va12:
}
C語言在執行過程中,容易出現以下錯誤:①運算錯誤(overflow、underflow、0除算等);②指針運算(引用不當);③數組邊界錯誤(越界訪問);④庫函數運行錯誤(範圍外的參數);⑤指針的間接引用(引用空指針)。
(5)設計原理確立。根據已確立的設計原則進行編碼。
代碼1:不當用法
unsigned int calc( unsigned int n)
{
if(n<=1)
{
return l:
}
else
{
return n*calc( n-l):
}
}
代碼2:正確用法
unsigned int calc( unsigned int n)
{
unsigned inti,ans=l;
for(i=2:i<=n:i++)
{
ans= ans*i:
}
retu rn ans:
}
(6)格式指南使用。
代碼1:不當用法
if(x==O)
x=l:
代碼2:正確用法
if(x==O)
{
x=1:
}
統一編碼形式的程序,可以提高代碼可讀性和再利用性,避免簡單錯誤。建議使用以下統一編碼形式:①花括號位置;②縮進;③空格使用;④換行位置等。
(7)命名規則。
代碼1:不當用法
#define buffsize l 6
PG Relief 2016版提供9種指摘類別,共計650個指摘信息。靜態測試後,可根據得到的指摘信息進行檢查和處理,並且可根據需要選擇和屏蔽不需要的指摘。
同時,PG Relief提供10餘種軟體度量值計算,可將各值設定在合理範圍內,包括代碼行數、最大嵌套層數等。通過查看度量值,可及時避免引入太過複雜的代碼,有效降低程序整體複雜度。
2.2動態測試解決方案
軟體在準備及設計階段,主要進行靜態測試,其可以高效找出設計和實現的不足,但對於功能正確的證明需要動態測試實現。軟體測試應該先進行靜態測試,然後進行動態測試[21]。
動態測試指在程序運行過程中對軟體整體或部分內容的執行行為和執行結果進行測試與分析[22]。。
由於動態測試T作量大,測試用例無法重用,覆蓋率計算困難,人T實現方式顯然無法滿足。同時,IS0 26262中提出對需求和測試的可追溯性要求,需要測試T具介入。
Tessv軟體源白戴姆勒一奔馳公司的軟體技術實驗室,是一款能滿足IS0 26262標準的嵌入式動態測試工具,符合該標準第6部分關於軟體開發測試和驗證擬議,支持IS0 26262所要求的各級別代碼覆蓋率。
在動態測試中,主要關注接口測試及覆蓋率問題。測試用例運行後,在Test Data Edit介面可以得到數據結果。
同時,Tessy提供C1(hranch coverage).MCC覆蓋(Mul-tiple Condition Coverage) .MC/DC Modified Condition/Deci-sion Coverage)。
3 結語
軟體測試是嵌入式軟體開發的一個重要環節。本文分析了國內外嵌入式軟體測試發展現狀,並基於ISO26262標準給出了靜態測試和動態測試兩種測試工具。可以看出,這兩種T具可以快速幫助測試人員找到軟體問題,縮短軟體開發周期,節約開發成本。未來需要借鑑國
參考文獻:
[1]廖丹基於MISRA標準的通用C語言自動化檢測工具[D].成都:電子科技大學,2014
[2]ROBERT L.Real-time: thelost worldof software debugging andtestingEJl. Communication of the ACM, 1980, 23(5):264-271.
[3]張建偉,葉東升.嵌入式系統測試的發展[J].單片機與嵌入式系統應用,2011,11(2):5-7.
[4]劉芳.嵌入式軟體測試技術的研究[D]北京:北京郵電大學,2009.
[5]鄒炳松嵌入式軟體的圖形化測試用例生成系統設計與實現[D].哈爾濱:哈爾濱工業大學,2015.
[6]王薇.嵌入式軟體自動回歸測試方法的研究[D]內蒙古:內蒙古大學,2011.
[7]盛曉彥.嵌入式軟體測試技術的研究[D].貴陽:貴州大學,2016.
[8]胡航航.基於IS0 26262的軟體測試[C].第十四屆河南省汽車工程科技學術研討會論文集,2017:2
[9]Road vehiCles-functinnal safeW[S].ISO C D.26262, 2011.
[10]喬慧敏基於IS0 26262標準的純電動汽車軟體安全技術的研究[C].第十一屆河南省汽車工程科技學術研討會論文集,2014:2.
[11]HATTON L. Language subsetting in an industrial context:a compari-son of MISRA C: 1998 and MISRA C: 2004[J].Information andSoftware Technology, 2007.49(5):319-322.
[12]The Motor Industrv Software Reliahiliw Assnciation. Cuidelines forthe use of the C language in critical svstems[S]. MISRA-C: 2004.British: Motor Industrv Research Association. 2004.
[13]LARSON E.Program analysis ton loopy'l Set the loops aside[ Cl.1 lthIEEE International Working Conference on Source Code Anah-sisand Manipulation. 2011: 15-24.
[14]劉春燕基於規則的C/C++代碼靜態檢測研究[D].大連:大連理 工大學,2010.
[15]徐海飛,趙凱旋.軟體測試與質量保證[J]現代雷達,2006(10):98-100.
[16]陳偉.測試用例集極小化算法的研究[D].長沙:國防科學技術大學,2016.
[17]The Motor Industrv Software Reliahiliw Association.Guidelines forthe use of the c language in critical systems [S]. MISRA-C: 2012.British: Motnr Industrv Research Association, 2012.
[18]譚浩強C程序設計[M].北京:清華大學出版社,2003.
[19]張煥琪.軟體測試策略和測試方法的應用[J].電子商務,2011(2):55-56,64.
[20]戴麗雲嵌入式軟體測試方法研究[D]長春:長春大學,2015.
[21]殷靜,羅西,杭佳祺.如何做好嵌入式軟體開發測試[J].數位技術與應用,2017(8):214-215.
[22]吳少君.軟體測試策略和測試方法的應用[J]矽谷,2013,6(15):63-64.
(責任編輯:孫娟)
收稿日期:2019-05-25
作者簡介:吳玲玉(1993-),女,碩士,聯創汽車電子有限公司職員,研究方向為電動助力轉向系統開發與軟體測試;張宗哲(1986-),
男,碩士,聯創汽車電子有限公司職員,研究方向為電動助力轉向系統開發與軟體測試;馬凱(1989-),男,碩士,聯創汽車電
子有限公司職員,研究方向為電動助力轉向系統開發與軟體測試。

收藏

相關推薦

清純唯美圖片大全

字典網 - 試題庫 - 元問答 - 简体 - 頂部

Copyright © cnj8 All Rights Reserved.