소프트웨어테스트 - 개념, 기법및활용- 건국대학교유준범 http://dslab.konkuk.ac.kr 2012.02.24 현대모비스세미나 1
테스트분야개념들 Boundary Value 테스트 소프트웨어테스트 테스트계획서 3 점점합 블랙박스테스트테스트결과보고서화이트박스테스트 구조테스트 테스트실행 모델기반테스트 Pairwise 테스트 기능테스트 CTIP (Continuous Test & Integration Platform) 테스트케이스자동생성테스트오라클테스트케이스 Category-Partitioning 테스트테스트데이터 Coverage Criteria 테스트자동화도구테스트데이터자동생성테스트드라이버테스트 Scaffolding Coverage 측정테스트명세서하드웨어 - 소프트웨어 Co-테스트 2
목차 삼성전자핸드폰 SW 블랙박스테스트사례 소프트웨어테스트 블랙박스테스트 블랙박스테스트수행내용 ( 건국대학교수업中 ) 화이트박스테스트 테스트자동화환경 3
삼성전자핸드폰 SW 블랙박스테스트사례 4
삼성전자핸드폰 SW 블랙박스테스트 삼성전자 ( 구 ) 정보통신총괄직군 ( 職群 ) -G (General) - E (Engineering) -M (Marketing) -S (Software) -T (Test) 시험, 검수및품질관리 5
테스트대상 사용자설명서 블랙박스테스트 전화통화中, + 예약된 Alarm 동작문자메시지 (SMS) 도착다른전화가걸려와 통화중대기 발생 테스터 정상동작? 6
테스트대상 사용자설명서 블랙박스테스트 전화통화中, + 예약된 Alarm 동작문자메시지 (SMS) 도착다른전화가걸려와 통화중대기 발생 + 문자메시지저장함 Full 상태 테스터 정상동작? 7
현장에서수행되는블랙박스테스트 블랙박스테스트이론 전화통화中, + 예약된 Alarm 동작문자메시지 (SMS) 도착다른전화가걸려와 통화중대기 발생 + 문자메시지저장함 Full 상태 Category-Partitioning Test Pairwise Test Boundary Value Test 정상동작? 8
통신사에납품하기위해서는? 개발자 (E 직군 ) 인증용블랙박스테스트 테스트케이스 : 약 3,000 개성공률 : 약 99.85 % 테스트주체 : 통신사실제테스트주체 : 개발사 SCH-W290 9
통신사인증용블랙박스테스트 기능별구성 Messenger - 문자메시지 - MMS - 이메일 - CB / 긴급방송 Call 30% 테스트주체 : 각개발팀 각개발팀 Multimedia Browser PC Link SW Platform (Middleware) Component / Integration Test vs. System Test 개발총괄 10
11
소프트웨어테스트 12
소프트웨어테스트 입력을주고소프트웨어를직접실행함으로써, 원하는출력이생성되는지확인하는일련의작업 입력 소프트웨어 실행환경 출력 =? 원하는출력 정리 수정 전달 테스트결과 개발자 13
언제까지반복? 정답 : 기준을만족할때까지 테스트성공률 테스트실행관점 기준 Coverage Criteria 테스트입력생성관점 + 테스트품질 14
블랙박스 vs. 화이트박스 블랙박스테스트 기능테스트 (Functional Test) 있어야할기능이정확하게구현되어있는가? 기능명세서, 요구사항명세서, 사용자설명서모든기능을테스트입력으로만들어야내부구현은관심無 화이트박스테스트 구조테스트 (Structural Test) 구현프로그램의가능한모든경우 (Execution Path) 를시험해봤는가? CFG (Control Flow Graph), DFG (Data Flow Graph) 특정 Coverage Criteria를만족하는테스트입력을만들어야기능의구현여부는관심無 15
질문!!! 1. 시스템시험 (System Test) 은어떤종류의테스트입니까? 정답 : 블랙박스테스트 2. 단위시험 (Unit Test) 은어떤종류의테스트입니까? 정답 : 두종류모두가능 16
17
블랙박스테스트 18
Needles Haystack Let s find needles out!!! 19
균등분할 = Random Testing = Uniform Testing Haystack 20
실제로바늘은? Needles Needles es Needles Needles 21
바늘을신속하게찾기위해서는? 정보 (Information) Haystack Needles 누가? 무엇을? 어디로? 어디에서? 개발자누가? 어떤기능을? 어떤방식으로? 어떤환경 / 가정에서? 22
정보는어디에? 명세서 (Specification) 프로젝트계획서 (Project Plan) 요구사항명세서 (Requirements Specification) 디자인명세서 (Design Specification) 테스트계획서 (Test Plan) 각종모든문서 23
블랙박스테스트 명세서에정의된기능이잘구현되어있는지확인하는테스트 가장기본이되는테스트 (A Base-line Test) = 기능테스트 (Functional Test) = 명세기반테스트 (Specification-based Test) = 체계적분할기반테스트 (Systematic Partitioning-based Test) 기본이론 : 체계적분할 (Systematic Partitioning) 24
체계적분할 기본이론 : 체계적분할 (Systematic Partitioning) 특정정보를이용하여, 전체테스트입력범위중오류를잘찾아낼수있는입력구간 (region of input space) 을찾아낸다. 전체입력범위를모두테스트할수없다. 오류들은주로몰려있다. 25
동일한 Cost 로수행되는테스트범위 균등분할 테스트비용 ( 회수 ): 36 회테스트효율 : 低 26
동일한 Cost 로수행되는테스트범위 체계적분할 Needles Needles Needles Needles 테스트비용 ( 회수 ): 27 회테스트효율 : 高 27
기능테스트 기능테스트 블랙박스테스트 명세기반테스트 체계적분할기반테스트 명세 (Specification) 를사용하여입력범위를분할 (partitioning of input space) 각분할된범위 (Category) 를테스트 28
Identify Independe Testablee Features ntly y 기능테스트단계 Genera erate Test-Case Specifi ifications Generate Test-C t-case Specifica cations Instantiate Tests Generate Test Cases Source: Software Testing and Analysis by Mauro Pezzè and Michal Young, WILEY 29
Brute force testing 대표값 을찾는다 기능명세서 독립테스트속성 독립테스트속성 을찾는다. 모델 을만든다. Finite State Machine, Grammar, Algebraic Specification, Logic Specification, CFG / DFG 대표값 모델 Semantic Constraint, Combinational Selection, Exhaustive Enumeration, Random Selection 테스트케이스명세서를만든다. 테스트케이스명세서 Test selection criteria 테스트케이스를생성한다. 테스트케이스 / 데이터 Manual Mapping, Symbolic Execution, A-posteriori Satisfaction Instantiate tests Scaffolding 30
기능명세서분석 전통적인블랙박스테스트 모델기반테스트 테스트데이터생성 31
수동 기능명세서분석 어려워요!!! 수동 전통적인블랙박스테스트 수동 자동 모델기반테스트 수동 테스트데이터생성 32
수동 기능명세서분석 현실은? 전통적인블랙박스테스트 수동 모델기반테스트 Brute Force Test 막테스트 수동 테스트데이터생성 33
기능테스트를잘하기위해서는? 1. 기능명세서를꿰자. 삼성전자 T 직군 SW 테스터처럼 2. 기능테스트의기본에충실하자. Systematic Partitioning-based Test 오류가많을만한곳을중점적으로공략 3. 사람중심으로운영하자. 손으로다할수있어야도구도잘쓴다. 34
대표적인블랙박스테스트기법들 Category-Partitioning Test 1. 독립테스트속성 을찾는다. 2. 각속성별로 대표값 을찾는다. 3. 테스트케이스를생성한다. Pairwise Test 1. Category-Partitioning Test를수행한다. 2. 관련있는속성들을 2~4 단위로묶는다. 3. 자동화도구를활용한다. Catalog-based Test 1. 오래동안유사한테스트를수행한다. 2. 대표적인속성을 Catalog로만든다. 3. 위테스트들을수행한다. 35
예제 : 모니터디스플레이테스트 Category-Partitioning titi i Test Step 1. 독립테스트속성 을찾는다. Display Mode Language g Fonts Color Screen Size Step 2. 대표값 을찾는다. Display Mode Language Fonts Color Screen Size Full-Graphics English Minimal Monochrome Hand-Held Text-Only French Standard Color-Map Laptop Limited- Bandwidth Spanish Document- Embedded 16-Bits Full-Size Korean True-Color Step 3. 테스트케이스를생성한다. 3 x 4 x 3 x 4 x 4 = 432 test cases 36
Test Cases: 432 17 Pairwise i Test Language g Color Display Mode Fonts Screen Size English Monochrome Full-graphics Minimal Hand-held English Color-map Text-only Standard Full-size English 16-bit Limited-bandwidth - Full-size English True-color Text-only Document-Embedded Laptop French Monochrome Limited-bandwidth Standard Laptop French Color-map Full-graphics Document-Embedded Full-size French 16-bit Text-only Minimal - French True-color - - Hand-held Spanish Monochrome - Document-Embedded Full-size Spanish Color-map Limited-bandwidth Minimal Hand-held Spanish 16-bit Full-graphics Standard Laptop Spanish True-color Text-only - Hand-held Korean - - Monochrome Hand-held Korean Color-map - Minimal Laptop Korean 16-bit Limited-bandwidth Document-Embedded Hand-held Korean True-color Full-graphics Minimali Full-size Korean True-color Limited-bandwidth Standard Hand-held 37
http://www.pairwise.org 38
39
블랙박스테스트수행내용 ( 건국대학교수업中 ) 40
건국대학교 2010 소프트웨어검증수업 팀프로젝트내용 : 1. CTIP 환경구축 ( 오픈소스만이용 ) 2. 기능테스트수행 3. 테스트대상 : NuSRS Quick Checker (Java) + Quick Checker ( 문법검사도구 ) NuSRS 2.0 ( 정형명세도구 ) 41
NuSRS &Q Quick kchecker FOD (Function Overview Diagram) 42
FSM / TTS (Timed Transition System) SDT (Structured Decision Table) 43
수행내용 44
기능명세서분석 독립테스트속성 찾기 대표값 찾기 테스트케이스생성 테스트데이터생성 테스트수행및결과보고서작성 Category-Partitioning Test! 45
8 개기능요구사항 46
1. 기능명세서분석 8 개기능요구사항 20 개구체화된기능요구사항 47
2. 독립테스트속성 찾기 48
49
3. 대표값 찾기 50
51
Category-Partitioning ii i Test 4. 테스트케이스생성 SDT Pairwise Test 32 13 52
TTS 총 73 테스트케이스생성 96 33 53
5. 테스트데이터생성 NuSRS SDT 작성 XML 형식으로저장 54
55
JUnit: 테스트환경테스트 Driver 6. 테스트실행 Scaffolding + 테스트대상 1. 테스트데이터입력 2. 테스트실행 3. 테스트결과확인 ( 테스트오라클 ) 56
7. 결과보고서작성 57
20 개의구체화된요구사항 58
59
CTIP(Continuous Testing & Integration Platform) 사용된무료도구들 구축된 CTIP 환경 건국대학교 4 학년수업 : 소프트웨어검증 http://dslab.konkuk.ac.kr/class/old_classes.htm 60
건국대학교 4 학년수업 : 소프트웨어검증 http://dslab.konkuk.ac.kr/class/old_classes.htm 61
For More Information http://dslab.konkuk.ac.kr p// 62
63
소프트웨어테스트 64
블랙박스테스트 65
블랙박스테스트를잘하기위해서는? 1. 기능테스트의기본에충실하자. Systematic Partitioning-based Test 오류가많을만한곳을중점적으로공략 2. 각종명세서를꿰자. 눈감고도처음부터끝까지읊을수있을정도로 3. 전문가를양성하자. 도구는도구일뿐 손으로할수없으면아무리비싼도구로도못한다 66
67
화이트박스테스트 68
테스트자동화환경 69