Code Testing의 목적 #

- Defects Preventing

- 요구사항 검증

- Production Quality 유지

- Product에 대한 자신감을 높여줌

- 비지니스 변경에 대해 빠르게 대응할 수 있도록 함
- 리팩토링에 들어가는 부담을 크게 줄여주어 production code의 구조와 가독성을 개선시켜 나가는데 도움을 줌

- Production code에 대한 설명기능
- code를 읽는 사람들이 더 쉽고 자세히 이해하는데 도움을 줌

- developer, manager, stakeholder


Spock을 사용하는 이유 #

- 간결한 코드와 높은 가독성
- test code뿐 아니라 실행 결과의 가독성이 높아 maintainability가 높다

- test code역시 production code와 마찬가지로 한번 만들고 계속 사용하는 코드가 아니라

- 비지니스 변경과 함께 항상 변경되고 유지보수해야하는 중요한 자산이자 부채이기 때문에

- 가독성을 잘 유지하는것이 매우 중요

- BDD Testing 친화적

- 시나리오 기반 읽기 쉬운 테스트 작성 가능

- 개발자 뿐만 아니라 코드를 읽는 사람들이 좀 더 쉽게 요구사항과 기능을 이해할 수 있음

- TDD 친화적

- Data-drive Testing 친화적

- 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를 수정해야 하는 경우도 있음


1.png

2.png

3.png

4.png
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2023-10-15 23:59:14
Processing time 0.0116 sec