2018 SOFTWARE VERIFICATION 2 nd Testing System Test, Static Analysis 2018.06.04 ( 월 ) SV T1 201311263 김민환 201311308 전세진 201411278 서희진 201411317 조민규
2 nd Testing 2018 SOFTWARE VERIFICATION 1. Feedback 2. Specification Review 3. System Testing 4. Static Analysis 5. Summary
01. Feedback
FeedBack 01 Presentation Review 114p 45p 8p 0p 소프트웨어검증팀 소프트웨어모델링팀
FeedBack 01 Presentation Review [2018 SMA T1] 5 th 발표 2p 직관적이지않은인터페이스 1. 처음받았을당시매뉴얼의부재 어떤식으로동작하는지판별불가 2. ItemType, ItemID, ItemBank.. 어떤범위의값을갖는지 문서에명시되어있지않음. [2018 SV] 4 th 보고서 3. 카드를넣을때에도계좌번호를넣어주어야함 카드 나 통장을넣어주세요..?
FeedBack 01 Presentation Review [2018 SMA T1] 5 th 발표 2p 지난발표 Brute Force Testing 결과 Hmm..
FeedBack 01 Presentation Review [2018 SMA T1] 5 th 발표 8p 1. 예외처리 실행이안되는에러의예외처리필요 2. 알람 문제가생겼을때알람이오지않는다 = 문제가생겨도그냥진행된다. 3. 환율정보 지난발표에서의중요한내용이아님.
FeedBack 01 결론 불친절한발표자료 발표주제와다른내용만을나열함 + 대응보고서의부재 필수사항은아니지만 이전단계문서수정내역파악어려움
02. Specification Review
Spec Review 01 02 1. Functional Requirements [Stage 1000] Planning 1003. Define Requirements 2. Deposit : 증감 증가 End Use Case 정의되어있지않음
Spec Review 01 02 [Stage 1000] Planning 1004. Record Terms in Glossary ATM 에서지급하는구조가아님, OOAD 개발방법론을따랐는지의문
Spec Review 01 02 [Stage 1000] Planning 1008. Define Business Concept Models 불필요한심볼의정의 (Sensor, History)
Spec Review 01 02 1.1 Check [Stage 2030 & 2040] Analysis & Design 2031. Describe Use Case 2030 2040 2030 과 2040, 2041 Use Case 불일치
Spec Review 01 02 1.2 Deposit [Stage 2030 & 2040] Analysis & Design 2031. Describe Use Case 2030 2040 2030 과 2040, 2041 Use Case 불일치
Spec Review 01 02 1.3 Withdraw [Stage 2030 & 2040] Analysis & Design 2031. Describe Use Case 2030 2040 2030 과 2040, 2041 Use Case 불일치
Spec Review 01 02 1.3 Withdraw [Stage 2030 & 2040] Analysis & Design 2031. Describe Use Case 2030 2040 2030 과 2040, 2041 Use Case 불일치
Spec Review 01 02 1.4 Transfer [Stage 2030 & 2040] Analysis & Design 2031. Describe Use Case 2030 2040 2030 과 2040, 2041 Use Case 불일치 다른 Use Case 도모두다르므로생략
Spec Review 01 02 [Stage 2030 & 2040] Analysis & Design 2033. Define Domain Model 사용하지않는 domain 들정의
Spec Review 01 02 [Stage 2030] Analysis 2034. Refine Clossary 사용되지않은변수
Spec Review 01 02 [Stage 2030] Analysis 2035. Sequence Diagram 이전발표내용반영되지않음
Spec Review 01 02 [Stage 2030] Analysis 2036. Define Operation Contracts 6.2 selectservice(service) 모든 Service 가비밀번호를필요로하지는않으므로수정필요. ex) Deposit
Spec Review 01 02 [Stage 2030] Analysis 2036. Define Operation Contracts 6.5 insertcash(type, amounts) Exceptions 에 원화와달러를섞어서입금할경우입금하지않는다 추가
Spec Review 01 02 [Stage 2030] Analysis 2036. Define Operation Contracts 6.11 printrecept(print) 6.3 의 printreceipt 와중복되므로삭제필요
Spec Review 01 02 [Stage 2040] Design 2144. Define Interaction Diagrams 이전발표이후로반영된사항없음 이전발표에서문제되었던부분확인요망합니다.
Spec Review 01 02 [Stage 2040] Design 2144. Define Interaction Diagrams 명세에언급되어있던 end 가 interaction diagram 어디에도존재하지않음. Update 관련존재하지않음.
Spec Review 01 02 [Stage 2040] Design 2045. Define Design Class Diagrams 2044에사용한함수들이명시되어있지않다. cashamount의데이터형이다르다. ATMadminID, ATMnation 변수가누락되어있다. confirmeditem, PWD는프로그램상에서존재하지않는변수이다. 함수의이름이다르다. (setdaterange setdatarange) 함수의반환값이다르다. (destaccount의반환값은 string이다.) checkresource의접근제어지시자는 public이다. bankdatadownload와 bootatm은존재하지않는다. 중복된변수가존재한다.
Spec Review 01 02 [Stage 2040] Design 2045. Define Design Class Diagrams Conrifm, charge Traffic Card, withdraw, deposit 메소드의파라미터가다르다 존재하지않는 setaccountdata 존재
Spec Review 01 02 [Stage 2040] Design 2045. Define Design Class Diagrams Book : 코드에 Spec 사용되는 ReviewFile Reader 가빠져있음 Account : 코드에존재하지않는 blocked 변수존재, book은배열이아님 TrafficCard : 코드에사용되는 File Reader & Count 존재하지않음
Spec Review 01 02 [Stage 2050] Implementation 2051. Implement Class & Method 모든 Class 와 Method 의 Cross Reference 가 ctrl+c, ctrl+v 적절하지않은 Cross Reference 기재 이하생략
Spec Review 01 02 [Stage 2050] Implementation 2051. Implement Class & Method 1.1.5 insertcash 존재하지않는 Update, 너무많다 의기준이명확하지않음
Spec Review 01 02 [Stage 2050] Implementation 2051. Implement Class & Method 1.1.8 printreceipt & setdaterange 넘버링오류 ( 번호겹침 ) 오타 (setdatarange), 코드상에서사용되지않은메소드
Spec Review 01 02 [Stage 2050] Implementation 2051. Implement Class & Method 1.1.11 end 이전단계 (1000, 2030) 에서나오지않음.
Spec Review 01 02 [Stage 2050] Implementation 2051. Implement Class & Method 1.2.2 Confirm & WriteData item cache 인 Type 변수..? 넘버링오류 ( 번호겹침 )
Spec Review 01 02 [Stage 2050] Implementation 2051. Implement Class & Method 1.2.3 getbalance & ValidCheck 넘버링오류 ( 번호겹침 )
Spec Review 01 02 [Stage 2050] Implementation 2051. Implement Class & Method 1.2.5 linkaccount Cross Reference 누락
Spec Review 01 02 [Stage 2050] Implementation 2051. Implement Class & Method 1.2.6 transfer Cross Reference 누락
Spec Review 01 02 [Stage 2050] Implementation 2051. Implement Class & Method 1.3.4 set_balance 증감하지않는다.
Spec Review 01 02 [Stage 2050] Implementation 2051. Implement Class & Method 2.1 waitreaditem 기다리는상황 x
Spec Review 01 02 [Stage 2050] Implementation 2051. Implement Class & Method 2.5 selectnation Natinon 오타수정필요
02. System Testing
System Testing 01 03 Category Partition Testing Categorize
CPT 01 02 Category Partition Testing Categorize
System Testing 01 03 Category Partition Testing Description
System Testing 01 03 Category Partition Testing Description
System Testing 01 03 Category Partition Testing Property & Const
System Testing 01 03 Category Partition Testing Property & Const
System Testing 01 03 Category Partition Testing SV 팀의에러수정 수정해준에러를복구한 SMA 팀
System Testing 01 03 Category Partition Testing 0% Passed
System Testing 01 03 Category Partition Testing 0% Passed
System Testing 01 03 Category Partition Testing 25% Passed
System Testing 01 03 Category Partition Testing 25% Passed
Spec Review 01 02 Category Partition Testing CPT Passed Percentage 1 st Category Partition Testing => 42% Passed 2 nd Category Partition Testing => 25% Passed => 첫번째 CPT 보다낮아진 Passed Percentage
System Testing 01 03 Category Partition Testing Summarize File 경로, Parsing 中 Array Index Out of Bounds와같은치명적인 Error 수정실패. Admin에게알림을주지않음 몇가지예외처리가잘되어있지않음 수수료등추가된일부기능에서에러발생
System Testing 01 03 Pairwise Testing 결과파일
System Testing 01 03 Pairwise Testing Test Cases & Result CPT 와마찬가지로프로그램시작부분에에러. 수정전테스트결과 : All Fail
System Testing 01 03 Pairwise Testing Test Cases & Result ( 코드수정후 )
System Testing 01 03 Pairwise Testing Test Cases & Result ( 코드수정후 ) 6 / 25 (24%) Pass
Spec Review 01 02 Pairwise Testing PT Passed Percentage 1 st Pairwise Testing => 32% Passed 2 nd PairwiseTesting => 24% Passed => 첫번째 PT 보다낮아진 Passed Percentage
System Testing 01 03 Pairwise Testing Pairwise Testing Summary 파일입출력과정에서의경로 / 자료구조문제심각. alarm 기능작동하지않음. 예외처리미흡. 약간의 UI 오류. 수수료등추가된일부기능에서에러발생
System Testing 01 03 Brute Force Testing Test 아이템받아오기 Test Num 1-1 기존 P/F Fail (Pass) 현재 P/F Fail (Pass) 비고 ( 변화없음 ) 1-2 Fail (Pass) Fail (Pass) ( 변화없음 ) 1-3 Fail (Fail) Fail (Pass) 수정확인. 1-4 Fail (Fail) Fail (Pass) 수정확인. 1-5 Fail (Fail) Fail (Pass) 수정확인. 입금 2-1 Fail (Fail) Fail (Pass) 수정확인.(GitHub issue tracker 내용확인요함 ) 2-2 Fail (Pass) Fail (Pass) ( 변화없음 ) 60
System Testing 01 03 출금 3-1 Fail (Fail) 계좌이체 3-2 Fail (Pass ) 3-3 Fail (Fail) 3-4 Fail (Fail) 4-1 Fail (Pass ) 4-2 Fail (Fail) 4-3 Fail (Fail) 4-4 Fail (Pass ) 4-5 Fail (Pass ) Fail (Pass) Fail (Pass) Fail (Fail) Fail (Fail) Fail (Pass) Fail (Pass) Fail (Fail) Fail (Pass) Fail (Pass) 수정확인. ( 변화없음 ) UI에정상적으로출력되지않는다. 999만원까지밖에출금을진행할수없다. ( 변화없음 ) 수정확인. 999만원까지밖에이체를진행할수없다. ( 변화없음 ) ( 변화없음 ) Brute Force Testing 61
System Testing 01 03 Brute Force Testing 알림 5-1 Fail (Fail) 5-2 Fail (Fail) 5-3 Fail (Fail) 5-4 Fail (Fail) 교통카드 6-1 Fail (Fail) 6-2 Fail (Fail) Fail (Fail) Fail (Fail) Fail (Fail) Fail (Fail) Fail (Fail) Fail (Pass) 메일기능비정상. ( 신규오류에추가 ) 메일기능비정상. ( 신규오류에추가 ) 메일기능비정상. ( 신규오류에추가 ) 메일기능비정상. ( 신규오류에추가 ) 3달러가출금됨. 수정확인. 0 / 22 = 0% Passed (15 / 22 = 68.18% Passed) 62
System Testing 01 03 Brute Force Testing Why? FileNotFoundException 은 2 주연속으로문제가발생하는것을확인함. 따라서 Pass percentage 는 0% 로책정이가능함. 괄호안은 FileNotFoundException 을제외한결과임. 63
System Testing 01 03 Brute Force Testing 신규오류 1. Deposit 진행시 mail 발송관련 Exception 이출력됨. 64
System Testing 01 03 Brute Force Testing 신규오류 2. 외국은행에서 withdraw 진행시 2. 국내은행에서 withdraw 진행시 무조건달러로출금된다. 무조건원화로출금된다. 65
System Testing 01 03 Brute Force Testing 4-2. 외화를출금시 10 배의금액이출금된다. 4-3. 세자리의숫자만출금이가능하다. 6-1. 교통카드의발급비용은 0.3$ 라고명시되어있지만 3$ 가출금된다. 66
04. Static Analysis
Static Analysis 01 04 In CTIP - Github Issue Tracker Github issue Tracker 를이용한이슈관리
Static Analysis 01 04 In CTIP - Github Issue Tracker label 을활용한소통 milestone 활용
Static Analysis 01 04 In CTIP SonarQube & Jenkins 92 번째 Build 를기준으로진행
Static Analysis 01 04 In CTIP SonarQube & Jenkins 이전 Build 와의비교 기존의 Bug, Vulnerabilities 전혀해결되지않음 Bug, Vulnerability 의개수늘어남
Static Analysis 01 04 In CTIP SonarQube & Jenkins Bug
Static Analysis 01 04 In CTIP SonarQube & Jenkins Bug
Static Analysis 01 04 In CTIP SonarQube & Jenkins Vulnerability printstacktrace() 사용 Code scroll 에서도발견되는 Vulnerability 문제
Static Analysis 01 04 패키지명, 변수명규칙 In CTIP SonarQube & Jenkins Code Smell
Static Analysis 01 04 Inappropriate Naming 출처 : 오라클홈페이지 (http://www.oracle.com/technetwork/java/codeconventions-135099.html)
Static Analysis 01 04 Inappropriate Naming 출처 : 오라클홈페이지 (http://www.oracle.com/technetwork/java/codeconventions-135099.html)
Static Analysis 01 04 Code Scroll - 코드분석 소스 위배수 위배 *RCR **RV 규칙수 D GUIController.java 715 19 80.81% 0.36 ATM.java 230 19 80.81% 0.47 Bank.java 44 12 87.88% 0.27 Account.java 29 7 92.93% 0.46 TrafficCard.java 19 11 88.89% 0.37 Card.java 15 7 92.93% 0.34 Book.java 13 6 93.94% 0.32 GUIController.java 에서가장많은위배항목발견
Static Analysis 01 04 Code Scroll - 주요위배내역 / 규칙 규칙 위배수 규칙설명 Sun_24 581 숫자상수사용금지 Sun_08 105 블록의시작부분에서만선언검사 Sun_10 72 지역변수선언시초기화검사 JAVA_72 63 메서드의설명주석이있어야함 JAVA_64 42 반복문안에서 String concatenation assignment 연산자의사용금지 Sun_06 26 소스라인길이검사 Sun_17 20 메서드내부의지역변수선언부와실행문장사이를빈줄로구분 주로소스코드의변수이름과관련된부분에서위배가발견됨
Static Analysis 01 04 Code Scroll - 주요위배내역 / 규칙 심각도 위배수 포함된 위배 *SCR 설명 규칙수 규칙수 매우높음 13 20 1 95% 프로그램에매우심각한여향을미치므로오류수정이필요함 높음 135 46 6 86.96% 프로그램에심각한영향을줄수있으므로강력히권장됨 낮음 104 10 4 60% 프로그램에영향을줄수있으므로오류수정이권장됨 매우낮음 813 23 14 39.13% 프로그램에큰영향은없지만오류수정이권장됨
Static Analysis 01 04 Code Scroll - 위배내역 ( 매우심각 ) 메서드 (printstacktrace) 가사용됨
Static Analysis 01 04 Code Scroll - 위배내역 ( 심각 ) 반복문안에서 String concatenation 연산자를사용함 Figure 3 GUIController.java line 803
Static Analysis 01 04 Code Scroll 위배내역 ( 심각 ) Identifier(pth_s) 가이미필드로선언되어있어 hide 가발생함 Figure 3 GUIController.java line 646
05. Summary
Summary 01 05 Testing Result Category-Partition Test 6 / 25 = 24% Pass Pairwise Test 15 / 64 = 25% Pass Brute-force Test 15 / 22 = 62% Pass
Summary 01 05 Category Partition Test & Pairwise Test Text File의경로가잘못되어실행이되지않는 Error 발생 Text File을 Parsing하는과정에서 Array Index Out of Bounds Error 발생 관리자에게 Alarm을보내야하는모든경우실패 1. ATM에돈이부족한경우 2. ATM에돈이너무많은경우 3. 영수증이부족한경우 4. 교통카드가부족한경우 User Interface 오류 1. 입금시금액출력오류 (50000원 -> 5000원 ) 2. 출금시금액입력화면에확인버튼이없음
Summary 01 05 Brute Force Test 메일전송기능이제대로동작하지않는다. 여러경우에대해정확한예외처리가되어있지않다. 위와같은상황등 Error 가많으므로수정필요