웹 백엔드 시스템을 서버 개발을 하면서 항상 궁금했던 내용이 있었다.
- 내가 작성한 코드가 에러 없이 정확하게 동작을 하는지 ?
- 그리고 그것을 어떻게 검증하는지 ?
- 생각하지 못한 예외 케이스가 있는지 ?
물론 버그 없는 소프트웨어는 없다고 생각을 한다. 그래도 내가 작성한 코드에 대해서 테스트 케이스를 생각해보고 검증해보는 작업이 개발자로써 꼭 필요하다고 생각이 된다.
Node 에는 Mocha 라는 자신이 작성한 코드를 테스트 해볼수 있게 도와줄수있는 라이브러리가 있습니다.
Mocha 를 사용하기 위해서는 라이브러리를 설치해야합니다.
npm i mocha --save-dev
라이브러리를 설치한뒤 테스트로 작성한 함수를 한번 검증을 해보자
// test.js
function easyPwdCheck(password) {
return password === '1234' ? true : false;
}
module.exports = {
easyPwdCheck: easyPwdCheck,
}
test.js 라는 파일을 만들고 함수를 위와 같이 작성해 보았습니다. password 가 1234 이면 true를 리턴하고 아니면 false 를 리턴을 해주는 easyPwdCheck 함수를 작성한뒤 module.exports 로 함수를 모듈화 하였습니다.
그리고 이 함수를 검증해볼수 있는 test.spec.js 파일 을 생성해보겠습니다.
// test.spec.js
const { easyPwdCheck } = require('./test');
const assert = require('assert');
describe('test.js 에서 easyPwdCheck() 함수에 대해서', () => {
it('패스워드 1234를 체크합니다.', (done) => {
const result = easyPwdCheck('1234');
assert.equal(result, false);
done();
});
});
describe 로 해당 테스트를 묘사한뒤 it으로 테스트 검증을 해봅니다. 위 코드를 보시면 result 에는 당연히 true 라는 내용을 유추를 할수 있습니다. 검증을 통과하지 못하게 false를 입력한뒤 assert() 이라는 node 에 내장되어 있는 assert 라이브러리를 가지고와 result 를 검정을 해보겠습니다.
그러면 위와 같이 기대값과 다르다고 해서 케이스 fail 이 출력이 되었습니다. 그렇다면 다시 통과를 해보기 위해서 assert 기대값에 true 넣고 검증을 해보겠습니다.
true 로 변경을 한뒤에는 easyPwdCheck() 함수가 작성한 테스트 케이스를 통과 되는것을 확인해볼수 있습니다.
소프트웨어를 개발하면서 모든 기능을 다 테스트 케이스를 만들기에는 시간도 많이 소요되고 작업량도 많아지게 됩니다. 하지만 테스트를 꼭 해야하는 이유는 자신이 생각하지 못하는 예외된 케이스의 처리나 유지보수,새로운 기능이 추가 될떄 영향받는 기능들의 테스트가 동일하게 통과가 되는지 검증 등이 필요하기 떄문에 꼭 필요하다고 생각을 합니다.
'개발이야기 > Node.js' 카테고리의 다른 글
macOS 에서 docker 로 redis 설치후 node.js 로 연동해기 (0) | 2021.04.18 |
---|---|
Static Factory Method Pattern (0) | 2021.04.13 |
Singleton Pattern (0) | 2021.04.12 |
Promise.all 과 Promise.race (0) | 2021.04.11 |
File_System (0) | 2021.04.11 |