FIRST 원칙
안녕하세요 여러분, 오늘은 소프트웨어 테스트 분야에서 중요한 원칙 중 하나인 FIRST원칙에 대해 알아보도록 하겠습니다. 이 원칙은 테스트 과정을 더 효과적이고 체계적으로 수행할 수 있도록 도와주며, 전반적인 테스트의 품질을 높이는 데 기여합니다.
- [F]ast
- [I]solated
- [R]epeatable
- [S]elf-validating
- [T]imely
Fast (빠른)
단위 테스트는 빨라야 합니다. 그렇지 않으면 개발 / 배포 시간이 느려지고 통과 또는 실패하는 데 더 오래 걸립니다. 일반적으로 복잡한 시스템에는 수천 개의 단위 테스트가 있습니다. 예를 들어 2000개의 단위 테스트가 있습니다. 평균 단위 테스트를 실행하는 데 200밀리초가 걸리는 경우(빠른 것으로 간주됨) 전체 제품군을 실행하는 데 6.5분이 걸립니다.
이 단계에서 6.5분은 길지 않은 것 같지만 하루에 여러 번 개발 시스템에서 실행하면 생산적인 시간이 많이 소모될 것입니다. 그리고 새로운 기능이 응용 프로그램에 추가될 때 이러한 테스트 수가 증가하면 테스트 실행 시간이 더 늘어날 것이라고 예상할 수 있습니다.
빠른 피드백을 제공하지 못하면 유닛테스트의 효과가 줄어듭니다.
데이터베이스, 파일 및 네트워크 호출과 같은 외부의 필요성을 처리해야 하는 경우 테스트를 빠르게 만들려면 목업 데이터를 사용하여 이러한 종속성을 생성하지 않아야 합니다 .
Isolated (독립적인)
독립적인 테스트란, 테스트 케이스가 서로 영향을 주지 않고 개별적으로 수행되는 것을 말합니다. 이를 통해 테스트 결과의 정확성을 보장하며, 테스트를 효율적으로 관리할 수 있습니다. 테스트 케이스를 작성할 때는 테스트의 독립성을 유지하기 위해 각 테스트 케이스가 독립된 환경에서 실행될 수 있도록 고려해야 합니다.
독립적인 테스트를 만들면 소량의 동작에만 테스트를 집중하기가 쉽습니다. 이 테스트가 실패하면 무엇이 잘못되었는지 정확히 알 수 있습니다. 코드 자체를 디버깅할 필요가 없습니다.
SOLID Class-Design Principles 의 SRP(Single Responsibility Principle)는 클래스가 작고 단일 목적이어야 한다고 말합니다. 이것은 테스트에도 적용할 수 있습니다. 여러 가지 이유로 테스트 방법 중 하나가 중단될 수 있는 경우 별도의 테스트로 분할하는 것이 좋습니다.
Repeatable (반복 가능한)
반복 가능한 테스트는 실행할 때마다 동일한 결과를 생성하는 테스트입니다. 반복 가능한 테스트를 수행하려면 직접 제어할 수 없는 외부 환경에서 테스트를 격리해야 합니다. 이러한 경우 목업 데이터를 사용해야 됩니다.
테스트를 반복할 수 없다면 정확하지 않은 결과를 얻고 불필요한 이슈를 확인하게 될것입니다.
Self-validating (자체 검증 가능한)
테스트는 모두 자동화 되어야 한다는 뜻입니다. 결과에 대해서 주관적인 해석이 필요한 경우 잘못된 테스트 입니다.
테스트를 직접 정렬하거나 결과를 직접 확인해야 되는 것은 불필요한 프로세스 입니다.
Timely (시기 적절한)
언제나 테스트를 작성할수 있습니다.
단위 테스트를 많이 할수록 해당 단위 테스트를 수행하기 전에 더 작은 코드 덩어리를 작성하는 것이 더 유용하다는 것을 알게 될 것입니다. 첫째, 테스트를 작성하는 것이 더 쉬울 것이고, 둘째, 주변 코드에서 나머지 동작을 구체화하면 테스트가 즉시 성과를 거둘 것입니다.
결론
FIRST 원칙을 따르면 소프트웨어 테스트의 신뢰성, 독립성, 확장성, 투명성이 향상되어 전반적인 테스트의 품질과 효율성이 높아집니다. 따라서 소프트웨어 테스트를 계획하고 수행할 때 이 원칙을 염두에 두고 작업을 진행해야 합니다.
FIRST 원칙은 소프트웨어 테스트의 중요한 지침으로, 테스트를 더 신뢰성 있게, 독립적으로, 확장 가능하게, 투명하게 수행할 수 있도록 돕습니다. 이 원칙을 따르면 프로젝트의 전반적인 테스트 품질이 높아지며, 테스트 과정이 더욱 체계적이고 효율적으로 수행됩니다.
'개발관련' 카테고리의 다른 글
맥북에서 디아블로4 하는 방법 feat Apple Game Porting Toolkit (0) | 2023.06.14 |
---|---|
HTTP/2: 무엇이며 왜 중요한가? (0) | 2023.05.17 |
aws fargate 아마존 파게이트 뜻 총정리 (0) | 2022.09.22 |
tsconfig, jsconfig 절대 경로와 webpack alias 설정 관련 해결 방법 (0) | 2022.02.03 |
개츠비 gatsby.js AWS S3에 업로드해서 정적 사이트 호스팅 하기 (0) | 2021.10.23 |