2016-08-24 3 views
0

최근 모델에 validates_presence_of을 추가 한 버그가 있었지만 변경 전 만들어진 레코드는 해당 열이 없으므로 이전 데이터에서 모델을 인스턴스화 한 모든 코드가 손상되었습니다. .생산을 보호하기위한 단위 테스팅

이것은 프로덕션 데이터에 대해 테스트 할 때만 잡힐 수있는 버그 클래스에있는 것 같습니다.

이러한 유형의 문제를 방지하는 단위 테스트를 만드는 방법이 있습니까?

+1

생산 데이터베이스는 모든 종류의 예상치 못한 데이터를 보유 할 수 있습니다. 한 번에 한 번씩 프로덕션 DB를 스테이징 환경으로 복사하는 것이 좋습니다. 또한 프로덕션에 직접 공개하지 않습니다. :) –

답변

0

코드에서 불만족스러운 경로 나 사례 (부정 시험이라고도 함)에 대한 자동화 된 테스트를 작성하는 경우 이 될 것으로 예상되는 테스트를 작성하게됩니다. validates_presence_of 상황을 생각하면 을 작성하여 지금 열이없는 경우의 적절한 처리를 검증하는 테스트가 가능하다는 것을 알고 있기 때문에 가능합니다. 문제가 발생하기 전에 이러한 테스트를 작성하는 것은 까다로운 부분입니다. 실제 데이터베이스의 보류를 얻을에서 기능 테스트 및 데이터베이스 일관성 검사를 실행하여 실제 데이터에 대해

  1. 테스트를 : 당신이 정말로가 발생하기 전에 이러한 경우를 방지하려면

    , 당신은 고려할 수 그것. 이 접근법으로 고려해야 할 사항은 다음과 같습니다.

    • 참조하려는 데이터베이스에 고객 데이터가있는 경우 고객의 개인 정보 보호를 위해 해당 데이터를 모의하지 않는 것이 좋습니다.
    • 이 방법은 설치 및 오케스트레이션을 자동화하는 데 비용이 많이 드는 개발 과정에서 올바르게 진행되기 어렵습니다. 이 전략은 막대한 이주 등을하기 전에 일회용 노력에 더 적합합니다. 앞서 지적한 바와 같이
    • , 당신은 여전히 ​​예상치 못한
  2. 예비 테스트 우연히 발견 할 수있는 높은 가능성이있다, 당신은 당신의 데이터 집합을 증가하고 당신이 일이 기대하는 것들에 대한 테스트를 작성하지만, 주어진 것입니다 : 질문에 단위 테스트를 언급했는데,이 과정을 자동화하기를 원하기 때문에 이러한 일이 발생하기 전에 예방할 수있는 또 다른 좋은 방법은 예기치 못한 가능성이있는 시나리오를 생각해내는 데 필요한 충분한 에너지를 적용하고 수동으로 테스트하는 것입니다 코드가 이러한 시나리오를 지원하는지 확인하십시오 (그렇지 않은 경우 버그가 발견되어 패치를 작성하여 버그가 빛을 보지 못하도록 테스트를 작성하십시오). 더 확장 할 수

자동화 된 접근 방식 대신 감지의 측면에 잘못 것입니다. 어떤 시점에서 우리는 소프트웨어에 버그가 있으며 소프트웨어 개발은 ​​모든 것을 막을 수있는 완벽한 프로세스가 아니라는 것을 받아 들여야합니다. 버그 중 일부는 생산에 들어갈 가능성이 높으므로 영향을 최소화하십시오.

우리는 사용자에게 도달하는 것이 희귀하고 위험하지 않도록 가능한 한 많은 문제를 해결하기 위해 테스트를 작성하려고합니다. 이러한 상황이 발생하면 좋은 로깅 방법, 로그 애그리 게이터, 오류 모니터링 및 경고 메커니즘을 통해 즉시 알려 주므로 더 많은 사용자에게 영향을 미치거나 악화되기 전에 대응할 수 있습니다.

canary releases이 실행되면이 경로가 더 확고해질 수 있으며 anomaly detection 패턴이 실시간 동작 데이터에 적용되고 자동 롤백은 일이 잘못 시작될 때 프로그래밍됩니다.