본문 바로가기
IT★자격증/정보시스템감리사 기출문제 풀이

2023년 제 24회 정보시스템 감리사 기출문제 풀이 - 소프트웨어공학(46-50)

by 꼬모부 2023. 11. 30.
728x90

[이어서 소프트웨어공학 기출문제 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까지 풀어보도록 하겠습니다.]

반응형
LIST