항해99 23일차 개발일지

홍당무·2022년 12월 15일
0

소프트웨어 테스트

정의

- 노출되지 않은 숨어있는 결함을 찾기 위해 소프트웨어를 작동시키는 일련의 행위와 절차

- 오류 발견을 목적으로 프로그램을 실행하여 품질을 평가하는 과정

- 개발된 소프트웨어의 결함과 문제를 식별하고 품질을 평가하며 품질을 개선하기 위한 일련의 활동

- 일반적으로 테스트 케이스에 따라 SW를 동적으로 실행시켜 예상결과치와 비교 분석

- SW의 동작과 성능, 안정성이 요구되는 수준을 만족하는지 확인하기 위한 결함을 발견하는 매커니즘

- 시스템이 정해진 요구를 만족하는지, 예상과 실제 결과가 어떤 차이를 보이는지 수동 또는 자동 방법을 동원하여 검사하고 평가하는 일련의 과정 - IEEE, 1993

단위 테스트(Unit Test)

정의

응용 프로그램에서 테스트 가능한 가장 작은 소프트웨어를 실행하여 예상대로 동작하는지 확인하는 테스트이다.

장점

- 예상 동작과 실제 동작을 비교하여 빠르고 정확한 테스트가 가능하기 때문에 초기 개발의 디버깅이 쉬워진다.

- 어플리케이션이 변경되더라도 올바르게 작동하는 지 확인할 수 있다.

- 단위 테스트 자체를 어플리케이션에 대한 문서로 사용할 수 있다. 특히 잘 만든 테스트 케이스는 API 기능을 쉽게 파악할 수 있도록 도와준다.

- 여러 빌드 도구들(maven, gradle 등)은 테스트 자동화 기능을 포함하고 있다.

단점

- 테스트 코드까지 작성해야하기 떄문에 개발 시간이 오래 걸리게 된다.

- 어플리케이션 변경 사항을 테스트 코드에도 적용해야 하기 떄문에 테스트 코드를 유지보수하는 비용이 든다.

통합 테스트(Integration Test)

정의

단위 테스트보다 더 큰 동작을 달성하기 위해 여러 모듈들을 모아 이들이 의도대로 협력하는지 확인하는 테스트

특징

개발자가 변경할 수 없는 부분(ex. 외부라이브러리)까지 묶어 검증할 때 사용한다. 이는 DB에 접근하거나 전체 코드와 다양한 환경이 제대로 작동하는지 확인하는데 필요한 모든 작업을 수행할 수 있다. 그러나 통합 테스트가 응용 프로그램이 완전하게 작동하는 것을 무조건 증명하지는 않는다.

장점

- 단위 테스트에서 발견하기 어려운 버그를 찾을 수 있다는 점(ex. 싱글 코어 CPU에서는 잘 실행되나 쿼드 코어 CPU에서는 잘 실행되지 않는 환경 버그)

단점

- 단위 테스트보다 더 많은 코드를 테스트하기 때문에 신뢰성이 떨어질 수 있다는 점

- 어디서 에러가 발생했는지 확인하기 쉽지 않아 유지보수하기 힘들다는 점

인수 테스트(Acceptance Test)

정의

사용자 스토리(시나리오)에 맞춰 수행하는 테스트

특징

앞선 두 테스트들과는 달리, 비즈니스 쪽에 초점을 둔다. 프로젝트에 참여하는 사람들이 토의해서 시나리오를 만들고 개발자는 이에 의거한 코드를 작성한다. 개발자가 직접 시나리오를 제작할 수도 있지만, 다른 의사소통집단으로부터 시나리오를 받아 개발한다는 의미를 가지고 있다.


References

https://tecoble.techcourse.co.kr/post/2021-05-25-unit-test-vs-integration-test-vs-acceptance-test/

https://itwiki.kr/w/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4_%ED%85%8C%EC%8A%A4%ED%8A%B8

https://velog.io/@jybin96/%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%BD%94%EB%93%9C-%EC%9E%91%EC%84%B1-%EC%8B%9C-%EC%9E%A5%EB%8B%A8%EC%A0%90%EA%B3%BC-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%A2%85%EB%A5%98-%EB%B3%84-%ED%8A%B9%EC%A7%95

profile
공부하는 백엔드 개발자

0개의 댓글