현재 테스트되지 않은 많은 양의 레거시 코드를 다루는 경우 미래에 가상의 큰 재 작성을 기다리지 않고 지금 테스트 범위를 얻는 것이 올바른 조치입니다. 단위 테스트를 작성하여 시작하는 것은 아닙니다.
자동 테스트없이 코드를 변경 한 후에는 앱을 테스트하여 수동으로 테스트하여 작동하는지 확인해야합니다. 이를 대체하기 위해 높은 수준의 통합 테스트를 작성하여 시작하십시오. 앱이 파일을 읽고, 유효성을 검사하고, 어떤 방식으로 데이터를 처리하며, 테스트를 원하는 결과를 모두 표시합니다.
이상적으로는 수동 테스트 계획의 데이터가 있거나 사용할 실제 생산 데이터 샘플을 얻을 수 있습니다. 그렇지 않은 경우 앱이 프로덕션 환경에 있기 때문에 대부분의 경우 앱이 수행하는 작업을 수행하므로 모든 높은 점수에 도달하는 데이터를 구성하고 출력이 올바른 것으로 가정하십시오. 이름이나 설명에 따라 수행해야한다고 가정하고 올바르게 작동한다고 가정하고 테스트를 작성한다고 가정하면 작은 기능을 수행하는 것보다 나쁘지 않습니다.
IntegrationTestCase1()
{
var input = ReadDataFile("path\to\test\data\case1in.ext");
bool validInput = ValidateData(input);
Assert.IsTrue(validInput);
var processedData = ProcessData(input);
Assert.AreEqual(0, processedData.Errors.Count);
bool writeError = WriteFile(processedData, "temp\file.ext");
Assert.IsFalse(writeError);
bool filesAreEqual = CompareFiles("temp\file.ext", "path\to\test\data\case1out.ext");
Assert.IsTrue(filesAreEqual);
}
앱의 정상적인 작동과 가장 일반적인 오류 사례를 캡처하기 위해 작성된 높은 수준의 테스트를 충분히 마쳤 으면 키보드에서 두드리는 데 시간을 소비하여 코드에서 다른 것 이외의 작업을 수행하는 데 코드에서 오류를 잡아야합니다. 향후 리팩토링 (또는 대규모 재 작성)을 훨씬 쉽게 수행 할 수 있도록해야한다고 생각했습니다.
단위 테스트 범위를 확장하면 대부분의 통합 테스트를 분석하거나 중단 할 수 있습니다. 앱이 파일을 읽거나 쓰거나 DB에 액세스하는 경우 해당 부분을 따로 테스트하고 파일을 모방하거나 파일 / 데이터베이스에서 읽은 데이터 구조를 만들어 테스트를 시작하는 것이 분명한 시작입니다. 실제로 테스트 인프라를 구축하는 것은 일련의 빠르고 더러운 테스트를 작성하는 것보다 훨씬 오래 걸립니다. 통합 테스트에서 다루는 것의 일부를 수동으로 테스트하는 데 30 분을 소비하는 대신 2 분의 통합 테스트를 실행할 때마다 이미 큰 성과를 거두고 있습니다.