브라운필드 애플리케이션에서 단위 테스트를 구현하기 위한 첫 번째 작업은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/66361

문제

SQL을 먼저 리팩터링합니까?당신의 아키텍처?아니면 코드베이스?언어를 바꾸나요?모든 것을 버리고 처음부터 시작하시나요?[리팩토링하지 않음]

도움이 되었습니까?

해결책

대규모 레거시 스파게티 코드베이스에 단위 테스트를 추가하고 있습니다.

내 접근 방식은 문제를 해결하라는 요청을 받을 때 현재 작업과 관련된 코드 베이스 부분에 새로운 래퍼를 만들려고 노력하는 것입니다.이 새로운 래퍼는 TTD(테스트를 먼저 작성)를 사용하여 개발되었습니다.가끔씩 전화가 옴 ~ 안으로 단위 테스트를 거치지 않은 레거시 코드.어떤 때는 기존 모듈의 새로운 복사본을 만들고 그것에 심각한 폭력을 가하기 시작합니다.때로는 기능을 처음부터 다시 작성하기도 합니다.

그러나 꽤 잘 테스트해 보니 통제력이 꽤 좋다고 느껴집니다.

너무 많은 복사 및 붙여넣기로 개발된 이 코드 베이스에서 내가 발견한 것은 일단 특정 부분을 이해하고 거기에서 일부 기능을 추출한다는 것입니다(테스트 우선 수행)...이러한 기능은 종종 다른 여러 곳에서 사용할 수 있는 것으로 판명되므로 레거시 코드를 단위 테스트를 거친 자체 라이브러리로 교체하는 비율이 증가합니다.

나는 현재 문제(대개 수정하려는 버그)와 관련이 없는 코드 부분에 테스트를 다시 작성하거나 추가하려고 시도하지 않습니다(그리고 그럴 권한도 없습니다). 그러나 상당히 공격적이고 적극적인 자세를 취하고 있습니다. 만지고 관련될 수 있는 모든 것에 대해.

업데이트 :펭귄닉스가 물었습니다."어떤 언어로 일하시나요?추천하는 특정 테스트 하네스가 있나요?"

지금은 회사에서 일하고 있어요...어 ...유행성 이하선염!그러나 동일한 원칙은 어디에서나 적용됩니다.

UT에 대한 나의 이해를 변화시킨 것은 MinUnit이었습니다. http://www.jera.com/techinfo/jtns/jtn002.html

제가 MinUnit을 봤을 때 그것은 저에게 일종의 깨달음의 "선" 순간이었습니다.단위 테스트는 정교한 OO 프레임워크 등이 필요한 복잡한 작업이라는 오해를 해소했습니다.나는 UT가 단지 많은 테스트를 작성하는 것에 불과하다는 것을 이해했습니다."하네스"를 사용하면 약 3분 안에 원하는 언어로 직접 작성할 수 있습니다.그냥 가서 해보세요.

다른 팁

이것은 실제로 코드베이스의 상태에 따라 다릅니다...대규모 수업이 있나요?메가 메소드가 있는 클래스 하나?수업이 긴밀하게 연결되어 있나요?구성이 부담인가요?

그런 점을 고려해서 읽어 보시길 권합니다 레거시 코드를 효과적으로 사용하기, 문제를 파악하고 권장 사항을 적용합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top