2010-11-23 2 views
3

우리 팀은 레거시 코드 기반의 일부 모듈을 다시 고려할 계획입니다. 자바로 작성된 웹 응용 프로그램입니다. 단위 테스트가 전혀 없습니다.레거시 코드의 품질 보증이 리팩토링되고 있습니다

리팩토링하기 전에 기존 기능에 대한 junit을 작성하도록 개발자에게 요청했지만 매우 광범위하지는 않을 것이라고 확신합니다.

리팩터링이 기존 기능을 방해하지 않도록 조치 할 수있는 다른 방법 (블랙 박스/화이트 박스/프로세스)은 무엇입니까?

현재 시스템은 꽤 안정적이며 8 년 이상 가동되었습니다. 더 junits을 작성하는 것보다

답변

0

다른

감사 그레이, 당신은 record test scripts with JMeter. 당신이 기대하는 결과를 얻는하고 있는지 확인하는 주장을 포함 항상 수 있습니다.

+0

안녕하세요, 좋은 생각입니다. 그러나 프로젝트가 많이 움직여 현재 투자가 불가능합니다. 이러한 접근법을 향후 리팩토링 이니셔티브에서 사용할 수 있습니다. 감사. –

1

코드에 근본적인 의미로 단위 테스트 할 수 없으며 아직 잡히지 않은 버그가 코드 내에 있음을 알 수 있습니다. 이 상황에 직면하여 가능한 한 많은 흑백 테스트를 사용하는 것이 좋습니다. 이것은 이해할 수있는 고통스러운 과정이지만 그것을 완화 할 수있는 방법이 있습니다.

엔지니어가 몇 가지 인터페이스를 분석하여 일부 통합 테스트를 만들 수 있습니까? 다시 말하면, 리팩토링이라면 몇 가지 공통 영역에서 응고시킬 수 있고, 애플리케이션을 더 작은 덩어리로 나눌 수 있습니다. 그러면 테스트를 더 많이 수행 할 수있는 더 큰 수단이 생깁니다. 그것은 또한 당신이 예상 할 수있는 기존의 코드를 개진 할 수있게 해줄 것입니다.

+0

당신이 옳습니다. 대부분의 코드는 단위 테스트 할 수 없습니다. 리팩터링 중 일부는 주로 사용되지 않는 변수와 메소드를 제거하고 반복 된 코드를 일반적인 방법으로 사용합니다. 우리는 방법과 변수가 실제로 사용되지 않는다는 것을 도구로 확인하고 있습니다. 그리고 단위 테스트가 불가능한 블랙 박스 테스팅을 포함합니다. –

+0

@Jenga 블록은 조심해야합니다. 때때로 레거시 코드는 잘못된 곳에서 "버그 수정"을하는 경향이 있습니다. 로직은 다른 장소에서 버그 로직과 직접 관련이있는 한 곳에서 발견 될 수 있습니다. 버그를 수정하여 다른 버그를 도입 할 수 있습니다. – wheaties

2

시작하기 전에 Michael Feathers의 Working Effectively with Legacy Code을 읽으십시오.

현재 상태의 코드는 단위 테스트가 유효하지 않으므로 효과적으로 테스트 할 수 없을 가능성이 높습니다. 필자가 잘 보아 왔던 것은 합리적인 입력으로 실행하고 출력을 기록하는 통합 레벨 테스트입니다. 웹 응용 프로그램은 이것을 특히 적절하게 만듭니다. 그런 다음, 높은 수준의 테스트를 유지하면서 새로운 메소드를 테스트하는 작은 메소드와 클래스를 새롭게 작성하십시오. 처음부터 적절한 TDD를하는 것보다 더 많은 일이지만, 확실히 할 수 있습니다.

+0

이것은 코드 유지 관리에 대한 완전히 새로운 (보다 낙관적 인) 관점을 제공하는 훌륭한 책입니다. – nont

+0

책을 제안 해 주셔서 감사합니다. 나는 그것을 통해 유용성을 찾는다. 개발자에게 테스트를 요청한 다음 수정하도록 요청했다. 그러나 주어진 시간/예산 제약 조건을 따르는 교반 TDD에 약간의 타협이있을 수 있습니다. –