[소프트웨어 테스트] (homework2) 오류 분석
Fault : A static defect in the software.[정적으로 소프트웨어에서 발생한 오류.]
Failure : External, incorrect behavior with respect to the requirements or other description of the expected behavior.[외부의 표현, 부정확한 행위, 예기한 행위에 대한 요구 또는 다른 묘사.]
Error : An incorrect internal state that is the manifestation of some fault.[부정확한 내부 상태는 잘못된 표현 형식이다.]
2) RIP 모델:
Reachability 가용성
감염
전파성
3)
Tarantula 공식:
4) 프로그램 용례 분석:
요구 사항:
다음은 두 개의 프로그램을 제시하고, 각 프로그램은 하나의 테스트 용례를 제시하며, 이 용례는 잘못된 결과를 나타낸다.
각각 네 가지 질문에 대답합니다.
① 오류 분별(fault).
② 가능하다면 실행 오류가 없는 테스트 용례를 식별한다.
③ 가능하다면 오류를 실행했지만 오류 결론을 내리지 못한 테스트 용례를 식별한다.
④ 가능하다면 error를 받았지만 failure의 결론을 얻지 못한 테스트 용례를 식별한다.
프로그램 1:
1 public int findLast (int[] x, int y) {
2 //Effects: If x==null throw NullPointerException
3 // else return the index of the last element
4 // in x that equals y.
5 // If no such element exists, return -1
6 for (int i=x.length-1; i > 0; i--)
7 {
8 if (x[i] == y) {
9 return i; }
10 }
11 return -1;
12 }
13 // test: x=[2, 3, 5]; y = 2
14 // Expected = 0
대답:
① for 순환 중의 판단 조건은 i>=0이어야 하며 i>0이어야 한다.
② x=0이면 for 순환을 거치지 않기 때문에 잘못된 코드 위치를 실행하지 않습니다.
③ x와 y가 같은 크기의 요소가 x의 첫 번째 위치가 아니라면 코드 줄을 실행하고 오류를 보고하지 않습니다.
예를 들어 x=[1,2,3,4,5]y=3이면 코드 줄을 통과할 수 있고 오류가 발생하지 않습니다.
④ x에서 원소의 개수가 하나일 때 error를 받았지만 failure가 없는 상황이 발생합니다.
프로그램 2:
1 public static int lastZero (int[] x) {
2 //Effects: if x==null throw NullPointerException
3 // else return the index of the LAST 0 in x.
4 // Return -1 if 0 does not occur in x
5 for (int i = 0; i < x.length; i++)
6 {
7 if (x[i] == 0)
8 {
9 return i;
10 }
11 }
12 return -1;
13 }
14
15 // test: x=[0, 1, 0]
16 // Expected = 2
대답:
① for(int i = 0;i
② 모든 테스트 용례는 잘못된 코드 줄을 거친다.
③ x에 하나의 요소만 있을 때, 예를 들어 x=[1], 이때 잘못된 코드 줄을 실행하지만 오류를 보고하지 않는다.
④ x의 그룹에 0이 있을 때 오류가failure가 없는 상황이 발생합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.