Test작성시 고려해야 할 중요한 원칙들에 대하여

윤호이·2023년 11월 19일
0

Test

목록 보기
8/13
post-thumbnail

서론

아키텍처 설계시 고려해야 하는 것이 Solid라면

테스트 작성시 고려해야 하는 것은 뭔지 궁금해서 준비했습니다.

Seven Testing Principles

Seven Testing Principles는 ISTQB (International Software Testing Qualifications Board)에서 제안한 7가지 테스트 원칙입니다.

Testing shows the presence of defects, not their absence

테스팅은 결함의 존재를 보여주는 것이다

테스트는 시스템에 내재되어있는 결함을 찾아내는 것이 주 목적입니다.

Exhaustive testing is impossible

완벽한 테스트는 불가능하다

모든 시나리오 및 입력에 대해 테스트를 수행하는 것은 불가능합니다.

Early testing saves time and money

테스트 구성은 가능한 빠르게 시작한다.

개발 초기에 테스트를 시작함으로써 결함을 초기에 발견하고 수정할 수 있습니다.

Defects cluster together

결함은 특정한 부분에 집중되어 발생하는 경향이 있습니다.

한 번 결함이 발견되면 유사한 부분에서 더 많은 결함을 찾을 가능성이 높습니다.

Beware of the pesticide paradox

살충제 역설 - 비슷한 테스트가 반복되면 새로운 결함을 발견할 수 없다

새로운 결함을 찾기 위해서는 다양한 테스트 접근 방식이 필요합니다.

Absence-of-errors is a fallacy

오류 부재의 궤변 - 사용되지 않는 시스템이나 사용자의 기대에 부응하지 않는 기능의 결함을 찾고 수정하는 것은 의미가 없다

불필요한 기능에 대한 테스트는 시간과 비용을 낭비할 뿐이며, 중요한 결함을 놓칠 수 있습니다.

F.I.R.S.T Principles

F.I.R.S.T Principles는 Clean Code에서 소개한 단위 테스트에 관한 원칙들을 F.I.R.S.T라는 이름으로 정리한 것입니다.

Fast

단위 테스트는 실행 속도가 빨라야 합니다.

Isolated

테스트는 다른 테스트 케이스나 외부 요소에 의존하지 않고 독립적으로 실행될 수 있어야 합니다.

각 테스트 케이스는 다른 테스트의 결과에 영향을 받지 않고, 어떤 순서로 실행되더라도 동일한 결과를 보장해야 합니다.

Repeatable

테스트는 실행할 때마다 항상 동일한 결과를 만들어내야 합니다.

Self-validating

테스트 결과는 성공 또는 실패로 명확하게 나뉘어져야 합니다.

결과를 해석하고 판단하는 데 추가적인 인간의 개입이 필요하지 않아야 합니다.

Timely

테스트를 작성하는 적절한 시점은 프로덕션 코드를 구현하고 있는 동안에 테스트 코드를 작성하는 것입니다.

하고 싶은 말

원칙들을 하나하나 읽어보면 너무나도 당연한 얘기 뿐이죠?

만약 테스트 코드를 작성중에 맞게 작성 중인지 확신이 안든다면

해당 원칙들을 참고하여 테스트를 작성하면 도움이 될거라고 생각합니다.

참조

https://astqb.org/istqb-foundation-level-seven-testing-principles/
https://cliearl.github.io/posts/android/android-test-basic/

profile
열정은 내 삶의 방식, 꾸준함은 내 삶의 증명

0개의 댓글