1
我一直在回顧在嵌入式系統上使用的不同代碼覆蓋率測試。特別是,我正在看MC/DC。根據我的理解,其中一個目標是確保陳述中的每個邏輯子句都應該影響陳述的結果。代碼覆蓋範圍爲C
兩個問題:
- 什麼是獨立驗證每個子句對結果的影響得到了什麼?
- 爲什麼
(A||B) && (A||!C)
不能達到100%的MC/DC,而A||(B&&!C)
即使具有完全相同的功能也能達到100%MC/DC?
我一直在回顧在嵌入式系統上使用的不同代碼覆蓋率測試。特別是,我正在看MC/DC。根據我的理解,其中一個目標是確保陳述中的每個邏輯子句都應該影響陳述的結果。代碼覆蓋範圍爲C
兩個問題:
(A||B) && (A||!C)
不能達到100%的MC/DC,而A||(B&&!C)
即使具有完全相同的功能也能達到100%MC/DC?回答您的問題
你儘可能少的代碼要儘可能和不太複雜的代碼越好。無法訪問的條件會延長您的代碼並使代碼變得不必要的複雜。
(A||B) && (A||!C)
將不會達到100%,因爲它需要A
無故檢查兩次。在A
爲假且B
爲真的情況下,A
的真實性將在(A||!C)
表達式中無限制地再次檢查,而在公式A||(B&&!C)
中A
的真實性僅被檢查一次。
因此,MC/DC的主要目標是降低複雜性? – engineer14
MC/DC的目標是以儘可能小的複雜性測試每一個可能的結果。 –