全职猎人1999_日韩综合社区_久草播放_黄色a一级一级一级免费看_午夜在线视频一区二区三区_国产日韩精品SUV

400-821-6015
行業(yè)資訊
您當前的位置:首頁 ? 行業(yè)資訊 ? 行業(yè)資訊
內(nèi)部資訊行業(yè)資訊

汽車軟件單元測試的要點與意義

發(fā)布日期:2023-10-27


      測試是一個非常基礎的概念,這種基礎讓大家可以隨意在它前面添加各種定語。


      盡管這種添加的背后多數(shù)是不同的分類維度,但讓測試本身成為了繁雜概念的集合,這也讓我們總有無法把握的煩躁感。


       單元測試就是這堆讓人煩躁的繁雜概念之一。


3種軟件測試分類及單元測試的定義


      如前所述,軟件測試的分類維度非常多,我們僅從以下常見的3種方式闡釋:

        - 按是否執(zhí)行軟件分類:靜態(tài)測試和動態(tài)測試,單元測試橫跨二者。

      - 按是否關注內(nèi)部代碼分類:白盒測試和黑盒測試,單元測試屬于白盒測試。

      - 按汽車軟件集成層次分類:從單元測試到整車驗收有各級測試(參考《汽車軟件集成的5個層次》),單元測試屬于最低一個層級。


      當我們?nèi)ゾW(wǎng)上搜索單元測試的定義時,往往會看到類似這樣的說法,“單元測試是指對軟件中的最小可測單元進行測試”。


      但這個描述只能是一個正確的定義,仍然很難把握。什么叫最小可測單元?一個函數(shù)?一個類?一個.c?還是一個功能模塊?


      爭論一直存在。


      擱置爭議,我們只看汽車行業(yè)。按照慣例或標準,廣義上,可以把軟件集成測試以下所有測試都看作是單元測試。


單元測試的4種類型


      進一步地,在汽車軟件領域,我們可以將單元測試細分為代碼評審、靜態(tài)分析、單元(代碼功能)測試和單元(代碼覆蓋度)測試。


      前兩種屬于靜態(tài)測試,后兩種屬于動態(tài)測試


       2.1 代碼評審


      根據(jù)形式或正式程度上的差異,代碼評審會分成很多名目,比如:

         - 走查Walk Through

       - 同行評審Peer Review)

       - 代碼評審(Code Revew)

       - 結對編程(Pair Programming)

       - 代碼審查Code Inspection)


      但簡單來說,代碼評審就是人看,一個或一組人面對可閱讀的源代碼(有時也需要結合需求或軟件文檔),進行隨意的或正式會議下的檢查。


      可能會識別出如下的一些問題:

         - 無注釋的代碼

       - 不可達的條件路徑

       - 太復雜的循環(huán)嵌套

       - 無返回值的分支

       - 未初始化的變量

       - 空指針的引用

       - 不規(guī)范的命名規(guī)則

       - ......


      理論上,對于手寫代碼的合理性與正確性,他人及更有經(jīng)驗的他人去檢查一遍,有一定的意義,甚至某些案例下,會勝過后期測試。


      比如,開發(fā)調用了名稱相似的變量,這種錯誤可能在流到很后期才會被探測到。


      實際上,代碼評審也同其他評審類似,都是無奈為之而又常常流于形式的手段。


      解決這類問題的方法不外乎3個:

      - 用更負責且有經(jīng)驗的人

      - 提升形式的強制性

      - 積累充足的Checklist


      其中,在下一節(jié)靜態(tài)分析工具使用后,人的經(jīng)驗就成為了代碼評審存在的最大意義


      總之,代碼評審不算是典型的測試,但作為編碼后的第一道屏障,仍然有必要存在。


       2.2 靜態(tài)分析


      相較于人工代碼評審的低效,靜態(tài)分析是依賴于諸如Parasoft、Polyspace、Coverity等工具的自動化分析


      因為不需要執(zhí)行軟件,所以靜態(tài)分析仍然不需要二進制代碼或可執(zhí)行程序。


      靜態(tài)分析工具通常主要支持以下兩種分析類型:

        - 語法分析:主要檢查是否符合編程語言的語法規(guī)則,如MISRA C。
      - 代碼路徑分析:主要包括控制流分析(如語句條件分支、循環(huán)迭代次數(shù))、數(shù)據(jù)流分析(如變量值的傳遞)、代碼復雜性(如圈復雜度、路徑長度)、依賴關系(如函數(shù)之間的調用、模塊之間的依賴)等。


      當對部分或全部代碼進行靜態(tài)掃描后,會得到基于內(nèi)置規(guī)則集的判定結果,一般會包含分等級的規(guī)則違反情況。


      如MISRA C: 2012分為強制(Mandatory)、必要(Required)和建議(Advisory)。


      通常,強制項必修,必要項需要進行評審。但有時候,涉及到第三方標準庫時,就無法按照這個規(guī)則執(zhí)行了,具體還是要看產(chǎn)品類型(如是否涉及信息安全)和公司要求


      此外,由于編譯器基本也都具備類似的代碼檢查作用,靜態(tài)分析工具也可以理解為編譯器的擴展。


       因此,我們也會把編譯器警告或錯誤作為要處理的條目


       2.3 單元(代碼功能)測試


       這部分測試的源頭是軟件詳細設計,測試重點從代碼寫得漂不漂亮轉移到代碼寫得有沒有用,也就是是不是符合了設計。


       汽車軟件用例的設計,一般有如下兩種密切相關的方法:


       2.3.1 等價類劃分法


       等價類劃分是將軟件單元的輸入數(shù)據(jù)劃分為等價數(shù)據(jù)(即可以導致相同的輸出)的分區(qū),而后用測試用例去至少覆蓋每個分區(qū)一次。


       其背后的訴求是,通過劃分輸入數(shù)據(jù)的類別來限定測試用例的數(shù)量舉一個例子。


       一個函數(shù)輸入的范圍是1~100,如果要窮舉式測試,我們需要為輸入?yún)?shù)編寫100個測試用例。


       而使用等價類劃分法的話,測試用例就可以分為三類:

          - 有效(1~100)

       - 以下無效(例如0)

       - 以上無效(>100)


      于是,用例也就可以縮減為3個。


      可能有人很快會有疑問,按照等價輸入數(shù)據(jù)進行測試,會不會有遺漏呢?


       沒錯,尤其是邊界值處很容易出錯。這就是第二個方法要解決的問題。


       2.3.2 邊界值法


       仍然以上一個案例展開。使用邊界值法的話,我們可為等價類劃分法定義的測試用例作如下補充:

       - 剛好在邊界(1,100)

       - 剛好在邊界以下(0,99)

       - 剛剛越過邊界(2,101)


      經(jīng)過兩種方法的結合,缺陷發(fā)現(xiàn)的能力會進一步提高。


       2.4 單元(代碼覆蓋度)測試


      單元(代碼功能)測試完成后,夠了嗎?不夠。


      我們沒測出bug,代表的不是軟件沒bug,而是沒測夠。


      沒測夠的典型表現(xiàn)是測試用例對代碼的覆蓋程度不足,這就是本節(jié)要處理的問題。


      主要的代碼覆蓋度測試類型包括以下4種,嚴格程度從上到下依次增強

         - 語句覆蓋(Statement Coverage)這是最基本的覆蓋度類型,它確保每個代碼語句至少執(zhí)行一次,100%的語句覆蓋率可以保證沒有死代碼,屬于入門級別的測試。

       - 分支覆蓋(Branch Coverage)分支覆蓋確保每個分支語句(通常是if語句)都被覆蓋到,即每個分支的真和假兩種情況都被測試到,有助于揭示一些邏輯錯誤,如if a and b then...,用例為a真+b真(分支為真)、a真+b假(分支為假,與其他條件組合等價)即可100%。

       - 條件覆蓋(Condition Coverage)條件覆蓋要求每個分支語句的每個條件都被覆蓋,即每個條件的真和假兩種情況都被測試到,它比分支覆蓋更為嚴格,因為它會關注條件的組合覆蓋,如if a and b then...,用例為a真+b真、a真+b假、a假+b真、a假+b假才可100%

       - 修改條件/判定組合覆蓋(Modified Condition/Decision Combination Coverage)這一級別的覆蓋要求同時滿足條件覆蓋和判定覆蓋,以確保條件和判定之間的組合覆蓋,是一種更加嚴格的覆蓋度測試


      不同的項目和產(chǎn)品可能需要不同類型的代碼覆蓋度測試。


      通常,基礎的覆蓋度(如語句覆蓋和分支覆蓋)是必要的起點,而在需要更高可靠性和安全性的項目中,可能會選擇更嚴格的MC/DC覆蓋度,比如,涉及ASIL D的模塊。


單元測試意義的思考


      說意義的話,我們可以很快說出一大堆,bug提前暴露、提升軟件質量、軟件更加健壯、利于重構、清除技術債務、積累組織資產(chǎn)......


      問題在于,在不好言明的價值和巨大的交付壓力之下,單元測試太容易被權衡掉了,誰還沒有個意義呢?


      實際上,管中窺豹,對這類重要但不緊急事情的意義的探討會折射出很多面的信息,比如下面這個算式。


      自動化的程度+對軟件的理解+產(chǎn)品的競爭力+公司的文化+行業(yè)的生態(tài)=單元測試的意義


全文小結


      本文主要在講單元測試的一些基本概念和應用場景。


      首先,從是否執(zhí)行軟件、是否關注內(nèi)部代碼和汽車軟件分層集成這3個方面解釋了單元測試的特點。進而,引申出汽車軟件單元測試的概念。


      接著,將單元測試細分為代碼評審、靜態(tài)分析、代碼功能測試、代碼覆蓋度測試,并分別進行了描述。


      由于單元測試離客戶需求太遠,往往被務實的我們忽略,如何看待其價值需要探討,第3小節(jié)對此做了簡單分析。


寫在最后


      不只是單元測試,軟件大舉進入汽車行業(yè)的過程中,未來無形不可見和當下有形可見的價值沖突持續(xù)在上演。


      如何把握向左還是向右的分寸始終是一個巨大的決策考驗



轉自汽車ECU開發(fā)

上海創(chuàng)程車聯(lián)網(wǎng)絡科技有限公司版權所有 滬ICP備11045498號-1   技術支持:網(wǎng)站建設
主站蜘蛛池模板: 狂野=aV人人澡人人添|天天干夜夜擦|两个人的www免费高清视频|永久免费看mv网站入口亚洲|久久一区二区三区四区|亚洲男人网 | 全黄h全肉边做边吃奶流浪汉|#NAME?|日本高清二区视频久二区|国模少妇一区两区三区|2018中文字幕在线视频|亚洲=aV国产精品无码 | 亚洲乱小说|未满十八18禁止免费无码网站|日韩=av免费网址|在线国v免费看|人成午夜大片免费视频77777|亚洲激情影院 | АⅤ天堂中文在线网|人人澡人人澡人人看欧美|高H喷水荡肉爽文NP肉色学校|日韩一二三区不卡在线视频|欧美在线观看www|中文字幕一区二区三区5566 | 最近中文字幕高清免费大全1|久久久久国产亚洲|日本free护士videosxxxx|国产日产高清欧美一区二区三区|免费做爰猛烈吃奶摸视频在线观看|日本无遮挡在线观看 | 亚洲精品久久久久久无码色欲四季|成年人黄色=av|麻豆精品久久久久久久综合|亚洲国产日韩欧美在线|国产传媒懂得|亚洲综合色婷婷七月丁香 | 免费视频99|性高湖久久久久久久久3小时|伦理一国产=a级|人妻少妇伦在线无码专区视频|国产人妻无人性无码秀列|毛片免费看网站 | 欧美色欧美亚洲日韩在线播放|99久久久久99国产免费=aV|午夜免费片|日韩一区二区三区久久|婷婷色色狠狠爱|69=av在线观看 | 青娱乐极品视觉盛宴=av|国产成人=av无码片在线观看|国产网站入口|国产一区二区=av|星空天美mv视频大全免费观看|曰韩一级片 | 视频二区在线|www激情|色在线视频播放|老师你兔子好软水好多视频|满嘴射影院|国产亚洲区 | 精品久久久久久777米琪桃花|蜜芽亚洲=aV无码精品色午夜|成人碰碰视频|99国产精品久久久久老师|内地级=a艳片高清免费播放|久久久久爽爽爽爽一区老女人 | 龙珠z国语版普通话免费播放|人妻阿敏被老外玩弄系列|久久露脸国语精品国产91|国产成人午夜精品影院观看视频|91视频一区二区|国产高清露脸孕妇系列 | 99自拍偷拍|国产中文久久|天堂精品一区二区三区|婷婷五月开心亚洲综合在线|国产黄色片一级|丝袜理论片在线观看 | 水蜜桃一区二区|特黄特黄=a级毛片免费专区|99久免费视频精品老司机|#NAME?|狠狠综合久久久久尤物|欧美成人精品在线观看 | 黄网站免费视频|国产精品蜜月=aⅴ在线|精品免费视频一区二区|成人三级毛片|亚洲人=a|欲求不满放荡的女老板bd中文 | 国产精品卡1卡2卡3|色八网站首页|潜行者40集免费观看视频|国产精品国产三级国产传播|小嫩妇下面好紧好爽视频|亚洲综合精品伊人久久 | 免费=av网址在线|97综合视频|色视频一区二区三区|色天堂视频|欧美美女一级视频|XXX少妇厨房XXX乱 | 天天看片导航|又粗又猛又黄又爽无遮挡|人妻无码专区一区二区三区|国产l精品国产亚洲区久久|少妇被又大又粗猛烈进出视频|国产精品夜色一区二区三区 | 国产精品大全|韩国精品视频一区二区在线播放|啦啦啦www日本高清免费观看|大柠檬导航香蕉导航巨人导航|中国黄色一级|国产成人一卡2卡3卡4卡 | 免费无遮挡无码视频网站|欧美人与ZOXXXX视频|色香婷婷综合激情网|亚洲综合久久无码色噜噜|欧美xxxx黑人又粗又长密月|国产精品九九久久久久久久 | 日韩国产一区二区三区四区|国产午夜精品一区二区三区免费|超碰人摸人操人摸人操|午夜影院免费在线观看|亚洲国线自产第六页|农村欧美丰满熟妇xxxx | 日本欧美在线观看|91香蕉在线极品观看|两个人看的www高清视频中文|九九久久影院|偷拍超碰|久久99国产综合精品免费 | 91精品国产福利一区二区三区|精品国产区一区|亚洲国产三区|高挑美女被遭强高潮视频|无码熟妇αⅴ人妻又粗又大|国产真实夫妇6p酒店交换 | #NAME?|国产成人亚洲欧洲在线观看|午夜私人影院网站|九九九亚洲|亚洲=aV成人无码久久精品老人|#NAME? | 永久=av免费|人妻无码久久久久久久久久久|66成人网|麻豆视频免费在线播放|亚洲视频综合在线|在线看片 | 欧美18一19sex性护士浴室|久久99精品久久久久久HB亚瑟|亚洲成在人线免费|超碰五月|久久精品无码一区二区三区不卡|男女拍拍拍拍免费视频 | 国产波霸爆乳一区二区|尤物在线网址|黑人干白妞|精品一卡2卡三卡4卡免费视频|亚洲欧美VR色区|国产性=av | 国产精品亚洲专区无码蜜芽|国产一级内谢一级一内高请|无码孕妇孕交在线观看|免费的欧美gv在线网站|精品美女=av|亚洲综合久久精品无码色欲 | 91久久青草|欧洲黄色毛片|伊人高清视频|久热综合|九久久久|视频色黄色毛片 | 久久白虎|18禁成人网站免费观看|国产www视频在线观看|欧美黄色=a级大片|国产精品久久久久久久人人看|日韩精品毛片 | 在线视频免费观看爽爽爽|午夜视讯|国产传媒在线视频|综合国产一区|#NAME?|777午夜精品 | 日本三级精品视频|国产人妻人伦精品无码|国产毛片久久久久久|奇米网首页|亚洲精品久久久打桩机小说|欧美一区二区三区成人 | 国产精品国产精品国产专区不蜜|#NAME?|а∨天堂一区一本到|国产免费一区二区三区免费视频|国产又粗又硬又长又爽的视频|中文字幕无码第1页 | 超碰人人草人人干|精品国产伦一区二区三区观看方式|无码中文字幕人妻在线一区二区三区|隔壁老王国产在线精品|在线欧美精品一区二区三区|91在线视频九色 | 国产精品视频不卡|中文幕无线码中文字夫妻|免费人成再在线观看视频|处女影院|一区二区三区视频在线|99热精国产这里只有精品 | 麻豆91精品一区二区|精品第一区|国产视频自拍一区|日韩=av无码国产精品|日本高清中文字幕在线|保守人妻被领导征服身体 | 免费在线观看黄色大片|综合一区无套内射中文字幕|你好星期六在线免费观看|91探花福利精品国产自产在线|成人18夜夜网深夜福利网|九九影院理论片在线观看一级 | 成人无码区免费=aⅴ片www老师|男人天堂网址|国产一片|国产第一福利影院|一本久道中文无码字幕=av|毛片视频播放 | 免费色综合|极品的亚洲|C=aOPROM国产在线视频|色伊人网站|国产精品=a一|97午夜影院 | 日本黄色一区|人成免费网站|中文字幕第八页|亚洲欧美变态另类综合|日日草天天干|亚洲福利中文字幕在线网址 | 国产视频资源|日日摸久久久精品|男人午夜视频|山外人精品影院|一区二区三区=av夏目彩春|久久网精品三级片 |