이번주 목요일날 진행한 멘토링에서
멘토님에게 질문을 받았는데 아무말도 하지 못햇다.
너무 부끄러웠다. 🤦♀️
분명히 공부했다고 생각했는데 나는 개념정리도 제대로 하지 않고
함수형 프로그래밍을 공부하고 코드를 짜고있었다.
이번을 계기로 애매하게 알았던, 사실 몰랐던 개념들을 정리해보고자 한다. 😉
오늘은 멘토링때 대답하지 못한 validation과 verification의 차이에 대해 알아보자!
정보처리기사 공부하면서 암기했던 부분인데 까먹었다..하하ㅏ하..나 hoxy 시험만 보면 모든것을 잊어버리는 병에 걸린건가..
오랜만에 정보처리기사 책을 펼쳐 개념들을 다시 확인해보았다.
validation(검사) : 사용자의 입장에서 개발한 소프트웨어가 고객의 요구사항에 맞게 구현되었는지를 확인하는 것이다.
verification(검증) : 개발자의 입장에서 개발한 소프트웨어가 명세서에 맞게 만들어졌는지 점검하는 것이다.
사실 이러한 개념으로는 정확히 이해가 가지 않기 때문에
조금 더 쉬운 설명들로 이해해보자!
검사
하고 테스트
하는 동적인 방법
이다. 최종적으로 만든 결과물
이 잘 나왔는지를 말한다. 코드실행을 수반
한다. 정적인 방법
이다.요구사항
을 잘 지켜가며 만들었는지를 확인하는 것이다. 문서와 파일의 검사
이다. 쉽게말하면
validation
은 사용자의 관점에서 우리가 제품을 잘 만들고 있는가
verification
은 논리적인 관점에서 해당 스펙대로 잘 수현했는가
정답은 verification이다.
우선 Token이 무엇인지부터 알아보자.
일반적으로 로그인은 서버의 session
을 통해 이루어진다. 서버는 접속중인 client
들을 이 session
을 통해 관리한다. 사이트에 접속하면 session
에 해당 client
가 기록되고 로그인을 하게 되면 해당 client
가 로그인한 것을 저장한다.
이후 해당 client
는 로그인이 요구되는 정보에 접근할 수 있다.
하지만 이 방식은 접속자수가 늘어나면 서버의 메모리 사용량이 증가하여 성능에 영향을 미친다.
그래서 REST API
에서는 서버가 session
을 가지는 방식이 아닌 Token인증 방식을 사용한다.
로그인 API로 id와 password가 일치함이 확인되면 서버는 Token
을 방행하고, 로그인 후 이용가능한 API들에는 유효한 Token
이 있는 경우에만 사용할 수 있게 한다.
이는 사용자의 니즈와 관련없이 개발자의입장에서 소프트웨어를 개발하는 과정에서 고려해야 할 부분이기 때문에 verification이다.
정답은 validation이다.
만약 사용자가 회원가입을 한다고 가정해보자.
이 경우 아이디와 비밀번호가 조건에 맞는지, 필수요소를 모두 잘 작성했는지 확인해야 한다.
이것은 사용자 입장에서 사용자가 실수로 유효하지 않은 데이터를 입력하는 경우를 방지하기 위함이기 때문에 validation이라고 볼 수 있다.