<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          程序健壯性的提高要從設(shè)計、實現(xiàn)、測試三方面入手,具體來說

          共 1932字,需瀏覽 4分鐘

           ·

          2021-01-06 15:04

          點擊上方藍色字體,選擇“標(biāo)星公眾號”

          優(yōu)質(zhì)文章,第一時間送達

          ? 作者?|? yuzhenjin

          來源 |? urlify.cn/aQfaem

          76套java從入門到精通實戰(zhàn)課程分享

          1. 設(shè)計

          1. 系統(tǒng)

          • 系統(tǒng)外部模塊的異步響應(yīng)都需要設(shè)置超時時間,要有超時處理,超時時間要和外部模塊協(xié)商一個合理時間。

          • 發(fā)送消息失敗和設(shè)置timer失敗統(tǒng)一做處理。

          • 需要設(shè)計相關(guān)機制(比如心跳包機制)監(jiān)控進程/線程是否發(fā)生了堵塞,發(fā)生堵塞后需要設(shè)計相應(yīng)的處理流程。

          • 需要設(shè)計相關(guān)機制來監(jiān)控CPU的占有率,當(dāng)CPU占有率超過閾值后要設(shè)計相應(yīng)的處理流程。

          2. 模塊

          • 系統(tǒng)內(nèi)部所有需要等待的異步響應(yīng)都要有超時處理。

          • 關(guān)聯(lián)組件的行為不一致要做異常處理:比如:APP模塊認為通信已經(jīng)斷開,故不會再次請求通信MID模塊去執(zhí)行通信,而通信MID模塊等待APP模塊來觸發(fā)下一次通信。

          • 模塊內(nèi)部暫態(tài)都要設(shè)置最長停留時間,以及超過這個時間后做什么樣的處理。

          • 模塊的錯誤處理至少要考慮以下幾種類型錯誤:

            1. 輸入了范圍外的值

            2. 在規(guī)定時間內(nèi),處理沒有結(jié)束或者沒有應(yīng)答

            3. 與期待的時序不一致

            4. 期待的數(shù)據(jù)不完整:

          • 由錯誤轉(zhuǎn)化為異常的判定標(biāo)準:

            • 不以單次Error做判定,而是執(zhí)行一定次數(shù)(3次)的Retry處理。

            • 測試時間以大于一定時間為目標(biāo) 。

          • 通信關(guān)聯(lián)的功能模塊在設(shè)計時需要考慮:

            • 用戶異常切斷時怎么處理

            • 通信正常切斷時怎么處理

            • 通信正常終了時怎么處理

            • 設(shè)備異常切斷時怎么處理"

          • 做狀態(tài)遷移表的設(shè)計時,如果狀態(tài)遷移表的事件有外部設(shè)備異常切斷的通知。要明確各狀態(tài)下收到該通知時處理的妥當(dāng)性,并且明確這些設(shè)計。

          • 需要考慮起動處理時各模塊消息的同步問題。例如,優(yōu)先級高的A模塊啟動后,發(fā)送消息給后B模塊,考慮如果此時B模塊未啟動的處理情況。

          • 對于Backup的數(shù)據(jù),需要考慮Backup各種狀態(tài)下啟動之后處理:

            1 沒有讀取到Backup數(shù)據(jù)
            2 Backup數(shù)據(jù)為初始值
            3 Backup數(shù)據(jù)達到最大邊界值
            4 Backup數(shù)據(jù)超過最大邊界值或者異常。
          • 備份的數(shù)據(jù)要有默認值。

          • 備份的數(shù)據(jù)要進行完整性校驗。

          • 設(shè)計模塊時,盡量保證此模塊可以有機制來恢復(fù)。

          • 模塊出現(xiàn)異常時,有一套機制可以檢測出來。

          3. 函數(shù)

          • 輸入范圍之外的值需要做處理。

          • 函數(shù)設(shè)計時需要明確設(shè)計目標(biāo)函數(shù)所調(diào)用函數(shù)的所有返回值。對正常值以外的返回值進行分析,分析不同的返回值是否需要做不同的異常處理。并且明確這些異常設(shè)計。

          • Loop循環(huán),一定要設(shè)定跳出循環(huán)的條件或者是范圍的判定。

          • 進行數(shù)據(jù)的格式轉(zhuǎn)換的處理,需要明確:1 數(shù)據(jù)轉(zhuǎn)換前后的格式2 轉(zhuǎn)換規(guī)則3 是否有數(shù)據(jù)在轉(zhuǎn)換時需要特殊處理,比如邊界值。

          2. 實現(xiàn)

          • 不允許使用C語言中非安全的經(jīng)典函數(shù),如下:

            • strcpy/wcscpy/stpcpy/ wcpcpy

            • scanf/ sscanf /vscanf /fwscanf /swscanf/ wscanf

            • gets/ puts

            • strcat /wcscat

            • wcrtomb /wctob

            • sprintf/ vsprintf /vfprintf

            • asprintf/ vasprintf

            • strncpy /wcsncpy

            • strtok/ wcstok

          • 代碼滿足靜態(tài)檢查規(guī)范(cert C,misra C)。

          • 函數(shù)的入?yún)⒁M行范圍判斷。

          • 不允許使用函數(shù)的遞歸。

          • 優(yōu)先使用RAII技術(shù)來管理資源(使用C++語言),比如鎖,文件句柄等。

          • 優(yōu)先使用引用來代替裸指針(使用C++語言)。

          • 優(yōu)先使用智能指針代替裸指針(使用C++語言)。

          • 盡量避免強制類型轉(zhuǎn)換。

          3.測試

          1. 測試用例

          測試用例至少覆蓋以下幾種情況:

          • 基本功能:典型時序(所有的錯誤;異步超時需要重點關(guān)注)。

          • 性能:性能相關(guān)時序。

          • 邊界值:外部輸入所有的邊界值。

          • 異常值:接口中數(shù)據(jù)范圍異常;時序重復(fù)混亂;備份數(shù)據(jù)損壞;服務(wù)器來的數(shù)據(jù)破壞;總線上數(shù)據(jù)異常等 。

          • 惡意操作:ACC ON,OFF頻繁操作;外部線惡意插拔;外部沒有得到結(jié)果就再次請求;外部連續(xù)兩個相反的請求;外部連續(xù)兩個不同的請求等。

          • 內(nèi)部狀態(tài):內(nèi)存使用量大時;CPU占有率大時;各種電源狀態(tài)下 。

          • 外部狀態(tài):總線負載大時;Linux下2038問題;MQTT/HTTP同時進行;正常功能和debug功能同時進行。OTA/diag/factory reset處于執(zhí)行中時。

          2. 測試工具

          • 測試用例要能支持回歸測試。

          • 搭建自動化測試環(huán)境。






          粉絲福利:Java從入門到入土學(xué)習(xí)路線圖

          ???

          ?長按上方微信二維碼?2 秒


          感謝點贊支持下哈?

          瀏覽 23
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产内射一级毛片农民工 | 欧美成人免费在线观看视频 | 国产极度色诱视频在线观看 | 天堂a 资源 | 18禁黄网站免费 |