JavaListSystem.properties() › GuavaRateLimiterExample › weblogic › csv › MavenDependency관리 › Sapient AI Test Coder Review as a Spock User - 20231015(Su)
Code Testing의 목적 #
- Defects Preventing
- 요구사항 검증
- Production Quality 유지
- Product에 대한 자신감을 높여줌
- 요구사항 검증
- Production Quality 유지
- Product에 대한 자신감을 높여줌
- 비지니스 변경에 대해 빠르게 대응할 수 있도록 함
- 리팩토링에 들어가는 부담을 크게 줄여주어 production code의 구조와 가독성을 개선시켜 나가는데 도움을 줌
- Production code에 대한 설명기능
- 리팩토링에 들어가는 부담을 크게 줄여주어 production code의 구조와 가독성을 개선시켜 나가는데 도움을 줌
- code를 읽는 사람들이 더 쉽고 자세히 이해하는데 도움을 줌
- developer, manager, stakeholder
- developer, manager, stakeholder
Spock을 사용하는 이유 #
- 간결한 코드와 높은 가독성
- BDD Testing 친화적
- test code뿐 아니라 실행 결과의 가독성이 높아 maintainability가 높다
- test code역시 production code와 마찬가지로 한번 만들고 계속 사용하는 코드가 아니라
- 비지니스 변경과 함께 항상 변경되고 유지보수해야하는 중요한 자산이자 부채이기 때문에
- 가독성을 잘 유지하는것이 매우 중요
- test code역시 production code와 마찬가지로 한번 만들고 계속 사용하는 코드가 아니라
- 비지니스 변경과 함께 항상 변경되고 유지보수해야하는 중요한 자산이자 부채이기 때문에
- 가독성을 잘 유지하는것이 매우 중요
- 시나리오 기반 읽기 쉬운 테스트 작성 가능
- 개발자 뿐만 아니라 코드를 읽는 사람들이 좀 더 쉽게 요구사항과 기능을 이해할 수 있음
- TDD 친화적
- 개발자 뿐만 아니라 코드를 읽는 사람들이 좀 더 쉽게 요구사항과 기능을 이해할 수 있음
- TDD 친화적
- Data-drive Testing 친화적
- easy mocking
- data table은 직관적이고 간결하게 많은 case를 표현하고 테스트할 수 있게 해줌
- Interaction-based Testing 친화적
- State-based testing과 대비
- private method, class에 대해 test code에서 직접 access 가능
- easy mocking
Sapient-AI를 쓰게 될때 얻는 점과 잃는 점 #
- 혜택
- 매우 단순한 코드에 대한 단기간의 커버리지를 올릴 수 있음
- 단점
- 코드가독성이 낮아 유지보수 편의성이 매우 낮아 장기적으로는 생산성에 나쁜 영향을 줌
- 자동 생성된 코드를 개발자가 이해하고 제대로 동작하도록 수정하는데 많은 시간이 소요됨
- Kotlin, Scala, Reactor를 사용하는 경우 사용 불가능
- State based test위주로만 코드가 만들어짐
- BDD Testing, Data-driven Testing, Interaction-based Testing 지원하지 않음
- TDD와 맞지 않음
- private method 및 class를 지원하지 않아 production code를 수정해야 하는 경우도 있음
- 자동 생성된 코드를 개발자가 이해하고 제대로 동작하도록 수정하는데 많은 시간이 소요됨
- Kotlin, Scala, Reactor를 사용하는 경우 사용 불가능
- State based test위주로만 코드가 만들어짐
- BDD Testing, Data-driven Testing, Interaction-based Testing 지원하지 않음
- TDD와 맞지 않음
- private method 및 class를 지원하지 않아 production code를 수정해야 하는 경우도 있음