2012-08-30 3 views
0

레일 2 응용 프로그램에 대한 12,000 줄의 코드 오이 기능이 있습니다. 컨트롤러, 모델, 도우미,보기 페이지 코드와 같은 응용 프로그램 코드의 코드 적용 범위를 얻기위한 모든 기능을 실행하고 있습니다. 모든 기능을 실행하려면 4 시간이 필요합니다. 여전히 100 % 코드 범위를 얻지 못하고 있습니다. 제 질문은 오이 기능을 통해 100 % 코드 범위를 얻는 방법과 모든 기능의 실행 시간을 4 시간에서 가능한 최소 시간으로 줄이는 방법입니다.오이 기능 실행 시간이 걸릴

답변

2

나는 오이의 속도를 높이는 것과 관련하여 많은 페이지가 있다고 확신한다. http://aaron-jensen.com/post/5019042852/speed-up-your-rspec-cucumber-run은 하나입니다.

오이가 느려지는 것이 코드와 관련이 있으며 사용자 만 볼 수 있기 때문에 프로파일 링을 살펴야 할 수도 있습니다.

통합 테스트는 전체 스택을 테스트 할 때 속도가 느린 것으로 유명합니다 (그 점이 중요 함). 통합 수준에서 모든 것을 테스트하는 것이 너무 느리기 때문에 사람들은 철저한 통합 테스트가 아닌 철저한 단위 테스트를 수행하는 경우가 많습니다.

커버리지 개선에 관해서는 커버리지 리포트를 사용하여 커버리지가 어느 정도인지 알려주는 경우 HTML 리포트에서 어떤 라인이 다루어지지 않는지 알려주고 테스트를 맞출 수 있습니다.

그러나 실제로는 사용자 인터페이스에서 테스트 할 수없는 것들이 있습니다. 견고성을 위해 존재하기 때문입니다. 즉 실제로는 발생하지 않을 것으로 예상되지만, 예상치 못한 이유로 또는 향후 코드 변경으로 인해 발생하는 경우. 이 경우 단위 테스트 만 코드 라인을 처리하는 유일한 방법 일 수 있습니다.

+0

감사합니다, 훌륭한 설명을위한 matthew. – Trupti

+0

오이 기능을 사용하여 100 % 코드 커버리지를 얻을 수 없습니까? 실제로 내 고객은 rcov 보고서에 나타나는 모든 코드 줄을 녹색으로 표시하고 싶습니다.이 코드는 기능을 포함하고 있으며 현재 70 % 코드가 빨간색으로 표시되어 기능이 해당 코드를 덮지 않습니다. 그럼, 이것이 코드 공중선을 테스트하는 올바른 방법인가요? – Trupti

+0

실제로 70 %는 낮은 코드 적용 범위입니다. 더 많은 것을 얻으면할수록 남은 점수를 얻는 것이 더 힘들어지고 마지막 몇 퍼센트는 종종 가장 힘들어집니다. 통합 테스트에서 다루지 못하는 라인이 있다고 말했을 때, 이는 아마도 2 ~ 3 퍼센트를 구성하는 예외적 인 사례 일 것입니다. –

0

실제로 사용자 상호 작용을 시뮬레이트하기 때문에 기능을 실행하는 데는 시간이 걸립니다. 당신은

cucumber path/to/file.feature:33 

여기에 33 실행할 파일의 특정 시나리오의 행 번호를 지정하여 실행하고자하는 정확한 시나리오를 지정하여 동일한 시나리오를 실행 재를 방지 할 수 있습니다.

+0

한 번에 모든 기능을 실행 한 후 앱의 coverage.features 폴더에서 생성되는 코드의 범위가 필요하므로 특정 기능을 실행하고 싶지 않습니다. – Trupti

관련 문제