[이어서 소프트웨어공학 기출문제 46-50를 풀어보겠습니다.]
문제 46
46. 다음은 JUnit4의 코드 골격이다. 테스트 수행시에 메소드들의 수행순서로 가장 적절한 것은? |
public class TestSample { @BeforeClass public static void a() { } @AfterClass public static void b() { } @Before public void c() { } @After public void d() { } @Test public void t1() { } @Test public void t2() { } } ① a(), b(), c(), d(), t1(), t2() ② a(), c(), t1(), t2(), d(), b() ③ a(), c(), t1(), d(), c(), t2(), d(), b() ④ a(), c(), t1(), d(), b(), a(), c(), t2(), d(), b() |
출제의도
JUnit4의 주요 어노테이션들과 그들의 수행 순서에 대한 이해를 확인하는 것입니다. JUnit4에서는 테스트 수행 순서가 어노테이션에 따라 결정됩니다.
각 문항에 대한 설명은 다음과 같습니다:
① a(), b(), c(), d(), t1(), t2()
이 문항은 어노테이션의 수행 순서를 잘못 이해하고 있습니다.
@BeforeClass와 @AfterClass는 각각 테스트 시작 전과 후에 한 번씩만 수행되며, @Before와 @After는 각 테스트 메서드 실행 전과 후에 수행됩니다.
② a(), c(), t1(), t2(), d(), b()
이 문항은 @After 어노테이션이 각 테스트 메소드 실행 후에 수행된다는 것을 놓쳤습니다. 따라서 이 순서는 올바르지 않습니다.
③ a(), c(), t1(), d(), c(), t2(), d(), b() 이 문항은 JUnit4의 어노테이션 수행 순서를 정확합니다.
@BeforeClass가 먼저 수행되고, 그 다음으로 @Before, @Test, @After가 각 테스트 메서드마다 수행됩니다. 마지막으로 @AfterClass가 수행됩니다.
④ a(), c(), t1(), d(), b(), a(), c(), t2(), d(), b()
이 문항은 @BeforeClass와 @AfterClass가 각 테스트 메소드 실행 전과 후에 수행된다고 잘못 이해하고 있습니다. 실제로는 이 두 어노테이션은 테스트 시작 전과 후에 각각 한 번씩만 수행됩니다.
따라서, 정답은 ③번입니다.
부연설명
JUnit4는 자바에서 가장 널리 사용되는 단위 테스트 프레임워크 중 하나입니다. 이 프레임워크를 사용하면 개발자들은 소프트웨어의 각 부분이 예상대로 작동하는지 확인할 수 있습니다. JUnit4는 다양한 어노테이션을 제공하여 테스트 케이스를 쉽게 작성하고 관리할 수 있습니다.
JUnit4는 다음과 같은 주요 기능을 제공합니다:
Assertions: 테스트 케이스의 결과를 검증하는 데 사용됩니다.
예를 들어, assertEquals() 메서드는 두 값이 같은지 확인합니다.
Test Runners: JUnit 테스트를 실행하는 방법을 정의합니다.
예를 들어, BlockJUnit4ClassRunner는 기본적인 JUnit4 테스트를 실행합니다.
Test Suites: 관련된 여러 테스트 케이스를 그룹화하여 한 번에 실행할 수 있습니다.
Annotations: 테스트 메서드나 테스트 클래스에 메타데이터를 추가하는 데 사용됩니다.
예를 들어, @Test 어노테이션은 메서드가 테스트 케이스임을 나타냅니다.
JUnit4는 여전히 많이 사용되고 있지만, 2017년에는 더 많은 기능을 제공하는 JUnit5가 출시되었습니다.
JUnit5는 JUnit4의 후속 버전으로, 자바 8 이상에서 사용할 수 있는 테스팅 기반 프레임워크입니다.
JUnit5는 JUnit Platform, JUnit Jupiter, JUnit Vintage의 세 가지 서브 프로젝트로 구성되어 있습니다.
- JUnit Platform: JVM에서 테스트 프레임워크를 실행하는 기초를 제공합니다.
- JUnit Jupiter: JUnit5의 주요 테스트 프레임워크로, 새로운 프로그래밍 모델과 확장 모델을 제공합니다.
- JUnit Vintage: JUnit3와 JUnit4 기반의 테스트를 지원합니다.
JUnit4와 비교했을 때, JUnit5는 다음과 같은 주요 차이점을 가지고 있습니다:
- 모듈화: JUnit5는 여러 서브 프로젝트로 나뉘어져 있어, 필요한 기능만 선택적으로 사용할 수 있습니다.
- 확장성: JUnit5는 확장 모델을 통해 사용자 정의 테스트 엔진을 만들 수 있습니다.
- 표현력: JUnit5는 람다를 지원하므로, 보다 표현력 있는 테스트 코드를 작성할 수 있습니다.
그러나 많은 프로젝트가 아직 JUnit4를 사용하고 있으므로, JUnit4에 익숙해지는 것은 여전히 유용합니다. 그리고 필요에 따라 JUnit5로 전환하는 것을 고려할 수 있습니다. JUnit5는 JUnit4의 테스트를 지원하므로, 기존의 JUnit4 테스트 코드를 그대로 사용할 수 있습니다
문제 47
47. 다음 중 Release testing에 대한 설명으로 가장 적절한 것은? ① 심각한 결함을 유발하는 버그들을 검출하기 위해 결함 테스팅을 수행한다. ② 시스템을 개발한 팀원들로 구성된 검증팀을 따로 만들어 테스팅을 수행한다. ③ 외부 배포 이전에 시스템의 요구명세 기반 블랙 박스 테스팅을 수행한다. ④ 시스템 테스팅에서 확인된 요구사항은 제외하고 변경 항목들을 테스트한다. |
출제의도
Release testing에 대한 이해를 확인하는 것입니다.
각 문항에 대한 설명은 다음과 같습니다:
① 심각한 결함을 유발하는 버그들을 검출하기 위해 결함 테스팅을 수행한다.
이 문항은 결함 테스팅에 대한 설명이지만, Release testing의 전체적인 목표를 설명하지는 않습니다. 결함 테스팅은 Release testing의 일부일 수 있지만, Release testing은 단지 결함을 찾는 것뿐만 아니라 시스템이 요구사항을 충족하는지도 확인합니다.
② 시스템을 개발한 팀원들로 구성된 검증팀을 따로 만들어 테스팅을 수행한다.
이 문항은 테스팅 팀의 구성에 대한 설명이지만, Release testing의 목표나 방법에 대한 설명은 아닙니다.
③ 외부 배포 이전에 시스템의 요구명세 기반 블랙 박스 테스팅을 수행한다.
Release testing의 목표와 방법을 정확하게 설명하고 있습니다. Release testing은 외부 배포 전에 수행되며, 시스템의 요구사항을 기반으로 블랙박스 테스팅을 수행합니다.
④ 시스템 테스팅에서 확인된 요구사항은 제외하고 변경 항목들을 테스트한다.
이 문항은 변경 항목에 대한 테스팅에 대한 설명이지만, Release testing의 전체적인 목표를 설명하지는 않습니다. Release testing은 시스템 전체가 요구사항을 충족하는지 확인하기 위해 수행됩니다. 변경 항목만 테스트하는 것은 Release testing의 일부일 수 있지만, 전체를 설명하지는 않습니다.
부연설명
Release testing은 소프트웨어가 사용자에게 배포되기 전에 수행되는 테스팅으로, 시스템이 요구사항을 충족하는지 확인하고, 사용자가 사용할 수 있는지 검증하는 것을 목표로 합니다.
따라서, 정답은 ③입니다.
문제 48
48. 다음 상황에 부합하는 유지보수 유형으로 가장 적절한 것은? 데이터베이스 내에서 데이터 세트를 재구성하여 더빠르게 검색하고 스토리지를 더 적게 사용하도록 성능향상 작업을 진행하고자 한다. ① 수정형 유지보수(corrective maintenance) ② 적응형 유지보수(adaptive maintenance) ③ 완전형 유지보수(perfective maintenance) ④ 예방형 유지보수(preventive maintenance) |
출제의도
각 유지보수 유형을 이해하고, 주어진 상황에 가장 적합한 유지보수 유형을 선택할 수 있는 능력을 평가하는 것입니다. 이 문제는 데이터베이스의 성능을 향상시키기 위한 작업을 수행하려는 상황을 제시하고 있습니다.
각 유지보수 유형에 대한 설명은 다음과 같습니다:
① 수정형 유지보수(corrective maintenance):
이 유형의 유지보수는 소프트웨어의 결함이나 오류를 수정하는 데 초점을 맞춥니다. 이는 버그 수정, 시스템 충돌 문제 해결 등을 포함합니다.
② 적응형 유지보수(adaptive maintenance):
적응형 유지보수는 소프트웨어를 변경된 환경에 적응시키기 위해 수행됩니다. 이는 하드웨어 업그레이드, 운영 체제의 변경, 데이터베이스의 변경 등에 대응하기 위한 유지보수를 포함합니다
③ 완전형 유지보수(perfective maintenance):
이 유형의 유지보수는 소프트웨어의 기능을 개선하거나 성능을 향상시키기 위해 수행됩니다. 이는 사용자의 요구사항 변경, 성능 최적화, 새로운 기능 추가 등을 포함합니다.
④ 예방형 유지보수(preventive maintenance): 이 유형의 유지보수는 미래의 문제를 예방하고 소프트웨어의 장기적인 신뢰성과 성능을 향상시키기 위해 수행됩니다. 이는 코드 리팩토링, 문서화 개선, 코드 최적화 등을 포함합니다. 데이터베이스 내에서 데이터 세트를 재구성하여 더 빠르게 검색하고 스토리지를 더 적게 사용하도록 성능향상 작업을 진행하고자 하는 상황입니다.
따라서 정답은 ③ 완전형 유지보수(perfective maintenance)입니다.
문제 49
49. 다음에 설명하는 4가지 유형의 소프트웨어 형상 관리 활동에 해당하지 않은 것은? A. 베이스라인을 설정하고 식별된 모든 형상 항목에 식별자를 부여한다. B. 변경요청이 발생했을 때 해당 변경에 대한 평가, 조정, 변경 승인 등의 활동을 수행한다. C. 형상 항목에 대한 변경 히스토리를 기록하고 보고 한다. D. 개발된 소프트웨어 제품이 승인된 제품의 명세와 정확히 일치하는지를 평가한다. ① Configuration Status Accounting ② Configuration Identification ③ Configuration Verification ④ Configuration Control |
출제의도
다시 정리해서 풀이를 올리겠습니다.
정답은 ③ Configuration Verification 입니다.
문제 50
50. 다음 중 (가)~(다)에 들어갈 용어를 순서대로 가장 적절하게 나열한 것은? SPICE는 소프트웨어 개발 프로세스 개선을 목적으로 제정된 ISO 15504 표준의 별칭으로, L0: Incomplete Process, L1: (가) Process, L2: (나) Process, L3: (다) Process, L4: Predictable Process, L5: Optimizing Process로 총 6레벨의 성숙도로 정의되어 있다. ① Managed, Established, Performed ② Managed, Performed, Established ③ Established, Performed, Managed ④ Performed, Managed, Established |
출제의도
SPICE의 성숙도 레벨에 대한 이해를 평가하고, 각 레벨을 올바르게 식별할 수 있는 능력을 검증하는 것입니다.
이 문제는 각 레벨에 대한 이해가 필요합니다.
각 레벨은 다음과 같습니다:
L0: Incomplete Process
L1: Performed Process
L2: Managed Process
L3: Established Process
L4: Predictable Process
L5: Optimizing Process
따라서, (가)~(다)에 들어갈 용어를 순서대로 나열한 것은 ④번 Performed, Managed, Established입니다.
[소프트웨어공학 기출문제를 끝까지 확인해 주셔서 감사합니다. 다음 시간에는 데이터베이스 기출문제 51-55까지 풀어보도록 하겠습니다.]
'IT★자격증 > 정보시스템감리사 기출문제 풀이' 카테고리의 다른 글
2023년 제 24회 정보시스템 감리사 기출문제 풀이 - 데이터베이스(56-60) (4) | 2023.12.02 |
---|---|
2023년 제 24회 정보시스템 감리사 기출문제 풀이 - 데이터베이스(51-55) (3) | 2023.12.01 |
2023년 제 24회 정보시스템 감리사 기출문제 풀이 - 소프트웨어공학(41-45) (5) | 2023.11.29 |
2023년 제 24회 정보시스템 감리사 기출문제 풀이 - 소프트웨어공학(36-40) (3) | 2023.11.28 |
2023년 제 24회 정보시스템 감리사 기출문제 풀이 - 소프트웨어공학(31-35) (1) | 2023.11.27 |