18 소프트웨어 시험(테스팅)
1 시험의 정의
-IEEE- 소프트웨어의 시험은 정의되어진 요구사항의 만족도 및 예상결과와 실제 결과와의 차이점을 검사하기 위하여 수동 혹은 자동으로 시스템을 수행 혹은 평가하는 과정이다.
-Glen Myers- 소프트웨어의 시험은 오류를 찾아내고자 하는 목적으로 프로그램 혹은 시스템을 수행하는 과정이며, 오류의 조기발견과 수정, 진행과정의 평가 및 결과에 대한 확인이다. 또한 소프트웨어 개발주기의 각 단계에서 시험 요구사항이 정의되고, 오류를 많이 발견할 수 있을 때 시험은 성공적이라 할 수 있다. 좋은 시험사례는 아직 발견되지 않은 오류를 찾아내는 확률이 높고, 성공적인 시험은 아직까지 발견되지 않은 오류를 발견해내는 것이다. 또한 시험 그 자체도 계획수립, 설계, 및 시험이 필요하다.
-Roger S. Pressman- 시험은 결함이 없다는 것을 보여줄 수는 없고, 단지 소프트웨어 결함이 나타나는 것만을 보여준다.
-이 주헌- 소프트웨어의 시험은 개발된 원시코드의 품질을 평가하는 것이 아니라 노출되지 않은 숨어있는 결함을 찾기위해 소프트웨어를 작동시키는 일련의 행위와 절차를 말한다.
-IEEE- 소프트웨어의 시험은 정의되어진 요구사항의 만족도 및 예상결과와 실제 결과와의 차이점을 검사하기 위하여 수동 혹은 자동으로 시스템을 수행 혹은 평가하는 과정이다.
-Glen Myers- 소프트웨어의 시험은 오류를 찾아내고자 하는 목적으로 프로그램 혹은 시스템을 수행하는 과정이며, 오류의 조기발견과 수정, 진행과정의 평가 및 결과에 대한 확인이다. 또한 소프트웨어 개발주기의 각 단계에서 시험 요구사항이 정의되고, 오류를 많이 발견할 수 있을 때 시험은 성공적이라 할 수 있다. 좋은 시험사례는 아직 발견되지 않은 오류를 찾아내는 확률이 높고, 성공적인 시험은 아직까지 발견되지 않은 오류를 발견해내는 것이다. 또한 시험 그 자체도 계획수립, 설계, 및 시험이 필요하다.
-Roger S. Pressman- 시험은 결함이 없다는 것을 보여줄 수는 없고, 단지 소프트웨어 결함이 나타나는 것만을 보여준다.
-이 주헌- 소프트웨어의 시험은 개발된 원시코드의 품질을 평가하는 것이 아니라 노출되지 않은 숨어있는 결함을 찾기위해 소프트웨어를 작동시키는 일련의 행위와 절차를 말한다.
2 시험의 사례
인력, 시간, 비용을 최소화하면서 결함발견 확률을 높일 수 있는 시험 가능한 사례
인력, 시간, 비용을 최소화하면서 결함발견 확률을 높일 수 있는 시험 가능한 사례
1) 블랙박스 시험(Black Box Test) :
부정확하거나 빠진 기능이 없이 완벽하게 작동하는지를 시험
입력, 출력은 정확한지를 검사하는 시험
자료 구조 결함, 성능결함, 시작과 종결상의 결함, 인터페이스 결함에 대하여 실시
시스템 측면만을 시험
목적코드를 수행시켜가면서 시험
부정확하거나 빠진 기능이 없이 완벽하게 작동하는지를 시험
입력, 출력은 정확한지를 검사하는 시험
자료 구조 결함, 성능결함, 시작과 종결상의 결함, 인터페이스 결함에 대하여 실시
시스템 측면만을 시험
목적코드를 수행시켜가면서 시험
2) 화이트박스 시험(White Box Test) :
특수한 조건이나 반복작업과 같은 세부적인 절차에 대한 시험
한정된 수의 중요한 논리적인 경로만 시험
완벽한 시험 곤란
프로그램의 모든 경로가 단 한번이라도 수행되도록 시험 설계
특수한 조건이나 반복작업과 같은 세부적인 절차에 대한 시험
한정된 수의 중요한 논리적인 경로만 시험
완벽한 시험 곤란
프로그램의 모든 경로가 단 한번이라도 수행되도록 시험 설계
3 시험의 변화
과거
소프트웨어 개발주기 마지막 단계에서 프로그램을 시험하는 것으로 인식
개발단계마다 시험하지 않고, 마지막 단계에서 집중적인 시험 ⇒ 개발 지연 원인
현재
디버깅은 프로그래머의 영역
계획에 따라 검증, 확인하는 작업
사용자나 시험자가 수행시키면서 결함 발견
여러 가지 시험 데이터와 사례들을 만들어 시행
소프트웨어 개발주기 마지막 단계에서 프로그램을 시험하는 것으로 인식
개발단계마다 시험하지 않고, 마지막 단계에서 집중적인 시험 ⇒ 개발 지연 원인
현재
디버깅은 프로그래머의 영역
계획에 따라 검증, 확인하는 작업
사용자나 시험자가 수행시키면서 결함 발견
여러 가지 시험 데이터와 사례들을 만들어 시행
4 시험의 특성
완벽하고 철저한 시험은 불가능
기능을 전부 시험하기 위한 경우의 수는 너무 많다
시험을 위한 모든 데이터 작성 곤란
시험을 하는 목적 ⇒ 오류를 사전에 방지하기 위한 것
실행 중에 나타날 오류를 미리 정정
기능을 전부 시험하기 위한 경우의 수는 너무 많다
시험을 위한 모든 데이터 작성 곤란
시험을 하는 목적 ⇒ 오류를 사전에 방지하기 위한 것
실행 중에 나타날 오류를 미리 정정
5 시험의 단계별 순서
1) 요구 분석 및 계획 단계
① 신 시스템의 현재 시스템 대체 가능성 검토, 대체안과 일정계획 작성
② 마스터 파일 구조, 데이터 베이스 구축 기술 검사
③ 시험 방법 결정, 시험 도구 선정
④ 시험 기준을 설정
① 신 시스템의 현재 시스템 대체 가능성 검토, 대체안과 일정계획 작성
② 마스터 파일 구조, 데이터 베이스 구축 기술 검사
③ 시험 방법 결정, 시험 도구 선정
④ 시험 기준을 설정
2) 설계 단계
① 시험 기기 구성을 결정
② 시험 계획 수립. 즉, 시험의 체제, 방법, 항목, 환경, 일정 계획을 결정
③ 시험 도구를 설계
④ 설계의 실행 가능성 검토
⑤ 시험 시행 문제점 검토
① 시험 기기 구성을 결정
② 시험 계획 수립. 즉, 시험의 체제, 방법, 항목, 환경, 일정 계획을 결정
③ 시험 도구를 설계
④ 설계의 실행 가능성 검토
⑤ 시험 시행 문제점 검토
3) 코딩 단계
① 모듈, 모듈간, 프로그램간의 결합시험 위한 사양 설계
② 시스템 시험을 위해 고려해야할 사항을 설계
기능, 성능, 형상, 구조적 코딩, 표준화 형태, 문서화 기준을 설계
③ 디버그 시스템이나 디버그 도구 같은 시험도구 작성
④ 시험계획서와 시스템 설계 내용의 일치 확인
· 기능
· 프로그램간의 인터페이스
· 성능 처리능력
· 프로그램 구조 유연성
· 시험 항목의 누락
· 실시 문제점
⑤ 시험 실시 계획을 세운다.
· Simulator 사용여부 결정, 사용방법 습득
· 각종장치의 사용방법 습득
· 시험 데이터 작성
① 모듈, 모듈간, 프로그램간의 결합시험 위한 사양 설계
② 시스템 시험을 위해 고려해야할 사항을 설계
기능, 성능, 형상, 구조적 코딩, 표준화 형태, 문서화 기준을 설계
③ 디버그 시스템이나 디버그 도구 같은 시험도구 작성
④ 시험계획서와 시스템 설계 내용의 일치 확인
· 기능
· 프로그램간의 인터페이스
· 성능 처리능력
· 프로그램 구조 유연성
· 시험 항목의 누락
· 실시 문제점
⑤ 시험 실시 계획을 세운다.
· Simulator 사용여부 결정, 사용방법 습득
· 각종장치의 사용방법 습득
· 시험 데이터 작성
4) 시험단계
① 모듈 시험
데이터 인터페이스, 자료구조상의 오류, 논리경로, 데이터 범위
② 결합 시험
모듈, 프로그램, 부 시스템, 시스템, 결합 단계마다 기능 시험
결합시험의 특징
(ㄱ) 하향식 결합시험
(ㄴ) 상향식 결합시험
(ㄷ) 샌드위치 결합시험
(ㄹ) Big Bang 결합시험
③ 시스템 시험
전체적인 시나리오를 구성하여 기능들의 연관관계를 시험
(ㄱ) 기능 시험 (ㅁ) 과부하 시험
(ㄴ) 유용성 시험 (ㅂ) 복구성 시험
(ㄷ) 성능 시험 (ㅅ) 안정성 시험
(ㄹ) 신뢰성 시험 (ㅇ) 설치용이성 시험
① 모듈 시험
데이터 인터페이스, 자료구조상의 오류, 논리경로, 데이터 범위
② 결합 시험
모듈, 프로그램, 부 시스템, 시스템, 결합 단계마다 기능 시험
결합시험의 특징
(ㄱ) 하향식 결합시험
(ㄴ) 상향식 결합시험
(ㄷ) 샌드위치 결합시험
(ㄹ) Big Bang 결합시험
③ 시스템 시험
전체적인 시나리오를 구성하여 기능들의 연관관계를 시험
(ㄱ) 기능 시험 (ㅁ) 과부하 시험
(ㄴ) 유용성 시험 (ㅂ) 복구성 시험
(ㄷ) 성능 시험 (ㅅ) 안정성 시험
(ㄹ) 신뢰성 시험 (ㅇ) 설치용이성 시험
5) 유지보수 단계
① 회귀 시험
유지보수 단계, 문제해결, 새 기능 추가할 때, 변경된 부분과 대조하여 시스템을 다시 시험하는 것
① 회귀 시험
유지보수 단계, 문제해결, 새 기능 추가할 때, 변경된 부분과 대조하여 시스템을 다시 시험하는 것
6 검토, 검사 및 검증
6.1 검토 및 검사
6.1 검토 및 검사
검토(Review)란?
제품의 특정 부분을 다른 개발요원과 함께 조사하는 비 정형적 방법
수명주기 전 과정에서 수시 실행
제품의 특정 부분을 다른 개발요원과 함께 조사하는 비 정형적 방법
수명주기 전 과정에서 수시 실행
검사(Inspection)란?
제품 품질을 평가 ⇒ 개선키 위한 조사
외부 설계 검사
내부 설계 검사
상세 설계 검사
코딩 검사
시험 계획 검사
제품 품질을 평가 ⇒ 개선키 위한 조사
외부 설계 검사
내부 설계 검사
상세 설계 검사
코딩 검사
시험 계획 검사
1) 외부 및 내부 설계 검사 단계에서 조사해야할 사항
① 완전성 : 요구 기능, 성능 포함 여부
② 일관성 : 용어 정의 및 사용의 표준화
③ 정확성 : 입,출력 및 알고리즘의 정확
④ 확장성 : 기능, 데이터 량의 증가에 적응
① 완전성 : 요구 기능, 성능 포함 여부
② 일관성 : 용어 정의 및 사용의 표준화
③ 정확성 : 입,출력 및 알고리즘의 정확
④ 확장성 : 기능, 데이터 량의 증가에 적응
2) 상세 설계 검사 및 코드 검사 단계에서 조사해야 할 사항
① 부 프로그램과의 접속 관계
② 판단 논리
③ 계산식
④ 입출력
⑤ 주석
⑥ 자료흐름, 기억장소 사용
① 부 프로그램과의 접속 관계
② 판단 논리
③ 계산식
④ 입출력
⑤ 주석
⑥ 자료흐름, 기억장소 사용
3) 시험계획 의 작성 과정
① 검증해야할 요구사항을 식별
② 검증활동을 위한 검증 순서를 결정
③ 검증에 대한 요구사항과 관련된 소프트웨어 식별
④ 검증에 대한 요구사항과 관련된 소프트웨어 집단화
⑤ 테스트 순서도 작성
⑥ 테스트를 위해 필요한 자원 조사
⑦ 테스트 일정계획 작성
6.2 검정(verification)과 검증(validation)
1) 검정(verification)
생산품이 이전 단계에서 수립된 요구들을 수행하는가를 결정하는 과정
프로그램의 정확도, 항목, 프로세스, 서비스, 문서들이 요구에 맞는지 조사하고 문서화하는 행위
① 주기 검정(life-cycle verification)
② 형식 검정(formal verification)
생산품이 이전 단계에서 수립된 요구들을 수행하는가를 결정하는 과정
프로그램의 정확도, 항목, 프로세스, 서비스, 문서들이 요구에 맞는지 조사하고 문서화하는 행위
① 주기 검정(life-cycle verification)
② 형식 검정(formal verification)
2) 검증(validation)
소프트웨어 개발과정의 끝 부분에서 소프트웨어를 평가하는 과정
데이터가 미리 명시된 제약조건을 만족하는지를 증명하는 것
소프트웨어 개발과정의 끝 부분에서 소프트웨어를 평가하는 과정
데이터가 미리 명시된 제약조건을 만족하는지를 증명하는 것
'UP! > Software Engineering' 카테고리의 다른 글
CASE (0) | 2008.08.21 |
---|---|
소프트웨어 시험전략 (0) | 2008.08.21 |
DB 설계 (0) | 2008.08.21 |
파일설계 (0) | 2008.08.21 |
입력과 출력 설계 (0) | 2008.08.21 |