2010-12-30 4 views
1

SQL 및 SVN과 같은 외부 시스템과 상호 작용하는 bash 스크립트가있어 더 나은 단위 테스트를 작성할 수 있습니다. 예를 들어, 다양한 유형의 데이터베이스 백업 및 대규모 프로덕션 데이터베이스에 대한 복원.외부 시스템과의 상호 작용 테스트

일부 사람들은 단위 테스트보다는 통합 테스트라고 말할 것입니다. (틀림없이 외부에 의존해서는 안되며, 파일 시스템을 터치하는 등). mock 객체와 같은 것을 만드는 것은 실제로이 경우 많이 테스트하지 않습니다. 덤프와 복원이 실제로 작동하는지 확인하고 싶습니다. 어떻게이 짓을하고 얼마나 멀리 갈 수 있겠습니까?

  • 스키마 만 덤프하고 로컬로 복원 한 다음 설정에 테스트 데이터를 삽입 하시겠습니까?
  • 파일 크기를 비교하고 gzip 파일 유형 등을 확인하여 아카이브 기능을 테스트 해 보겠습니까?
  • 장기 실행 작업에서 타이밍 문제를 테스트하려면 어떻게해야합니까? 테스트를 위해 로컬에서 작업 할 수있는 완전한 스냅 샷을 유지하고 있습니까?
  • SVN 및 기타 종속성에 대한 로컬 테스트 리포지토리도 만드시겠습니까?

어쩌면 나는 완전히 잘못된 방식으로 생각하고있을 것입니다. 그렇다면 어떤 접근 방식을 사용합니까?

답변

1

실행중인 시스템의 테스트 버전을 만들 수없는 경우 데이터베이스 및 리포지토리의 테스트 버전을 만들어야합니다. 우리의 테스트 시스템에

, 우리의 일반적인 데이터베이스 처리 스크립트는 이런 식으로 시작 :

case `hostname` in 
*-test) dbname=db1-test ;; 
*)  dbname=db1 ;; 
esac 

이것은 우리의 정상적인 생산 SQL 스크립트 프로덕션 시스템 또는 테스트 시스템에서 실행 여부를 올바른 데이터베이스를 참조 할 수 있습니다 (하나는 검사로 끝남).

중요한 것은 정상적인 프로덕션 스크립트를 자동으로 테스트 환경에 맞게 조정하는 것입니다.

별도의 테스트 시스템이 없거나 간단한 dbname 선택을 허용하는 컨벤션을 사용하는 경우 환경 변수를 사용하여 적절한 데이터베이스 이름이나 리포지토리 이름을 지정할 수 있습니까? RAILs는 RAILS_ENVIRONMENT 변수로이를 수행합니다.