Skip to content

Commit eabfdb4

Browse files
authored
Create 함인규.md
1 parent c7e31c5 commit eabfdb4

File tree

1 file changed

+71
-0
lines changed

1 file changed

+71
-0
lines changed

10장/함인규.md

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
## 일반적인 테스트 유형
2+
3+
| 고수준 ( 높은 신뢰도 ) | E2E/UI 통합 테스트 |
4+
| --- | --- |
5+
| | E2E/UI 격리 테스트 |
6+
| | API 테스트(시스템 외부에서 실행) |
7+
| | 통합 테스트(인메모리) |
8+
| | 컴포넌트 테스트(인메모리) |
9+
| 저수준 ( 빠른 속도 ) | 단위 테스트(인메모리) |
10+
11+
테스트 수준이 높을 수록 실제 의존성을 더 많이 사용하게 되어 전체 시스템 정확성에 대한 신뢰도가 높다.
12+
13+
하지만 테스트는 더 느려지고 불안정해질 수 있는 단점이 있다.
14+
15+
“사실 각각에 대한 명확한 구분은 못하겠음..”
16+
17+
양 극단만 보자면.
18+
19+
E2E 테스트 : 가짜가 없다. 실제 운영 환경에 가장 가까운 상태 ( 사용자가 마주할 실제 시나리오가 제대로 동작하는지 테스트 )
20+
21+
단위 테스트 : 직접 제어할 수 없는 외부 의존성은 없다. ( 테스트 내에서 모든 것을 제어 가능 )
22+
23+
## 각 테스트 수준마다 존재하는 안티 패턴
24+
25+
**E2E 테스트만 사용하는 경우**
26+
27+
- 이 수준의 테스트는 매우 느리고, 유지 보수하기 어렵고, 디버깅이 힘들며, 불안정성이 높다.
28+
- 처음 테스트 통과할 때는 큰 신뢰감을 줄 수 있겠지만, n번째 테스트를 진행할 수록 그 효율성은 떨어진다..
29+
- 가장 중요한 기능만 확인하는 용도로 소수의 E2E 테스트를 사용하는 것이 가장 효율적!
30+
31+
**저수준 테스트만 사용하는 경우**
32+
33+
- 이 테스트들이 통과해도 애플리케이션 전체가 제대로 작동한다고 확신하기에는 신뢰도가 충분하지 않다.
34+
- 전체 테스트를 위해서 수동으로 디버깅과 테스트를 해봐야함!
35+
- 고수준의 테스트도 함께 작성하자!
36+
37+
테스트 유형 간 균형을 맞추려면 ***고수준 테스트와 저수준 테스트 간에는 1:5 또는 1:10 비율을 유지하면 좋다.***
38+
39+
ex ) 단위테스트가 100개라면.. 통합 테스트는 10개.. E2E 테스트는 1개..
40+
41+
## 테스트 레시피 전략
42+
43+
조직 내 테스트 유형 간 균형을 맞추기 위해, **테스트 레시피 전략**을 추천한다.
44+
45+
→ 특정 기능을 어떻게 테스트할지 간단한 계획을 세우는 것.
46+
47+
→ 고정된 산출물 아님. 테스트 시나리오가 새로 추가되거나 없어질 수 있으니까.
48+
49+
→ 테스트 레시피가 통과해야 기능이 완성되었다고 본다.
50+
51+
→ 개발 돌입하기 전에 레시피 작성하는 것이 좋다. ( 요구사항 분석과 비슷한 느낌일까..? )
52+
53+
## 빌드 파이프라인 관리
54+
55+
자동화 파이프라인을 통해 수행하는 테스트 작업을 두 가지 그룹으로 나누면 다음과 같다.
56+
57+
**배포 중단 테스트** : 변경 사항에 문제 없는지 배포 전에 판단하는 테스트 ( 실패하면 문제 해결하고 배포해야 함 )
58+
59+
**참고용 테스트** : KPI를 파악하고 지속적으로 모니터링하는데 사용 ( 배포에 큰 영향을 주지 않음 )
60+
61+
이 두 테스트 그룹을 통합으로 테스트하자니, 참고용 테스트는 배포에 중요한 영향을 끼치지 않음에도 불구하고 시간을 차지함..!
62+
63+
배포에 직접적인 영향을 미치는 테스트와 그렇지 않은 테스트를 구분하여 두 가지 파이프라인으로 운영해야한다.
64+
65+
**배포 파이프라인** : 배포를 결정하는 테스트에 사용 ( 통과하면 코드를 자동으로 프로덕션에 배포해도 괜찮다. 이 테스트의 실행결과는 빠르게 알려져야 함 )
66+
67+
**탐색 파이프라인** : 참고용 테스트에 사용 ( 배포 파이프라인과 병렬로 실행. 배포 기준에 포함 되지 않음. 테스트가 오래 걸려도 무방 )
68+
69+
테스트 결과를 신속하게 얻는 것은 중요하기 때문에 파이프라인의 각 테스트 계층을 병렬로 실행하는 것이 일반적이다.
70+
71+
배포 파이프라인은 특정 시간에 실행하기보다 코드가 커밋될 때마다 실행하면 좋다. 훨씬 세밀하고 빠르게 결과를 받을 수 있기 때문에!

0 commit comments

Comments
 (0)