일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- chainlink 설명
- ambiguous function description
- 오블완
- 러스트 기초
- 러스트 기초 학습
- 스마트 컨트렉트 함수이름 중복
- 머신러닝기초
- 프록시배포구조
- nest.js설명
- 체인의정석
- vue기초
- multicall
- git rebase
- 러스트기초
- 컨트렉트 배포 자동화
- ethers type
- 스마트컨트렉트 함수이름 중복 호출
- 스마트컨트렉트테스트
- ethers typescript
- 스마트컨트렉트 예약어 함수이름 중복
- Vue.js
- ethers v6
- rust 기초
- ethers websocket
- Vue
- 컨트렉트 동일한 함수이름 호출
- 스마트컨트렉트프록시
- ethers
- SBT표준
- 티스토리챌린지
- Today
- Total
체인의정석
소프트웨어 구현 방법론 - 단위 테스트 본문
리팩토링 이후에는 구조가 바뀌어도 원래대로 동작하는지에 대한 테스트가 필요하다.
이러한 테스트기능성이 유지되는지 테스트하는 환경을 Safety net 이라고 하는데, 회사에서 개발할때 local,test,dev환경으로 나누어 테스트하고 그 전에 따로 내가 개발한 코드를 테스트래서 옮길때 이러한 실제 프로덕트에 올라가기전의 테스트 환경을 saftey net으로 이해하였다.
단위테스트는 각각의 모듈에 대한 작동 여부를 체크하는 것으로, 코드를 구현한 개발자가 직접 하는 것이라고 한다. 자신이 개발한 코드를 모듈별로 작동하는지에 대해 검토하고 남들에게 검토를 받는 것이다. 단위 테스트를 하게 되면 버그의 재발생을 예방할 수 있으며 모듈의 문서화가 가능하다. 어떤 입력값을 받았을 때 어떤 산출물이 나오는지를 문서로 정의해 두는 것이다. 소프트웨어는 무형의 자산이기 때문에 문서화로 산출물을 내는 것 또한 중요한 과정이다.
단위테스트를 하면 디버깅 시간도 단축되며 리팩토링 후에 정확한 동작도 보장하게 된다.
단위 테스트는 다음의 테스트 코드의 구성을 따른다.
Set up : 테스트를 수행하기 위한 환경과 조건을 설정한다.
Stimulus : 테스트를 시작하는 자극이나 이벤트를 정한다.
Verify : 주어진 조건에 의해 기능을 검증한다.
Teardown : Set up에서 설정한 환경이나 조건을 테스트 실행 이전 상태로 복귀시킨다.
테스트 함수 이름 짓기
테스트를 할때는 테스트 이름을 클래스에 포함하여 테스트를 시킨다.
또한 개대되는 출력
입력값의 중요 특징 등을 포함하여 클래스의 이름으로 만든다.
테스트 Suite
환경에 따라 테스트를 그룹 지어서 실행하는 경우 이를 테스트 suite이라고 한다.
단위 테스트 Framework의 사용
단위 테스트 프레임워크를 사용하여 테스트를 할 수 있는데 assert 를 써서 테스트 하는것을 도와주는 프레임워크를 xUnit Framework라고 한다. 자바의 경우에는 Junit Framework라고 한다.
Fixture : 테스트를 수행하려는 목적으로 만든 데이터와 객체이다. 테스트가 진행되는 동안 공통의 객체를 초기화하여 할당하고 해체를 한다.
픽스쳐 단위로 묶어서 테스트를 수행하게 된다.
테스트에서 가장 많이 쓰이는 assert Method로는
assertEquals, assertFalse, assertTrue, assertNull, assertNotNull, assertSame 등이 있다.
TDD
TDD에 대한 중요성이 강조되다 보니 나도 TDD에 대해 공부하고 TDD방식으로 개발을 해보고 싶었는데 TDD란 결국 요구사항을 모두 작성한 후 테스트 조건이 먼저 나오면 그 테스트 조건에 맞추어서 코딩을 하는 방식이였다. 기존에 만들고 테스트하는 단계에서 거꾸로 가는 것이다.
TDD의 단계는
테스트 추가 -> 테스트 실패되는것을 확인 -> 코드 작성 -> 다시 테스트 -> 리팩토링 -> 테스트 추가 의 반복으로 이루어진다.
TDD대로 개발을 하려면 개발 요구사항이 미리 정해져야 할 것이고 기획에 대한 부분이 자동적으로 더 세밀하게 들어갈 것 같아 이번 프로젝트에 되도록이면 TDD방식으로 개발을 진행해 보려고 한다.
'개발' 카테고리의 다른 글
서버의 구분과 프론트 엔드 프레임워크 WAS, DB, 웹서버의 구분과 차이, 프론트엔드 프레임워크가 나온 이유 (0) | 2020.06.19 |
---|---|
소프트웨어 구현 방법론 - Software Inspection & peer review (0) | 2020.06.14 |
소프트웨어 구현 방법론 - 코드 리팩토링의 방법들 (0) | 2020.06.14 |
유튜브 layzy load 시키기 동영상 lazyload (0) | 2020.06.11 |
PostqreSQL사용하기 (0) | 2020.06.02 |