2011-08-22 2 views
3

SDLC에서 테스트 절차는 구현 직후에 수행되어야합니다. 그러나 테스트 주도 개발은 구현하는 동안 테스트를 수행하도록 권장합니다. 그리고 강의 과정에서 교수는 테스트 케이스가 디자인의 일부가되어야한다고 전했다.테스트 케이스는 언제 설계하고 문서화해야합니까?

필자는 테스트 케이스를 디자인하고 문서화해야 할 때 언제든지 새로운 기능을 구현할 수있는 중견 개발자입니다.

구현을 완료 한 후 모든 사례를 테스트하는 것이 그리 현실적이지 않은 것으로 나타났습니다. 일단 사례가 실패하면 코드를 변경하고 모든 사례를 다시 테스트해야하기 때문입니다. 이를 극복하고 피할 수있는 또 다른 방법이 있습니까? 자동화 된 고환이 해결책 중 하나라는 것을 알고 있지만 어떻게 든 자동화 된 고환은 모든 테스트 사례, 특히 다른 당사자와 관련된 통합 테스트 사례를 자극 할 수 없습니다.

또한 테스트 케이스에서는 코드의 모든 부분을 테스트해야합니까? 또는 기능 요청의 기능 만 테스트하면됩니까? 아니면 실제로 시간이 얼마나 남았습니까?

감사합니다.

+0

너무 많은 질문 :) - 자동화 된 테스트는 작동해야하는 모든 테스트 케이스를 시뮬레이트 할 필요가 없습니다. 통합 테스트 케이스는 종단 간 자동화 테스트에서 다룰 수 있습니다. 그리고 네, 당신이 원하는 모든 코드를 테스트해야합니다. – Gishu

답변

5

당신의 말처럼 "실제로 얼마나 많은 시간이 걸릴지에 따라 달라집니다"라는 질문에 대답하기가 쉽지 않습니다. 여기에 몇 가지 의견이 있지만 다음과 같습니다

시험 실시 후 :없음

프로그래머로서, 당신은 서로 상단에 쌓아 여러 마감 시간과 비용이 많이 부족한 자원입니다. 이렇게 효과적으로, 이것은 결코 시험하지 않는다는 것을 의미합니다. 한 코드 덩어리를 구현 한 후에는 다음 코드 덩어리로 넘어 가서 "시간이있을 때"(시간이 없다) 테스트를 작성하기 위해 다시 돌아 오는 것을 의미합니다.

언급 한 문제도 있습니다. 코드가 작성된 후 모든 테스트를 수행하고 테스트에서 근본적으로 잘못된 것을 발견하면 다시 돌아가서 모든 코드와 모든 테스트를 수정해야합니다.

테스트 구현 동안 : 당신이 그것을 위해 리듬을 일단

이 방법은 실제로 정말 도움이됩니다. 약간의 클래스를 작성한 다음 단위 테스트를 작성하고 완료 될 때까지 테스트 및 코드를 지속적으로 수정하십시오. 나는 실제로 테스트없이 코드를 작성하는 것보다 실제로 빠르다 고 생각한다.

또한 큰 프로젝트에서 작업 할 때 특히 유용합니다. 모듈 테스트를 실행하여 작은 모듈이 작동하는지 즉시 확인하십시오. 작은 모듈이 작동하는지 확인하기 위해 전체 응용 프로그램을 빌드하고로드하는 데 몇 분이 걸릴 수 있습니다. 또한 집중력을 방해 할 수 있습니다 (최소 10 분 소요).

무엇을 테스트하려면 다음가능한 한 많이

100 % 테스트 커버리지는 아마 실제 적이 없다. 그러나 절대적으로 프로그램의 중요한 부분, 수학적 계산 또는 많은 비즈니스 논리를 수행하는 것들을 테스트하십시오. 가능한 한 남은 부분을 모두 테스트하십시오. "toString()"함수를 테스트 할 이유가 없습니다. 비즈니스 논리 나 그 어떤 것에 비판적인 것이 아니라면 말입니다.

또한 테스트는 가능한 한 간단하게하십시오. 입력 및 출력 만하십시오. 대부분의 테스트 기능은 2 ~ 3 행입니다. 너무 많은 조합이 있기 때문에 기능을 테스트하기가 어렵다면 기능을 조금씩 분해해야 할 수도 있다는 신호입니다. 가장자리 사례와 "불가능한"시나리오를 테스트하십시오.

+0

옵션을 제공해 주셔서 감사합니다. 시험에 다시 올 시간이 없다는 것에 매우 동의합니다. Btw, 기능 중 일부는 테스트하기가 어렵습니다. (다른 obj를 많이 사용하는 자바에서는 특히 그렇습니다.) 글쎄, "조금 깰", 다른 부분으로 기능을 나누는 것을 의미합니까? 코드를 구현하기 전에 테스트 케이스를 디자인 할 것인가? –

+0

예. 구현 기능이 너무 길거나 매개 변수를 많이 사용한다고 생각했습니다. @JVerstry와 마찬가지로 일부 기능은 테스트 할 수 없습니다. 그러나 종종 테스트 가능한 부분으로 분해 할 수있는 큰 기능의 블록이 있습니다. – Seth

+0

테스트 디자인과 관련하여 저는 일반적으로 테스트 케이스 디자인을 기능 디자인에서 분리하지 않습니다. 나에게 그들은 똑같다. 내 테스트는 대개 인수 유효성 검사에 집중되며, 이는 행동이 무엇인지 정의하는 데 도움이됩니다. 어쩌면 내 함수 인수는 객체 참조 및 양수입니다. 그래서 null 참조를 보내는 테스트를 작성합니다. 이 경우 함수가 null을 반환해야합니까? 음수를 전달하면 함수가 잘못된 인수 예외를 throw해야합니까? 따라서 함수는 테스트를 지시하고 테스트는 함수를 정의하는 데 도움이됩니다. – Seth

2

내 경험 :

  1. 문서의 코드가 테스트중인 경우 (첫눈에 명확하지 않은 '까다로운'코너 케이스의 경우 비록 코드가 수도없는 자명 한 경우, 또는 귀하의 테스트 있다).
  2. 테스트를 위해 별도의 문서를 만들지 마십시오. Java를 사용하고 있다면 주석과 Javadocs에 모든 것을 넣으십시오. 즉,이 정보를 코드와 가깝게 유지하십시오. 그것이 필요한 곳입니다.
  3. 설계 및 구현 : 반복 만하면됩니다. 구현 및 테스트 코드를 모두 작성하기 전까지 구현 코드를 작성한 다음 코드를 작성한 다음 구현 코드 등을 작성하십시오. 모든 구현을 작성한 다음 테스트하고 실패한 구현 코드를 다시 작성하는 것보다 빠릅니다. 은 모든 테스트가 디자인 타임에 구현 될 것으로 예상 할 수 없습니다. 불가능합니다. 그래서, 모든 것을 얻지 못한다면 걱정할 필요가 없습니다.
  4. 코드의 80 % 이상을 이미 다루고 있다면 더 좋은 것이 더 좋습니다. 경우에 따라 코드를 테스트 할 수없는 경우도 있습니다. Emma for Java와 같은 테스트 커버리지 도구를 사용하는 것이 좋습니다.

또는 실제로 걸린 시간은 얼마나됩니까?

당신이 테스트를하지 않음으로써 저장 시간은 나중에 프로젝트에서 버그를 해결하기 위해 지출해야하는 시간을 지불 결코 이제까지 이제까지입니다. 적절한 테스트 세트는 항상 길 아래로 많은 돈을 지불합니다.

관련 문제