7. 확인과검증 1
주요내용 품질은왜중요한가? 프로젝트에서형상관리는왜중요한가? 형상관리프로세스의각단계의활동은무엇인가? 2
목차 강의내용 팀프로젝트 (12, 13 주차 ) - 확인과검증 - 품질활동 - 확인과검증기법 - 단위테스트및통합테스트의테스트결과보고서제출 3
소프트웨어개발과품질 품질의다양한의미 - 프로그램이정상적으로작동하는것 - 프로그램에기대하는막연한완성도 - 명시된요구사항을만족시키는것 - 고객이의도한대로요구사항을올바르게정의하는것 4
확인과검증프로세스 5
확인과검증 (1/2) 확인 (Verification) - 올바른제품을생성하고있는가?(Are we building the right product?) [Boehm] - 소프트웨어가정확한요구사항에부합하여구현되었음을보장하는활동 - 요구사항명세서에맞게올바른방법으로제품을만들고있음 을보장 검증 (Validation) - 제품이올바르게생성되고있는가?(Are we building the product right?) [Boehm] - 소프트웨어가고객이의도한요구사항에따라구현되었음을보장하는활동 - 고객이의도한환경이나사용목적에맞게올바른제품을만들고있음 을보장 확인과검증작업은실제로구분하기어려운경우가존재함 - 결국, 소프트웨어의품질을보장하는것 6
확인과검증 (2/2) 확인과검증방법의종류 - 정적 (Static) 인방법 소프트웨어를실행하지않고결함을찾아내는것 여러참여자들이모여소프트웨어를검토하여결함을찾아냄 소프트웨어개발중에생성되는모든산출물들에대해서적용가능 대표적인방법 검토 (Review) 인스펙션 (Inspection) 워크스루 (Walk-through) - 동적 (Dynamic) 인방법 소프트웨어를실행하여결함을찾아냄 발견된결함은디버깅활동으로확인하여수정함 대표적인방법 테스팅 7
확인과검증기법 8
예제시나리오 민서 : 오빠잠깐시간있어요? 이프로그램에버그를못잡겠어요. 잠깐코드좀봐줄수있어요? 동석 : 그래. 뭐가문제야? 민서 : 영어단어프로그램인데 DB 에저장이안돼요. 도대체뭐가문제인지모르겠어요. 내생각에는 DB 연결부분에잘못된것같은데 30 분이나찾아봤지만도저히 모르겠어요. 동석 : 음.. 어디보자. 그부분엔잘못된것이없어보여. 여기를봐봐. 쿼리를만드는스트링에서따옴표위치가잘못되어있잖아. 그러니까제대로된쿼리가안만들어진거야. 그것만고치면더이상오류는안날것같다. 민서 : 아! 정말그렇네. 정말고마워요. 그작은걸하나못봤다니.. 9
동료검토란? 정의 - 개발동료들이검출된결함의개선을위해정의된순서를따르는소프트웨어작업산출물을검토하는작업 [SEI/CMU, The Capability Maturity Model, Addison-Wesley, 1994] - 개발자가자신의동료들이완료한작업을검토하는것 목적 - 사용자인터페이스프로토타입, 요구명세서, 아키텍처, 설계및기타기술적산출물의품질보증 10
동료검토프로세스 (1/4) 공지와배포 준비 - 산출물작성자 - 진행자 자신의산출물이리뷰할준비가되었음을검토자에게통지 ( 예를들어프로젝트계획서, 요구분석, 사용자인터페이스프로토타입, 설계, 코드, 혹은테스트사계등 ) 공식절차를거쳐해당자료를진행자 (Moderator) 에게전달 산출물을검토할사람과리뷰회의에참석할사람을결정 검토를위한자료를배포 - 검토자는이전에가장많이발생했던에러체크리스트로산출물을검토 - 검토회의는검토자들이산출물에대한검토를마친후개최 검토 - 산출물의작성자, 진행자, 검토자들이모여산출물을검토 11
동료검토프로세스 (2/4) 검토보고서작성 - 회의후에작성자와진행자는리뷰회의의결과등을기록으로남김 - 내용 : 검토한자료의양, 발견된결함의종류와개수, 회의에걸린시간, 산출물이검토에통과하였는지여부 후속조치 - 작성자및기타관련자는수정작업을끝내고, 변경된내용을검토한후해당산출물이공식적으로검토되었음을선언 12
동료검토프로세스 (3/4) 동료검토프로세스 - 반드시체크리스트를통해검토를진행해야함 사전준비 검토회의 후속조치 1. 공지 2. 검토자지정 3. 배포 4. 준비 1. 문제점검토해결 2. 보고서작성 1. 시정조치 2. 조치보고 13
동료검토프로세스 (4/4) 소스코드에대한검토체크리스트의예 번호 산출물체크리스트 1 요구사항명세서 / 정의서에기술된기능은충분히코드에서실행되는가? 2 요구사항명세서 / 정의서에기술되지않은추가적인기능이코드에서실행되지는않는가? 3 메소드리턴값은적절하게사용되는가? 4 모든지역 / 전역변수 (local and global variables) 가사용전에초기화되는가? 5 메소드가정확히호출되는가? 14
소프트웨어테스팅 (Software Testing) 15
테스팅 (Testing) 의미 - 기존조건및필요조건 ( 즉, 결함 / 에러 / 버그 ) 사이의차이점을발견하기위하여소프트웨어항목을분석하고, 분석된항목의특성을평가하는프로세스 [IEEE-Std-829] - 에러를발견하려는의도를가지고프로그램을실행하는프로세스 [Myers] 16
테스팅과디버깅의차이점 테스팅 (Testing) 디버깅 (Debugging) 목적알려지지않은에러의발견이미알고있는에러의수정 수행시스템내부관련자, 시스템내부관련자테스팅팀등외부의제 3자 주요 작업 에러발견 (Fault Detection) 에러의정확한위치파악 (Fault Location) 에러의타입식별 (Fault Identification) 에러수정 (Fault Correction) 17
테스트케이스 (Test Case) 의미 - 테스트의목적에맞게테스트조건, 입력값, 예상출력값, 실제테스트결과를기록하는것 목적 - 테스터가테스팅을체계적으로할수있도록함 - 개발자가테스팅결과를통해디버깅을하는기준이됨 18
테스트케이스의예 테스트케이스 ID: ST-0001 목적로그인시아이디와패스워드의대소문자를구분하여처리한다. 테스트 조건 아이디 / 비번 : abcd / abcd 가 DB 에이미입력되어있음. 테스터한동석테스트일자 2006.10.01~2006.10.01 단계입력값예상출력값실행결과조치사항 조치후시험결과 1 아이디 : ABCD 패스워드 : abcd 아이디없음경고정상로그인디버깅필요 아이디없음경고 2 3 아이디 : abcd 패스워드 : ABCD 아이디 : abcd 패스워드 : abcd 패스워드틀림경고 패스워드틀림경고 - - 정상로그인 정상로그인 - - 19
테스팅종류 테스트정보를얻는대상에따른분류 - 블랙박스테스팅 (Black-Box Testing) 요구사항명세서 (SRS) 나설계서로부터테스트케이스추출 - 화이트박스테스팅 (White-Box Testing) 내부구조 ( 소스코드 ) 를기반으로테스트케이스추출 20
[ 예제 ] 세양수중큰수출력프로그램 (1/3) 사용자요구사항 - 서로다른세양수 A, B, C 를입력하여그중가장큰수를출력하라. Black box (a) 블랙박스테스팅 (b) 화이트박스테스팅 21
[ 예제 ] 세양수중큰수출력프로그램 (2/3) 블랙박스테스트케이스 ID 테스트케이스 1 A 가가장큰정수일경우 2 B 가가장큰정수일경우 3 C 가가장큰정수일경우 4 A 를음수로입력할경우 5 A 와 B 를같은정수로입력할경우 6 B 를소수로입력할경우 7 22
[ 예제 ] 세양수중큰수출력프로그램 (3/3) 화이트박스테스트케이스 ID 테스트케이스 1 (1->2->3->5->6->8) >3 >5 >6 >8) 2 (1->2->3->5->7->8) 3 (1->2->4->5->6->8) 4 (1->2->4->5->7->8) 23
블랙박스테스팅 (Black-Box Testing) 개요 - 요구사항명세서나설계서를참조하면서수행하는테스팅 소스코드자체의로직에는관심이없고입, 출력값에만관심이있다 - 방법 동등분할 경계값분석 의사결정테이블 24
동등분할 개요 - 입력값이범위가정해져있을경우, 각범위의대표값을이용하여테스팅 장점 - 간단하고이해하기쉬움 - 이용자가작성가능 - 무작위방법보다체계적인방법 25
동등분할의예 (1/2) 사용자요구사항 - 100점이만점이고 0 ~ 100점을받을수있는시험이있다. 시험점수를입력하면, 점수에따라다음과같이 A부터 F까지의성적을출력하라. 성적 90점이상 ~ 100점이하 A 80점이상 ~ 90점미만 B 70점이상 ~ 80점미만 C 0점이상 ~ 70점미만 F 26
동등분할의예 (2/2) 동등분할테스트케이스 0 점수 < 70 70 점수 < 80 80 점수 < 90 90 점수 100 테스트케이스 1 2 3 4 점수범위 0 점이상 ~ 70 점이상 ~ 80 점이상 ~ 90 점이상 ~ 70 점이하 80 점미만 90 점미만 100 점이하 입력값 ( 점수 ) 50 점 75 점 85 점 95 점 예상결과값 F C B A 실제결과값 F C B A 27
경계값분석 개요 - 입력값의주요오류대상인경계값을입력값으로테스트케이스를작성하여테스팅 [ 예제 ] - 동등분할의예제를경계값분석방법을이용하여테스트케이스를추출한경우 테스트케이스 1 2 3 4 5 입력값 ( 점수 ) -1 점 0 점 99 점 100 점 101 점 점수범위점수범위초과정상정상정상점수범위초과 예상결과값경고창 F A A 경고창 실제결과값경고창 F A A 경고창 28
의사결정테이블 개요 활용 - 입 / 출력값이 True, False로결정될수있는경우모든경우의수를확인해볼수있는방법 - 입력, 출력값이 Yes, No 으로결정될수있는경우 - 적은수의조건을가진입력값에유용함 29
의사결정테이블의예 사용자요구사항 - 아이디와비밀번호를입력하여둘모두유효하면정상로그인이된다. 그러나아이디가유효하지않을경우잘못된아이디라는경고창을, 아이디는유효하나비밀번호가유효하지않으면잘못된비밀번호라는경고창을보여준다. 의사결정테이블테스트케이스 테스트조건 1 2 3 4 입력값예상출력값실제출력값 유효한아이디 T T F F 비밀번호 T F T F 로그인성공 T F F F 잘못된아이디경고창 F F T T 잘못된비밀번호경고창 F T F F 로그인성공 T F F F 잘못된아이디경고창 F F T T 잘못된비밀번호경고창 F T F F 30
화이트박스테스팅 (White-Box Testing) 개요 - 소스코드를직접참조하면서수행하는테스팅기술 - 방법 문장커버리지 (Statement Coverage) 분기커버리지 (Branch Coverage) 조건커버리지 (Condition Coverage) 다중조건커버리지 (Multiple Condition Coverage) 31
문장커버리지 (Statement Coverage) 개요 - 프로그램을구성하는문장들이최소한한번은실행될수있는입력값을테스트케이스로선정함 [ 예제 ] 보너스 = 0 a - 테스팅예제순서도를문장커버리지를적용하여추출한테스트케이스 ( 가 ) If( 작년 == A AND condition > 1) N ID 테스트케이스 입력값경로출력값 b Y 보너스 = 100 c d 1 (A, 2, 2) (a-b-c-e-f-h) 300............ ( 나 ) If(condition == 2 OR 자녀수 > 3) N e Y 보너스 = 보너스 + 200 g f 보너스출력 h < 테스팅예제순서도 > 32
분기커버리지 (Branch Coverage) 개요 - 프로그램에있는분기를최소한한번은실행하게하는테스팅하는방법 [ 예제 ] - 테스팅예제순서도를분기커버리지를적용하여추출한테스트케이스 ID 테스트케이스 입력값경로출력값 1 (A, 2, 2) (a-b-c-e-f-h) 300 2 (B, 1, 2) (a-d-c-g-h) 0............ 33
조건커버리지 (Condition Coverage) 개요 - &&, 등의조건을가진분기문이전체조건식의겱과와관계없이 && 나 전후의각개별조건식이참한번, 거짓한번을갖도록테스트케이스를만드는방법 34
조건커버리지 (Condition Coverage) 의예 사용자요구사항 - 학생의평균과과목수를받아서, 장학금대상자를선정하라. 장학금대상자는평균이 90점이상이고, 과목수가 5과목이상인학생으로한다. 시작 a 개별조건식 평균, 과목수입력 b If( ( 평균 >=90) && ( 과목수 >=5) ) If( ( 평균 >=90) && ( 과목수 >=5) ) N d 전체조건식 c Y 장학금대상자선정 e 종료 35
조건커버리지 (Condition Coverage) 의예 조건커버리지테스트케이스 ID 테스트케이스입력값경로출력값 1 (95, 4) (a-b-d-e) 대상자아님 2 (72, 7) (a-b-d-e) 대상자아님............ 입력값은 ( 평균, 과목수 ) 이며, 출력값은대상자선정여부이다. 조건커버리지테스트케이스진리표 평균 과목수 전체조건식 95 이면참 4 이면거짓 거짓 72 이면거짓 7 이면참 거짓......... 36
다중조건커버리지 (Multiple Condition Coverage) 개요 - 조건커버리지가각개별조건식의조건을검사하는것이라면, 다중조건커버리지는전체조건식의조건을검사하는테스트케이스를만드는방법 [ 예제 ] - 조건커버리지의예제를다중조건커버리지를적용하여추출한테스트케이스 ID 테스트케이스 입력값 경로 출력값 1 (95, 4) (a-b-d-e) 대상자아님 2 (72, 7) (a-b-d-e) 대상자아님 3 (80, 4) (a-b-d-e) 대상자아님 4 (92, 5) (a-b-c-e) 대상자............ 입력값은 ( 평균, 과목수 ) 이며, 출력값은대상자선정여부이다. 37
다중조건커버리지 (Multiple Condition Coverage) [ 예제 ] - 조건커버리지의예제를다중조건커버리지를적용하여추출한테스트케이스진리표 평균과목수전체조건식 95 이면참 4 이면거짓거짓 72 이면거짓 7 이면참거짓 80 이면거짓 4 이면거짓거짓 92 이면참 5 이면참참......... 38
화이트박스테스팅의특징 테스트의목적과조건에맞게적절한방법선택 각테스팅방법에따라복잡도, 소요되는시간 ( 비용 ) 이다름 39
테스팅단계 소프트웨어개발단계마다생산되는산출물을이용하여테스팅수행 요구사항정의 인수테스팅 요구사항분석 시스템테스팅 설계 통합테스팅 구현 단위테스팅 40
테스팅단계 단위테스팅 (Unit Testing) - 개요 구현단계에서각모듈이완성되었을경우개별적인모듈을테스팅 테스팅의주체는해당모듈의개발자 화이트박스 / 블랙박스테스팅모두가능 - 테스트할모듈을단독적으로실행할수있는환경필요 스텁 (Stub) 테스팅대상모듈에서호출하는모듈 테스트드라이버 (Test Driver) 테스팅대상모듈을호출하는환경 테스트드라이버 테스팅대상모듈 스텁 스텁 스텁 41
테스팅단계 통합테스팅 (Integrating Testing) - 개요 모듈을통합한단계에서수행되는테스팅 모듈간의상호작용을검사하는테스팅 - 모듈통합방법에따른테스팅기법종류 빅뱅 (Big Bang) 기법 모듈을한꺼번에통합하여테스팅을하는방법 오류가발생하였을경우어느부분에서오류가났는지찾기가힘듬 하향식 (Top-Down) 기법 가장상위모듈부터하위모듈로점진적으로통합하는방법 상위모듈테스팅시, 하위모듈에대한스텁이필요 상향식 (Bottom-Up) 기법 하위모듈부터테스팅하고상위모듈로점진적으로통합하는방법 하위모듈테스팅시, 상위모듈에대한테스트드라이버가필요 42
테스팅단계 시스템테스팅 (System Testing) - 개요 모듈이모두통합된후, 사용자의요구사항이만족되었는지검사하는테스팅 고객에게시스템을전달하기전, 시스템을개발한조직이주체가되는마지막테스팅 - 테스팅대상 요구사항명세서를기초로하여사용자의기능요구사항 보안, 성능, 신뢰성등의비기능요구사항 43
테스팅단계 인수테스팅 (Acceptance Testing) - 개요 시스템이사용자에게인수되기전, 사용자에의해실시되는테스팅 실제사용자가운영하는환경에서실시 인수테스팅을통과해야만시스템이정상적으로사용자에게인수되고프로젝트는종료됨 44
연습문제 1. 모듈안의작동을자세히관찰할수있으며, 프로그램원시코드의논리적 인구조를커버하도록테스트케이스를설계하는프로그램테스트방법은 무엇인가? 2. 블랙박스테스팅은무엇인가? 3. 소프트웨어의테스팅중화이트박스테스팅의과정은무엇이있는가? 4. 테스팅단계의순서를나열하라. 5. 디버깅 (Debugging) 이란무엇인가? 45
팀프로젝트 12, 13주차 46
이번주할일 각팀은개발한소프트웨어시스템의확인과검증을한다 - 단위테스트와통합테스트실시 - 각테스트결과보고서작성 평가기준 (5 점만점 ) 결과 - 35 3.5 점이상이면통과함 47
다음주제출문서 단위테스트및통합테스트의테스트결과보고서제출 48