현재 단위 테스트가없는 대형 코드베이스의 일부를 리팩토링하고 있습니다. 코드를 리팩토링하려고 시도했습니다. 즉, 코드가 수행하는 작업과 변경 사항으로 인해 변경되지 않는 것을 추측하려고 시도했지만 성공하지 못했습니다. 코드베이스 주변의 모든 기능을 임의로 중단합니다.
리팩토링에는 레거시 C # 코드를보다 기능적인 스타일로 이동 (레거시 코드는 LINQ를 포함한 .NET Framework 3 이상의 기능을 사용하지 않음), 코드의 이점이있는 곳에 제네릭 추가 등이 포함됩니다.
비용이 많이 들기 때문에 공식적인 방법을 사용할 수 없습니다 .
다른 한편으로, 나는 아무리 많은 비용이 들더라도 적어도 "리팩토링 된 레거시 코드는 단위 테스트와 함께 제공 될 것" 규칙을 엄격히 준수해야한다고 가정합니다. 문제는 500 LOC 개인 메소드의 작은 부분을 리팩터링 할 때 단위 테스트를 추가하는 것이 어려운 작업으로 보인다는 것입니다.
주어진 코드에 어떤 단위 테스트가 관련되는지 아는 데 무엇이 도움이됩니까? 나는 코드의 정적 분석이 어떻게 든 도움이 될 것이라고 생각하지만, 내가 사용할 수있는 도구와 기술은 무엇입니까?
어떤 단위 테스트를 만들어야하는지 정확히 알고
그리고 / 또는 내가 한 변경 사항이 원래 코드와 다르게 실행되는 방식으로 원본 코드에 영향을 주 었는지 알고 있습니까?
formal methods in software development
이 술어 논리를 사용하여 프로그램의 정확성을 증명하는 데 사용되며 큰 코드베이스를 리팩토링에 적용이되지 않기 때문에 어쨌든. 코드를 증명하기 위해 일반적으로 사용되는 공식적인 방법은 의료 응용 프로그램과 같은 영역에서 올바르게 작동합니다. 비용이 많이 들기 때문에 자주 사용하지 않는 것이 좋습니다.