테스트(()test) - kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예)...

53
소프트웨어 소프트웨어 공학 공학 (Software Engineering (Software Engineering) 스트 스트 (Test) (Test) 문양세 문양세 강원대학교 강원대학교 IT IT대학 대학 컴퓨터과학전공 컴퓨터과학전공

Upload: others

Post on 27-Jun-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

소프트웨어소프트웨어 공학공학 (Software Engineering(Software Engineering))

테스트테스트 (Test)(Test)테테 ( )( )

문양세문양세강원대학교강원대학교 ITIT대학대학 컴퓨터과학전공컴퓨터과학전공

Page 2: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

CDMA CDMA 이동통신이동통신 개발개발 조직조직 (1/2) (1/2) –– from from 개요개요테스트 (Test)

개발 조직을 다음과 같이 엔티티별로 구성해 보았다.

개발 대장

MSC BSC BTS HLR …

erin

g

erin

g

erin

g

erin

g

erin

g

Har

dwar

e

Soft

war

e

em E

ngin

ee

Test

Har

dwar

e

Soft

war

e

em E

ngin

ee

Test

Har

dwar

e

Soft

war

e

em E

ngin

ee

Test

Har

dwar

e

Soft

war

e

em E

ngin

ee

Test

Har

dwar

e

Soft

war

e

em E

ngin

ee

Test

H

Syst

e H

Syst

e H

Syst

e H

Syst

e H

Syst

e

Software Engineeringby Yang-Sae MoonPage 2

Page 3: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)CDMA CDMA 이동통신이동통신 개발개발 조직조직 (2/2) (2/2) –– from from 개요개요

개발 조직을 다음과 같이 기능별로도 구성해 보았다.

개발 대장

Hardware Software System Eng. Test

MSC

BSC

BTS

HLR … MSC

BSC

BTS

HLR … MSC

BSC

BTS

HLR … MSC

BSC

BTS

HLR …

Software Engineeringby Yang-Sae MoonPage 3

Page 4: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)In this chapter …In this chapter …

실제로 현장(real world)에서 테스트에 드는 노력은

총 비용의 50% 이상,총 개발 기간의 정도에 해당한다총 개발 기간의 50% 정도에 해당한다.

테스트의 목적은 소프트웨어의 기능을 시험하는 것이 아니라테스트의 목적은 소프트웨어의 기능을 시험하는 것이 아니라,소프트웨어의 오류를 찾아내어 그 품질(quality)을 향상시키는데 있다. 매우 여러 종류의 여러 단계의 테스트를 수행한다.

We will cover …• 테스트 개요 및 테스트 원리• 테스트 개요 및 테스트 원리

• 화이트 박스 테스트 (white box test)• 블랙 박스 테스트 (black box test)

자료 구조 중심 테스트 (data structure oriented test)• 자료 구조 중심 테스트 (data structure oriented test)• 통합 테스트 (integration test)• 인수 테스트 (acceptance test)

테스트 자동화 도구

Software Engineeringby Yang-Sae MoonPage 4

• 테스트 자동화 도구

Page 5: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

We are now …We are now …테스트 (Test)

테스트 개요 및 테스트 원리

화이트 박스 테스트 (white box test)

블랙 박스 테스트 (black box test)블랙 박스 테스트 (black box test)

자료 구조 중심 테스트 (data structure oriented test)

통합 테스트 (integration test)

인수 테스트 (acceptance test)인수 테스트 (acceptance test)

테스트 자동화 도구

Software Engineeringby Yang-Sae MoonPage 5

Page 6: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)테스트테스트 개요개요

테스트?• 테스트에 필요한 시간과 노력 매우 크다• 테스트에 필요한 시간과 노력 매우 크다.

• 그러나, 테스트는 대부분 초보자나 개인의 역량에 맡기는 경우가 많다. Low level 작업이라는 인식이 넓게 퍼져 있다.

정의정의

• 시스템이 정해진 요구를 만족하는지, 예상과 실제 결과가 어떤 차이를 보이는

지 수동/자동 방법을 동원하여 검사/평가하는 일련의 과정[IEEE, 1993]

• 숨어있는 결함을 찾기 위해 소프트웨어를 작동 시키는 일련의 행위와 절차

결함이 없음을 증명하는 것이 아니고, 결함이 존재함을 보여주는 작업

• 테스트: 분석, 설계 도중에 일어나는 검증, 검토 등 품질보증을 위한 모든 행위

Software Engineeringby Yang-Sae MoonPage 6

Page 7: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)최근엔최근엔? ? –– 테스트테스트 전문가전문가 자격자격증증

Software Engineeringby Yang-Sae MoonPage 7

Page 8: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)테스트와테스트와 개발개발 단계단계 (V (V 모형모형))

테스트 단계와 소프트웨어 개발 단계의 관계

개발 단계 테스트 단계

범위와 목표 인수테스트고객(사용자)

요구 분석 시스템 테스트

리그레션 테스트시험자

시험자

구조 설계 통합 테스트

프로그래머

시험자,프로그래머

프로그램 설계 단위 테스트

Regression Test (회귀 테스트)

프로그래머

코 딩Regression Test (회귀 테스트)• 테스트의 중복을 피하기 위하여 테스트 재사용• 두 가지 의미

오류를 발견하여 고치고 다시 원래 문제를 일으켰던 것을 테스트 확인, 수정이 예상대로 되었는지 확인하고, 수정된 것을 반복 테스트

Software Engineeringby Yang-Sae MoonPage 8

수정이 예상대로 되었는지 확인하고, 수정된 것을 반복 테스트 수정된 부분이 다른 부분에 영향을 주어 예상하지 않은 오류를 발생시키지

않는지 확인, 수정 후 프로그램의 통합이 제대로 이루어졌는지 확인

Page 9: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)소프트웨어소프트웨어 심리심리 (1/2)(1/2)

프로그래머의 심리

• 자신의 프로그램이 옳다고 생각, 그러나 프로그램의 오류는 테스트에 의하여 확인됨

디버깅이 안되면 주저하지 말고 실력이 있든 없든 옆 사람에게 도움을 청하라.

• 프로그램 안의 오류를 인신 공격, 또는 개인 평가로 해석하여 테스트를 기피

특히 우리나라는 버그를 잡아주면 고마워하지 않고 미워한다?특히, 우리나라는 버그를 잡아주면 고마워하지 않고 미워한다?

심리적 불안심리적 불안

• 테스트는 파괴적인 과정(destructive process)으로 생각

심혈을 기울여 구조적으로 짠 것인데, 그 버그 때문에 망가지는군…

• 이를 극복하기 위하여 테스트하기 전에 예상 결과를 준비

예를 들어, “경험상 테스트 결과 코드의 50%는 바뀔 각오를 해라”는 당연한 논리 설

• independent test, test automation

Software Engineeringby Yang-Sae MoonPage 9

Page 10: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)소프트웨어소프트웨어 심리심리 (2/2)(2/2)

모든 소프트웨어는 테스트를 통해서 강해집니다.

절대로 비판을 두려워하지 마세요.

버그나 오류를 지적해 주는 사람에게 고마워하세요.

급할 수록 돌아가라는 속담은 진실입니다. 철저히 검사하세요.

나중에(고객에게 팔려서 사이트에서 돌아가는 경우) 나중에(고객에게 팔려서, 사이트에서 돌아가는 경우), 버그가 발견되면 수습하기가 더욱 어려워집니다.

Software Engineeringby Yang-Sae MoonPage 10

Page 11: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)테스트테스트 이슈이슈 (1/2)(1/2)

소프트웨어 신뢰도 요구의 증가

• 갈수록 오류가 적은/없는 소프트웨어를 원하고 있음• 갈수록 오류가 적은/없는 소프트웨어를 원하고 있음

• MS Windows의 경우, 예전에 툭하면 Blue Screen, 요즘엔 … 쓸만하죠?

오류의 방지

• 개발 단계에서의 오류 유입 방지 (가능한 조심스럽게)

• 테스트 케이스 설계 기술

(오류/버그가 빠져나갈 수 없는 테스트 케이스 설계를 목표로…)

• 모듈화 설계가 테스트에 드는 노력을 줄임

(작게 잘라서, 작은 것을 완벽히 한 후, 통합을 실시)

Software Engineeringby Yang-Sae MoonPage 11

Page 12: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)

Software Engineeringby Yang-Sae MoonPage 12

Page 13: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)테스트테스트 이슈이슈 (2/2)(2/2)

개발 전 단계에서의 많은 검증 노력이 요구됨 명언: 코딩을 늦게 시작할 수록 개발에 걸리는 시간이 적게 걸린다.명언: 코딩을 늦게 시작할 수록 개발에 걸리는 시간이 적게 걸린다.

• 대부분의 오류는 설계 단계에서의 정보 관리 부재에 기인

• 설계 오류가 제일 많음

• 오류 수정에 드는 비용은 절대 무시할 수 없음

• 테스트는 전 개발 단계에서 이루어져야 함

소프트웨어 테스트에 대한 이론적 기초

• 소프트웨어 오류의 성질을 이해

오류에는 어떤 것이 있는가? 어떤 경우에 오류가 잘 발생하는가? 어떤 경우에 오류가 잘 발생하는가? 오류를 빨리 확인하기 위하여 어떤 테스트를 수행해야 하는가?

Software Engineeringby Yang-Sae MoonPage 13

Page 14: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)테스트테스트 유형유형 (1/2)(1/2)

Validation(확인): Are we building the right product? 만든 제품이 바른 제품이야? (기능적 측면)

Verification(검증): Are we building the product right? 만든 제품이 바르게 동작하는 거야? (품질 측면) 만든 제품이 바르게 동작하는 거야? (품질 측면)

인증(Certification): A written guarantee

정적 분석(Static Analysis): 코드/문서를 보면서

동적 분석(Dynamic Analysis): 프로그램을 돌려 가면서동적 분석(Dynamic Analysis): 프로그램을 돌려 가면서

단계별

위• 단위 테스트(unit test)

• 통합 테스트(integration test)

• 인수 테스트(acceptance test)

Software Engineeringby Yang-Sae MoonPage 14

Page 15: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)테스트테스트 유형유형 (2/2)(2/2)

시험 방법

• 화이트 박스 테스트

• 블랙 박스 테스트

기능 시험기능 시험

성능 시험

스트레스 시험 ( 고온에서 시험 )스트레스 시험 ( 고온에서 시험…)

Benchmark 시험

Field 시험Field 시험

Regression test

품질 보증 (Quality assurance)

Software Engineeringby Yang-Sae MoonPage 15

Page 16: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)테스트테스트 단계단계

1) 테스트에 의하여 무엇을 점검할 것인지 정한다.예) 테스트의 목표 - 기능의 완벽성, 신뢰도

2) 테스트 방법을 결정한다.예) 검사 증명 블랙박스 테스트 화이트 박스 테스트 자동화 도구예) 검사, 증명, 블랙박스 테스트, 화이트 박스 테스트, 자동화 도구

3) 테스트 케이스를 개발한다.예) 테스트 자료, 시행 조건, 시험 계획서

4) 테스트의 예상되는 올바른 결과를 작성한다4) 테스트의 예상되는 올바른 결과를 작성한다.테스트 오라클(test oracle, 모든 테스트에 대한 예상 결과 모음)

5) 테스트 케이스로 실행시킨다.테스트 하니스(test harness, 테스트를 위해 일부 기능을 변경하는 작업)가 필요

Software Engineeringby Yang-Sae MoonPage 16

Page 17: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)테스트에테스트에 대한대한 올바른올바른 이해이해 (1/2)(1/2)

테스트는 프로그램이 잘 돌아가는지를 보려고 수행하는 것이 아니다.

내 프로그램 정확하니, 한번 확인해 봐 라는 식으로 테스트에 임한다.내 로 램 정확하니, 한번 확인해 봐 라는 식 로 테스 에 임한다

이렇게 되면, 테스트 결과에 대체로 불만족스러워 한다.

테스트는 오류를 발견하려고 프로그램을 수행시키는 것이다.

절대 소극적으로 수행하지 않아야 한다 절대 소극적으로 수행하지 않아야 한다.

잘못하면, 나중에는 더 큰 악재로 다가온다.

Software Engineeringby Yang-Sae MoonPage 17

Page 18: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)테스트에테스트에 대한대한 올바른올바른 이해이해 (2/2)(2/2)

테스트에 의하여 오류가 발견되지 않았다고 하여 프로그램에 오류

가 없는 것은 아님가 없는 것은 아님

• 완벽한 테스트는 불가능하다.일반적으로 전체 검수가 아닌 부분 검수에 해당…

• 테스트는 창조적인 일이며 힘든 일이다.효율적인 테스트를 위해서는 소프트웨어를 잘 이해하여야 하며,

창조력을 지닌 전문가에 의해서 행해져야 한다창조력을 지닌 전문가에 의해서 행해져야 한다.

• 테스트는 오류의 유입을 방지할 수 있다.개발 과정에 많은 테스트를 할 수록 궁극적으로 오류를 줄일 수 있다.개발 과정에 많은 테스트를 할 수록 궁극적으로 오류를 줄일 수 있다

• 테스트는 구현에 관계없는 독립된 팀에 의하여 수행되어야 한다.자기가 자기 것을 테스트 하는 것은 고양이에게 생선을 맡긴 꼴이다.

Software Engineeringby Yang-Sae MoonPage 18

Page 19: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)오류오류 ((발생발생) ) 패턴패턴

테스트는 시스템의 오류 패턴과 매우 밀접한 관련

처음에는 적당히 분산되어 고르게 오류가 발견되는 듯 하다가, 테스트를 하면 할 수록 오류가 많은 부분에서 더 많은 오류가 발생한다.

모듈에 오류가 너무 많다면 오류 없는 모듈이 될 수 있도록 테스트하여 고

치는 것은 한계가 있다. 오류가 많다면 다시 짜는 것이 상책이다 오류가 많다면… 다시 짜는 것이 상책이다. 이런 일은 비일비재한데…, 얼마나 큰 비애를 느낄까요?

Software Engineeringby Yang-Sae MoonPage 19

Page 20: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

We are now …We are now …테스트 (Test)

테스트 개요 및 테스트 원리

화이트 박스 테스트 (white box test)

블랙 박스 테스트 (black box test)블랙 박스 테스트 (black box test)

자료 구조 중심 테스트 (data structure oriented test)

통합 테스트 (integration test)

인수 테스트 (acceptance test)인수 테스트 (acceptance test)

테스트 자동화 도구

Software Engineeringby Yang-Sae MoonPage 20

Page 21: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)화이트화이트 박스박스 테스트테스트 (1/2)(1/2)

모듈 안의 작동을 자세히 관찰하는 시험

각각의 라인이 제대로 수행되는지를 철저하게 시험

(길이가 짧은) 특수 프로그램에 대해서나 적용 가능한 방법…

검증 기준 (test coverage)• Statement coverage: 원시 코드의 모든 문장을 한번 이상 수행• Statement coverage: 원시 코드의 모든 문장을 한번 이상 수행

• Decision coverage: 선택 구조 조건의 모든 경우가 적어도 한번씩 테스트

• Loop coverage: 루프 구조를 완벽히 테스트

① 반복조건을 만족하지 못하여 루프를 수행시키지 못한 경우① 반복조건을 만족하지 못하여 루프를 수행시키지 못한 경우

② 루프 안의 내용을 한번만 수행

③ 한번 이상 수행한번 이상 수행

Software Engineeringby Yang-Sae MoonPage 21

Page 22: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)화이트화이트 박스박스 테스트테스트 순서순서 (2/2)(2/2)

화이트 박스 테스트 순서

1) 논리 흐름도에 의한 표현

2) 테스트 케이스 생성

논리 흐름도: 모듈 내의 제어흐름을 간선으로 표시한 그래프

• 세그먼트(begin-end) 노드(node)

• 제어흐름 간선(edge)제어흐름 간선(edge)

세그먼트의 발견 NS-도표 (나씨-슈나이더) 활용

Software Engineeringby Yang-Sae MoonPage 22

Page 23: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)논리논리 흐름도흐름도 표현의표현의 예예 (1/2)(1/2)

점수의 평균을 구하는 프로그램 p. 427

NS-도표 작성 p. 428

흐논리 흐름도

Software Engineeringby Yang-Sae MoonPage 23

Page 24: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)논리논리 흐름도흐름도 표현의표현의 예예 (2/2)(2/2)

테스트 케이스 작성: 검증 기준에 따라 논리 흐름도의 경로를 적어도 한

번씩 방문하도록 테스트 케이스를 추출

예제

테스트 케이스 경로

score=89.0 a, b, d, h, c, i<eof> a c<eof> a, cscore=53.41, -77.0 a, b, d, h, b, e, h, c, j

화이트 박스 실행: 모든 경우에 대한 테스트 실행표를 만들고, 실험을 수

행하면서 정상적으로 동작하는지 검사 p. 433의 그림 8.7 참조

화이트 박스 테스트는 이론적으로는 가능한 이야기이나,실제 소프트웨어에 적용하는데 한계가 있음

Software Engineeringby Yang-Sae MoonPage 24

실제 소프트웨어에 적용하는데 한계가 있음

Page 25: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

We are now …We are now …테스트 (Test)

테스트 개요 및 테스트 원리

화이트 박스 테스트 (white box test)

블랙 박스 테스트 (black box test)블랙 박스 테스트 (black box test)

자료 구조 중심 테스트 (data structure oriented test)

통합 테스트 (integration test)

인수 테스트 (acceptance test)인수 테스트 (acceptance test)

테스트 자동화 도구

Software Engineeringby Yang-Sae MoonPage 25

Page 26: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)블랙블랙 박스박스 테스트테스트

모듈이 요구에 맞게 잘 작동하는가에 초점을 맞춘다.

모듈의 기능 시험에 해당한다.• 모듈의 외형 (입력, 출력)

모듈의 기능 위주의 검사• 모듈의 기능 위주의 검사

현실적으로 사용 가능한 테스트 방법이다현실적으로 사용 가능한 테스트 방법이다.특히, 제 3자가 테스트를 수행할 경우, 블랙 박스 테스트가 적합하다.

Software Engineeringby Yang-Sae MoonPage 26

Page 27: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)동치동치 분해분해 (Equivalence Partitioning) (1/2)(Equivalence Partitioning) (1/2)

입력 조건을 여러 개의 동치 클래스로 나눔

방법 1) 입력이 일정한 범위 안의 값을 가져야 한다면, 최소한 세 개의 동

치 클래스가 존재한다.범위보다 작은 값• 범위보다 작은 값

• 범위 내의 값

• 범위보다 큰 값

예) 현금 자동 지급기 지급 범위가 10,000원 ~ 30만원이라면

• 범위보다 작은 값 10,000원보다 작은 비정상 값

• 범위 내의 값 10,000원 ~ 30만원 정상 값

• 범위보다 큰 값 30만원보다 큰 비정상 값정상

Software Engineeringby Yang-Sae MoonPage 27

Page 28: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)동치동치 분해분해 (Equivalence Partitioning) (2/2)(Equivalence Partitioning) (2/2)

방법 2) 이산적 집합(T/F)에 속하는 값이어야 정상 입력이라면, 두 가지

동치 클래스가 존재한다.• 정상 입력에 속하는 값

• 그 이외의 값

예) 학적 관리 시스템에서의 재학 상태

• 재학 상태의 정상적인 값, 즉, 재학, 휴학, 졸업, 중퇴

• 그 외의 비정상적인 값

Software Engineeringby Yang-Sae MoonPage 28

Page 29: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)식료품식료품 이름이름 및및 무게무게 예제예제 (1/2)(1/2)

입력 조건 (품명, 무게1, 무게2, …)• 품명은 2 ~ 15 자리의 영문자

• 무게는 1 ~ 48 범위의 숫자(정수)

• 무게는 오름차순으로 정렬

• 품명이 먼저 입력되고, 쉼표가 나오고, 무게 값의 리스트가 나옴

1. 품명의 이름은 영문자이어야 한다.1) 영문자가 이름(정상): AbcDef

2) 영문자가 아닌 이름(비정상): A2X?/

2. 품명은 2 ~ 15의 영문자이어야 한다.3) 길이가 2 미만의 문자열(비정상): A3) 길이가 2 미만의 문자열(비정상): A

4) 2 이상 15 이하의 문자열(정상): AbcDef

5) 길이가 15보다 큰 문자열(비정상): abcdefghijklmnopqrstivwxyz

Software Engineeringby Yang-Sae MoonPage 29

Page 30: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)식료품식료품 이름이름 및및 무게무게 예제예제 (2/2)(2/2)

3. 무게는 1 ~ 48 사이의 정수

6) 1보다 작은 값(비정상): -16) 1보다 작은 값(비정상): 1

7) 1 ~ 48 사이의 값(정상): 24

8) 48보다 큰 값(비정상): 127

9) 정수(정상): 249) 정수(정상): 24

10) 실수(비정상): 5.3

11) 숫자(정상): 24

12) 숫자 아님(비정상): 3A

4. 무게는 오름차순 이어야 함무게는 름차순 이어야 함

13) 오름차순의 무게(정상): 1, 2, 3

14) 오름차순이 아닌 무게(비정상): 2, 1, 3

...... 나머지는 교재 참조

Software Engineeringby Yang-Sae MoonPage 30

Page 31: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)경계경계 테스트테스트 (Boundary Test)(Boundary Test)

많은 오류가 자료 값 범위의 경계에서 발생한다는 경험에 따라, 경계 값

에 대해서 테스트를 수행한다.

예: 무게가 1 ~ 48이면, 1과 48, 그리고 0과 49를 시험한다.

Software Engineeringby Yang-Sae MoonPage 31

Page 32: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

We are now …We are now …테스트 (Test)

테스트 개요 및 테스트 원리

화이트 박스 테스트 (white box test)

블랙 박스 테스트 (black box test)블랙 박스 테스트 (black box test)

자료 구조 중심 테스트 (data structure oriented test)

통합 테스트 (integration test)

인수 테스트 (acceptance test)인수 테스트 (acceptance test)

테스트 자동화 도구

Software Engineeringby Yang-Sae MoonPage 32

Page 33: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)자료자료 구조구조 중심중심 테스트테스트

자료구조, 특히 배열(array) 및 구조(structure)와 관련된 오류를 검출하

기 위한 테스트

예) 연결된 리스트(linked list)나 배열

1. 배열이나 리스트의 요소가 하나도 없음

2. 하나의 요소만 가짐

3 배열이나 리스트가 가질 수 있는 최대 크기 보다 하나 작은 요소를 가짐3. 배열이나 리스트가 가질 수 있는 최대 크기 보다 하나 작은 요소를 가짐

4. 배열이나 리스트가 가질 수 있는 최대 크기의 요소를 가짐

유사한 방법으로 구조체(structure) 타입도 테스트

Software Engineeringby Yang-Sae MoonPage 33

Page 34: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)자료자료 구조구조 중심중심 테스트테스트 예제예제

학교 A를 설립하려고 한다. 학교 A에서는 학생의 레코드를 배열에 저장하

려 하고, 최대 학생 수는 2,000명이라고 하자.

학교가 설립될 당시는 학생 수가 0이므로, 이때 배열이 바르게 동작하는

지 확인한다지 확인한다.

학생들이 증가하여 1 혹은 1999명이 되었을 때 배열이 바르게 동작하는학생들이 증가하여 1 혹은 1999명이 되었을 때, 배열이 바르게 동작하는

지 확인한다.

학생 수가 최대치인 2,000명에 이르렀을 때, 배열이 바르게 동작하는지

확인한다.

Software Engineeringby Yang-Sae MoonPage 34

Page 35: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

We are now …We are now …테스트 (Test)

테스트 개요 및 테스트 원리

화이트 박스 테스트 (white box test)

블랙 박스 테스트 (black box test)블랙 박스 테스트 (black box test)

자료 구조 중심 테스트 (data structure oriented test)

통합 테스트 (integration test)

인수 테스트 (acceptance test)인수 테스트 (acceptance test)

테스트 자동화 도구

Software Engineeringby Yang-Sae MoonPage 35

Page 36: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)통합통합 테스트테스트 (Integration Test)(Integration Test)

통합 테스트의 목적

• 시스템을 구성하는 모듈의 인터페이스와 결합을 테스트Driver

• 시스템 전체의 기능과 성능을 테스트

통합 순서에 따라 테 대상

Driver

통합 순서에 따라

• 동시식(big-bang) 단번에 해치워…

• 하향식(top-down) 위에서부터 아래로…

테스트 대상

Harness

• 상향식(bottom-up) 아래서부터 위로…

• 연쇄식(threads) 중요한 것을 중심으로 동시에…Stub

통합 시 필요한 소프트웨어

• 테스트 하니스(harness): 부분적인 테스트를 위하여 코드에 삽입하는 프로그램

추후 삭제됨

• 스텁(stub): 시험 대상 모듈이 호출하는 모듈 대신에 만들어진 모의 서브루틴

• 드라이버(driver): 시험 대상 모듈을 호출하는 모의 모듈

Software Engineeringby Yang-Sae MoonPage 36

드라이버(driver): 시험 대상 모듈을 호출하는 모의 모듈

Page 37: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)동시식동시식 통합통합 (Big Bang)(Big Bang)

모든 모듈을 한꺼번에 통합하여 테스트

단위 테스트에 많은 시간이 필요

시스템의 중요 부분과 부수적인 부분을 구별하지 않음

일정 계획에 융통성이 없음

오류가 있을 경우 어떤 모듈이 변경되어야 하는지 파악하기 어려움오류가 있을 경우 어떤 모듈이 변경되어야 하는지 파악하기 어려움

Software Engineeringby Yang-Sae MoonPage 37

Page 38: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)하향식하향식 통합통합 (Top(Top--down)down)

시스템 구조도의 위에 있는 모듈부터 아래 층의 모듈로 내려 오면서 통합

점증적 통합이므로 하드웨어의 사용이 분산되고 오류의 원인을 찾아 내

기 쉬움

상위층의 중요한 모듈을 먼저 시험

시스템의 골격을 조기에 테스트 함 시스템의 골격을 조기에 테스트 함

스텁의 사용으로 시스템의 모양을 사용자에게 조기에 보여줄 수 있음스텁의 사용으로 시스템의 모양을 사용자에게 조기에 보여줄 수 있음

프로그래머가 시스템의 작동에 대한 확신을 유지시킬 수 있음프로그래머가 시스템의 작동에 대한 확신을 유지시킬 수 있음

Software Engineeringby Yang-Sae MoonPage 38

Page 39: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)상향식상향식 통합통합 (Bottom(Bottom--up)up)

최하위 모듈을 먼저 시험

드라이버가 필요 (특성상, 스텁은 거의 필요치 않음)

오류 발견이 쉽고 하드웨어의 사용을 분산

하위층의 모듈을 상위층 보다 더 많이 시험

테스트의 초기에 뼈대가 갖추어지지 않음테스트의 초기에 뼈대가 갖추어지지 않음

Software Engineeringby Yang-Sae MoonPage 39

Page 40: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)연쇄식연쇄식 통합통합 (Threads)(Threads)

최선의 통합 방법

어느 정도의 기본 기능을 수행하는 모듈(thread)로부터 통합

시스템의 중요한 기능을 담당하는 모듈부터 통합

초기에 시스템을 골격을 보여주고 사용자의 의견을 받아 수정 가능

주요 테스트 작업을 동시에 진행할 수도 있음 (i d d t한 경우)주요 테스트 작업을 동시에 진행할 수도 있음 (independent한 경우)

Software Engineeringby Yang-Sae MoonPage 40

Page 41: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)기타기타 통합통합 테스트테스트

구조 테스트

• 각 모듈의 입력, 출력 매개변수

• 유틸리티 호출을 포함한 모든 모듈의 호출

기능 테스트기능 테스트

• 시스템 전체를 하나의 블랙박스로 보고 시험

• 정상적인 입력에 대하여 시험• 정상적인 입력에 대하여 시험

• 입력과 출력 예상 결과를 비교

성능 테스트: 트래픽 처리, 가입자 용량, …

스트레스 테스트 고온 저온 테스트 고압 저압 테스트 스트레스 테스트: 고온/저온 테스트, 고압/저압 테스트, …

Software Engineeringby Yang-Sae MoonPage 41

Page 42: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)통합통합 작업작업 일정일정

Software Engineeringby Yang-Sae MoonPage 42

Page 43: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)테스트테스트 항목항목 예제예제

Software Engineeringby Yang-Sae MoonPage 43

Page 44: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)시험시험 절차서절차서 예제예제

Software Engineeringby Yang-Sae MoonPage 44

Page 45: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

We are now …We are now …테스트 (Test)

테스트 개요 및 테스트 원리

화이트 박스 테스트 (white box test)

블랙 박스 테스트 (black box test)블랙 박스 테스트 (black box test)

자료 구조 중심 테스트 (data structure oriented test)

통합 테스트 (integration test)

인수 테스트 (acceptance test)인수 테스트 (acceptance test)

테스트 자동화 도구

Software Engineeringby Yang-Sae MoonPage 45

Page 46: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)인수인수 테스트테스트

목적

• 시스템이 사용할 수 있도록 모든 준비가 되어 있는지를 보이는 것

• 사용할 모든 준비가 되었다는 것을 확인시켜 주는 작업

테스트 방법은 사용자가 선택테스트 방법은 사용자가 선택

인수 테스트 방법의 대부분은 통합 테스트와 같음.다른 점은 (시험 환경이 아닌) 사용자 환경에서 한다는 것

알파 테스트: 사내 고객들을 대상으로 시험

베타 테스트베타 테스트

• 고객의 사용 환경에서 시험

• 개발자 없이, 실제 사용 환경에 소프트웨어를 설치하여 시험

Software Engineeringby Yang-Sae MoonPage 46

개발자 없이, 실제 사용 환경에 웨어를 설치하여 시험

Page 47: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)알파알파 테스트테스트 관련관련 기사기사

Software Engineeringby Yang-Sae MoonPage 47

Page 48: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)베타베타 테스트테스트 관련관련 기사기사

Software Engineeringby Yang-Sae MoonPage 48

Page 49: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

We are now …We are now …테스트 (Test)

테스트 개요 및 테스트 원리

화이트 박스 테스트 (white box test)

블랙 박스 테스트 (black box test)블랙 박스 테스트 (black box test)

자료 구조 중심 테스트 (data structure oriented test)

통합 테스트 (integration test)

인수 테스트 (acceptance test)인수 테스트 (acceptance test)

테스트 자동화 도구

Software Engineeringby Yang-Sae MoonPage 49

Page 50: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)코드코드 분석분석 도구도구

정적 분석 도구: 프로그램을 실행하지 않고 분석

• 코드 분석 도구: 원시 코드의 문법적 적합성을 자동으로 평가하여 잘못된 문장을 표기코드 분석 도구: 원시 코드의 문법적 적합성을 자동으로 평가하여 잘못된 문장을 표기

• 구조 검사 도구: 원시코드의 그래프를 생성하여 논리 흐름을 보여주고 구조적인 결함이

있는지 체크

• 데이터 분석 도구: 원시 코드에 정의된 데이터 구조, 데이터 선언, 컴포넌트 인터페이스

검사, 잘못된 링크나 데이터 정의 충돌, 잘못된 데이터 사용 등을 발견

순서 검사 도구 이벤트의 순서 체크 잘못된 순서로 코딩되어 있다면 이벤트를 지적• 순서 검사 도구: 이벤트의 순서 체크, 잘못된 순서로 코딩되어 있다면 이벤트를 지적

동적 분석 도구 프로그램을 실행하면서 분석동적 분석 도구: 프로그램을 실행하면서 분석

• 프로그램이 수행되는 동안 이벤트의 상태를 파악하기 위하여 특정한 변수나 조건의 스냅

샷(snapshot)을 생성샷(snapshot)을 생성

Software Engineeringby Yang-Sae MoonPage 50

Page 51: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)테스트테스트 케이스케이스 생성생성 도구도구

자료 흐름도

• 원시 프로그램을 입력받아 파싱한 후 자료 흐름도를 작성원시 프로그램을 입력받아 파싱한 후 자료 흐름도를 작성

• Define-use 테스트 (정의는 되었느나 사용되지 않은 변수가 없는지 검사)

기능 테스트

• 주어진 기능을 구동시키는 모든 가능한 상태를 파악하여 이에 대한 입력을 작성

입력 도메인 분석

• 원시코드의 내부를 참조하지 않고, 입력 변수의 도메인을 분석하여 테스트 데이터 작성

랜덤 테스트

• 입력 값을 무작위로 추출

Software Engineeringby Yang-Sae MoonPage 51

• 시스템의 신뢰성 분석에 사용

Page 52: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

테스트 (Test)테스트테스트 실행실행 도구도구

캡쳐 및 리플레이

• 테스트 계획에 표시된 테스트 데이터를 자동으로 입력하고 실행 과정에 발생하는 화면이테스트 계획에 표시된 테스트 데이터를 자동으로 입력하고 실행 과정에 발생하는 화면이

나 인쇄되는 결과를 캡쳐

• 예상되는 결과와 비교

• 예상되는 결과와 차이를 보일 경우 테스트 프로그래머에게 보고

• 오류를 발견하고 수정한 후 고치는 작업이 바르게 되었는지 확인하는 데 유용

자동적으로 스텁과 드라이버를 생성하는 도구

자동 테스트 환경

• 테스트 수행 도구들이 테스트 환경으로 통합되어 제공

Software Engineeringby Yang-Sae MoonPage 52

Page 53: 테스트(()Test) - Kangwoncs.kangwon.ac.kr › ~ysmoon › courses › 2010_2 › se › 07.pdf예) 테스트의목표- 기능의완벽성, 신뢰도 2) 테스트방법을결정한다

Homework Homework #4#4Homework

Software Engineeringby Yang-Sae MoonPage 53