오늘도 개발

Software Testing - E2E Test, Integration Test, Unit Test 본문

웹 프로그래밍/웹의 이해

Software Testing - E2E Test, Integration Test, Unit Test

Sueeeeeee 2022. 8. 4. 11:24

1. Software Testing

Software Testing이란?

코드를 실행해보고, 결과가 기대와 다른 경우 수정하는 것

 

소프트웨어를 테스트 해야 하는 이유

프로덕트의 결함을 확인할 수 있음 => 품질 개선 

결함이 유저에게 노출되기 전 수정할 수 있음 => 유저 만족도 향상

개발 시간이 절약됨(유저 피드백을 받아서 계속 오류를 고쳐야 한다면 비효율적)

코드 구조를 개선할 수 있음

확장성 있는 코드를 만들 수 있음  

2. Manual Testing VS Automatic Testing

Manual Testing

테스트 시 실수가 생길 수 밖에 없음(불안정성)

인력이 소모됨 => 비용 발생

테스트 속도가 느림

 

Automatic Testing

테스트 시 실수가 없음(안정성)

인력이 필요 없음 => 비용 감소

얼마든지 테스트 반복 가능 

테스트를 코드로 짤 수 있음 => 테스트 재사용 가능, 속도가 빠름

 

3. 시스템 테스트 전략 3가지

E2E(End-to-End)

중요도 10%

프론트엔드와 백엔드를 통신시켜보고 잘 연결되는지 확인하는 것.

프로덕트의 전체적인 Flow를 테스트함.

테스트 복잡도 가장 높음 => 오류 발생 시 고치기가 어려움

Integration Test(통합 테스트)

중요도 20%

백엔드는 백엔드를, 프론트엔드는 프론트엔드를 테스트하는 것.

최소 두 개 이상의 클래스/모듈/함수의 결합이 잘 되었는지 테스트하는 과정

ex) 백엔드라면 api를 가상의 클라이언트(ex. postman)로 테스트하는 것.

Unit Test(단위 테스트)

중요도 70%

코드의 가장 작은 실행 단위인 함수, 클래스 하나하나를 테스트하는 것

독립적으로 진행하는 가장 작은 단위의 테스트.

 

테스트를 코드로 짜서 자동화할 수 있다.

=> 시간, 비용 절감

=> 리팩토링 시에도 빠르게 안정성 확보할 수 있음

=> 테스트 코드는 코드에 대한 문서로 사용할 수 있음 

 

테스트 복잡도 가장 낮음

=> 오류 발생 시 빠르게 문제를 파악할 수 있음

 

(참고 : Python unittest 모듈로 Unit Test해보기)

(참고 : Django로 Unit Test 해보기)