2010-04-20 6 views
2
insertion_procedure (int a[], int p [], int N) 
{ 
    int i,j,k; 
    for (i=0; i<=N; i++) p[i] = i; 
    for (i=2; i<=N; i++) 
    { 
     k = p[i]; 
     j = 1; 
     while (a[p[j-1]] > a[k]) {p[j] = p[j-1]; j--} 
     p[j] = k; 
    } 
} 

이 삽입 절차에 대한 몇 가지 좋은 테스트 케이스는 무엇입니까? I이 속성 올바르게 모든 입력이 기능을 읽으면삽입 절차를위한 블랙 박스 테스트 케이스

+1

기능에 대한 스펙을 작성하는 것으로 시작합니다. 바람직하게는 바로 위의 주석에 있습니다. 가장 좋아하는 주석 추출 엔진의 구문을 사용하십시오. (아직 하나도 없으면 http://wwww.doxygen.org를 사용하고 있습니다.) – sbi

+3

"블랙 박스"테스트 케이스를 작성하려면 함수 코드가 유용하지 않습니다. 사전 조건과 사후 조건이있는 함수의 사양은 다음과 같습니다. 이것이 바로 "블랙 박스"가 의미하는 것입니다. –

답변

1

A는 [0]> A [2] SEG 머릿속 변수를 추적 for (i=2; i<=N; i++)

통해

1 루프 고장 것이다.

  1. i = 2
  2. k = p[i] == 2
  3. j = 1
  4. p[j-1] = p[0] == 0
  5. a[0] > a[2] 때문에 루프 조건 그러므로 j-- == 0
  6. 조건을 수행 할 때의
  7. 다음 evaulation 사실이지만 : while (a[p[-1] > k) -> 세그먼트 폴트
루프 실행 번 이상 세그먼트 폴트없이 내가 논리 오류가 말할 것 중에 있음을 만들 것입니다 유용한 입력이 같은

그것은 보이지 않는

:-) 좋은 테스트가 될 수 있음

1

나는이

  • A []에 음수로가 시작합니다. 그 결과는 무엇이되어야 하는가?
  • p []의 음수입니다.
  • 음수 N.
  • 빈 a 배열.
  • 빈 p 배열. 구현 (I C에서 programm에하지 않음)을 보면 N = 0

  • , 나는 이러한 의지의 AV의 일부를 생각한다.

    간단히 말해 입력 매개 변수의 경계 분석을 수행하고 경계와 인바운드에서 각각의 값을 벗어난 각 매개 변수에 대해 테스트를 수행해야합니다. 당신이 1 개 매개 변수를 가지고 경계가 0과 10입니다 판단되면


    , 그것은 6 명을 testcases 발생한다. -1, 0, 1, 9, 10,

    (11)는 또한, 빠르게 모든 조합을 테스트하는 것은 불가능 될 것 자랍니다 매개 변수의 액수로
    연구에 당신은 통과해야한다. 이것은 all-pairs testing이 도움이 될 것입니다.