[데일리과제] 50문 50답 -4
Q.
- FBV와 CBV는 각각 무엇이며, 어떤 차이가 있습니까?
- 테스트코드를 작성하는 이유는 무엇이며 어떤 장점이 있습니까?
A.FBV와 CBV는 각각 무엇이며, 어떤 차이가 있습니까?
[Key point]
-view
-Function(함수)
-Class(클래스)
-데코레이터
-제네릭
-상속
[레퍼런스]
https://leffept.tistory.com/318
[Django]FBV vs CBV (함수형 뷰 vs 클래스형 뷰)
Django는 MTV(Model - Template - View)패턴을 기반으로 하는 프레임 워크이다. 여기에서 V에 해당하는 view를 작성하는 방법에는 두 가지가 존재한다. 함수형 뷰 (Function based view) 클래스형 뷰 (Class based view)
leffept.tistory.com
FBV는 Function based view의 약자이며 함수 형식의 view를 의미합니다.
CBV는 Class based view의 약자이며 클래스 형식의 view를 의미합니다.
view의 기능을 기준으로 둘을 비교했을 때, 실질적인 기능의 차이는 없지만, 내부적으로 살펴본다면, 사용할 수 있는 기술이나, 코드를 직접 보고 다루는 개발자의 입장에서는 차이가 발생합니다.
먼저 FBV는 직관적입니다. 사용할 메서드를 선택하고 어떻게 작동하는지 한 눈에 파악할 수 있습니다. 이런 직관성 때문에 개발을 하는 개발자에 따라 FBV를 사용한다면 개발이 더욱 편해질 수 있습니다.
CBV는 클래스의 대표적인 특징처럼 상속을 통해 코드의 재사용이 편합니다. 개발자가 제네릭을 사용할 줄 안다면, 정말 간단히 기능을 구현할 수 있으며 def를 통해 http 메서드를 불러와 하나의 class 아래에 다양한 기능을 구현할 수 있습니다.
FBV의 단점으로는 코드의 재사용이나 확장이 어렵다는 점이 있습니다. 직관적인 코드로 인하여 코드의 유연성이 부족하기 때문입니다.
CBV의 단점으로는 상속으로 인하여 관계가 복잡해지거나, 협업 시 동료가 제네릭을 경험하지 못했다면, 다소 코드를 이해하기 어렵다는 단점이 있습니다.
FBV, CBV 모두 장단점이 있습니다, 레퍼런스에서는 하나의 프로젝트에 두 방법을 적절히 사용하는 것도 나쁘지 않을 것이라는 견해를 보여주지만, 저의 생각에는 프로젝트 시작 전 팀 회의를 통해 어떤 기술을 사용하여 프로젝트를 진행하는지 정하는 것이 더 좋을 거 같습니다.
A.테스트코드를 작성하는 이유는 무엇이며 어떤 장점이 있습니까?
[Key point]
-신뢰도
-복잡도
-안전성
-Pesticide paradox(살충제 패러독스)
[레퍼런스]
[DRF] DRF 테스트 코드 작성하기
DRF로 테스트코드 작성하기
velog.io
https://www.django-rest-framework.org/api-guide/testing/
Testing - Django REST framework
www.django-rest-framework.org
https://softwaretestingreference.tistory.com/197
[Episode 2/2] 소프트웨어 테스팅의 7가지 원리에 대해 설명해 줄 수 있나요?
목차 질문 소프트웨어 테스팅의 7가지 원리에 대해서 설명해 줄 수 있나요? ISTQB 버전 ISTQB Syllabus 2018 답변 본 글은 「소프트웨어 테스팅의 7가지 원리」에 대해 설명하지만, 글이 너무 길어져 2개
softwaretestingreference.tistory.com
테스트 코드를 작성하는 이유는 코드 안전성을 높이고 코드 파악이 쉽기 때문입니다.
서버를 실행시켜 데이터를 넣고 요청과 응답을 통해 해당 기능이 잘 작동하는지 확인하는 것은 테스트 코드를 사용하는 것 보다 시간자원이 많이 사용됩니다.
또한 테스트코드를 사용하지 않고 개발자가 손수 테스트를 한다면, 살충제 패러독스와 같은 문제가 발생할 수 있습니다.
이러한 문제를 방지할 수 있는 것이 개발 중 기능이 완성되면 테스트코드를 작성하여 테스트를 진행하는 것입니다.