아키텍처 설계시 고려해야 하는 것이 Solid라면
테스트 작성시 고려해야 하는 것은 뭔지 궁금해서 준비했습니다.
Seven Testing Principles는 ISTQB (International Software Testing Qualifications Board)에서 제안한 7가지 테스트 원칙입니다.
테스팅은 결함의 존재를 보여주는 것이다
테스트는 시스템에 내재되어있는 결함을 찾아내는 것이 주 목적입니다.
완벽한 테스트는 불가능하다
모든 시나리오 및 입력에 대해 테스트를 수행하는 것은 불가능합니다.
테스트 구성은 가능한 빠르게 시작한다.
개발 초기에 테스트를 시작함으로써 결함을 초기에 발견하고 수정할 수 있습니다.
결함은 특정한 부분에 집중되어 발생하는 경향이 있습니다.
한 번 결함이 발견되면 유사한 부분에서 더 많은 결함을 찾을 가능성이 높습니다.
살충제 역설 - 비슷한 테스트가 반복되면 새로운 결함을 발견할 수 없다
새로운 결함을 찾기 위해서는 다양한 테스트 접근 방식이 필요합니다.
오류 부재의 궤변 - 사용되지 않는 시스템이나 사용자의 기대에 부응하지 않는 기능의 결함을 찾고 수정하는 것은 의미가 없다
불필요한 기능에 대한 테스트는 시간과 비용을 낭비할 뿐이며, 중요한 결함을 놓칠 수 있습니다.
F.I.R.S.T Principles는 Clean Code에서 소개한 단위 테스트에 관한 원칙들을 F.I.R.S.T라는 이름으로 정리한 것입니다.
단위 테스트는 실행 속도가 빨라야 합니다.
테스트는 다른 테스트 케이스나 외부 요소에 의존하지 않고 독립적으로 실행될 수 있어야 합니다.
각 테스트 케이스는 다른 테스트의 결과에 영향을 받지 않고, 어떤 순서로 실행되더라도 동일한 결과를 보장해야 합니다.
테스트는 실행할 때마다 항상 동일한 결과를 만들어내야 합니다.
테스트 결과는 성공 또는 실패로 명확하게 나뉘어져야 합니다.
결과를 해석하고 판단하는 데 추가적인 인간의 개입이 필요하지 않아야 합니다.
테스트를 작성하는 적절한 시점은 프로덕션 코드를 구현하고 있는 동안에 테스트 코드를 작성하는 것입니다.
원칙들을 하나하나 읽어보면 너무나도 당연한 얘기 뿐이죠?
만약 테스트 코드를 작성중에 맞게 작성 중인지 확신이 안든다면
해당 원칙들을 참고하여 테스트를 작성하면 도움이 될거라고 생각합니다.
https://astqb.org/istqb-foundation-level-seven-testing-principles/
https://cliearl.github.io/posts/android/android-test-basic/