오늘도 개발
Software Testing - E2E Test, Integration Test, Unit Test 본문
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 해보기)
'웹 프로그래밍 > 웹의 이해' 카테고리의 다른 글
| 도커(Docker) (0) | 2022.08.09 |
|---|---|
| Software Testing - TDD(Test Driven Development) (0) | 2022.08.06 |
| [AWS] AWS에서 EC2, RDS 생성해서 배포하기 (0) | 2022.07.28 |
| [AWS] 클라우드 컴퓨팅과 AWS 개요 (0) | 2022.07.28 |
| RESTful API (0) | 2022.07.20 |