변경 조건/판단 범위 변경
Modified condition/decision coverageModified Condition/Decision Coverage(MC/DC)는 소프트웨어 테스트에서 사용되는 코드 적용 범위 기준입니다.
개요
MC/DC에서는 테스트 [1]중에 다음 사항이 모두 필요합니다.
- 각 진입점과 출구점이 호출됩니다.
- 각 결정은 가능한 모든 결과를 취한다
- 결정의 각 조건은 가능한 모든 결과를 취한다.
- 결정의 각 조건은 결정 결과에 독립적으로 영향을 미치는 것으로 나타난다.
조건의 독립성은 한 번에 하나의 조건만 변경된다는 것을 증명함으로써 나타납니다.
MC/DC는 항공기의 지속적인 안전 비행과 착륙을 제공할 수 있는(또는 고장을 방지할 수 있는) 소프트웨어로 정의되는 가장 중요한(레벨 A) 소프트웨어의 적절한 시험을 보장하기 위해 항전 소프트웨어 개발 지침 DO-178B 및 DO-178C에 사용된다.또한 기본 안전[2] 간행물 부록 B의 3부 SIL 4와 자동차 표준 ISO 26262의 [3]6부 ASIL D에 대해서도 강력히 권장된다.
정의들
- 결정
- 조건과 0개 이상의 부울 연산자로 구성된 부울식입니다.부울 연산자가 없는 결정이 조건입니다.
- 조건 적용 범위
- 프로그램 내 결정의 모든 조건은 적어도 한 번은 가능한 모든 결과를 가져온다.
- 의사결정 범위
- 프로그램의 모든 시작점과 종료점은 한 번 이상 호출되며, 프로그램의 모든 결정은 가능한 모든 결과를 한 번 이상 가져옵니다.
- 조건/판단 범위
- 프로그램의 모든 시작점과 종료점은 적어도 한 번 호출되고, 프로그램 내의 모든 조건은 적어도 한 번 모든 가능한 결과를 얻으며, 프로그램 내의 모든 결정은 적어도 한 번 모든 가능한 결과를 얻습니다.
- 변경 조건/판단 범위 변경
- 프로그램의 모든 진입점과 종료점은 적어도 한 번 호출되고, 프로그램 내의 모든 조건은 적어도 한 번 모든 가능한 결과를 얻으며, 각 조건은 독립적으로 결정 결과에 영향을 미치는 것으로 나타났습니다.조건은 다른 모든 가능한 조건을 고정된 상태로 유지하면서 해당 조건만 변경함으로써 의사결정 결과에 독립적으로 영향을 미치는 것으로 나타난다.많은 테스트 케이스에서 결정의 일부 조건이 다른 조건에 의해 가려지기 때문에 조건/결정 기준이 모듈의 모든 조건을 커버하는 것은 아닙니다.수정된 조건/결정 기준을 사용하여, 각 조건은 결정 결과에 대해 스스로 행동할 수 있고, 다른 모든 사항은 고정되어 있음을 보여야 한다.따라서 MC/DC 기준은 조건/의사결정 범위보다 훨씬 강력하다.
비판
– 토의]
프로그램의 의미론을 변경하지 않는 의사 결정의 순수 구문적 재배열(일시 변수를 사용하여 독립적으로 평가된 여러 조건으로 분할하고, 그 값을 의사결정에 사용)은 완전한 MC/DC [4]적용범위를 얻는 어려움을 낮출 수 있다.이는 MC/DC가 프로그램 구문에 의해 구동되기 때문입니다.그러나 이러한 종류의 "사기"는 단순히 MC/DC의 복잡성을 피하기 위한 것이 아니라 표현을 단순화하기 위해 수행될 수 있습니다.예를 들어, 1개월 중 일수(윤년 제외)의 할당은 switch 문을 사용하거나 열거치를 인덱스로 하는 테이블을 사용하여 달성할 수 있다.소스코드에 근거해 필요한 테스트의 수는, 필요한 커버리지에 따라 크게 다를 수 있습니다.단, 의미적으로는 최소한의 테스트 수로 양쪽의 어프로치를 테스트하고 싶다고 생각하고 있습니다.
높은 MC/DC를 실현하기 위한 「사기」를 나타내는 또 다른 예는 다음과 같습니다.
/* 기능 A */ 무효 기능_a (인트 a, 부울 b, 부울 c, 부울 d, 부울 e, 부울 f) { 한다면 (a == 100) { 한다면 (b c) // 스테이트먼트 1 한다면 (d e f) // 스테이트먼트 2 } }
/* 함수 B */ 무효 기능_b (인트 a, 부울 b, 부울 c, 부울 d, 부울 e, 부울 f) { 부울 a_is_dis_to_100 = a == 100 ; 부울 b_or_c = b c ; 부울 d_or_e_or_f = d e f ; 한다면 (a_is_dis_to_100) { 한다면 (b_or_c) // 스테이트먼트 1 한다면 (d_or_e_or_f) // 스테이트먼트 2 } }
위의 예에서 기능 B는 기능적으로는 [5]동일하지만 특정 테스트 케이스 세트에 대해 기능 A보다 MC/DC가 높을 가능성이 높다.
RC/DC
강화 조건/결정 범위(RC/DC)는 안전 중요 시스템에 적합한 MC/[6]DC 적용 기준의 더 강력한 버전이다.그것은 2002년에 [7]Sergiy Vilkomir에 의해 처음 제안되었다.
두 번째 간행물은 이 주장을 반박하고 MCDC(적어도 고유 원인 강한 MCDC "UCMS" 또는 마스킹) 변종의 MCDC가 참조된 강화 조건/결정 범위(RC/DC)[8]보다 우수한 적용 범위를 가지고 있음을 나타낸다.
「 」를 참조해 주세요.
레퍼런스
- ^ Hayhurst, Kelly; Veerhusen, Dan; Chilenski, John; Rierson, Leanna (May 2001). "A Practical Tutorial on Modified Condition/ Decision Coverage" (PDF). NASA.
- ^ IEC 61508-3:2010
- ^ ISO 26262-2011 제6부 표 12
- ^ Rajan, Ajitha; Heimdahl, Mats; Whalen, Michael (March 2003). "The Effect of Program and Model Structure on MC⁄DC Test Adequacy Coverage" (PDF).
{{cite journal}}
:Cite 저널 요구 사항journal=
(도움말) - ^ http://www.hbni.ac.in/phdthesis/engg/ENGG02201004005.pdf[베어 URL PDF]
- ^ Vilkomir, S.A.; Bowen, J.P. (2006). "From MC/DC to RC/DC: formalization and analysis of control-flow testing criteria". Formal Aspects of Computing. Springer Nature. 18 (1): 42–62. doi:10.1007/s00165-005-0084-7. S2CID 10467796.
- ^ Vilkomir, S.A.; Bowen, J.P. (2002). "Reinforced condition/decision coverage (RC/DC): A new criterion for software testing". International Conference of B and Z Users. Lecture Notes in Computer Science. Springer-Verlag. 2272: 291–308. doi:10.1007/3-540-45648-1_15. ISBN 978-3-540-43166-4.
- ^ Kapoor, Kalpesh; Bowen, Jonathan P (2005). "A formal analysis of MCDC and RCDC test criteria". Software Testing, Verification and Reliability. Wiley Online Library. 15 (1): 21–40. doi:10.1002/stvr.306. S2CID 35276126.