실제 서버를 쓰는 검사
쿼리 호출을 대역으로 대신하는 것과 실제 데이터베이스에서 실행하는 검사는 확인 범위가 다르다. Go-txdb는 실제 드라이버를 통해 연결하고 그 작업을 하나의 트랜잭션에 모은다. 따라서 외부 서버 없이 동작하는 SQL 대역이 아니며 테스트용 데이터베이스와 초기 상태를 별도로 준비해야 한다.
롤백으로 상태 유지하기
검사를 시작할 때마다 자료를 모두 다시 적재하는 대신 연결 종료 시 롤백하는 흐름을 사용할 수 있다. 같은 sql.DB에서 수행한 작업이 해당 트랜잭션 범위에 들어간다. 식별자와 연결 구성을 혼동하면 의도한 격리 범위와 달라질 수 있어 검사마다 어떤 연결을 공유하는지 확인해야 한다.
트랜잭션 격리의 한계
롤백으로 되돌릴 수 없는 외부 효과까지 정리되는 것은 아니다. 데이터베이스가 제공하는 트랜잭션 동작과 드라이버의 제약도 고려한다. 실제 커밋 이후의 동작이나 서로 다른 연결 사이의 경쟁을 확인하려는 검사는 단일 트랜잭션 구성과 목적이 다르다. 운영 데이터와 분리한 연결을 사용하고 검사 완료 시 연결을 확실히 정리한다.