다양한 테스트들이 존재하는 이유가 무엇일까?
software test - 제품 or 서비스의 품질을 확인한다.
소프트웨어의 버그를 찾는다.
제품이 예상하는 대로 동작하는지 확인.
(함수, 특정한 기능, ui, 성능, api스펙)
code -> (expectation) -> Test
requirements - (함수, 특정한 기능, ui, 성능, api스펙)
요구사항에 맞게 테스트를 작성한다!
예전에 검증팀에서(QA) 검증했다.
단점 => 하나하나 검증 시간이 오래 걸림
코드는 다 짰지만 QA과정에서 병목현상이 일어났다..
해결 => 요즘은 개발하면서 automated QA를 진행한다.
장점 => 속도빠르고,쉽게 작성, 높은 커버리지, 더 꼼꼼하게 가능
제품이 원하는대로 동작하는지 확인하는 수단이다..!
1. 기능이 정상 작동하는지 확인한다.
2. 요구사항에 만족
3. 이슈에 대한 예측
4. 버그를 빠르게 발견
5. 자신감 있게 리팩토링이 가능
6. 손쉬운 유지 보수
7. 코드의 품질도 향상
8. 코드간 의존성을 낮춤
9. 좋은 문서화가 가능
10. 시간 절약 가능
정말 많은 장점이 있는데 안쓸이유가 없다고 생각한다..!
(https://velog.velcdn.com/images/weihyuk39/post/a481fcdf-372b-4d63-b690-7e4309716c46/image.png)
Unit Test => 단위 테스트 (함수,모듈,클래스) 자동차로 예로 들면 바퀴!
Intergration Test => 통합 테스트 (모듈들, 클래스들 상호작용을 잘하나)
바퀴 네개를 달고 엔진을 넣엇을때 잘 운행하나확인
E2E Test => ui테스트, 사용자테스트 자동차 전체, 사용자가 운전했을때
etc)
contract test
a/b test
stress test ..
Test-driven development
테스트 주도 개발
개발 전 테스트 코드를 먼저 작성한다.
순서
1. 테스트 코드 작성
2. 실험 돌리면 당연히 코드가 없어서 fail
3. 테스트 코드를 통과할 수 있을 정도만 코드를 다시 작성.
TDD WHY?
모든 요구 사항에 대해서 점검 => 설계 => TDD
필수는 아니지만, 명백한 사실은 사용자에게 베포하는 코드라면 작성하는게 좋다.
요구사항이 명확할때, 비지니스 로직, 협업시 명세서 역할, 설계에 대한 고민이 필요할 때 사용을 한다.
참고 자료 :CI/CD 개념 유튜브 영상: https://youtu.be/0Emq5FypiMM
지속적인 통합 CI
지속적인 베포 CD
TDD
CI/CD의 연관관계