실제로 코드 커버리지를 개선하기 위해 성공적으로 사용한 기술은 무엇입니까?

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

  •  05-07-2019
  •  | 
  •  

문제

나는 정기적으로 TDD를 사용하여 라이브러리의 100% 적용 범위를 달성하지만 항상 그런 것은 아니며 항상 테스트되지 않은 응용 프로그램의 일부가 남아있는 것 같습니다.
그런 다음 테스트가 거의없고 적용 범위가 거의없는 레거시 코드로 시작하는 경우가 있습니다.

당신의 상황이 무엇인지, 그리고 적어도 그 일이 무엇인지 말 해주세요. 향상 적용 범위.
단위 테스트 중에 적용 범위를 측정하고 있다고 가정하지만 다른 기술을 사용하고 있는지 여부는 말합니다.

도움이 되었습니까?

해결책

코드 삭제.

이것은 으르렁 거리는 것이 아니라 실제로 심각합니다. 실행할 수없는 가장 적은 양의 코드 복제 또는 심지어 코드를 볼 때마다 삭제했습니다. 이로 인해 커버리지가 증가하고 유지 관리가 증가했습니다.

이것은 이전 코드베이스와 새로운 코드베이스의 범위를 늘리는 데 더 적합하다는 점에 유의해야합니다.

다른 팁

나는 당신이 읽는다고 가정합니다.코드를 다루는 코드 대 코드 테스트", 오른쪽 ?

그 질문에 언급 된 바와 같이

100% 블록 커버리지 + 100% 아크 커버리지 + 100% 오류가없는 오류가 없어도 더 많은 버그를 나타내는 방식으로 경로/루프를 실행하는 입력 데이터가 여전히 있습니다.

이제 사용합니다 Eclemma, Emma와 해당 코드 커버리지 도구를 기반으로 100% 코드가 항상 불가능한 이유를 설명합니다. 부분적으로 덮힌 선 때문에:

  • 같은 줄에 암시 적 분기.
  • 공유 생성자 코드.
  • 마침내 블록으로 인한 암시 적 분기.
  • 숨겨진 class.forname ()로 인한 암시 적 분지.

따라서이 4 건은 모두 리팩토링에 좋은 후보자가 될 수 있습니다.

이제 저는 Frank Krueger의 답변에 동의합니다. 일부가 아닌 코드는 실제로 삭제하려는 일부 코드를 포함하여 일부 리팩토링을 수행한다는 표시 일 수 있습니다.)

내가 작업 한 프로젝트에 가장 큰 영향을 미치는 두 가지는 다음과 같습니다.

  1. 개발 팀이 실제로 단위 테스트를 구현하고 효과적인 테스트를 작성하는 방법을 검토하기 위해 주기적으로 "알립니다".
  2. 전체 테스트 범위에 대한 보고서를 생성하고 개발 관리자 사이에서 순환합니다.

우리는 Perl을 사용합니다 개발 :: 커버 우리에게 매우 유용했습니다. POD 적용 범위와 같은 것들뿐만 아니라 단위 테스트 중에 진술 당 커버리지, 지점 범위 및 조건부 범위를 보여줍니다. 우리는 더 낮은 수준의 적용 범위를 위해 노란색과 빨간색을 통해 "100%"에 대한 인식하기 쉬운 녹색과 함께 HTML 출력을 사용합니다.

편집하다: 조금 확장하려면 :

  • 조건부 범위가 완료되지 않은 경우 상호 의존 조건을 조사하십시오. 거기에 있다면 리팩터. 그렇지 않은 경우 모든 조건에 도달하기 위해 테스트를 연장 할 수 있어야합니다.
  • 조건부 및 분기 적용 범위가 완료되지만 명세서 적용 범위가 보이지 않으면 조건부가 잘못 작성되었거나 (예 : 의도하지 않았을 때 항상 서브에서 일찍 돌아 오는 것) 안전하게 제거 할 수있는 추가 코드가 있습니다. .

적합 테스트 코드 커버리지를 개선했습니다. 그것은 완전히 다른 압정이기 때문에 훌륭했습니다.

배경 : 우리는 레거시와 새로운 코드가 혼합되어 있습니다. 우리는 가능한 한 새로운 내용을 단위/통합 테스트하려고 노력하지만 최대 절전 모드/우편환으로 마이그레이션하고 OODB에서 멀리 떨어져 있기 때문에 레거시 코드를 테스트하는 것이별로 없습니다.

모르는 사람들에게는 FIT는 사용자 관점에서 소프트웨어를 테스트하는 방법입니다. 기본적으로 HTML 테이블에서 원하는 동작을 지정할 수 있습니다. 테이블은 소프트웨어에 대한 동작과 원하는 결과를 지정합니다. 우리 팀은 조치를 코드에 대한 호출에 매핑하는 '접착제 코드'(일명 적합 테스트)를 작성합니다. 이러한 테스트는 단위 테스트와 비교하여 '공간에서'보기에서 작동합니다.

이 접근법을 사용하여 코드 커버리지를 몇 퍼센트 포인트로 늘 렸습니다. 추가 보너스는 이러한 테스트가 버전에 해당한다는 것입니다. 레거시 코드를 테스트하지만 나중에 새 코드를 테스트합니다. 즉, 그들은 어떤 의미에서 회귀 테스트 역할을합니다.

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