정적 테스팅
테스팅 목표
협업 예제
정적 분석
통합
정적 테스트를 통해 검토할 수 있는 작업 산출물
리뷰 대상이 될 수 있는 조건
정적 분석의 필요 조건
정적 테스팅에 적합하지 않은 작업 산출물
조기 결함 식별 : 소프트웨어 개발수명주기(SDLC)초기 단계에서 결함을 식별하여 조기 테스팅 원리를 지킴
특정 결함 식별 : 동적 테스팅으로 식별할 수 없는 결함도 식별 가능
품질 평가 : 작업 산출물의 품질을 평가하고 신뢰를 쌓을 방법 제공
요구사항 확인 : 문서화된 요구사항을 확인하여 이해관계자가 요구사항이 실제 필요한 것을 묘사하고 있는지 확인 가능
공통 이해 형성 : SDLC 초기에 수행하여 관련된 이해관계자 간 공통 이해 형성 및 의사소통 개선
비용 절감 : 리뷰 구축 비용이 클 수 있지만, 프로젝트 후반에 결함을 수정하는 시간과 노력이 줄어 전체 프로젝트 비용이 절감되는 경우가 많다.
효울적 결함 식별 : 정적 분석이 동적 테스팅보다 효율적으로 코드 결함을 식별할 수 있으며, 결과적으로 코드 결함 감소 및 전반적 개발 노력 감소
정적 테스팅의 추가 이점 : 다양한 이해관계자가 정적 테스팅에 참여하여 의사소통 개선 및 공통 이해 형성
공통점 : 작업 산출물의 결함 식별을 지원
차이점 :
정적 테스팅으로 쉽게 적은 비용으로 식별할 수 있는 대표적인 결함
문제 1: 다음 중 정적 테스팅으로 검사할 수 없는 작업 산출물은 무엇인가?
A) 요구사항 명세서
B) 소스 코드
C) 테스트 계획서
D) 타사의 실행 코드
정답(드래그)
D
해설(드래그)
정적 테스팅은 사람이 해석하기 어려운 것과 도구로 분석해서는 안 되는 작업 산출물에는 적합하지 않다.
문제 2: 정적 테스팅의 주요 가치는 무엇인가?
A) 테스트 자동화의 수준을 높인다
B) 소프트웨어 개발수명주기(SDLC) 초기에 결함을 식별한다
C) 소프트웨어의 성능을 최적화한다
D) 사용자 요구사항을 변경한다
정답(드래그)
B
해설(드래그)
정적 테스팅의 주요 가치는 소프트웨어 개발수명주기(SDLC) 초기 단계에서 결함을 식별하여 조기 테스팅 원리를 지키는 데 있다.
문제 3: 정적 테스팅과 동적 테스팅의 차이점으로 옳지 않은 것은?
A) 정적 테스팅은 결함을 직접 식별한다
B) 동적 테스팅은 장애를 일으킨 후 결함을 찾아낸다
C) 정적 테스팅은 실행 가능한 작업 산출물에만 적용할 수 있다
D) 동적 테스팅은 코드 실행에 의존적인 품질 특성을 측정한다
정답(드래그)
C
해설(드래그)
정적 테스팅은 비-실행 작업 산출물에도 적용할 수 있습니다. 실행 가능한 작업 산출물에만 적용되는 것은 동적 테스팅이다.
문제 4: 다음 중 정적 테스팅으로 쉽게 식별할 수 있는 결함 유형은 무엇인가?
A) 성능 저하 문제
B) 버퍼 오버플로우
C) 사용자 인터페이스의 디자인 결함
D) 사용자 요구사항의 변경 요청
정답(드래그)
B
해설(드래그)
정적 테스팅은 특정 유형의 보안 취약성(예: 버퍼 오버플로우)을 식별하는 데 유용하다.
문제 5: 정적 테스팅이 동적 테스팅보다 효율적인 경우는 언제인가?
A) 실행되지 않거나 도달하기 어려운 코드 경로의 결함 식별
B) 소프트웨어의 성능 최적화
C) 사용자 인터페이스 테스트
D) 실제 사용자 환경에서의 테스트
정답(드래그)
A
해설(드래그)
정적 테스팅은 실행되지 않거나 동적 테스팅으로 도달하기 어려운 코드 경로에 있는 결함을 더 쉽게 발견할 수 있다.
문제 6: 정적 테스팅의 주요 이점이 아닌 것은?
A) SDLC 초기 단계에서 결함 식별 가능
B) 소프트웨어 품질 평가와 신뢰 형성
C) 코드 실행에 의존하지 않는 품질 특성 측정
D) 사용자 요구사항의 변경 요청을 처리
정답(드래그)
D
해설(드래그)
정적 테스팅은 사용자 요구사항의 변경 요청을 처리하는 것이 아니라, 기존 요구사항이 제대로 문서화되고 이해되었는지를 검토한다.
문제 7: 정적 테스팅을 통해 식별할 수 있는 요구사항 결함에 해당하지 않는 것은?
A) 불일치
B) 모호성
C) 성능 저하
D) 누락
정답(드래그)
C
해설(드래그)
성능 저하는 주로 동적 테스팅을 통해 식별된다. 정적 테스팅은 불일치, 모호성, 모순, 누락 등의 요구사항 결함을 식별하는 데 유용하다.
문제 8: 다음 중 정적 테스팅에 적합하지 않은 작업 산출물은 무엇인가?
A) 요구사항 명세서
B) 소스 코드
C) 법적으로 문제가 되는 타사의 실행 코드
D) 테스트 계획서
정답(드래그)
C
해설(드래그)
정적 테스팅은 법적으로 문제가 되는 타사의 실행 코드와 같이 사람이 해석하기 어렵고 도구로 분석해서는 안 되는 작업 산출물에는 적합하지 않다.
문제 9: 정적 테스팅이 소프트웨어 개발수명주기(SDLC) 초기에 수행될 때의 주요 이점은 무엇인가?
A) 테스트 자동화 수준 증가
B) 관련된 이해관계자 간 공통 이해 형성
C) 소프트웨어 성능 최적화
D) 사용자 인터페이스 개선
정답(드래그)
B
해설(드래그)
정적 테스팅이 SDLC 초기에 수행되면 관련된 이해관계자 간 공통 이해를 형성하고 의사소통을 개선하는 데 도움이 된다.
문제 10: 정적 분석 도구가 식별할 수 있는 결함 유형이 아닌 것은?
A) 정의되지 않은 값을 가진 변수
B) 선언되지 않은 변수
C) 과도한 코드 복잡성
D) 사용자 인터페이스 디자인 문제
정답(드래그)
D
해설(드래그)
정적 분석 도구는 주로 코드 결함(예: 정의되지 않은 값, 선언되지 않은 변수, 과도한 코드 복잡성)을 식별하는 데 사용되며, 사용자 인터페이스 디자인 문제는 정적 분석 도구로 식별하기 어렵다.