<aside>
<img src="https://s3-us-west-2.amazonaws.com/secure.notion-static.com/57078542-8f42-48aa-8b05-305907951923/def.png" alt="https://s3-us-west-2.amazonaws.com/secure.notion-static.com/57078542-8f42-48aa-8b05-305907951923/def.png" width="40px" /> The *test pyramid*
is a way of thinking about how different kinds of automated tests should be used to create a balanced portfolio. Its essential point is that you should have many more low-level UnitTests
than high level BroadStackTests
running through a GUI. - Martin Fowler
</aside>
과거에 테스트 자동화는 ui를 통해 이루어지는 interaction을 체크하는 것을 의미하는 경우가 많았다. 그러한 테스트는 초반에는 그리 문제도 되지 않고 프로그래밍을 전혀 할줄 모르는 사람도 테스트를 수행할 수 있다.
조금만 지나면 이런 테스트는 망한다. ui를 통한 테스트는 느리고 cost가 높다. 이런 테스트는 “headless” mode로 돌릴 수 없다. script로 자동 검사하거나 배포 파이프라인의 중간에 삽입될 수 없다.
요약하자면 ene-to-end로 동작하는 UI test는
단위 테스트는
Unit | End-to-End | |
---|---|---|
Fast | 🐰 | 🐢 |
Reliable | ⬆️ | 👎 |
Isolates Failure | ⬆️ | 👎 |
Simulates a Real User | 👎 | ⬆️ |