TODO
- 면접에 자주 등장하는 TDD(Test Driven Development) 개념 찾아보고 장점, 단점 정리하기 (TDD를 실제 서비스 개발시 적용하기 어려운 이유)
1. Software Testing
사전에 문제가 생기지 않게 방지하는 것
테스트를 하는 이유
- 결함 확인
- 사전 방지
- 시간 절약
- 구조 개선
- 품질 개선
- 확장성
2. Manual Test vs Automation Testing
:: Manual Testing
사람이 직접 손으로 하는 것
단점
불안정성 ⬆️
인력소모 ⬆️
비용 ⬆️
테스트 실행 속도 ⬇️
:: Automation Testing
컴퓨터가 직접 하는 것
장점
안정성 ⬆️
인력소모 ⬇️
비용 ⬇️
테스트 실행 속도 ⬆️
확장성 ⬆️
3. 시스템 테스트 전략 3가지
1. End-To-End Test
tools: cypress
전체적인 Flow로 확인을 해야하는 테스트 (사람이 직접 눌러보는 것)
- Ex. 브라우저 상 클릭 후 생기는 변화에 대한 검증
누구나 테스트할 수 있다
2. Integration Test (통합 테스트)
tools: postman, httpie
모듈 간의 호환성 검증
- Ex. 웹 페이지 혹은 Postman을 통한 API 호출 시 올바르게 동작하는지 확인
백엔드에서 테스트 해볼 수 있다
3. Unit Test
- 독립적으로 진행되는 가장 작은 단위의 테스트
- 하나의 기능 또는 메소드
- 시스템을 테스트한다는 개념보다는 코드를 테스트하는 것
:: Unit Test 작성의 필요성
E2E Test와 Integration Test 단점
실제로 돌아가는 환경이 구성되어야 테스트가 가능하다.
서버가 돌아가야하고, DB가 구성이 되어있어야 한다.
Unit Test 장점
- 빠른 문제 파악 가능
- 시간과 비용 절감
- 리팩토링 시 안정성 확보
- 코드에 대한 문서로 활용 가능
:: 용어
- TestCase
unittest Framework의 테스트 조직의 기본 단위
- Fixture
테스트를 진행할 때 필요한 테스트용 데이터 혹은 설정 등을 이야기 한다. 주로 테스트가 실행되기 전이나 후에 생긴다.
- Assertion
unittest에서 테스트하는 부분이 제대로 됐는지를 확인하는 부분
:: 설계 원칙
테스트 유닛은 각 기능의 가장 작은 단위에 집중해야한다.
각 테스트 유닛은 반드시 독립적이어야 한다.
테스트가 빠르게 돌 수 있도록 만들기 위해 노력해야한다.
- 테스트를 매우 자주할 것이기 때문에 빨라야한다.
지금 사용하고 있는 툴이 개별 테스트나 테스트 케이스를 어떻게 수행하는지 알아야한다.
그날의 코딩을 시작하기 전에 항상 풀 테스트 슈트를 돌려야한다.
모두가 공유하는 저장소에 코드를 집어넣기 전에 자동으로 모든 테스트를 수행하도록 하는 훅을 구현하는 것이 좋다. (CI/CD)
코드를 디버깅할 때 가장 먼저 시작할 일은 버그를 집어내는 새로운 테스트를 작성하는 것이다.
테스트 함수에는 길고 서술적인 이름을 사용해야 한다.
- 개발자들이 테스트 코드를 공유하기 때문에 길고 디테일하게 쓰는 것이 좋다.
테스트 코드의 또다른 사용 방법은 새로운 개발자들을 위한 안내서로 쓰는 방법이다.
- 마치 Document처럼 사용하기도 한다.
'프로그래밍 > 웹관련' 카테고리의 다른 글
XSS 공격에 안전한 소셜 로그인 구현 (카카오) (0) | 2021.12.12 |
---|---|
TIL44 | Query Parameters VS Path Parameters (0) | 2021.11.10 |
TIL43 | REST API (0) | 2021.11.08 |
TIL40 | Westargram 마무리 (0) | 2021.11.01 |
TIL37 | Westagram 회원가입 & 로그인 실습 (0) | 2021.10.27 |