반응형

10. 테스트

1. 테스팅과 디버깅의 목적을 올바로 설명한 것은?
테스팅은 오류를 찾는 작업이며 디버깅은 오류를 수정하는 작업이다.

 

2. 소프트웨어 테스트에 대한 설명으로 옳은 것은?
코딩 후만이 아니라 소프트웨어 개발의 전 단계에 걸쳐 발생되는 작업이다.

 

3. 테스팅에서 프로그램의 실제 실행 결과가 올바른 결과인지를 판단하는 메커니즘은?
테스트 오라클 (해설: 테스트 케이스 실행이 통과했는지 실패했는지 판단하기 위한 기준)

테스트 하니스: 시스템 테스트를 하기 위해 만든 가짜 프로그램
테스트 적합성 기준: 화이트박스 테스팅 절차 중 하나로 모든 값들을 테스트할 수 없으므로 몇몇의 대푯값을 정해야 함
테스트 종류 기준: 언제 테스팅을 중지할 것인지에 대해 보고하고 계획하기 위해 사용

 

4. <명세>는 어떤 과목의 통과 여부를 결정하는 프로그램에 대한 명세이다. <코드>의 프로그램은 <명세>에 따라 작성하였지만 오류가 있다. <코드>의 오류를 검출할 수 있는 테스팅 기법과 테스트 입력을 바르게 짝지은 것은?
<명세> 입력 점수가 70보다 크거나 같은 통과이고 그렇지 않으면 통과하지 못한다. 점수는 0이상 100이하 범위를 갖는 정수형이다. 프로그램의 반환 값이 0이면 통과, 1이면 통과하지 못함, -1이면 입력이 범위를 벗어났음을 나타낸다.
경곗 값 분석 기법, 70 (해설: ‘같으면을 뜻하는 score == 70이 없음)

 

5. 단위 테스팅에 대한 설명 중 옳지 않은 것은?
화이트박스 테스팅을 위하여 테스트 드라이버와 스텁이 필요하다.

 

6. 블랙박스 테스팅 기법이 아닌 것은?
의사 결정 검증 조건(Decision coverage)

 

7. 같은 유형의 소프트웨어 테스트 기법으로만 묶은 것은?
, , (페어와이즈 테스트, 모델 기반 테스트, 직교 배열 테스트)

 

8. 개발과정에서 실시되는 시험의 순서를 바르게 나열한 것은?
(단위 테스트 통합 테스트 시스템 테스트)

 

9. 소프트웨어 테스트에 대한 설명으로 옳지 않은 것은?
블랙박스 테스트(black box test)는 입력 값에 대한 예상 출력 값을 정해 놓고 그대로 결과가 나오는지 원시 코드를 보며 확인한다.

 

10. 개발자 A<명세>에 따라 <코드>를 작성한 후 테스팅을 수행하였다. A100% 문장 커버리지를 달성하면서 동시에 프로그램의 오류를 발견할 수 있었다. A가 사용한 테스트 입력은? (, 단축 연산(short-circuit evaluation)은 수행하지 않는다.)
(v1=-2, v2=2)

 

11. 다음 제어 흐름 그래프에 나타난 프로그램을 테스트할 때, 옳지 않은 것은?
{(x:1, y:2, z:0), (x:5, y:0, z:0)}은 분기 커버리지를 만족하지 못한다.

 

12. 다음 코드에서 McCabe의 싸이클로매틱 복잡도는 얼마인가?
3 (해설: 원자적인 단일 조건의 개수 + 1)

 

13. 다음 C 프로그램이 조건 커버리지(condition coverage)100% 만족하기 위한 테스트 데이터 집합은? short-circuit은 수행하지 않음.
(x:10, y:10, z:10), (x:20, y:10, z:3)

 

14. 다음 설명에 해당하는 테스트는?
소프트웨어의 설계 한계를 넘어서는 부하를 준다.
시스템의 장애 행동을 테스트한다.
시스템이 최대 부하가 걸렸을 때만 보일 수 있음 결함을 드러나게 한다.
스트레스(stress) 테스트

 

15. 통합 테스트에 대한 설명으로 옳은 것은?
통합 테스트 동안 발생하는 주요 어려움은 오류들을 지역화(localization)하는 것이다.

 

16. 통합 테스트 단계에 적용할 기법을 바르게 선택한 것은?
특수하고 중요한 기능을 수행하는 최소 모듈 집합을 먼저 구현하고 테스트하기 위하여 연쇄식을 채택하였다.

 

17. 테스트에 대한 설명으로 옳지 않은 것은?
상향식 통합 테스트에서는 테스트케이스 입출력을 조정하기 위한 스텁(stub) 프로그램을 추가로 작성한다.

 

18. 다음은 테스트 방법에 관한 설명이다. 각 테스트 방법에 대한 설명과 해당되는 테스트 방법의 이름이 가장 잘 짝지어진 것은?
. 개발된 소프트웨어를 사용자가 실제 운영 환경에서 수행하는 테스트
. 시스템의 변경된 부분이 기존 시스템에 부작용을 일으키는지 여부를 파악하기 위한 테스트
. 개발자의 통제 하에 사용자가 개발 환경에서 수행하는 테스트
. 시스템에 고장이 발생하더라도 시스템이 정상적으로 작동하는지 여부를 파악하기 위한 테스트
: 베타 테스트, : 회귀 테스트, : 알파 테스트, : 복구 테스트

 

19. 테스트를 수행하여 결함이 발견되면 발견된 결함에 대한 정보가 개발자에게 제공되며, 이러한 문서를 결함 보고서(defect report, bug report, anomaly report ) 라고 부른다. 결함 보고서에서 일반적으로 포함되어야 할 항목과 가장 거리가 먼 것은?
발견된 결함을 제거하기 위한 해결 방안

 

20. 자동화 테스팅 도구의 정적분석 도구에 대한 설명으로 옳은 것은?
프로그램에서 오류 가능성이 있는 부분을 지적하는 코드 분석 도구

 

21. 테스트 작업의 바른 목적은 무엇이며 작업 과정은 무엇인가?
테스트 작업의 목적은 오류를 발견하고 사용자 요구사항을 충족하는지 확인하여 품질을 향상하기 위함이다. 작업 과정은 먼저, 테스트 목표를 설정하고 어떻게 테스트를 수행할 것인지 방법을 정한다. 이후, 테스트 케이스를 선택하고 테스트 케이스를 작성한다. 그리고 테스트를 실행한다.

 

22. 블랙박스 및 화이트박스 테스트의 차이점은 무엇이며 장단점을 비교 분석하라.
블랙박스는 소프트웨어 소프트웨어의 내부 로직을 보지 않고 테스트 대상의 기능이나 성능을 테스트하는 것이며 화이트박스 테스트는 소프트웨어의 내부 로직을 통해 테스트하는 방법이다. 블랙박스 테스트는 사용자 관점에서 시스템을 테스트하기 용이하다는 장점이 있으나 오류의 원인을 찾기 어려울 수 있다는 단점이 있다. 화이트박스 테스트는 블랙박스 테스트보다 더 정확하고 세밀하다는 장점이 있지만 많은 시간과 자원이 소모될 수 있다는 단점이 있다.

 

23. 어떤 대학원의 컴퓨터 공학과에서 입학 전형의 기준은 평점 3.0 이상이다. 하지만 학부의 전공이 컴퓨터 공학이 아니면 보충 과목을 수강하여야 한다. 동등 분할 기법을 이 문제에 적용하여 테스트 케이스를 찾아라.
- 조건: 평점이 3.0 이상, 전공이 컴퓨터 공학
- 동등 분할: 평점이 3.0 미만인 경우, 학점이 3.0 이상 4.5 이하인 경우, 학점이 4.5 초과하는 경우, 전공이 컴퓨터 공학인 경우, 전공이 컴퓨터 공학이 아닌 경우
- 테스트 케이스
1) 평점이 0 미만인 경우, 학점 = -1
2) 평점이 3.0 이상 4.5 이하인 경우, 학점 = 3.5
3) 평점이 4.5 초과하는 경우, 학점 = 4.6
4) 전공이 컴퓨터 공학인 경우, 전공 = 컴퓨터 공학과
5) 전공이 컴퓨터 공학이 아닌 경우, 전공 = 통계학과

 

24. 위 23번 문제의 대학원 입학 전형 기준 문제에 대하여 경곗값 분석을 적용하여 테스트 케이스를 찾아라.
- 학점 0을 기준으로 0.1, +0.1을 해보고 학점 3.0을 기준으로 0.1, +0.1을 해보고 학점 4.5를 기준으로 0.1, +0.1을 해본다.
- 테스트 케이스: -0.1, 0, 0.1, 2.9, 3.0, 3.1, 4.4, 4.5, 4.6

 

25. 중복 요소를 제거하는 다음 프로그램에 대하여 논리 흐름 그래프를 작성하고 기본 경로를 찾아라. 또한 각 경로에 대한 테스트 케이스를 구하라.

기본 경로
1) 시작 1 2 10 종료
2) 시작 1 2 3 4 5 6 7 8 9 10 종료
3) 시작 1 2 3 4 8 9 10 종료
4) 시작 1 2 3 4 5 7 8 9 10 종료

 

26. 다음 프로그램을 테스트하기 위한 테스트 케이스(테스트 데이터, 예상 결과)를 세 가지 검정 기준으로 작성하라.
(1) 문장 검증 기준
해설: 모든 문장이 적어도 한 번 이상 실행되는지 테스트 케이스(테스트 데이터, 예상 결과)를 적으면 된다.
(2) 분기점 검증 기준
해설: 각 분기별로 조건(T, F)이 적어도 한 번 이상 실행되는지 테스트 케이스(테스트 데이터, 예상 결과)를 적으면 된다.
(3) 조건 검증 기준
해설: 모든 경로가 적어도 한 번 이상 통과하는지 테스트 케이스(테스트 데이터, 예상 결과)를 적으면 된다.

 

27. 통합 테스트의 목적은 무엇이며 동시식과 점증식(top-down, bottom-up)의 차이는 무엇인가?
통합 테스트의 목적은 모듈들의 인터페이스를 테스트 하기 위함이다. 동시식과 점증식의 차이는 동시식은 한 번에 모든 모듈을 모아 통합한다는 것이고 점증식은 최상위 층의 모듈 혹은 최하위 층의 모듈로부터 점증적으로 통합한다는 것이다.

 

28. 시스템 테스트를 위하여 다음 유스케이스를 기반으로 테스트 케이스를 작성하라.

테스트 케이스 1
목적
기본 흐름을 테스트한다.
테스트 데이터
계정 아이디: testuser
패스워드: testpassword
책 이름: "소프트웨어 공학"
절차
1. 계정 아이디와 패스워드를 입력합니다.
2. 로그인 버튼을 클릭합니다.
3. 탐색 화면에서 "소프트웨어 공학"을 입력한다.
4. 검색 결과에서 "소프트웨어 공학"을 선택한다.
5. 예약 버튼을 클릭한다.
6. 예약 확인 메시지를 확인한다.
기대 결과
책이 예약됩니다.
예약 확인 메시지가 표시됩니다.

 

29. 시스템 테스트 단계에는 다양한 목적의 테스트 기법들이 있다. 어떤 종류가 있는지 나열하고 기법을 간단히 설명하라.
시스템 테스트 단계에는 기능 테스트, 성능 테스트, 보안 테스트, 사용성 테스트, 인수 테스트 등이 있다.
기능 테스트는 구현된 기능이 요구사항을 모두 만족시키는지 검사한다.
성능 테스트는 비기능적 요구사항인 성능을 평가하는 테스트다.
보안 테스트는 시스템의 보안이 안전한지 취약점을 찾아내는 테스트다.
사용성 테스트는 UI 테스트라고도 하며 사용자가 시스템을 사용하는데 UI상 결함이 없는지 찾아내는 테스트다.
인수 테스트는 알파 테스트나 베타 테스트와 같이 실제 사용자가 시스템을 사용하며 결함이 없는지 확인하는 테스트이다.

 

30. 테스트 도구에는 어떤 종류가 있고 어떤 작업을 자동화 하는가?
테스트 도구에는 테스트 관리 도구, 기능 테스트 도구, 모듈 테스트 도구, 커버리지 도구, 성능 테스트 도구, 보안 테스트 도구 등 많은 도구들이 있다. 테스트 관리 도구는 테스트 작업을 계획하고 테스트 케이스를 설계하고 수행하며 추적, 보고하는 작업을 자동화한다. 기능 테스트 도구는 실제 데이터와 예상 데이터를 비교하여 모듈의 기능을 검증하는 기능을 자동화한다. 모듈 테스트 도구는 단위 테스트를 자동화한다. 커버지리 도구는 테스트 케이스 실행 후 커버리지 측정을 자동화한다. 성능 테스트 도구는 최대 트래픽에서의 성능 및 응답 시간 측정을 자동화한다. 보안 테스트 도구는 취약점을 자동으로 스캔한다.