Back-End/Project

Test Case 작성

psy_er 2023. 11. 27. 09:42
728x90

테스트

소프트웨어 개발은 오류가 발생하기 쉬운 활동

-> 결함을 낮추기 위해 행동이 필요함

 

테스트 : 시험할 소프트웨어에 테스트 케이스를 주어 실행시킨 후 시스템의 동작이 예상한 대로 실행되는지 확인하는 것

 

검증(verification) : 제품을 올바르게 구축하고 있는가? 비기능 요구사항을 얼마나 잘 준수하는가?

확인(validation) : 올바른 제품을 만들고 있는가? 제품이 사용자의 기대를 얼마나 잘 충족하는가?

 

 

테스트 기초

 

버그 : 문제, 결함 또는 난이도를 나타내는 데 일반적으로 사용되는 용어

오류 : 개발자의 잘못으로 설계 혹은 코딩 작업에서 실수한 사항

결함 : 코드 또는 문서에 오류가 있을 경우 발생하는 것, 시스템이 고장을 일으키게 하는 오류의 결과

고장 : 시스템이 원하는 작업을 수행할 수 없는 상황, 시스템에 결함이 있으면 고장이 발생

 

오류 > 결함 > 고장 순

 

 

테스트 원리

 

1. 테스트는 오류를 발견을 위한 과정이다

- 프로그램이 작동한다는 것을 보여주는 것은 테스트가 아니다.

- 오류를 발견하려는 테스트는 어렵고 복잡하지만 성공적인 테스트라고 할 수 있다.

 

2. 완벽한 테스트는 불가능하다

- 프로그램 테스트는 증명과 다르다. 테스트에 문제가 없다고 하여 문제가 없는 것은 아니다.

- 완벽한 테스트를 위한 테스트 케이스 작성은 이론상으로만 가능하다.

- 효율적인 테스트 케이스의 부분집합을 테스트해야 한다.

 

3. 테스트는 창조적인 일이며 힘든 일이다

- 테스트와 유지 보수는 창의력을 요구하여 전문가에게는 흥미의 대상이다.

- 효율적 테스트란 프로그램이 무엇을 하는지에 대한 이해, 테스트 기법 숙지, 효율적인 적용기술이 필요하다.

 

4. 테스트는 오류의 유입을 방지할 수 있다

- 오류나 문제의 존재를 빠르게 알 수록 수정 비용이 적어진다.

- 요구분석, 설계단계에 오류가 유입되는 것을 막아야 한다.

 

5. 테스트는 구현과 관계없는 독립된 팀에 의하여 수행되어야 한다

- 테스트는 객관적인 입장으로 진행되어야 효과적인 테스트가 가능하다.

- 테스트코드 작성자와 프로젝트 개발자가 분리되어 있는 것이 유리하다.

 

 

테스트 작업 과정

 

1. 테스트에 의하여 무엇을 점검할 것인지 정한다

- 테스트 설계 전 테스트 목표 설정

 

2. 테스트 방법을 결정한다

- 어떻게 테스트할 것인지 결정

 

3. 테스트 케이스 작성

- 테스트 케이스란 설계된 입력값, 실행될 조건 등이 있는 테스트 명세서이다.

 

4. 테스트의 예상되는 올바른 결과를 작성한다

- 올바른 결과를 예상하여 테스트 케이스 실행의 통과, 실패 기준을 작성한다.

 

5. 테스트 케이스로 실행시킨다

- 테스트 하네스(Test Harness)란 시스템의 일부 기능만 시험하기 위하여 소프트웨어에 변경을 가하는 경우이다.

- 테스트 하네스는 테스트가 끝나면 제거

 

 

테스트 단계

 

단위 테스트

- 각 모듈 시험

- 모듈을 구현한 프로그래머가 실시

- 모듈을 정확하게 구현했는지? 예정한 기능을 제대로 발휘했는지?

 

통합테스트

- 전체 시스템을 이루는 모듈을 모아 통합적으로 시험하는 것

- 시스템이 요구하는 기능을 제대로 수행하는가? 모듈 사이 인터페이스 확인

 

시스템 테스트

- 완성된 제품에 대한 시험

- 시스템이 사용될 준비가 다 되었음을 확인하는 테스트

 

인수 테스트

- 사용될 환경에 설치하여 사용자가 직접 사용하며 테스트

- 시스템의 문서도 점검

 

리그레션 테스트

- 시스템 설치 후 유지보수 단계에서 이루어지는 테스트

- 수정이 이루어지는 부분, 그에 대한 영향을 테스트

 

 

테스트 케이스

결함을 검사할 수 있는 입력이 있어야 테스트 실행할 수 있음

시험 조건, 테스트 데이터, 예상 결과를 포함시켜야 함

 

 

테스트 작성 예시

JUnit 프레임워크에서 테스트 클래스 이름을 지정하는 어노테이션 
@DisplayName 

JUnit 프레임워크에서 테스트 메서드를 지정하는 어노테이션
@Test

의존 객체 타입에 해당하는 Bean을 찾아 의존관계를 주입하는 어노테이션
@Autowired

테스트 DB를 구성할 때 사용하는 어노테이션
@AutoConfigureTestDatabase

JPA에 필요한 클래스들만 로딩이 되어 빠른 테스트 진행
@DataJpaTest

두 객체의 값이 같은지 여부
@assertEquals

728x90