2011-09-09 5 views
2

NUnit과 Selenium을 사용하여 C#에서 일련의 자동 테스트를 작성합니다.시험 등급 - 언제 리팩터링 할 것인가?

편집 : 웹 사이트를 사용하는 세 가지 유형의 멤버에 대해 세 가지 클래스를 작성하기 위해 전체 웹 사이트를 테스트 중이며,이 클래스는 셀레늄을 사용하여 이러한 멤버가 다양한 작업을 수행하는 방법을 포함합니다. 그런 다음 이러한 클래스가 만들어지고 해당 메서드가 적절한 입력을 사용하여 테스트 클래스에서 호출됩니다.

내 질문 :

내 테스트 수업의 규모는 중요합니까? (수천 회의 테스트)

내 기능 클래스를 리팩토링 할시기는 언제입니까? (25 또는 50 가지 방법, 1000 줄의 코드 등)

나는 테스트 디자인에 관해 할 수있는 모든 것을 읽으려고 노력 해왔다. 좋은 리소스가 있다면 링크를 고맙게 생각한다.

+0

테스트중인 클래스가 수천 줄의 코드를 가진 God-class/Super-class가 아닌데 내가 언급 한 클래스에 대해 이렇게 큰 테스트를 설정 한 이유가 무엇인지 상상할 수 없다면 정말 많은 양의 테스트가 필요합니까? ? 아마도 테스트를 통해 클래스를 리팩토링해야하므로 테스트 클래스도 간소화 될 것입니다. – sll

+0

단위 테스트를 수행하지 않고 전체 웹 사이트를 테스트하고 있음을 명확히하기 위해 편집했습니다. – FooBar

+0

테스트를 작성할 때 문제가되지 않는다면 정기적 인 개발 가이드 라인과 원칙을 따라야합니다. 따라서 큰 클래스를 생성해서는 안되며 책임감과 염려가 있어야합니다. – sll

답변

6

테스트 클래스의 크기는 중요합니까? (수천 회의 테스트)?

예. 테스트는 장기간에 걸쳐 유지되어야하며, 거대한 테스트 클래스는 이해하고 유지하기가 어렵습니다.

내 기능 클래스를 리팩토링 할시기는 언제입니까? (25 또는 50 가지 방법, 코드 1000 줄 등)

특정 테스트 사례를 찾거나 특정 시나리오와 관련된 테스트를 탐색하는 것이 어색하다고 느끼기 시작할 때. 생산 클래스의 크기 나 메소드의 수에 대한 엄격한 제한이없는 것과 마찬가지로 여기에는 엄격한 제한이 없다고 생각합니다. 필자는 개인적으로 테스트 코드가 생산 코드보다 더 높은 한계를 두었습니다. 테스트 코드가 더 단순한 경향이 있으므로 이해하기 어려워지는 임계 값이 더 높기 때문입니다. 그러나 일반적으로 50 개의 테스트 메소드가있는 1000 라인 테스트 클래스는 나에게 너무 커 보이기 시작합니다.

필자는 최근에 그런 테스트 클래스로 작업해야했지만, 이제는 파티셔닝이 끝났으므로 이제는 특정 클래스의 테스트/테스트 케이스를 테스트하는 여러 테스트 클래스가 있습니다. 일부는 이전 테스트의 매개 변수화 된 테스트로 변환 관리, 그리고 모든 새로운 테스트 paramterized 테스트로 작성됩니다. 매개 변수화 된 테스트를 통해 큰 그림을 살펴보고 모든 테스트 사례를 한 번에 염두에 두는 것이 훨씬 쉬워졌습니다. Java 프로젝트에서 JUnit을 사용하여이 작업을 수행했지만, NUnit 2.5가 이제 매개 변수화 된 테스트를 제공한다는 것을 알았습니다.이를 확인해야합니다.

* 많은 테스트 케이스가 필요하다면 테스트 대상 클래스가 리팩토링되지 않아도되는지 질문 할 수 있습니다. 그것은 우리의 레거시 애플 리케이션에서 너무 많은 물건과 함께 가장 큰 클래스입니다. 하지만 먼저 테스트 케이스를 준비해야합니다 :-) 이건 클래스에도 적용될 수 있습니다. - 너무 많은 테스트 케이스가 필요하다면 테스트 할 클래스가 너무 많은 것을 시도하는 것일 수도 있습니다. 자체 단위 테스트를 사용하여 일부 기능을 별도의 클래스로 추출하는 것이 더 나을 것입니다.

+0

나는 실제로 매개 변수화 된 테스트가 무엇인지 알지 못했고 정의를 읽었을 때 이미 테스트 클래스로이 작업을 수행했다는 것을 깨달았습니다. 그래서이 클래스를 호출하는 테스트를 위해 별도의 클래스가있는 것입니다. – FooBar

+0

테스트 클래스는 웹 사이트의 기능을 테스트하여 성장하는 이유를 파악하고 성장할 때 조언과 리팩토링을합니다. – FooBar

관련 문제