女人荫蒂被添全过程13种图片,亚洲+欧美+在线,欧洲精品无码一区二区三区 ,在厨房拨开内裤进入毛片

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

jf_EksNQtU6 ? 來源:談思實驗室 ? 2023-10-22 14:14 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

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

1

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

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

按是否執行軟件分類:靜態測試和動態測試,單元測試橫跨二者。

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

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

當我們去網上搜索單元測試的定義時,往往會看到類似這樣的說法,“單元測試是指對軟件中的最小可測單元進行測試”。

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

爭論一直存在。

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

2

單元測試的4種類型

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

前兩種屬于靜態測試,后兩種屬于動態測試。

2.1 代碼評審

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

走查(Walk Through)

同行評審(Peer Review)

代碼評審(Code Revew)

結對編程(Pair Programming)

代碼審查(Code Inspection)

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

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

無注釋的代碼

不可達的條件路徑

太復雜的循環嵌套

無返回值的分支

未初始化的變量

空指針的引用

不規范的命名規則

......

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

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

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

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

? 用更負責且有經驗的人

?提升形式的強制性

? 積累充足的Checklist

其中,在下一節靜態分析工具使用后,人的經驗就成為了代碼評審存在的最大意義。

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

2.2 靜態分析

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

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

靜態分析工具通常主要支持以下兩種分析類型:

語法分析:主要檢查是否符合編程語言的語法規則,如MISRA C。

代碼路徑分析:主要包括控制流分析(如語句條件分支、循環迭代次數)、數據流分析(如變量值的傳遞)、代碼復雜性(如圈復雜度、路徑長度)、依賴關系(如函數之間的調用、模塊之間的依賴)等。

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

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

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

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

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

2.3單元(代碼功能)測試

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

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

2.3.1 等價類劃分法

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

其背后的訴求是,通過劃分輸入數據的類別來限定測試用例的數量。

舉一個例子。

一個函數輸入的范圍是1~100,如果要窮舉式測試,我們需要為輸入參數編寫100個測試用例。

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

有效(1~100)

以下無效(例如0)

以上無效(>100)

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

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

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

2.3.2 邊界值法

仍然以上一個案例展開。

使用邊界值法的話,我們可為等價類劃分法定義的測試用例作如下補充:

剛好在邊界(1,100)

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

剛剛越過邊界(2,101)

經過兩種方法的結合,缺陷發現的能力會進一步提高。

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

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

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

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

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

語句覆蓋(Statement Coverage):這是最基本的覆蓋度類型,它確保每個代碼語句至少執行一次,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):這一級別的覆蓋要求同時滿足條件覆蓋和判定覆蓋,以確保條件和判定之間的組合覆蓋,是一種更加嚴格的覆蓋度測試。

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

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

3

單元測試意義的思考

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

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

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

自動化的程度+對軟件的理解+產品的競爭力+公司的文化+行業的生態=單元測試的意義

4

全文小結

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

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

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

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

5

寫在最后

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

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 汽車行業
    +關注

    關注

    0

    文章

    337

    瀏覽量

    15831
  • 代碼
    +關注

    關注

    30

    文章

    4893

    瀏覽量

    70445
  • 汽車軟件
    +關注

    關注

    1

    文章

    127

    瀏覽量

    3453

原文標題:汽車軟件單元測試的要點與意義

文章出處:【微信號:談思實驗室,微信公眾號:談思實驗室】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    軟件定義汽車時代為什么中間件受青睞

    在“軟件定義汽車”時代,隨著汽車軟件功能漸趨多樣化,硬件和軟件組件之間的通信和交互開始變得復雜。如今,一輛
    的頭像 發表于 06-09 11:14 ?298次閱讀

    新能源車軟件單元測試深度解析:自動駕駛系統視角

    ?第一部分:新能源車軟件單元測試的戰略重要性 ?汽車電子架構的范式轉變? 隨著新能源車的普及,汽車電子架構從傳統的分布式ECU(電子控制單元
    發表于 05-12 15:59

    新能源車背后的隱形守護者:軟件單元測試的生死較量?

    。這個教科書級的避讓動作背后,是超過8000萬行代碼的精密協作,而確保這些代碼絕對可靠的秘密武器,正是我們今天要揭秘的軟件單元測試。 ?一、代碼世界的顯微鏡:單元測試為何重要? 如果把整車軟件
    的頭像 發表于 05-12 11:00 ?173次閱讀

    單元測試:構建數字世界的質量基石

    第一章 質量危機時代的軟件困局 1.1?現代社會的軟件依賴癥候群 ? 數據支撐 ?: 世界銀行《2023全球數字基礎設施報告》顯示,全球關鍵基礎設施(如電網、交通、醫療)的數字化滲透率已達87%,但
    的頭像 發表于 04-24 10:47 ?157次閱讀

    單元測試在嵌入式軟件中的關鍵作用及winAMS工具的卓越貢獻

    1.?單元測試概述 ?定義與核心目標? 單元測試軟件開發過程中針對程序模塊(如函數、類或組件)的最小可測試單元進行的驗證活動。其核心目標在
    的頭像 發表于 04-11 14:31 ?286次閱讀

    嵌入式軟件單元測試的必要性、核心方法及工具深度解析

    一、為什么嵌入式軟件必須重視單元測試? ?嵌入式系統的特殊性? 在汽車 ECU、醫療設備控制器等場景中,軟件直接操控硬件,?單比特錯誤可能導致剎車失靈或呼吸機故障?。不同于 PC?
    的頭像 發表于 03-21 14:53 ?405次閱讀

    一文了解汽車電子控制單元ECU

    注:本文是對ECU最基礎知識的介紹,對ECU有概念請繞行。汽車正日益成為軟件密集型的復雜系統,汽車行業的大部分創新都基于電子和軟件架構,現代車輛可以擁有100多個電子控制
    的頭像 發表于 01-09 17:08 ?1581次閱讀
    一文了解<b class='flag-5'>汽車</b>電子控制<b class='flag-5'>單元</b>ECU

    嵌入式系統開發中的測試方法 嵌入式系統開發與AI結合應用

    嵌入式系統開發中的測試方法 嵌入式系統開發是一個復雜的過程,涉及到硬件和軟件的緊密結合。測試是確保系統可靠性和性能的關鍵步驟。以下是一些常用的測試方法:
    的頭像 發表于 12-09 10:22 ?1278次閱讀

    開發者必讀!CircleCI?組件測試單元測試全解析

    軟件開發中,測試是保證軟件質量和可靠性的關鍵環節。作為領先的 CI/CD 平臺,CircleCI 提供了支持自動化測試的強大工具。其中,單元測試
    的頭像 發表于 12-03 09:18 ?602次閱讀

    汽車軟件單元測試的重要性

    設計和測試不充分密切相關,這引發了社會各界對汽車軟件健壯性的重要性進行深入思考。本文將探討汽車軟件測試
    的頭像 發表于 11-29 10:57 ?493次閱讀

    嚴格的單元測試造就完美的軟件

    關鍵系統時,更是對軟件質量提出了極高的要求。而單元測試作為軟件開發過程中的核心環節,其重要性不言而喻。 單元測試的作用 單元測試是指對
    的頭像 發表于 11-26 13:22 ?484次閱讀

    嵌入軟件單元/集成測試工具專業分析

    引言 在現代軟件開發過程中,單元測試作為確保代碼質量的重要環節,得到了廣泛的關注和應用。隨著嵌入式系統的復雜性日益增加,對高效、可靠的單元測試工具的需求也愈加迫切。WinAMS作為一款專為嵌入
    的頭像 發表于 11-19 16:41 ?632次閱讀

    符合ISO 26262的零部件級的軟件測試解決方案

    在零部件階段的測試包括:軟件單元測試軟件集成測試、硬件集成測試、嵌入式
    的頭像 發表于 11-07 08:05 ?715次閱讀
    符合ISO 26262的零部件級的<b class='flag-5'>軟件</b><b class='flag-5'>測試</b>解決方案

    鴻蒙語言基礎類庫:ohos.application.testRunner TestRunner 測試

    TestRunner模塊提供了框架測試的能力。包括準備單元測試環境、運行測試用例。
    的頭像 發表于 07-12 09:32 ?586次閱讀
    主站蜘蛛池模板: 海丰县| 阿瓦提县| 平塘县| 册亨县| 阳西县| 大港区| 高邮市| 怀柔区| 博爱县| 运城市| 美姑县| 通榆县| 江口县| 汤原县| 巫溪县| 汽车| 吉安市| 汉源县| 娄烦县| 黄山市| 巴南区| 祁连县| 长海县| 綦江县| 雷州市| 韩城市| 屯留县| 青浦区| 宜章县| 巴中市| 奉节县| 祁东县| 平武县| 康马县| 松滋市| 醴陵市| 揭西县| 南城县| 海安县| 金秀| 宁晋县|