software test의 유형과 unittest 개념 정리

ybear90·2020년 3월 22일
0

unittest

목록 보기
1/1

unit test는 왜 필요할까 ?

개발을 하고 나서 해당 소스 코드가 제대로 작동이 되는가를 확인해야 한다. 제대로 작동이 되지 않는 코드는 그 자체로 의미가 없다. 기능 개발에만 몰두한 채 소스코드 테스트를 하지 않으면 결국 유저(고객)의 몫이 되어버린다.

내가 테스트를 해서 문제를 발견하여 고치면 그만이지만 유저가 발견하고 그 문제를 겪게 되어버리면 금전적 손실, 신뢰도에 문제가 생길 수 있기에 테스트 과정은 새로운 기능 개발 만큼이나 중요하다.

software system 테스트의 3가지 방법

1. UI Testing / End-To-End Testing

  • UI Testing은 자동화 하기가 어렵고 까다롭고 또한 실행도 까다롭다.

  • Manual Testing은 실행하기 쉽지만 비용이 많이 들고 직접적인 인력이 들어가며 실행이 오래 걸리고 부정확 하다. 이렇게 하다가 나중에 새롭게 구현한 기능만 테스트 하게 된다면 다른 기능에서 문제가 생기는 사태가 벌어질 수 있다.(다른 기능을 껴서 새 기능을 테스트 하지 않았기 때문에)

  • 요즘은 어느정도 이런 유형에 대한 테스트도 자동화 된 편

2. Integration Testing

  • 내가 담당한 시스템만 작동시켜 테스트 하는 것(FE는 FE만 BE는 BE만)
  • UI Test/E2E Test 다음으로 비용과 노력이 많이든다.

3. Unit Testing

  • 코드에서 테스트 할 수 있는 가장 작은 단위 -> 함수, 메소드
  • 즉 테스트 하는 코드를 짜서 작성한 코드를 테스트 한다.
  • 왜 비용이 저렴할까 ? -> 사람이 실행하는 것이 아닌 자동화(시스템이 직접)가 가능하기 때문이다.
  • 단점 : unit test를 구현해야 하는 부분에서 overhead가 걸릴 수도 있다. 구현보다 테스트에 시간이 더 걸릴 수도 있을 정도로…
  1. Unit test는 나의 방패다(나 자신을 보호해주는 최소한의 장치)
  • test를 잘 짜두면 앞으로의 업무에서도 좀 더 수월할 수 있다.
  • test를 덜한다고 해서 존재하는 bug가 없어지지 않는다. -> 결국 user의 몫이 된다.
  • bug는 있을 수 밖에 없다고 생각해라.
  • 구현과 테스트의 비율은 5:5의 비율로 한다 생각할 정도로 테스트를 중시해야…
  1. Unit test의 유형
  • happy path unit test : 통과할 테스트 케이스만 테스트 한다.
  • (좀 더 고차원) 아닌 결과물도 테스트 해본다
    (ex) 로그인 테스트 : 맞는걸 넣는 것(1에 해당하는 케이스), 틀린 계정 정보를 넣는것(-1에 해당하는 케이스)
  • (좀 더 고차원) 예외의 경우(0의 경우)에도 테스트 해본다.(비어있는 값 넣기, 아주 큰 값을 넣어보기, 다른 자료형의 데이터를 넣어보기 등) -> 생각하기 어려운 테스트 케이스
  • 최소한 1(명백히 맞는 경우)과 -1(명백히 틀린 경우)의 테스트를 해주어야 한다
  1. Unit test가 끝난 데이터들은 '삭제'해 주어야 한다.
  • 이후 테스트에 의존성 영향을 끼쳐서는 안된다.
  • 즉 각각의 테스트는 독립적으로 작동해야 한다.
  1. Unit test는 신속해야 하며 실제 라이브 서비스에 대해 요청을 보내서는 안된다.
profile
wanna be good developer

0개의 댓글