[Java] 테스트코드 작성기 - 백오피스 권한 등록

Hyo Kyun Lee·2025년 1월 3일
0

Java

목록 보기
70/87

이 글에서 이어진다.

1. 개요

일전에 작성한 mis 조회 서비스에 대한 테스트코드를 작성한 후 등록, 수정, 삭제까지 범위를 넓히기 위해 테스트 코드를 이어서 작성해보았다.

결과적으로 현재까지 본인이 구축한 모든 서비스에 대해 작성하였고, 다른 개발자 분께서 작업한 내역은 일단 보류하였다.

그러나 이것만 해도 50가지가 넘었던것 같다..오픈 전 소스 수정 작업이 많았기때문에 꽤 힘든 작업이었다.

지금 기록을 남기는 항목은 권한을 등록하는 과정으로, 기록으로 남기기에 적합한 대표 케이스에 대해 기록한다.

일전 테스트 케이스 작성과 마찬가지로,
사용자 요구사항을 가정한 BDD
로직들 구성할때 확인해야할 사항
처리를 실행한 후 결과
이렇게 3가지 고려사항을 생각하였는데, 이전 케이스와는 달리 하나의 서비스에 처리해야할 대상(세부 트랜잭션들)이 많았기 때문에 각 서비스 처리를 나누어 작성하였고 최종적으로 모든 트랜잭션이 무결하게 종료되었는지 확인하였다.

특히나 이번 테스트의 경우 @Transactional을 활용하여, 테스트를 하더라도 모든 처리가 롤백되도록 하여 비교적 자유로운 환경에서 테스트를 진행할 수 있었다.

2. 환경 구성

테스트 케이스 구성은 일전 환경과 동일하다.

junit : 4.13.2버전
spring-boot-starter-test : 2.2.4버전

junit 단독적으로 사용할 경우 실제 데이터와 실행 결과에 기반한 테스트가 힘드므로 bean주입을 위해 starter test를 추가하였다는 점 기억.

4. 테스트 케이스 구성

권한 등록에 대한 테스트 케이스는 하기와 같이 6가지로 구성하였다.

권한 등록의 경우 세부 트랜잭션이 3가지로 나뉘고, 역할코드 채번값을 트랜잭션이 시작되는 지점에 채번하므로 트랜잭션의 무결성과 채번값 확인을 중심으로 작성하였다.

계획안을 먼저 만들어 보았다.
1. 매퍼 동작을 위한 준비 : 매퍼 구성이 잘 되었는가(null pointer exception)
2. 처리조건 : 처리 매개변수가 잘 구성되었는가
3. 처리 : 처리 되었는가
각각 케이스는 given, when, then으로 구체화하였다.

  • 매퍼 구성이 잘 되었는가
    given : 조건DTO(처리정보들) 구성한다.
    when : 조건DTO에 대한 처리를 실시하였을때
    then. : 정상 처리 진행 및 실행결과가 1이다.
    이는 매퍼 구성, 즉 시스템 환경 구성에 대한 부분이므로 조회가 된다면 자동으로 만족할 수 있는 케이스이다.

  • 채번확인
    given : 조건DTO(처리정보들)를 구성한다.
    when : 조건DTO를 전달하였을때
    then : 조건을 기반으로 채번이 중복없이, 최대 count를 기준으로 무결하게 진행된다.

  • 권한 트랜잭션 확인
    given : 조건DTO(처리정보들)를 구성한다.
    when : 조건DTO를 전달하였을때
    then : 권한정보의 정상 등록 및 updateRow 가 1이다(세부 트랜잭션에 대한 테스트케이스)

  • 부서권한 트랜잭션 확인
    given : 조건DTO(처리정보들)를 구성한다.
    when : 조건DTO를 전달하였을때
    then : 부서권한정보의 정상 등록 및 updateRow 가 1이다(세부 트랜잭션에 대한 테스트케이스)

  • 프로그램권한정보 트랜잭션 확인
    given : 조건DTO(처리정보들)를 구성한다.
    when : 조건DTO를 전달하였을때
    then : 프로그램권한정보의 정상 등록 및 updateRow 가 1이다(세부 트랜잭션에 대한 테스트케이스)

  • 서비스 트랜잭션 전체 확인
    given : 조건DTO(처리정보들)를 구성한다.
    when : 조건DTO를 전달하였을때
    then : 모든 권한관련정보의 정상 등록 및 최종 처리 결과가 1이다.

이러한 테스트 케이스들을 구성하면서 꽤나 세부적인 테스트 케이스들을 작성할 수 있었다.

단순히 이러한 요구사항이 있다는 것이 아닌, 내가 서비스를 구성하면서 어떠한 고려사항이 있을지 확인할 수 있는 매우 소중한 기회였다.

자체적으로 기획한 테스트이지만 많은 것을 배울 수 있었다.

0개의 댓글

관련 채용 정보