소프트웨어 공학 (Software Engineering)

Slides:



Advertisements
Similar presentations
CI(Continuous Integration) 이학성. C ontinuous I ntegration? 2 지속적으로 품질관리 를 적용하는 과정 개발자가 기존 코드의 수정 작업 을 시작할 때, 코드 베이스의복사본을 받아서 작업을 시작하면서 코드의 변경.
Advertisements

Testing. Testing(1)  정의  테스트는 오류를 발견하기 위한 작업  시스템이 정해진 요구를 만족하는지, 예상과 실제 결과가 어떤 차이를 보이는지 수동 또는 자동의 방법을 사용하여 검사하고 평가하는 일련의 과정 [IEEE]  오류의 종류  원시코드가.
소프트웨어 공학 Lecture #9: 테스팅. 학습 목표 2 테스팅 기초 블랙 박스 테스팅 화이트 박스 테스팅 통합 및 시스템 테스팅 인수 테스팅 테스트 자공화 도구.
컴퓨터와 인터넷.
컴퓨터 운영체제의 역사 손용범.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
(1.1 v) 엔트리교육연구소 엔트리 카드게임 설명서.
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
<<< 시스템등록정보 “하드웨어-장치관리자” 설정 >>>
Power Java 제3장 이클립스 사용하기.
최윤정 Java 프로그래밍 클래스 상속 최윤정
Entity Relationship Diagram
Excel 일차 강사 : 박영민.
연결리스트(linked list).
데이터베이스 및 설계 금오공과대학교 컴퓨터공학부 이 이섭.
시스템집적반도체 설계 검증 환경과 기법 Ch 7.
오브젝트 조합 회로 IT CookBook, VHDL을 이용한 디지털 회로 입문.
07. 디바이스 드라이버의 초기화와 종료 김진홍
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
Error Detection and Correction
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
소프트웨어 공학 (Software Engineering)
Power Java 제14장 배치 관리자.
Sungkyunkwan University OS Project Dongkun Shin
자료구조: CHAP 4 리스트 (3) 순천향대학교 컴퓨터공학과 하 상 호.
10장. 예외처리.
Method & library.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
자바 5.0 프로그래밍.
어서와 C언어는 처음이지 제14장.
자바응용.
인터넷응용프로그래밍 JavaScript(Intro).
‘2012년 정보화 사업 교육 버그추적시스템(BTS) 사용 절차 2012, 02.
자료구조: CHAP 7 트리 –review 순천향대학교 컴퓨터공학과 하 상 호.
27장. 모듈화 프로그래밍.
2장. 데이터베이스 관리 시스템 데이터베이스 관리 시스템의 등장 배경 데이터베이스 관리 시스템의 정의
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
15장 컬렉션 프레임워크 Section 1 컬렉션 프레임워크의 개요 Section 2 리스트 Section 3 셋
Chapter 03. 관계 데이터베이스 설계.
AUTODESK AUTOCAD ELECTRICAL 전기제어 2D 설계 소프트웨어 표준기반 설계 생산성 도구 구조도 설계
Choi Seong Yun 컴퓨터 프로그래밍 기초 #06 : 반복문 Choi Seong Yun
Fucntion 요약.
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
균형이진탐색트리 이진 탐색(binary search)과 이진 탐색 트리(binary search tree)와의 차이점
( Windows Service Application Debugging )
뇌를 자극하는 Solaris bible.
AT MEGA 128 기초와 응용 I 기본적인 구조.
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
Flow Diagram IV While.
7장. 다양한 형태의 반복문. 7장. 다양한 형태의 반복문 7-1 반복문이란? 반복문의 기능 세 가지 형태의 반복문 특정 영역을 특정 조건이 만족하는 동안에 반복 실행하기 위한 문장 7-1 반복문이란? 반복문의 기능 특정 영역을 특정 조건이 만족하는 동안에 반복.
3. 모듈 (5장. 모듈).
세션에 대해 알아보고 HttpSession 에 대해 이해한다 세션 관리에 사용되는 요소들을 살펴본다
멀티미디어시스템 제 5 장. 멀티미디어 데이터베이스 개념 IT응용시스템공학과 김 형 진 교수.
발표자 : 이지연 Programming Systems Lab.
9 브라우저 객체 모델.
.Net FrameWork for Web2.0 한석수
동적메모리와 연결 리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
In-house Consultant Training
Installation Guide.
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
Power Java 제14장 배치 관리자.
교량 구조물의 개념 설계 및 프로토타입 제작 과정
 6장. SQL 쿼리.
컴퓨터는 어떻게 덧셈, 뺄셈을 할까? 2011년 10월 5일 정동욱.
버스와 메모리 전송 버스 시스템 레지스터와 레지스터들 사이의 정보 전송을 위한 경로
7 생성자 함수.
6 객체.
SafeMSR 설정.
Presentation transcript:

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

In this chapter … 테스트 작업의 원리와 목표 테스팅 단계와 종류 블랙박스, 화이트박스 테스트 기법의 이해와 적용 테스팅(Testing) 테스트 작업의 원리와 목표 테스팅 단계와 종류 블랙박스, 화이트박스 테스트 기법의 이해와 적용 객체지향 프로그램의 테스트 기법 통합, 시스템, 인수 테스팅을 하는 방법 테스트 자동화 도구

In this chapter … 9.1 테스팅 기초 9.2 블랙박스 테스팅 9.3 화이트박스 테스팅 9.4 객체지향 테스팅 테스팅(Testing) 9.1 테스팅 기초 9.2 블랙박스 테스팅 9.3 화이트박스 테스팅 9.4 객체지향 테스팅 9.5 통합 테스팅 9.6 시스템 및 인수 테스트 9.7 테스트 도구

테스팅 기초 소프트웨어 테스팅은 소프트웨어의 정확성을 확증하는 과정으로, 좋은 테스트란 숨어있는 오류를 잘 발견하는 것 테스팅(Testing) 소프트웨어 테스팅은 소프트웨어의 정확성을 확증하는 과정으로, 결함이나 원치 않는 동작을 찾아내고, 요구와 제약에 맞는지 검증하는 작업이다. 좋은 테스트란 숨어있는 오류를 잘 발견하는 것

테스팅 용어 오류(error) 결함(fault) 고장(failure) 프로그램 실행 결과가 예상결과와 다른 경우 테스팅(Testing) 오류(error) 프로그램 실행 결과가 예상결과와 다른 경우 결함 및 고장을 일으키게 한 인간의 실수 결함(fault) 버그(bug) 소프트웨어 오작동의 원인 고장(failure) 명세로 작성된 요구와 기능을 제대로 수행할 수 없는 경우 모든 결함이 고장을 발생하는 것은 아님

테스팅 원리 테스팅은 오류를 발견하려고 프로그램을 실행시키는 것이다. 완벽한 테스팅을 불가능하다. 테스팅(Testing) 테스팅은 오류를 발견하려고 프로그램을 실행시키는 것이다. 완벽한 테스팅을 불가능하다. 테스팅은 창조적이면서 어려운 작업이다. 테스팅은 오류의 유입을 방지한다. 테스팅은 구현과 관계없는 독립된 팀에 의해 수행되야 한다

테스팅 과정 (1/2) 목표설정: 무엇을 점검할 것인지 결정한다. 방법결정: 어떻게 테스트할 것인지 방법을 결정한다. 테스팅(Testing) 목표설정: 무엇을 점검할 것인지 결정한다. 방법결정: 어떻게 테스트할 것인지 방법을 결정한다. 테스트 케이스 선택: 테스트 자료, 실행 조건 등의 테스트 케이스를 선택한다. 테스트 케이스 작성: 테스팅의 예상되는 올바른 결과를 작성한다. 테스트 실행: 테스트 케이스로 실행시킨다.

테스팅 과정 (2/2) 테스트 단계와 개발 단계와의 관계 (V 모형에 해당) Regression Test (회귀 테스트) 테스팅(Testing) 테스트 단계와 개발 단계와의 관계 (V 모형에 해당) 고객(사용자) 시험자 시험자, 프로그래머 프로그래머 Regression Test (회귀 테스트) [두 가지 의미] 오류를 발견하여 고치고 다시 원래 문제를 일으켰던 것을 테스트 확인, 수정이 예상대로 되었는지 확인하고, 수정된 것을 반복 테스트 수정된 부분이 다른 부분에 영향을 주어 예상하지 않은 오류를 발생시키지 않는지 확인, 수정 후 프로그램의 통합이 제대로 이루어졌는지 확인

테스트 케이스 성공적인 테스팅은 좋은 테스트 케이스를 찾는 것임 테스팅(Testing) 성공적인 테스팅은 좋은 테스트 케이스를 찾는 것임 테스트 케이스는 시험 대상 단위 별로 묶어 미리 준비함 (블랙박스 테스팅에서 테스트 케이스 선정 방법을 자세히 다룸)

In this chapter … 9.1 테스팅 기초 9.2 블랙박스 테스팅 9.3 화이트박스 테스팅 9.4 객체지향 테스팅 테스팅(Testing) 9.1 테스팅 기초 9.2 블랙박스 테스팅 9.3 화이트박스 테스팅 9.4 객체지향 테스팅 9.5 통합 테스팅 9.6 시스템 및 인수 테스트 9.7 테스트 도구

블랙박스 테스팅 프로그램 내부 구조를 고려하지 않음 (vs 화이트박스 테스팅) 테스팅(Testing) 프로그램 내부 구조를 고려하지 않음 (vs 화이트박스 테스팅) 테스트 케이스는 프로그램이나 모듈의 요구나 명세를 기초로 결정 입력과 출력에 대해 알아야 함 기능 테스트(functional testing)에 해당함 가능한 모든 기능을 전부 테스트 하는 것이 좋음

동치 클래스 분해 프로그램에서 같은 부분을 실행하고 결과를 확인하는 대표 값들을 설정 테스팅(Testing) 프로그램에서 같은 부분을 실행하고 결과를 확인하는 대표 값들을 설정 정상적인 동치클래스 비정상적인 동치클래스 모든 대표 값을 찾아내어 각 클래스에서 하나의 값으로 프로그램을 실행 시킨다면 전수 테스트와 같음 예제: 입력 범위 조건 0 ≤ count ≤ Max 의 동치 클래스 정상 0 ≤ count ≤ Max 비정상 count < 0, count > Max

경계값 분석 (1/2) 동치 클래스의 경계에서 문제를 발생하는 특수한 값이 존재 테스팅(Testing) 동치 클래스의 경계에서 문제를 발생하는 특수한 값이 존재 동치 클래스 경계에 있는 값을 가진 테스트 케이스는 높은 효율을 가짐 동치클래스의 경계에 있는 값을 테스트 입력으로 선택 예제: 하나의 입력 값 X에 대한 테스트 케이스 입력 값 조건: min ≤ X ≤ max 경계 값 케이스: min-1, min, min+1, max-1, max, max+1

경계값 분석 (2/2) 예제: 두개의 입력 값 X, Y에 대한 테스트 케이스 테스팅(Testing) 예제: 두개의 입력 값 X, Y에 대한 테스트 케이스 입력 값 조건: min ≤ X ≤ max, min ≤ Y ≤ max 경계값 케이스

원인 결과 그래프 (1/2) 테스팅(Testing) 입력 조건이 너무 많아 동치 클래스/경계 분석이 어려울 경우, 입력 조건의 조합을 체계적으로 선택하는 테스트 기법 노드와 기호로 표시 노드: 원인(입력조건), 결과(출력 조건) 기호: ∧(and), ∨(or), ~(not) 예제

원인 결과 그래프 (2/2) 테스팅(Testing) 그래프로부터 테스트 케이스를 만들 수 있음  각각의 결과들에 대하여 조건의 조합을 나열한 표를 작성 x: don’t care 0: false 1: true

In this chapter … 9.1 테스팅 기초 9.2 블랙박스 테스팅 9.3 화이트박스 테스팅 9.4 객체지향 테스팅 테스팅(Testing) 9.1 테스팅 기초 9.2 블랙박스 테스팅 9.3 화이트박스 테스팅 9.4 객체지향 테스팅 9.5 통합 테스팅 9.6 시스템 및 인수 테스트 9.7 테스트 도구

화이트박스 테스팅 모듈 내의 작동을 자세히 관찰하는 방법 (vs 블랙박스 테스팅) 테스팅(Testing) 모듈 내의 작동을 자세히 관찰하는 방법 (vs 블랙박스 테스팅) 모듈의 논리적인 구조를 체계적으로 점검하는 구조적 테스팅 여러가지 프로그램 구조를 기반으로 테스트 논리 흐름도(logic-flow diagram)을 이용 노드: 모듈 내의 세그먼트 간선: 제어 흐름

기본 경로 테스팅 기본 경로(basis path): 독립적인 논리 흐름을 검사하는 테스트 케이스 테스팅(Testing) 기본 경로(basis path): 독립적인 논리 흐름을 검사하는 테스트 케이스 시작 노드에서 종료 노드까지의 서로 다른 경로로 싸이클은 최대 한번만 지나야 함 예제: Remove 함수에 대한 논리흐름 그래프와 테스트 케이스 1. S-1-2-E: 빈 리스트 2. S-1-2-3-4-9-10-2-E: 한 개의 요소를 가진 리스트 3. S-1-2-3-4-5-6-8-4-9-10-2-E: 중복 요소를 가진 리스트 4. S-1-2-3-4-5-7-8-4-9-10-2-E: 중복 요소가 없는 리스트

싸이크로매틱 복잡도 (1/2) 기본 경로의 수를 결정하는 이론 싸이클로매틱 복잡도 계산 세 가지 방법 테스팅(Testing) 기본 경로의 수를 결정하는 이론 싸이클로매틱 복잡도 계산 세 가지 방법 폐쇄 영역의 수+1: 논리 흐름 그래프는 이차원 평면을 여러 영역으로 나누며, 이 중 폐 쇄된 영역의 수 에 1을 더한 값 노드와 간선의 수: 간선의 수에서 노드의 수를 빼고 2를 더한 값 단일 조건의 수+1 : 참과 거짓으로 판별되는 원자적 조건의 수에 1을 더한 값 (AND, OR로 연결된 복합 조건이 아니라 단일 조건이라는 뜻) 예제: 다음 페이지 세 가지 방법의 계산 값이 같아야 함 (정리로서 증명됨)

싸이크로매틱 복잡도 (2/2) 싸이클로매틱 복잡도 계산 예제 폐쇄 영역의 수+1: 3+1 = 4 테스팅(Testing) 싸이클로매틱 복잡도 계산 예제 폐쇄 영역의 수+1: 3+1 = 4 노드와 간선의 수(간선-노드+2): 13–11+2 = 4 단일 조건의 수+1 : 3+1 = 4 (노드 2, 노드 3, 노드 7에 참/거짓의 단일 조건)

반복문의 테스팅 (1/3) 단순 반복: 경계값 분석 방법 이용 반복 구조를 들어가지 않고 생략 반복 구조 안에서 한 번 반복 테스팅(Testing) 단순 반복: 경계값 분석 방법 이용 반복 구조를 들어가지 않고 생략 반복 구조 안에서 한 번 반복 반복 구조 안에서 두 번 반복 일정한 횟수의 반복 반복 최대 횟수 −1 만큼 반복 반복 최대 횟수만큼 반복 반복 최대 횟수 +1 만큼 반복

반복문의 테스팅 (2/3) 중첩된 반복: 가장 내부에 있는 반복 구조부터 테스트 최소 횟수의 반복 테스팅(Testing) 중첩된 반복: 가장 내부에 있는 반복 구조부터 테스트 최소 횟수의 반복 최소 횟수보다 하나 많은 반복 범위 내 임의의 횟수 반복 최대 횟수보다 하나 적은 반복 최대 횟수의 반복 외부로 향하여 다음 반복구조를 테스트

반복문의 테스팅 (3/3) 연속된 반복 비구조화 반복 반복구조가 서로 독립적  단순반복으로 테스트 테스팅(Testing) 연속된 반복 반복구조가 서로 독립적  단순반복으로 테스트 어느 한 반복구조의 제어변수가 다른 반복구조에 직간접 의존  중첩된 반복으로 테스트 비구조화 반복 구조적 반복 형태로 변경하여 테스트

In this chapter … 9.1 테스팅 기초 9.2 블랙박스 테스팅 9.3 화이트박스 테스팅 9.4 객체지향 테스팅 테스팅(Testing) 9.1 테스팅 기초 9.2 블랙박스 테스팅 9.3 화이트박스 테스팅 9.4 객체지향 테스팅 9.5 통합 테스팅 9.6 시스템 및 인수 테스트 9.7 테스트 도구

객체지향 테스팅 전통적 테스팅 방식 객체지향 방식의 프로그램에 적용할 수 있는 방법 소개 블랙박스 테스팅, 화이트박스 테스팅 테스팅(Testing) 전통적 테스팅 방식 블랙박스 테스팅, 화이트박스 테스팅 객체지향 방법에서 클래스 안의 “메소드”에 적용될 수 있음 객체지향 방식의 프로그램에 적용할 수 있는 방법 소개 사용 사례 기반 테스팅 상태 기반 테스팅

사용 사례 기반 테스팅 (1/4) 사용 사례 명세로부터 테스트 케이스 추출 Step 1: 액터의 입력과 액션을 파악한다. 테스팅(Testing) 사용 사례 명세로부터 테스트 케이스 추출 Step 1: 액터의 입력과 액션을 파악한다. 예제: 사용자 등록 사용 사례로부터 입력 요소 추출

사용 사례 기반 테스팅 (2/4) Step 2: 입력 값을 결정한다. 정상/비정상/예외 값 분류 테스팅(Testing) Step 2: 입력 값을 결정한다. 정상/비정상/예외 값 분류 예제: 파악된 입력 요소의 값 결정

사용 사례 기반 테스팅 (3/4) Step 3: (입력 값 조합 규칙에 따라) 테스트 케이스를 생성한다. 테스팅(Testing) Step 3: (입력 값 조합 규칙에 따라) 테스트 케이스를 생성한다. 테스트 조합이 프로그램 기능과 동작의 정확성을 가진다면 선택 테스트 조합이 오류를 발견할 가능성이 있다면 선택 테스트 조합이 선택된 다른 테스트 조합에 의해 포함될 수 있다면 삭제(중복제거), 유지 할지 삭제할지 불분명한 것은 선택

사용 사례 기반 테스팅 (4/4) Step 4: 실제적인 테스트 케이스를 생성한다. Step 5: 테스트를 구현 및 실행한다. 테스팅(Testing) Step 4: 실제적인 테스트 케이스를 생성한다. 테스트 케이스 각각에 대해 실제 테스트를 수행할 값을 생성 Step 5: 테스트를 구현 및 실행한다.

상태 기반 테스팅 (1/3) State-less 시스템: 같은 입력에 대해 같은 동작/동일한 결과를 생성 테스팅(Testing) State-less 시스템: 같은 입력에 대해 같은 동작/동일한 결과를 생성 배치 처리 시스템 계산 중심 시스템 하드웨어로 구성된 회로 하지만, 많은 시스템의 경우, 그 동작은 시스템의 상태에 의해 좌우됨 상태 모델 구성요소 상태: 시스템의 과거 입력에 대한 영향을 표시 트랜지션: 이벤트에 대한 반응으로 시스템이 하나의 상태에서 다른 상태로 어떻게 변해 가는지를 나타냄 이벤트: 시스템에 대한 입력 액션: 이벤트에 대한 출력

상태 기반 테스팅 (2/3) 테스팅(Testing) 예제: 예금 계좌의 상태 모델

상태 기반 테스팅 (3/3) 상태 모델에 대한 검증 기준 모든 트랜지션에 대한 테스트 케이스 예제 테스팅(Testing) 상태 모델에 대한 검증 기준 모든 트랜지션: 테스트 케이스 집합이 상태 그래프의 모든 트랜지션을 점검 모든 트랜지션 쌍: 테스트 케이스 집합이 모든 이웃 트랜지션의 쌍을 점검 (유입(incoming)과 방출(outgoing) 트랜지션 쌍을 의미)  모든 트랜지션에 비해 훨씬 많은 테스트 케이스 생성 트랜지션 트리: 테스트 케이스 집합이 모든 단순 경로를 만족시키는 기준 모든 트랜지션에 대한 테스트 케이스 예제

In this chapter … 9.1 테스팅 기초 9.2 블랙박스 테스팅 9.3 화이트박스 테스팅 9.4 객체지향 테스팅 테스팅(Testing) 9.1 테스팅 기초 9.2 블랙박스 테스팅 9.3 화이트박스 테스팅 9.4 객체지향 테스팅 9.5 통합 테스팅 9.6 시스템 및 인수 테스트 9.7 테스트 도구

통합 테스팅 통합 테스팅의 목적 통합 순서에 따라 통합 시 필요한 소프트웨어 테스팅(Testing) 통합 테스팅의 목적 시스템을 구성하는 모듈의 인터페이스와 결합을 테스트 시스템 전체의 기능과 성능을 테스트 통합 순서에 따라 빅뱅(big-bang)  단번에 해치워… 하향식(top-down)  위에서부터 아래로… 상향식(bottom-up)  아래서부터 위로… 연쇄식(threads)  중요한 것을 중심으로 동시에… 통합 시 필요한 소프트웨어 테스트 하니스(harness): 부분적인 테스트를 위하여 코드에 삽입하는 프로그램  추후 삭제됨 스텁(stub): 시험 대상 모듈이 호출하는 모듈 대신에 만들어진 모의 서브루틴 드라이버(driver): 시험 대상 모듈을 호출하는 모의 모듈 Driver 테스트 대상 Harness Stub

빅뱅 통합 모든 모듈을 한꺼번에 통합하여 테스트 단위 테스트에 많은 시간이 필요 테스팅(Testing) 모든 모듈을 한꺼번에 통합하여 테스트 단위 테스트에 많은 시간이 필요 시스템의 중요 부분과 부수적인 부분을 구별하지 않음 일정 계획에 융통성이 없음 오류가 있을 경우 어떤 모듈이 변경되어야 하는지 파악하기 어려움

하향식 통합 시스템 구조도의 위에 있는 모듈부터 아래 층 모듈로 내려 오면서 통합 테스팅(Testing) 시스템 구조도의 위에 있는 모듈부터 아래 층 모듈로 내려 오면서 통합 점증적 통합이므로 하드웨어의 사용이 분산되고 오류의 원인을 찾아 내기 쉬움 상위층의 중요한 모듈을 먼저 시험  시스템의 골격을 조기에 테스트 함 스텁의 사용으로 시스템의 모양을 사용자에게 조기에 보여줄 수 있음 프로그래머가 시스템의 작동에 대한 확신을 유지시킬 수 있음

상향식 통합 최하위 모듈을 먼저 시험 드라이버가 필요 (특성상, 스텁은 거의 필요치 않음) 테스팅(Testing) 최하위 모듈을 먼저 시험 드라이버가 필요 (특성상, 스텁은 거의 필요치 않음) 오류 발견이 쉽고 하드웨어의 사용을 분산 하위층의 모듈을 상위층 보다 더 많이 시험 테스트의 초기에 뼈대가 갖추어 지지 않음

연쇄식 통합 최선의 통합 방법 어느 정도의 기본 기능을 수행하는 모듈(thread)로부터 통합 테스팅(Testing) 최선의 통합 방법 어느 정도의 기본 기능을 수행하는 모듈(thread)로부터 통합 시스템의 중요한 기능을 담당하는 모듈부터 통합 초기에 시스템을 골격을 보여주고 사용자의 의견을 받아 수정 가능  주요 테스트 작업을 동시에 진행할 수도 있음 (independent한 경우)

In this chapter … 9.1 테스팅 기초 9.2 블랙박스 테스팅 9.3 화이트박스 테스팅 9.4 객체지향 테스팅 테스팅(Testing) 9.1 테스팅 기초 9.2 블랙박스 테스팅 9.3 화이트박스 테스팅 9.4 객체지향 테스팅 9.5 통합 테스팅 9.6 시스템 및 인수 테스트 9.7 테스트 도구

시스템 및 인수 테스팅 컴포넌트 통합 후 수행하는 테스트 기법 테스트 종류 기능 테스트 성능 테스트 보안 테스트 사용성 테스트 테스팅(Testing) 컴포넌트 통합 후 수행하는 테스트 기법 테스트 종류 기능 테스트 성능 테스트 보안 테스트 사용성 테스트 인수 테스트 설치 테스트

기능 테스트 (1/2) 기능적 요구와 시스템의 차이를 발견하기 위한 테스트 테스팅(Testing) 기능적 요구와 시스템의 차이를 발견하기 위한 테스트 사용자와 관련되어 있으며 오류를 유발할 가능성이 많은 테스트를 선정 사용사례 모델을 검토하고 오류 가능성이 높은 사용사례 인스턴스를 찾 아냄 테스트 케이스 일반적인 사례 예외적인 사례

기능 테스트 (2/2) 테스팅(Testing) 기능 테스트 케이스 작성 과정

성능 테스트 시스템의 여러 측면 테스트 테스트 방법 작업 부하(workload): 시스템이 처리하고 생성하는 작업의 양 테스팅(Testing) 시스템의 여러 측면 테스트 작업 부하(workload): 시스템이 처리하고 생성하는 작업의 양 처리량(throughput): 트랜잭션 의 수, 시간 당 처리하는 메일 수 반응 시간(response time): 시스템 요구를 처리하는 데 걸리는 총 시간 효율성: 주어진 작업 처리를 위해 사용하는 CPU시간과 메모리 같은 자원량의 비율 테스트 방법 스트레스 테스팅: 시스템 처리능력의 몇 배의 작업부하를 처리하고 견딜 수 있는지 측정 성능 테스팅: 정상적인 사용 환경에서 시스템의 성능을 측정하는데 사용 (시뮬레이션을 이용한 테스팅 가능) 보안 테스팅: 시스템의 보안 취약점을 찾아내려는 목적

사용자 인터페이스 테스트 인간 공학적인 목적  기능, 성능, 보안 테스트와 목적이 다름 테스트 목적 테스팅(Testing) 인간 공학적인 목적  기능, 성능, 보안 테스트와 목적이 다름 테스트 목적 보고 느끼는 UI에 대한 결함 데이터 입력과 출력 디스플레이에 대한 결함 액터-시스템 사이의 동작 결함 오류 처리에 대한 결함 문서와 도움말에 대한 결함

인수 테스트 테스팅(Testing) 목적 시스템이 사용할 수 있도록 모든 준비가 되어 있는지를 보이는 것 사용할 모든 준비가 되었다는 것을 확인시켜 주는 작업 테스트 방법은 사용자가 선택 인수 테스트 방법의 대부분은 통합 테스트와 같음. 다른 점은 (시험 환경이 아닌) 사용자 환경에서 한다는 것 알파 테스트: 사내 고객들을 대상으로 시험 베타 테스트 고객의 사용 환경에서 시험 개발자 없이, 실제 사용 환경에 소프트웨어를 설치하여 시험

In this chapter … 9.1 테스팅 기초 9.2 블랙박스 테스팅 9.3 화이트박스 테스팅 9.4 객체지향 테스팅 테스팅(Testing) 9.1 테스팅 기초 9.2 블랙박스 테스팅 9.3 화이트박스 테스팅 9.4 객체지향 테스팅 9.5 통합 테스팅 9.6 시스템 및 인수 테스트 9.7 테스트 도구

테스트 도구 테스트 작업을 자동화 도구 종류 코드 분석 도구 테스트 케이스 생성 도구 테스트 케이스 실행 도구 테스팅(Testing) 테스트 작업을 자동화 도구 종류 코드 분석 도구 테스트 케이스 생성 도구 테스트 케이스 실행 도구 단위 테스트 도구

코드 분석 도구 정적 분석 도구: 프로그램을 실행하지 않고 분석 동적 분석 도구: 프로그램을 실행하면서 분석 테스팅(Testing) 정적 분석 도구: 프로그램을 실행하지 않고 분석 코드 분석 도구: 원시 코드의 문법 검사 구조 검사 도구: 원시코드의 그래프를 이용한 구조적인 결함 확인 데이터 분석 도구: 원시코드를 검사하여 잘못된 링크나 데이터 정의의 충돌, 잘못된 데 이터의 사용을 발견 순서 검사 도구: 이벤트 순서가 바르게 동작하는지 체크 동적 분석 도구: 프로그램을 실행하면서 분석 프로그램이 수행되는 동안 이벤트의 상태 파악을 위한 특정한 변수나 조건의 스냅샷 (snapshot)을 생성 시스템의 성능 또는 기능에 영향을 주는 분기점(breakpoint) 파악에 도움 모듈의 호출 횟수나 수행된 문장 번호를 리스트로 만들어 줌

기타 테스트 도구 테스트 케이스 생성 도구: 테스트 케이스를 자동으로 생성 테스팅(Testing) 테스트 케이스 생성 도구: 테스트 케이스를 자동으로 생성 테스트 케이스 실행 도구: 대규모 테스트를 케이스를 자동으로 수행 단위 테스트 도구: 프로그램의 단위 테스트와 리그레션 테스트 수행 예제: Junit, CUnit, CppUnit, Nunit, HtmlUnit, HttpUnit 등 (각기 Java, C, C++, C#, HTML, HTTP로 작성된 프로그램의 단위 테스트 수행)

In this chapter … 9.1 테스팅 기초 9.2 블랙박스 테스팅 9.3 화이트박스 테스팅 9.4 객체지향 테스팅 테스팅(Testing) 9.1 테스팅 기초 9.2 블랙박스 테스팅 9.3 화이트박스 테스팅 9.4 객체지향 테스팅 9.5 통합 테스팅 9.6 시스템 및 인수 테스트 9.7 테스트 도구