_ 쾌적한 Clone Checker OOPT 2 nd Cycle System Test Software Modeling & Analysis 유준범교수님 Team. T1 201111388 조연호 201211374 이창오 201211379 장종훈 201314196 양동혁
목차 Contents Revise Plan Test Report Test Respond Report Demonstration
Revise Plan Stage 1000, Stage 2030, Stage 2040, Stage 2050 보고서내 모호한내용명확하게명세 / 불필요한내용삭제 dividecodeline() 소스코드를여러줄로잘못나누는오류수정 findtype() 소스코드내새로선언된타입을찾는메소드추가 mkfileinstance() 분석이불가능한폴더선택시예외를발생시키도록수정 calline(), calfunction(), calvariable(), calpreprocessor(), calannotation() 일치율계산알고리즘변경으로인한정확성증가
Test Report 1 조 5 조 Specification Review Specification Review 23 개발견 14 개발견 Brute Force Testing Brute Force Testing 총 61 개중 1 개성공 4 개실패 Category Partition Testing Category Partition Testing 총 128 개중 0 개성공 총 64 개중 47 개성공 Pairwise Combination Testing Pairwise Testing 총 128 개중 0 개성공 총 8 개중 6 개성공
Test Respond Report _ Specification, 1 조 Stage 1000 - Activity 1001. Define Draft Plan 기본문서에서프로그램의 Object 로쉽게보여주는 Clone Checker 를지향하였지만쉽게보이지않았다. 결과화면창에출력되는클라우드내텍스트와리스트내텍스트의출력형태와크기를변경하였다. Stage 1000 - Activity 1003. Define Requirements Activity 1003(Define Requirements) 의 Functional Requirements 3.7과 3.8의설명이같고그설명마저도모호하다. R.3.7(Analyze Function) 의설명을 소스코드파일의함수의개수와이름을분석하여결과값을저장한다. 로수정하였다. R.3.8(Analyze Variable) 의설명을 소스코드파일의변수의개수와이름을분석하여결과값을저장한다. 로수정하였다. Stage 2030 - Activity 2131. Define Essential Use Cases Stage 1000 - Activity 1007. Define Business Use Case OSP 2030 Stage 의 Activity 2131(Define Essential Use Cases) 에서 Divide Code Line 와관련된 Use Case 의코드분할기준이 OSP 1000 Stage 의 Activity 1007(Define Business Use Case) 의 Describe Use Cases 에서 Divide Code Line use case 의설명에비해다소추상적이다. Stage 1000 - Activity 1007. Define Business Use Case 의 Description 과 Stage 2030 - Activity 2131. Define Essential Use Cases 의 Purpose 의내용을 소스코드파일에서한줄에여러개의코드가있는경우 ; 을기준으로행을나눈다. 로구체화하여동기화하였다.
Test Respond Report _ Specification, 1 조 Stage 2040 - Activity 2141. Design Real Use Cases OSP 2040 Stage의 Use Case Select folder 에서 Pre Requisites의내용과 Typical Courses of Events의내용이겹치고 Exception처리가반영되어있어야하지만문서상에서는발견되지않았다. Typical Courses of Events 에서 Pre Requisites 와중복되었던 버튼 (A) 를누른다. 내용을삭제하였다. Exceptional Courses of Events 를제거하였다. Stage 2040 - Activity 2141. Design Real Use Cases OSP 2040 Stage의 Use Case Analyze Line 에서 Typical Courses of Events의 1번에서개수파악이어느개수인지모르겠다. Typical Courses of Events 의내용을아래와같이구체화하였다. - (A) : Actor, (S) : System 1. (S) : 생성된 Analyze:source 의문장개수를파악하여소스코드파일의라인수를분석한다. 2. (S) : 라인수를 File:numOfLine 에저장한다.
Test Respond Report _ Specification, 1 조 Stage 2040 - Activity 2141. Design Real Use Cases OSP 2040 Stage의 Use Case Calculate Preprocessor Sync-Rate 에서 Typical Courses of Events 의내용중 오차범위 (30,10) 의내용이정확히무엇을의미하는지문서의내용을읽어만봐서는알기힘들다. Calculate Preprocessor Sync-Rate 의 Typical Courses of Events 을아래와같이구체화하였다. - (A) : Actor, (S) : System 1.(S) : 기준파일의전처리기수가비교파일의전처리기수보다클경우 {( 비교파일과기준파일에서이름이같은전처리기수 / 기준파일의전처리기수 ) * 100} * 0.6 + {( 비교파일의전처리기수 / 기준파일의전처리기수 ) * 100} * 0.4 수식의결과값을일치율로부여한다. 2.(S) : 일치율을 Calculate:syncRate 에저장한다. - Calculate Preprocessor Sync-Rate 의 Alternative Courses of Events 을아래와같이구체화하였다. - (A) : Actor, (S) : System 1. (S) : 기준파일의전처리기수가비교파일의전처리기수보다작을경우 {( 비교파일과기준파일에서이름이같은전처리기수 / 비교파일의전처리기수 ) * 100} * 0.6 + {( 기준파일의전처리기수 / 비교파일의전처리기수 ) * 100} * 0.4 수식의결과값을일치율로부여한다. 2. (S) : 일치율을 Calculate:syncRate 에저장한다.
Test Respond Report _ Specification, 5 조 Stage 1000 - Activity 1003. Define Requirements 요구사항항목 R.1, Select Folder, 비교할소스코드파일들이들어있는폴더를선택한다. 에서 소스코드 와 소스코드파일 에대한정의가불분명하다. 소스코드는어떤프로그래밍언어로작성되어야하는가? 해당프로그래밍언어의명세상으로유효한, 즉컴파일가능한코드여야하는가? 소스코드파일의크기에는어떤제한이있는가? Stage 1000 - Activity 1004. Record Terms in Glossary 에다음과같은내용을추가하였다. - 소스코드 : 컴파일가능여부와상관없이프로그래밍언어로작성된코드소스코드파일파일크기와상관없이소스코드가담긴.c 확장자파일 Stage 1000 - Activity 1003. Define Requirements B.4, 종료버튼, 화면하단에하여클릭시프로그램이종료된다, C. 그외의메시지출력은대화상자 (Dialog) 활용 이라고명세되어있는데, 종료버튼과대화상자가없다. 종료버튼에관한내용을삭제하였고, 메시지출력은대화상자 (Dialog) 를활용하도록수정하였다. Other Requirements 에 새로운폴더를지정하기위해서는프로그램을종료하고다시실행해야한다. 는내용을추가하였다.
Test Respond Report _ Brute Force Testing, 1 조 ST-5. 개당대용량소스파일비교 - Fail ST-6. 소스파일분석 - Fail ST-7. 파일 1 개분석 - Fail ST-8. 파일 2 개분석 - Fail ST-9. 파일 3 개분석 - Fail ST-10. 파일 4 개분석 - Fail ST-11. 파일 5 개분석 - Fail ST-12. 파일 6 개 ~10 개분석 - Fail ST-13. 파일 11 개 ~50 개분석 - Fail 원인한줄에같이작성된코드들의행을나누는 dividecodeline() 메소드내에서무한루프가발생되었다. dividecodeline() 메소드의알고리즘을수정하였다. ST-17. 0 바이트파일비교 - Fail 원인사용자가지정한폴더에있는 0 바이트인파일을분석하는오류가발생하였다. 폴더내 0 바이트파일이있는경우예외처리를통해오류메시지를출력하고다시시작화면으로돌아가도록수정하였다.
Test Respond Report _ Brute Force Testing, 1 조 원인 ST-20. 같은기준선택시변화 - Fail 이미기준소스코드파일로선택되어있는파일로기준소스코드파일을재선택할경우동일한비교작업이수행되고, 클라우드모양이변경되었다. 현재기준소스코드파일로선택되어있는파일로재선택할수없도록수정하였다. ST-24. 잘못된폴더경로참조 - Fail 원인실재하지않는잘못된폴더경로를지정하였을경우에도분석이시작되는오류가발생하였다. 실재하지않는잘못된폴더경로일경우예외처리를통해오류메시지를출력하고다시시작화면으로돌아가도록수정하였다.
Test Respond Report _ Brute Force Testing, 5 조 세미콜론을사용해코드여러줄을합쳤을때 Use Case: Divide Code Line 기능이작동하지않는다. 원인한줄에같이작성된코드들의행을나누는 dividecodeline() 메소드내에서무한루프가발생되었다. dividecodeline() 메소드의알고리즘을수정하였다.
Test Respond Report _ Category Partition Testing, 1 조
Test Respond Report _ GUI
Demonstration https://youtu.be/6asj5febcx0
_ 쾌적한 Clone Checker 고맙습니다. Software Modeling & Analysis 유준범교수님