일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Kotlin
- Room
- Observable
- 자료구조
- 깃
- 코틀린
- git
- compose
- 컴포즈
- 제한함수
- ViewModel
- dagger2
- 단위테스트
- 공격적 프로그래밍
- Di
- Python
- 파이썬
- 테스트의 장점
- MVVM
- 안정성
- 안드로이드 디자인패턴
- 디자인패턴
- rxjava
- 코딩테스트
- mock
- UnitTest
- 안드로이드
- Android
- 유닛테스트
- Jetpack
Archives
- Today
- Total
세상을 바꾸는 개발자
좋은 단위 테스트의 4대요소(회귀방지, 리팩터링 내성, 빠른 피드백, 유지보수성) 본문
회귀방지
- 회귀는 소프트웨어 버그이다(기능이 의도한대로 동작x)
- 단순한 코드를 테스트하는 것은 가치가 거의 없다
- 회귀 방지 지표를 극대화 하려면 테스트가 가능한 한 많은 코드를 실행하는 것을 목표로 해야한다.
리팩터링 내성
- 테스트에서 얼마나 많이 거짓양성이 발생하는지 살펴봐야하한다(적을 수록 좋음)(거짓음성: 테스트는 잘 동작하지만 기능은 실패)
- (거짓양성: 기능은 잘 동작하지만 테스트는 실패)
- 테스트를 실패로 변경하지않고 코드를 리팩터링 할 수 있는지에 대한 척도이다.SUT의 구현 세부 사항과 테스트간의 결합도를 낮추는 것뿐이다 즉, 코드의 내부 작업과 테스트 사이를 가능 한 멀리 떨어뜨리고 최종결과를 목표로 하는 것.
- → 테스트를 깨지지않게 하고 리팩터링 내성을 높이는 방법
회귀방지와 리팩터링 내성의 관계
- 테스트 정확도의 극대화
- 테스트 정확도 = 신호(발견된 버그 수) / 소음(허위 경보 발생 수)
빠른피드백
- 테스트가 얼마나 빨리 샐행되는지에 대한 척도
이상적인 테스트란
- 회귀방지, 리팩터링내성, 빠른피드백은 상호 배타적
- 곱셈법칙(하나라도 0이 되면 의미없음)
- 모두 완벽한 점수 얻기 힘듬
→ 세가지 특성 모두를 양보할 만큼 서로 조금씩 인정하는 것이 최선의 전략
(하지만 리팩터링 내성읠 최대한 많이 갖는 것을 목표로 하자!!)
테스트 피라미드(단위 →통합 →엔드 투 테스트)
블랙박스테스트
- 내부구조몰라도 기능검사가능
- 애플리케이션이 어떻게가 아니라 무엇을 해야하는지 중심
- 회귀방지 : 나쁨 , 리팩터링내성 : 좋음
화이트박스 테스트
- 내부 작업을 검증하는 테스트 방법
- 테스트는 요구 사항이나 명세가 아닌 소스 코드에서 파생
- 회귀방지 : 좋음 , 리팩터링내성 : 나쁨
테스트를 작성할때는 블랙박스 테스트 이용 하자!
테스트를 분석할때는 화이트박스 테스트 이용 하자!
혼자 단위테스트라는 책을 읽으면서 생각에 흐름대로 적은 글입니다..
참고한 책은 단위 테스트라는 책입니다. ( http://www.yes24.com/Product/Goods/104084175 )
'기타 > UnitTest' 카테고리의 다른 글
출력기반, 상태기반, 통신기반의 테스트 스타일 (0) | 2022.04.25 |
---|---|
목은 훌륭한 도구? vs 사용하면 안 되는 것? (0) | 2022.04.24 |
단위 테스트를 가능한 한 읽기 쉽게 만드는 방법 (1) | 2022.03.06 |
단위 테스트란 무엇일까? (런던파 vs 고전파) (0) | 2022.03.04 |
유닛테스트의 효과 및 목표 (0) | 2022.03.02 |
Comments