"SW 테스트 자동화"의 두 판 사이의 차이

TRACE32
이동: 둘러보기, 검색
1번째 줄: 1번째 줄:
<h2>기능 소개</h2>
+
<h2><span style="font-size: x-large;"><strong>1. 기능 소개</strong></span></h2>
<p>&nbsp; 본 페이지에서는 SW 프로그램을 테스트하는 여러 방법 중, 실제 타겟 프로세서에서 SW 테스트를 진행하는 방법에 대해 설명한다.</p>
+
<p><span style="font-size: medium;">&nbsp; 본 페이지에서는 SW 프로그램을 테스트하는 여러 방법 중, 실제 타겟 프로세서에서 SW 테스트를 진행하는 방법에 대해 설명한다.</span></p>
<p>실제 타겟에서의 SW 테스트를 위해서는 "<strong>코드가 다운로드된 타겟" 과&nbsp;</strong><strong>"HW 디버깅 장비 TRACE32"</strong>&nbsp;가 필요하다.</p>
+
<p><span style="font-size: medium;">실제 타겟에서의 SW 테스트를 위해서는 "<strong>코드가 다운로드된 타겟" 과&nbsp;</strong><strong>"HW 디버깅 장비 TRACE32"</strong>&nbsp;가 필요하다.</span></p>
<p>&nbsp;이 때, HW 디버깅 장비는 원하는 프로그램 위치에서 타겟 코어의 동작을 멈춘 후 입력 값을 변경하고, 연산이 완료된 출력 값을</p>
+
<p><span style="font-size: medium;">&nbsp;이 때, HW 디버깅 장비는 원하는 프로그램 위치에서 타겟 코어의 동작을 멈춘 후 입력 값을 변경하고, 연산이 완료된 출력 값을</span></p>
<p>가져오는 역할을 수행한다. 특히 TRACE32 는&nbsp;수많은 테스트케이스를 수행하는데 있어서 개발자가 직접 수동/반복적으로 테스트</p>
+
<p><span style="font-size: medium;">가져오는 역할을 수행한다. 특히 TRACE32 는&nbsp;수많은 테스트케이스를 수행하는데 있어서 개발자가 직접 수동/반복적으로 테스트</span></p>
<p>해야 했던 일을 자동화하여 많은 시간과 비용을 줄여 줄 수있다.</p>
+
<p><img src="/data/wiki/2018-01-17/1516169556.png" alt="" /></p>
+
<p>또한 기존의 많은 테스트에서는 별도의 테스트 Harness를 만들어 주는 등 추가적인 코드 삽입이 필요하지만</p>
+
<p>TRACE32 를 사용하는 해당 기능은 별도의 추가 삽입되는 코드 없이 테스트가 가능하다.</p>
+
<p>[아래 기능의 사용 방법을 확인]</p>
+
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
<h2>기능 구성 및 사용법</h2>
+
<p><span style="font-size: medium;">해야 했던 일을 자동화하여 많은 시간과 비용을 줄여 줄 수있다.</span></p>
<p>해당 기능을 사용하기 위해서는 먼저 아래와 같은 파일들이 필요하다.</p>
+
<p><span style="font-size: medium;"><br /></span></p>
<p><span style="white-space: pre;"> </span><img src="/data/wiki/2018-01-17/1516169769.png" alt="" /></p>
+
<p>&nbsp; &nbsp; &nbsp;&nbsp;<img src="/data/wiki/2018-03-13/1520940285.png" alt="" /></p>
<p><span style="font-size: medium;"><strong>&lt; 스크립트는 다운로드 링크&gt;</strong></span></p>
+
<h2><span style="font-size: x-large;"><strong>2. 실행 방법</strong></span></h2>
<p>* 라이선스 케이블의 유지보수가 되어 있어야 횟수 제한없이 사용 가능 (횟수 제한 : 3회)</p>
+
<p><span style="font-size: large;"><strong>&nbsp; &nbsp;- 다운로드 파일 :&nbsp;<a href="http://ftp.trace32.com/home/trace32/SW_TEST/tools.zip">tools.zip</a></strong></span></p>
<p>* 현재는 베타 버전으로 2018년 04월까지 유지보수 되어 있지 않더라도 무제한 사용 가능</p>
+
<p><span style="font-size: large;"><strong><a href="http://ftp.trace32.com/home/trace32/SW_TEST/tools.zip"></a></strong></span><span style="font-size: medium;">&nbsp; &nbsp; 1. 받은 tools.zip 파일을 &ldquo;T32설치폴더(C:\T32)</span><span style="font-size: medium;">&rdquo; 안에 tools라는 이름으로 압축해제 한다.</span></p>
<p>* Update 날짜 : 2018년 2월 12일</p>
+
<p><span style="font-size: medium;">&nbsp;</span><span style="font-size: medium;">&nbsp; &nbsp; 2. tools 폴더안에 있는 t32.men 파일을 복사하여 &ldquo;T3설치폴더(C:\T32)&rdquo;에 덮어쓰기를 한다.</span></p>
<p>* Update 방법 : <strong>[T32 설치폴더]\tools\sw_test</strong>에 있는 아래&nbsp;파일들을 업데이트</p>
+
<p><span style="font-size: medium;">&nbsp; &nbsp; &nbsp; &nbsp;<img src="/data/wiki/2018-03-13/1520940097.png" alt="" /><br /></span></p>
<p>&nbsp;&nbsp; <a href="http://ftp.trace32.com/trace32/SW_TEST/TRACE32_SW_TESTING.emm"><span style="color: #0000ff;">TRACE_SW_TESTING.emm</span></a></p>
+
<p><span style="font-size: medium;">&nbsp;</span><span style="font-size: medium;">&nbsp; &nbsp; &nbsp;3. 이후 TRACE32프로그램을 실행하면 아래와 같이 [mds]버튼이 추가된다.</span></p>
<p>&nbsp;&nbsp; <a href="http://ftp.trace32.com/trace32/SW_TEST/TRACE32_TESTCASE_CREATE.emm"><span style="color: #0000ff;">TRACE32_TESTCASE_CREATE.emm</span></a></p>
+
<p><span style="font-size: medium;">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<img src="/data/wiki/2018-03-13/1520940148.png" alt="" /><br /></span></p>
 +
<p><span style="font-size: medium;">&nbsp;</span><span style="font-size: medium;">&nbsp; &nbsp; &nbsp; 4. 생성된 [mds]버튼을 누르면 SW Testing Tool 이 실행된다.</span></p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
<h3>기능 실행방법&nbsp;</h3>
 
<p><strong>DODECRYPT "hancommdsktj" TRACE32_SW_TEST</strong></p>
 
<p>위의 명령어를 실행하면, 아래와 같은 TESTing Tool UI 창이 열린다.&nbsp;</p>
 
<p><span style="white-space: pre;"> </span><img src="/data/wiki/2018-01-17/1516168971.png" alt="" style="width: 656px; height: 424px;" width="872" height="557" /></p>
 
<ul>
 
<li><strong>&nbsp;Search 버튼&nbsp;</strong>&nbsp;: 기존의 SW테스트 케이스를 불러오기</li>
 
</ul>
 
<ul>
 
<li><strong style="font-size: 1.17em;">Create 버튼 :&nbsp;</strong><span style="font-size: 1.17em;">SW 테스트에 사용할 케이스를 <strong>새로 생성</strong></span></li>
 
</ul>
 
<p>&nbsp; &nbsp;<span style="white-space: pre;"> </span>해당 버튼을 누르면 아래와 같이 테스트 대상 및 input 테스트 케이스를 만들 수 있는 기능이 실행된다.</p>
 
<p>&nbsp;<span style="white-space: pre;"> </span><img src="/data/wiki/2018-01-17/1516169184.png" alt="" style="width: 724px; height: 522px;" width="880" height="664" /></p>
 
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
<p>&nbsp; 1)&nbsp;Start Address: 테스트유닛의 시작점으로 테스트케이스의 Input과 Pre-Condtion을 이 시점에서 대입</p>
+
<h2><span style="font-size: x-large;"><strong>3. </strong><strong>화면 구성 및 사용법</strong></span></h2>
<p>&nbsp; &nbsp; &nbsp;&nbsp;END Addresss: 테스트유닛을 실행시킨 뒤 그에 대한 결과값을 확인하는 주소</p>
+
<h3><span style="text-decoration: underline;"><span style="font-size: medium;"><strong>3-1. Main UI</strong></span></span></h3>
<p>&nbsp; &nbsp; &nbsp;&nbsp;만약 끝주소를 입력하지 않은 경우에는 자동으로 Start Address심볼의 Exit 주소를 찾아 대체됨</p>
+
<p><span style="font-size: medium;"><strong>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<img src="/data/wiki/2018-03-13/1520940366.png" alt="" /></strong></span></p>
 +
<p><span style="font-size: medium;"><strong>&nbsp;</strong></span></p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
<p>&nbsp; 2) 테스트시 옵션 설정</p>
+
<p><span style="font-size: medium;"><strong>①&nbsp;&nbsp;&nbsp; </strong><strong>&nbsp;Add Test Case File : </strong>Test Case를 설정/정의한 CSV파일을 등록하거나 새로 생성</span></p>
<p><span style="white-space: pre;"> </span><strong>* </strong>TEST MODE : 테스트방식을 결정합니다</p>
+
<p><span style="font-size: medium;"><strong>②&nbsp;&nbsp;&nbsp; </strong><strong>Test Scenario :</strong> 테스트 시나리오 리스트 (T32_Test_List.txt 파일)</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - CALL 모드 : 함수 단위 테스트시 <strong>함수 호출을 TRACE32가 대신 실행</strong></p>
+
<p><span style="font-size: medium;"><span style="white-space: pre;"> </span>테스트케이스를 만들거나 추가 등록시키면 리스트가 업데이트 된다.</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;테스트 대상이 반복적으로 호출되지 않더라도 이 모드를 이용하면 빠르게 자동화하여 테스트 가능</p>
+
<p><span style="font-size: medium;"><span style="white-space: pre;"> </span>Start버튼을 누르면 테스트케이스 파일과 T32 커맨드를 정의한 순서대로 수행한다.</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - BREAK 모드 : start Address/ End Address 시점에 Breakpoint를 잡고 타겟 수행을 멈추어 테스트하는 방식</p>
+
<p><span style="font-size: medium;"><strong><span style="white-space: pre;"> </span>[Edit Test Scenario]버튼</strong>을 통해 시나리오를 직접 수정 가능</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;테스트유닛을 실행시키기 위해서는 타겟이 그 코드를 실제 수행해야함</p>
+
<p><span style="font-size: medium;"><span style="white-space: pre;"> </span>-&nbsp; TEST_FILE : [테스트케이스 파일의 경로]</span></p>
<p><strong><span style="white-space: pre;"> </span>*&nbsp;</strong>FLASH Download : 테스트 시작시 지정한 ELF 이미지를 타겟 flash 에 write</p>
+
<p><span style="font-size: medium;"><span style="white-space: pre;"> </span>-&nbsp; T32_CMD : [T32 명령어]</span></p>
<p><span style="white-space: pre;"> <strong>*&nbsp;</strong></span>Debug Option :&nbsp;테스트중 FAIL이 발생하면 그 시점에 타겟을 멈춤</p>
+
<p><span style="font-size: medium;"><strong>③&nbsp;&nbsp;&nbsp; </strong><strong>&nbsp;Simulator Debugging </strong>: 디버깅 환경을 시뮬레이터로 전환</span></p>
<p><span style="white-space: pre;"><span style="white-space: pre;"> </span> <span style="white-space: pre;"> <span style="white-space: pre;"> </span></span></span>문제가 발생한 테스트케이스를 디버깅하여 FAIL의 원인을 찾는데 활용</p>
+
<p><span style="font-size: medium;"><span style="white-space: pre;"> </span>&nbsp; &nbsp; 시뮬레이터에서는 코드 커버리지나 백트레이스 등 고급 기능들을 사용 가능</span></p>
<p><span style="white-space: pre;"> </span><strong>* </strong>RUNTIME Test : 각 테스트케이스별 실행시간을 측정</p>
+
<p><span style="font-size: medium;"><span style="white-space: pre;"> </span>&nbsp; &nbsp; 전환할 경우 PowerView가 재시작 되니 주의하십시오.</span></p>
<p><span style="white-space: pre;"><span style="white-space: pre;"> </span> </span><img src="/data/wiki/2018-01-17/1516170412.png" alt="" /></p>
+
<p><span style="font-size: medium;"><strong>④&nbsp;&nbsp; </strong><strong>ETC : </strong></span></p>
<ul>
+
<p><span style="font-size: medium;"><span style="white-space: pre;"> </span>&nbsp; &nbsp; &nbsp; &nbsp; - Coverage : 코드 커버리지를 보거나 리셋한다.</span></p>
</ul>
+
<p><span style="font-size: medium;"><span style="white-space: pre;"> </span>- Load Symbol : 심볼을 로딩한다.</span></p>
<p><span style="white-space: pre;"> <span style="white-space: pre;"> <span style="white-space: pre;"> </span></span></span>- Timer Register Address : 타이밍 측정에 사용할 내부 타이머 레지스터 주소</p>
+
<p><span style="font-size: medium;"><strong>⑤&nbsp;&nbsp;&nbsp; </strong><strong>Test Start :&nbsp; </strong>정의한 시나리오대로 테스트를 시작한다.</span></p>
<p><span style="white-space: pre;"><span style="white-space: pre;"> <span style="white-space: pre;"> </span></span> </span>- Timer 1 Tick Time : Timer 1 tick 당 시간 정보</p>
+
<p><span style="font-size: medium;"><strong>&nbsp;</strong></span></p>
<p><span style="white-space: pre;"> <span style="white-space: pre;"> </span></span>&nbsp;- MAX Timer Value : 16bit or 32bit 선택, Max Timer 값 지정</p>
+
<h3><span style="text-decoration: underline;"><span style="font-size: medium;"><strong>3-2. Test Case </strong><strong>생성</strong></span></span></h3>
<p><span style="white-space: pre;"> </span><strong>* </strong>Step Num :&nbsp; 매개변수 값을 입력 할 프로그램 시점을 맞추기 위해 진입점 도달 후 Step횟수를 설정</p>
+
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<img src="/data/wiki/2018-03-13/1520940846.png" alt="" /></p>
 +
<p><span style="font-size: medium;"><strong>①&nbsp;&nbsp;&nbsp; </strong><strong>Test Unit</strong> : [Sel] 버튼을 눌러 테스트 함수를 검색하거나</span></p>
 +
<p><span style="font-size: medium;"><strong>&nbsp;<span style="white-space: pre;"> </span>&nbsp;</strong>주소나 심볼을 직접 입력한다.</span></p>
 +
<p><span style="font-size: medium;"><span style="white-space: pre;"> </span>- 테스트 시작 지점 (Input/ Pre-Condition 대입 시점)</span></p>
 +
<p><span style="font-size: medium;"><span style="white-space: pre;"> </span>- 테스트 끝 지점&nbsp;&nbsp; (예상 Output 값과&nbsp; 실제 Output 값 비교 시점)</span></p>
 +
<p><span style="font-size: medium;"><span style="white-space: pre;"> </span>※ End Address를 입력하지 않을 경우 함수 종료 시점이 자동 입력된다.</span></p>
 +
<p><span style="font-size: medium;"><strong>②&nbsp;&nbsp;&nbsp; </strong><strong>Test Setting :</strong>&nbsp; 테스트 방법이나 항목을 설정한다.</span></p>
 +
<p><span style="font-size: medium;"><strong><span style="white-space: pre;"> </span>1. </strong>TEST MODE : 테스트 방식을 결정</span></p>
 +
<p><span style="font-size: medium;"><span style="white-space: pre;"> </span>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CALL 모드 : <span style="text-decoration: underline;">함수 단위 테스트시</span> 함수 호출을 TRACE32가 대신 실행</span></p>
 +
<p><span style="font-size: medium;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="white-space: pre;"> </span>&nbsp;테스트 대상이 반복적으로 호출되지 않더라도 이 모드를 이용하면</span></p>
 +
<p><span style="font-size: medium;"><span style="white-space: pre;"> </span>&nbsp;반복하여 빠르게 테스트가 가능함</span></p>
 +
<p><span style="font-size: medium;"><span style="white-space: pre;"> </span>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BREAK 모드 : 테스트 시작점에 Breakpoint를 잡고 테스트하는 방식</span></p>
 +
<p><span style="font-size: medium;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="white-space: pre;"> </span>&nbsp; &nbsp;코드 흐름에 맞추어 테스트 진행됨</span></p>
 +
<p><span style="font-size: medium;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="white-space: pre;"> </span> <span style="text-decoration: underline;">※ CMD</span> : 각 테스트 케이스가 실행되기 전에 수행되는 명령어</span></p>
 +
<p><span style="font-size: medium;"><br /></span></p>
 +
<p><span style="font-size: medium;"><strong><span style="white-space: pre;"> </span>2. </strong>FLASH Download : 타겟에 ELF 이미지파일의 다운로드와 관련된 설정 항목이다.</span></p>
 +
<p><span style="font-size: medium;"><strong><span style="white-space: pre;"> </span>3. </strong>Debug Option : 테스트중 FAIL이 발생하면 그 시점에 타겟을 멈추게하는 기능</span></p>
 +
<p><span style="font-size: medium;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="white-space: pre;"> </span>&nbsp; 타겟이 멈추면 그 시점을 디버깅하여 FAIL의 원인을 찾을수 있음</span></p>
 +
<p><span style="font-size: medium;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<span style="white-space: pre;"> </span>&nbsp; [Continue Test] 버튼을 누르면 이어서 테스트 시작</span></p>
 +
<p><span style="font-size: medium;"><strong><span style="white-space: pre;"> </span>4. </strong>RUNTIME Test : 각 테스트케이스별 수행시간을 측정하는 기능이다.</span></p>
 +
<p><span style="font-size: medium;"><span style="white-space: pre;"> </span><img src="/data/wiki/2018-03-13/1520940894.png" alt="" /><br /></span></p>
 +
<p><span style="font-size: medium;"><span style="white-space: pre;"> </span>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Timer Register Address : 타이밍 측정에 사용할 내부 타이머 레지스터 주소</span></p>
 +
<p><span style="font-size: medium;"><span style="white-space: pre;"> </span>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Timer 1 Tick Time : Timer 1 tick 당 시간 정보</span></p>
 +
<p><span style="font-size: medium;"><span style="white-space: pre;"> </span>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MAX Timer Value : 16bit or 32bit 선택, Max Timer 값 지정</span></p>
 +
<p><span style="font-size: medium;"><br /></span></p>
 +
<p><span style="font-size: medium;"><strong><span style="white-space: pre;"> </span>5. Step Num : </strong>함수 진입시 매개변수나 지역변수가 할당 되지 않을 경우에 사용</span></p>
 +
<p><span style="font-size: medium;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="white-space: pre;"> </span>Start Address에서 지정한 횟수만큼 Step 진행</span></p>
 +
<p><span style="font-size: medium;"><br /></span></p>
 +
<p><span style="font-size: medium;"><strong>③&nbsp;&nbsp;&nbsp; </strong><strong>&nbsp;DONE</strong> : Testcase를 작성하기 위한 csv파일 포맷이 자동 완성되어 열린다.</span></p>
 +
<p><span style="font-size: medium;"><span style="white-space: pre;"> </span>※ 엑셀과 연동하기 위해서는 config폴더의 excel_path.txt 안에</span></p>
 +
<p><span style="font-size: medium;"><span style="white-space: pre;"> </span>&nbsp; &nbsp;excel 실행파일 경로를 반드시 설정해주어야함</span></p>
 +
<p><span style="font-size: medium;"><br /></span></p>
 +
<h3><span style="text-decoration: underline;"><span style="font-size: medium;"><strong>3-3. Test Case </strong><strong>입력 (CSV파일)</strong></span></span></h3>
 +
<p><span style="font-size: medium;"><strong>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<img src="/data/wiki/2018-03-13/1520940923.png" alt="" /></strong></span></p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
<ul>
+
<p><span style="font-size: medium;"><span style="white-space: pre;"> </span>1. 기본 포맷 : &nbsp;<strong>TYPE/[</strong><strong>심볼or주소]</strong></span></p>
</ul>
+
<p><span style="font-size: medium;"><span style="white-space: pre;"> </span>2.&nbsp;<span style="text-decoration: underline;">TYPE </span><span style="text-decoration: underline;">정보</span></span></p>
<p>&nbsp; 3)&nbsp;&nbsp;<strong>DONE 버튼 : </strong>아래와 같이&nbsp;테스트 케이스를 작성할 수 있는 csv파일 포맷 파일이 생성되고 엑셀과 연동되어 파일이 오픈&nbsp;&nbsp;</p>
+
<p><span style="font-size: medium;"><strong><span style="white-space: pre;"> </span>1. INP : </strong>Parameter, 매개변수<strong> </strong></span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; <img src="/data/wiki/2018-01-17/1516169316.png" alt="" style="width: 533px; height: 484px;" width="772" height="684" /></p>
+
<p><span style="font-size: medium;"><strong><span style="white-space: pre;"> </span>2. PRE : </strong>Pre-Condition, 전역변수 입력<strong> </strong></span></p>
<p>&nbsp; &nbsp; &nbsp;위의 빨간 네모 안의 영역에 테스트 케이스를 작성한다.</p>
+
<p><span style="font-size: medium;"><strong><span style="white-space: pre;"> </span>3. OUT : </strong>함수 Return값, 전역변수 출력 확인</span></p>
<p>&nbsp; &nbsp; &nbsp;<strong>&lt;TYPE 정보&gt;</strong></p>
+
<p>&nbsp; &nbsp; &nbsp;INP : Parameter, 매개변수</p>
+
<p>&nbsp; &nbsp; &nbsp;PRE : Pre-Condition, 전역변수</p>
+
<p>&nbsp; &nbsp; &nbsp;OUT : Return, Output-Value, 리턴값, 전역변수 결과값</p>
+
<p>&nbsp; &nbsp; &nbsp;^ : Floating Format (심볼 앞에 마킹)</p>
+
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
<p>&nbsp; 4) 테스트 케이스 작성 후 파일을 저장하면</p>
+
<p><span style="font-size: medium;"><span style="text-decoration: underline;"><span style="white-space: pre;"> </span>3.&nbsp;</span><span style="text-decoration: underline;">심볼/ 주소/ 레지스터</span></span></p>
<p>&nbsp; &nbsp; &nbsp;최초 메인창에서 Testcase File 경로에 대한 정보가 아래와 같이 자동으로 추가 된다.</p>
+
<p><span style="font-size: medium;"><span style="text-decoration: underline;">&nbsp;</span></span><strong style="font-size: medium;"><span style="white-space: pre;"> </span>1.&nbsp;&nbsp;&nbsp;&nbsp; </strong><strong style="font-size: medium;">심볼 :</strong><span style="font-size: medium;"> 심볼이 로딩되어 있는 경우 변수 이름 입력</span></p>
<p>&nbsp; &nbsp; (사용자가 원하는 테스트케이스를 수동으로 만들어서 아래 리스트에 추가할 수도 있다.)</p>
+
<p><span style="font-size: medium;"><span style="white-space: pre;"> </span>ex) INP/tmp ,&nbsp; OUT/result,&nbsp; PRE/^coeff<span style="white-space: pre;"> </span></span></p>
<p><span style="white-space: pre;"> </span><img src="/data/wiki/2018-01-17/1516169246.png" alt="" style="width: 767px; height: 495px;" width="871" height="558" /></p>
+
<p><span style="font-size: medium;"><span style="white-space: pre;">&nbsp;</span></span><strong style="font-size: medium;"><span style="white-space: pre;"> </span>2.&nbsp;&nbsp;&nbsp;&nbsp; </strong><strong style="font-size: medium;">주소 : </strong><span style="font-size: medium;">직접 주소값과 포맷을 입력 (INP 타입은 사용 불가)</span></p>
 +
<p><span style="font-size: medium;"><span style="white-space: pre;"> </span>ex) PRE/0x90000100(long)&nbsp;&nbsp; ,&nbsp; OUT/0x1000(short)</span></p>
 +
<p><span style="font-size: medium;">&nbsp;</span><strong style="font-size: medium;"><span style="white-space: pre;"> </span>3.&nbsp;&nbsp;&nbsp;&nbsp; </strong><strong style="font-size: medium;">레지스터</strong><span style="font-size: medium;"> : r( )함수를 이용하여 원하는 레지스터 이름 입력</span></p>
 +
<p><span style="font-size: medium;"><span style="white-space: pre;"> </span>ex) PRE/r(r2)&nbsp;&nbsp; ,&nbsp;&nbsp; OUT/R(D15)</span></p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
<p>&nbsp; &nbsp;5)&nbsp;위의&nbsp;Start test 를 클릭하여 테스트를 자동으로 실행하고, 완료 후 저장된 Result 결과 파일이 자동으로 저장 된다.</p>
+
<p><span style="font-size: medium;"><span style="white-space: pre;"> </span>4.&nbsp;<span style="text-decoration: underline;">랜덤값 입력</span></span></p>
<p>&nbsp; &nbsp; 결과는 아래와 같이 입력한 테스트 케이스를 적용하여 실제로 타겟에서 수행된 변수 값을 파일로 저장하고,</p>
+
<p><span style="font-size: medium;"><span style="white-space: pre;"> </span>rand(min~max) 으로 원하는 범위내의 임의의 값을 대입하도록 설정할 수 있다.</span></p>
<p>&nbsp; &nbsp; 기대 값과 일치 여부를 Pass/Fail 로 나타내 준다.</p>
+
<p><span style="font-size: medium;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<img src="/data/wiki/2018-03-13/1520941063.png" alt="" /></span></p>
<p>&nbsp; &nbsp; 또한 각 테스트 케이스가 수행된 시간의 정보를 같이 생성하여 저장한다.</p>
+
<p><span style="font-size: medium;"><strong>&nbsp;</strong></span></p>
<p><span style="white-space: pre;"> </span><img src="/data/wiki/2018-01-17/1516169404.png" alt="" style="width: 989px; height: 437px;" width="1579" height="718" /></p>
+
<h3><span style="text-decoration: underline;"><span style="font-size: medium;"><strong>3-4. Test </strong><strong>시작 </strong></span></span></h3>
 +
<p><span style="font-size: medium;"><strong>&nbsp;</strong></span></p>
 +
<ol>
 +
<li><span style="font-size: medium;">Main UI의    &nbsp;<img src="/data/wiki/2018-03-13/1520941139.png" alt="" />&nbsp;버튼을 누르면 테스트가 시작된다.</span></li>
 +
<li><span style="font-size: medium;">Main UI의 AREA창을 통해 테스트 진행상황을 모니터링할 수 있다.</span></li>
 +
</ol>
 +
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<img src="/data/wiki/2018-03-13/1520941240.png" alt="" /></p>
 +
<p>&nbsp;</p>
 +
<p><strong style="font-size: medium; text-decoration-line: underline;">3-5. Test </strong><strong style="font-size: medium; text-decoration-line: underline;">결과 확인</strong></p>
 +
<h3><span style="text-decoration: underline;"><span style="font-size: medium;"><strong>&nbsp;</strong></span></span></h3>
 +
<p><span style="font-size: medium;"><strong>&nbsp;</strong></span></p>
 +
<p><span style="font-size: medium;">테스트케이스 대상 별로 폴더가 각각 생성되고 테스트 결과는 csv포맷으로 출력된다.</span></p>
 +
<p><span style="font-size: medium;">아래와 같이 결과를 받아서 테스트케이스의 예상결과값과 다르게 나온 부분이 어디인지 한눈에 파악이 가능하다.</span></p>
 +
<p><img src="/data/wiki/2018-03-13/1520941364.png" alt="" /></p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp;</p>
 +
<div id="_mcePaste" class="mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;">
 +
<p class="MsoListParagraph" style="margin-top: 0cm; margin-right: 0cm; margin-bottom: .0001pt; margin-left: 18.75pt; mso-para-margin-top: 0cm; mso-para-margin-right: 0cm; mso-para-margin-bottom: .0001pt; mso-para-margin-left: 0gd; text-indent: -18.75pt; line-height: normal; mso-pagination: widow-orphan; mso-list: l0 level1 lfo1; text-autospace: ideograph-numeric ideograph-other; word-break: keep-all;"><!--[if !supportLists]--><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 14.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: &quot;맑은 고딕&quot;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &quot;맑은 고딕&quot;; mso-bidi-theme-font: minor-latin;" lang="EN-US"><span style="mso-list: Ignore;">1.<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp; </span></span></span></strong><!--[endif]--><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 14.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: &quot;맑은 고딕&quot;; mso-fareast-theme-font: minor-latin;">소개<span lang="EN-US">&nbsp;</span></span></strong></p>
 +
<p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-bottom: .0001pt; margin-left: 20.0pt; line-height: normal; mso-pagination: widow-orphan; text-autospace: ideograph-numeric ideograph-other; word-break: keep-all;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 8.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: &quot;맑은 고딕&quot;; mso-fareast-theme-font: minor-latin;" lang="EN-US">&nbsp;</span></strong></p>
 +
<p class="MsoNormal" style="text-indent: 10.0pt; mso-char-indent-count: 1.0;">디버깅도 일종의 테스트라고 할 수 있습니다<span lang="EN-US">. </span>작성한 개발 코드가 의도대로 동작하는지 보기 위해서는 테스트하려는 코드를 <span lang="EN-US">Running </span>하기 전에 입력되는 변수들을 원하는 값으로 변경합니다<span lang="EN-US">. </span>그 후 테스트 대상 코드를 <span lang="EN-US">Running </span>시키고 종료 시점에서 의도대로 값들이 출력되었는지 결과를 확인합니다<span lang="EN-US">. </span></p>
 +
<p class="MsoNormal" style="text-indent: 10.0pt; mso-char-indent-count: 1.0;">하지만 테스트해야 할 코드가 수백개고 코드마다 테스트케이스가 수십개씩 이라면<span lang="EN-US">, </span>일일히 디버깅 하듯이 유저가 테스트 하는것은 많은 시간과 비용이 들게 됩니다<span lang="EN-US">. </span>또한 수정이 잦은 개발 단계의 코드는 반복 테스트가 많은 만큼 자동화 테스트는 꼭 필요합니다<span lang="EN-US">.<strong style="mso-bidi-font-weight: normal;">&nbsp;</strong></span></p>
 +
<p class="MsoNormal" style="text-indent: 10.0pt; mso-char-indent-count: 1.0;"><span style="color: black; mso-themecolor: text1;">한컴<span lang="EN-US">MDS </span>기술지원팀에서 제공하는 <span lang="EN-US">SW Testing Tool</span>을 이용한다면<span lang="EN-US">, </span></span>이러한 반복된 작업을 파일로 정의하고 코드가 수정될때 마다 쉽게 테스트를 자동화하여 반복 수행할 수 있습니다<span lang="EN-US">. </span>또한 테스트 결과를 파일로 레포트 받아 오류가 발생한 테스트케이스 사항이 무엇인지 한눈에 파악하실 수 있습니다<span lang="EN-US">.</span></p>
 +
<ol>
 +
<li><strong>1.&nbsp;&nbsp; </strong><strong>소개</strong></li>
 +
</ol>
 +
<p><strong>&nbsp;</strong></p>
 +
<p>디버깅도 일종의 테스트라고 할 수 있습니다. 작성한 개발 코드가 의도대로 동작하는지 보기 위해서는 테스트하려는 코드를 Running 하기 전에 입력되는 변수들을 원하는 값으로 변경합니다. 그 후 테스트 대상 코드를 Running 시키고 종료 시점에서 의도대로 값들이 출력되었는지 결과를 확인합니다.</p>
 +
<p>하지만 테스트해야 할 코드가 수백개고 코드마다 테스트케이스가 수십개씩 이라면, 일일히 디버깅 하듯이 유저가 테스트 하는것은 많은 시간과 비용이 들게 됩니다. 또한 수정이 잦은 개발 단계의 코드는 반복 테스트가 많은 만큼 자동화 테스트는 꼭 필요합니다.<strong>&nbsp;</strong></p>
 +
<p>한컴MDS 기술지원팀에서 제공하는 SW Testing Tool을 이용한다면, 이러한 반복된 작업을 파일로 정의하고 코드가 수정될때 마다 쉽게 테스트를 자동화하여 반복 수행할 수 있습니다. 또한 테스트 결과를 파일로 레포트 받아 오류가 발생한 테스트케이스 사항이 무엇인지 한눈에 파악하실 수 있습니다.</p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp;</p>
 +
<table cellspacing="0" cellpadding="0" width="100%">
 +
<tbody>
 +
<tr>
 +
<td>
 +
<div>
 +
<p>반복 작업을 자동화    할 수 있는</p>
 +
<p><strong>TRACE32&nbsp; SW Testing Tool</strong></p>
 +
</div>
 +
</td>
 +
</tr>
 +
</tbody>
 +
</table>
 +
<p>&nbsp;</p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp;</p>
 +
<br /> <ol>
 +
<li><strong>2.&nbsp;&nbsp; </strong><strong>실행 방법</strong></li>
 +
</ol>
 +
<p><strong>&nbsp;</strong></p>
 +
<ol>
 +
<li>받은 tools.zip 파일을 &ldquo;T32설치폴더&rdquo; 안에 tools라는 이름으로 압축해제 합니다.</li>
 +
<li>tools 폴더안에 있는 t32.men 파일을 복사하여 &ldquo;T3설치폴더(C:\T32)&rdquo;에 덮어쓰기를 합니다.</li>
 +
</ol>
 +
<p>&nbsp;</p>
 +
<ol>
 +
<li>이후 TRACE32프로그램을 실행하면 아래와 같이 [mds]버튼이 추가됩니다.</li>
 +
</ol>
 +
<p>&nbsp;</p>
 +
<ol>
 +
<li>생성된 [mds]버튼을 누르면 SW Testing Tool 이 실행됩니다.</li>
 +
</ol>
 +
<p>&nbsp;</p>
 +
<p><strong>3. </strong><strong>화면 구성 및 사용법</strong></p>
 +
<p><strong>3-1. Main UI</strong></p>
 +
<p><strong>&nbsp;</strong></p>
 +
<p><strong>&nbsp;</strong></p>
 +
<p>&nbsp;</p>
 +
<p><strong>①&nbsp;&nbsp;&nbsp; </strong><strong>&nbsp;Add Test Case File : </strong>Test Case를 설정/정의한 CSV파일을 등록하거나 새로 생성합니다.</p>
 +
<p><strong>②&nbsp;&nbsp;&nbsp; </strong><strong>Test Scenario :</strong> 테스트 시나리오 리스트를 보실 수 있습니다.</p>
 +
<p>테스트케이스를 만들거나 추가 등록시키면 리스트가 업데이트 됩니다.</p>
 +
<p>정의한 테스트케이스 파일과 T32 커맨드를 Start버튼을 누를 경우 순서대로 수행합니다.</p>
 +
<p><strong>[Edit Test Scenario]버튼</strong>을 통해 시나리오를 직접 수정하실 수 있습니다.</p>
 +
<p>l&nbsp; TEST_FILE : [테스트케이스 파일의 경로]</p>
 +
<p>l&nbsp; T32_CMD : [T32 명령어]</p>
 +
<p><strong>③&nbsp;&nbsp;&nbsp; </strong><strong>&nbsp;Simulator Debugging </strong>: 디버깅 환경을 시뮬레이터로 전환합니다.</p>
 +
<p>시뮬레이터에서는 코드 커버리지나 백트레이스 등 고급 기능들을 사용하실 수 있습니다.</p>
 +
<p>전환할 경우 PowerView가 재시작 되니 주의하세요.</p>
 +
<p><strong>④&nbsp;&nbsp; </strong><strong>ETC : </strong></p>
 +
<p>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Coverage : 코드 커버리지를 보거나 리셋합니다.</p>
 +
<p>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load Symbol : 심볼을 로딩합니다.</p>
 +
<p><strong>⑤&nbsp;&nbsp;&nbsp; </strong><strong>Test Start :&nbsp; </strong>정의한 시나리오대로 테스트를 시작합니다.<strong>&nbsp;</strong></p>
 +
<p><strong>&nbsp;</strong></p>
 +
<p><strong>3-2. Test Case </strong><strong>생성</strong></p>
 +
<p><strong>&nbsp;</strong></p>
 +
<p>&nbsp;</p>
 +
<p><strong>①&nbsp;&nbsp;&nbsp; </strong><strong>Test Unit</strong> : Sel 버튼을 눌러 테스트 함수를 검색하실 수 있습니다.</p>
 +
<p><strong>&nbsp; </strong>주소를 직접 입력하시거나 심볼을 입력합니다.</p>
 +
<p>- 테스트 시작 지점 (Input/ Pre-Condition 대입 시점)</p>
 +
<p>- 테스트 끝 지점&nbsp;&nbsp; (예상 Output 값과&nbsp; 실제 Output 값 비교 시점)</p>
 +
<p>※ End Address를 입력하지 않을 경우 함수 종료 시점이 자동 입력됩니다.</p>
 +
<p><strong>②&nbsp;&nbsp;&nbsp; </strong><strong>Test Setting :</strong>&nbsp; 테스트 방법이나 항목을 설정합니다.</p>
 +
<p><strong>1. </strong>TEST MODE : 테스트 방식을 결정</p>
 +
<p>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CALL 모드 : <span style="text-decoration: underline;">함수 단위 테스트시</span> 함수 호출을 TRACE32가 대신 실행합니다.</p>
 +
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 테스트 대상이 반복적으로 호출되지 않더라도 이 모드를 이용하면</p>
 +
<p>반복하여 빠르게 테스트하실 수 있습니다.</p>
 +
<p>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BREAK 모드 : 테스트 시작점에 Breakpoint를 잡고 테스트하는 방식입니다.</p>
 +
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 코드 흐름에 맞추어 테스트 합니다.</p>
 +
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="text-decoration: underline;">※ CMD</span> : 각 테스트 케이스가 실행되기 전에 수행되는 명령어</p>
 +
<p>참고로 CALL 모드는 처음 한번만 수행됨</p>
 +
<p><strong>2. </strong>FLASH Download : 타겟에 ELF 이미지파일의 다운로드와 관련된 설정 항목입니다.</p>
 +
<p><strong>3. </strong>Debug Option : 테스트중 FAIL이 발생하면 그 시점에 타겟을 멈추도록 만듭니다.</p>
 +
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 타겟이 멈추면 그 시점을 디버깅하여 FAIL의 원인을 찾을수 있습니다.</p>
 +
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;[Continue Test] 버튼을 누르면 이어서 테스트합니다.</p>
 +
<p><strong>4. </strong>RUNTIME Test : 각 테스트케이스별 실행시간을 측정하실 수 있습니다.</p>
 +
<p>&nbsp;</p>
 +
<p>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Timer Register Address : 타이밍 측정에 사용할 내부 타이머 레지스터 주소</p>
 +
<p>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Timer 1 Tick Time : Timer 1 tick 당 시간 정보</p>
 +
<p>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MAX Timer Value : 16bit or 32bit 선택, Max Timer 값 지정</p>
 +
<p><strong>5. Step Num : </strong>함수 진입시 매개변수나 지역변수가 할당 되지 않을 경우에 사용합니다.</p>
 +
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Start Address에서 지정한 횟수만큼 Step을 합니다. &nbsp;</p>
 +
<p><strong>③&nbsp;&nbsp;&nbsp; </strong><strong>&nbsp;DONE</strong> : Testcase를 작성하기 위한 csv파일이 포맷 완성되어 열립니다.</p>
 +
<p>※ 엑셀과 연동하기 위해서는 config폴더의 excel_path.txt 안에</p>
 +
<p>excel 실행파일 경로를 설정해 주셔야 합니다.</p>
 +
<p><strong>3-3. Test Case </strong><strong>입력 (CSV파일)</strong></p>
 +
<p><strong>&nbsp;</strong></p>
 +
<p>TEST_CASE를 CSV 포맷으로 작성해 주시면 됩니다.</p>
 +
<p>l&nbsp; 기본 포맷 : &nbsp;<strong>TYPE/[</strong><strong>심볼or주소]</strong></p>
 +
<p>l&nbsp; <span style="text-decoration: underline;">TYPE </span><span style="text-decoration: underline;">정보</span></p>
 +
<p><strong>1. INP : </strong>Parameter, 매개변수<strong> </strong></p>
 +
<p><strong>2. PRE : </strong>Pre-Condition, 전역변수 입력<strong> </strong></p>
 +
<p><strong>3. OUT : </strong>함수 Return값, 전역변수 출력 확인</p>
 +
<p><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </strong>- T32는 함수 종료시 return이라는 심볼을 생성후 리턴값을 대입합니다.</p>
 +
<p>l&nbsp; <span style="text-decoration: underline;">심볼/ 주소/ 레지스터</span></p>
 +
<ol>
 +
<li><strong>1.&nbsp;&nbsp;&nbsp;&nbsp; </strong><strong>심볼 :</strong> 심볼이 로딩되어 있는 경우 변수 이름 입력</li>
 +
</ol>
 +
<p>ex) INP/tmp ,&nbsp; OUT/result,&nbsp; PRE/^coeff</p>
 +
<ol>
 +
<li><strong>2.&nbsp;&nbsp;&nbsp;&nbsp; </strong><strong>주소 : </strong>직접 주소값과 포맷을 입력 (INP 타입은 사용 불가)</li>
 +
</ol>
 +
<p>ex) PRE/0x90000100(long)&nbsp;&nbsp; ,&nbsp; OUT/0x1000(short)</p>
 +
<ol>
 +
<li><strong>3.&nbsp;&nbsp;&nbsp;&nbsp; </strong><strong>레지스터</strong> : r( )함수를 이용하여 원하는 레지스터 이름 입력</li>
 +
</ol>
 +
<p>ex) PRE/r(r2)&nbsp;&nbsp; ,&nbsp;&nbsp; OUT/R(D15)</p>
 +
<p>&nbsp;</p>
 +
<p>l&nbsp; <span style="text-decoration: underline;">랜덤값 입력</span></p>
 +
<p>rand(min~max) 으로 원하는 범위내의 임의의 값을 대입 가능</p>
 +
<p>ex)</p>
 +
<p><strong>&nbsp;</strong></p>
 +
<p><strong>3-4. Test </strong><strong>시작 </strong></p>
 +
<p><strong>&nbsp;</strong></p>
 +
<ol>
 +
<li>Main UI의    &nbsp;버튼을 누르면 테스트가 시작됩니다.</li>
 +
<li>Main UI의 AREA창을 통해 테스트 진행상황을 모니터링할 수 있습니다.</li>
 +
</ol>
 +
<p>&nbsp;</p>
 +
<p><strong>3-5. Test </strong><strong>결과 확인 </strong></p>
 +
<p><strong>&nbsp;</strong></p>
 +
<p>테스트케이스 대상 별로 폴더가 각각 생성되고 테스트 결과는 csv포맷으로 출력됩니다.</p>
 +
<p><strong>&nbsp;</strong></p>
 +
<p>아래와 같이 결과를 받아서 테스트케이스의 예상결과값과 다르게 나온 부분이 어디인지 한눈에 파악하실 수 있습니다.</p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp;</p>
 +
</div>

2018년 3월 13일 (화) 20:43 판

1. 기능 소개

  본 페이지에서는 SW 프로그램을 테스트하는 여러 방법 중, 실제 타겟 프로세서에서 SW 테스트를 진행하는 방법에 대해 설명한다.

실제 타겟에서의 SW 테스트를 위해서는 "코드가 다운로드된 타겟" 과 "HW 디버깅 장비 TRACE32" 가 필요하다.

 이 때, HW 디버깅 장비는 원하는 프로그램 위치에서 타겟 코어의 동작을 멈춘 후 입력 값을 변경하고, 연산이 완료된 출력 값을

가져오는 역할을 수행한다. 특히 TRACE32 는 수많은 테스트케이스를 수행하는데 있어서 개발자가 직접 수동/반복적으로 테스트

 

해야 했던 일을 자동화하여 많은 시간과 비용을 줄여 줄 수있다.


      

2. 실행 방법

   - 다운로드 파일 : tools.zip

    1. 받은 tools.zip 파일을 “T32설치폴더(C:\T32)” 안에 tools라는 이름으로 압축해제 한다.

     2. tools 폴더안에 있는 t32.men 파일을 복사하여 “T3설치폴더(C:\T32)”에 덮어쓰기를 한다.

       

      3. 이후 TRACE32프로그램을 실행하면 아래와 같이 [mds]버튼이 추가된다.

        

       4. 생성된 [mds]버튼을 누르면 SW Testing Tool 이 실행된다.

 

 

3. 화면 구성 및 사용법

3-1. Main UI

                          

 

 

①     Add Test Case File : Test Case를 설정/정의한 CSV파일을 등록하거나 새로 생성

②    Test Scenario : 테스트 시나리오 리스트 (T32_Test_List.txt 파일)

테스트케이스를 만들거나 추가 등록시키면 리스트가 업데이트 된다.

Start버튼을 누르면 테스트케이스 파일과 T32 커맨드를 정의한 순서대로 수행한다.

[Edit Test Scenario]버튼을 통해 시나리오를 직접 수정 가능

-  TEST_FILE : [테스트케이스 파일의 경로]

-  T32_CMD : [T32 명령어]

③     Simulator Debugging : 디버깅 환경을 시뮬레이터로 전환

    시뮬레이터에서는 코드 커버리지나 백트레이스 등 고급 기능들을 사용 가능

    전환할 경우 PowerView가 재시작 되니 주의하십시오.

④   ETC :

        - Coverage : 코드 커버리지를 보거나 리셋한다.

- Load Symbol : 심볼을 로딩한다.

⑤    Test Start :  정의한 시나리오대로 테스트를 시작한다.

 

3-2. Test Case 생성

                         

①    Test Unit : [Sel] 버튼을 눌러 테스트 함수를 검색하거나

   주소나 심볼을 직접 입력한다.

- 테스트 시작 지점 (Input/ Pre-Condition 대입 시점)

- 테스트 끝 지점   (예상 Output 값과  실제 Output 값 비교 시점)

※ End Address를 입력하지 않을 경우 함수 종료 시점이 자동 입력된다.

②    Test Setting :  테스트 방법이나 항목을 설정한다.

1. TEST MODE : 테스트 방식을 결정

-       CALL 모드 : 함수 단위 테스트시 함수 호출을 TRACE32가 대신 실행

                      테스트 대상이 반복적으로 호출되지 않더라도 이 모드를 이용하면

 반복하여 빠르게 테스트가 가능함

-       BREAK 모드 : 테스트 시작점에 Breakpoint를 잡고 테스트하는 방식

            코드 흐름에 맞추어 테스트 진행됨

        ※ CMD : 각 테스트 케이스가 실행되기 전에 수행되는 명령어


2. FLASH Download : 타겟에 ELF 이미지파일의 다운로드와 관련된 설정 항목이다.

3. Debug Option : 테스트중 FAIL이 발생하면 그 시점에 타겟을 멈추게하는 기능

                        타겟이 멈추면 그 시점을 디버깅하여 FAIL의 원인을 찾을수 있음

                            [Continue Test] 버튼을 누르면 이어서 테스트 시작

4. RUNTIME Test : 각 테스트케이스별 수행시간을 측정하는 기능이다.


-       Timer Register Address : 타이밍 측정에 사용할 내부 타이머 레지스터 주소

-       Timer 1 Tick Time : Timer 1 tick 당 시간 정보

-       MAX Timer Value : 16bit or 32bit 선택, Max Timer 값 지정


5. Step Num : 함수 진입시 매개변수나 지역변수가 할당 되지 않을 경우에 사용

                   Start Address에서 지정한 횟수만큼 Step 진행


③     DONE : Testcase를 작성하기 위한 csv파일 포맷이 자동 완성되어 열린다.

※ 엑셀과 연동하기 위해서는 config폴더의 excel_path.txt 안에

   excel 실행파일 경로를 반드시 설정해주어야함


3-3. Test Case 입력 (CSV파일)

           

 

1. 기본 포맷 :  TYPE/[심볼or주소]

2. TYPE 정보

1. INP : Parameter, 매개변수

2. PRE : Pre-Condition, 전역변수 입력

3. OUT : 함수 Return값, 전역변수 출력 확인

 

3. 심볼/ 주소/ 레지스터

  1.     심볼 : 심볼이 로딩되어 있는 경우 변수 이름 입력

ex) INP/tmp ,  OUT/result,  PRE/^coeff

  2.     주소 : 직접 주소값과 포맷을 입력 (INP 타입은 사용 불가)

ex) PRE/0x90000100(long)   ,  OUT/0x1000(short)

  3.     레지스터 : r( )함수를 이용하여 원하는 레지스터 이름 입력

ex) PRE/r(r2)   ,   OUT/R(D15)

 

4. 랜덤값 입력

rand(min~max) 으로 원하는 범위내의 임의의 값을 대입하도록 설정할 수 있다.

                       

 

3-4. Test 시작

 

  1. Main UI의   버튼을 누르면 테스트가 시작된다.
  2. Main UI의 AREA창을 통해 테스트 진행상황을 모니터링할 수 있다.

         

 

3-5. Test 결과 확인

 

 

테스트케이스 대상 별로 폴더가 각각 생성되고 테스트 결과는 csv포맷으로 출력된다.

아래와 같이 결과를 받아서 테스트케이스의 예상결과값과 다르게 나온 부분이 어디인지 한눈에 파악이 가능하다.

 

 

 

 

 

1.   소개 

 

디버깅도 일종의 테스트라고 할 수 있습니다. 작성한 개발 코드가 의도대로 동작하는지 보기 위해서는 테스트하려는 코드를 Running 하기 전에 입력되는 변수들을 원하는 값으로 변경합니다. 그 후 테스트 대상 코드를 Running 시키고 종료 시점에서 의도대로 값들이 출력되었는지 결과를 확인합니다.

하지만 테스트해야 할 코드가 수백개고 코드마다 테스트케이스가 수십개씩 이라면, 일일히 디버깅 하듯이 유저가 테스트 하는것은 많은 시간과 비용이 들게 됩니다. 또한 수정이 잦은 개발 단계의 코드는 반복 테스트가 많은 만큼 자동화 테스트는 꼭 필요합니다. 

한컴MDS 기술지원팀에서 제공하는 SW Testing Tool을 이용한다면, 이러한 반복된 작업을 파일로 정의하고 코드가 수정될때 마다 쉽게 테스트를 자동화하여 반복 수행할 수 있습니다. 또한 테스트 결과를 파일로 레포트 받아 오류가 발생한 테스트케이스 사항이 무엇인지 한눈에 파악하실 수 있습니다.

  1. 1.   소개

 

디버깅도 일종의 테스트라고 할 수 있습니다. 작성한 개발 코드가 의도대로 동작하는지 보기 위해서는 테스트하려는 코드를 Running 하기 전에 입력되는 변수들을 원하는 값으로 변경합니다. 그 후 테스트 대상 코드를 Running 시키고 종료 시점에서 의도대로 값들이 출력되었는지 결과를 확인합니다.

하지만 테스트해야 할 코드가 수백개고 코드마다 테스트케이스가 수십개씩 이라면, 일일히 디버깅 하듯이 유저가 테스트 하는것은 많은 시간과 비용이 들게 됩니다. 또한 수정이 잦은 개발 단계의 코드는 반복 테스트가 많은 만큼 자동화 테스트는 꼭 필요합니다. 

한컴MDS 기술지원팀에서 제공하는 SW Testing Tool을 이용한다면, 이러한 반복된 작업을 파일로 정의하고 코드가 수정될때 마다 쉽게 테스트를 자동화하여 반복 수행할 수 있습니다. 또한 테스트 결과를 파일로 레포트 받아 오류가 발생한 테스트케이스 사항이 무엇인지 한눈에 파악하실 수 있습니다.

 

 

반복 작업을 자동화 할 수 있는

TRACE32  SW Testing Tool

 

 

 

 

 

 

 


  1. 2.   실행 방법

 

  1. 받은 tools.zip 파일을 “T32설치폴더” 안에 tools라는 이름으로 압축해제 합니다.
  2. tools 폴더안에 있는 t32.men 파일을 복사하여 “T3설치폴더(C:\T32)”에 덮어쓰기를 합니다.

 

  1. 이후 TRACE32프로그램을 실행하면 아래와 같이 [mds]버튼이 추가됩니다.

 

  1. 생성된 [mds]버튼을 누르면 SW Testing Tool 이 실행됩니다.

 

3. 화면 구성 및 사용법

3-1. Main UI

 

 

 

①     Add Test Case File : Test Case를 설정/정의한 CSV파일을 등록하거나 새로 생성합니다.

②    Test Scenario : 테스트 시나리오 리스트를 보실 수 있습니다.

테스트케이스를 만들거나 추가 등록시키면 리스트가 업데이트 됩니다.

정의한 테스트케이스 파일과 T32 커맨드를 Start버튼을 누를 경우 순서대로 수행합니다.

[Edit Test Scenario]버튼을 통해 시나리오를 직접 수정하실 수 있습니다.

l  TEST_FILE : [테스트케이스 파일의 경로]

l  T32_CMD : [T32 명령어]

③     Simulator Debugging : 디버깅 환경을 시뮬레이터로 전환합니다.

시뮬레이터에서는 코드 커버리지나 백트레이스 등 고급 기능들을 사용하실 수 있습니다.

전환할 경우 PowerView가 재시작 되니 주의하세요.

④   ETC :

-       Coverage : 코드 커버리지를 보거나 리셋합니다.

-       Load Symbol : 심볼을 로딩합니다.

⑤    Test Start :  정의한 시나리오대로 테스트를 시작합니다. 

 

3-2. Test Case 생성

 

 

①    Test Unit : Sel 버튼을 눌러 테스트 함수를 검색하실 수 있습니다.

  주소를 직접 입력하시거나 심볼을 입력합니다.

- 테스트 시작 지점 (Input/ Pre-Condition 대입 시점)

- 테스트 끝 지점   (예상 Output 값과  실제 Output 값 비교 시점)

※ End Address를 입력하지 않을 경우 함수 종료 시점이 자동 입력됩니다.

②    Test Setting :  테스트 방법이나 항목을 설정합니다.

1. TEST MODE : 테스트 방식을 결정

-       CALL 모드 : 함수 단위 테스트시 함수 호출을 TRACE32가 대신 실행합니다.

                     테스트 대상이 반복적으로 호출되지 않더라도 이 모드를 이용하면

반복하여 빠르게 테스트하실 수 있습니다.

-       BREAK 모드 : 테스트 시작점에 Breakpoint를 잡고 테스트하는 방식입니다.

         코드 흐름에 맞추어 테스트 합니다.

        ※ CMD : 각 테스트 케이스가 실행되기 전에 수행되는 명령어

참고로 CALL 모드는 처음 한번만 수행됨

2. FLASH Download : 타겟에 ELF 이미지파일의 다운로드와 관련된 설정 항목입니다.

3. Debug Option : 테스트중 FAIL이 발생하면 그 시점에 타겟을 멈추도록 만듭니다.

                      타겟이 멈추면 그 시점을 디버깅하여 FAIL의 원인을 찾을수 있습니다.

                         [Continue Test] 버튼을 누르면 이어서 테스트합니다.

4. RUNTIME Test : 각 테스트케이스별 실행시간을 측정하실 수 있습니다.

 

-       Timer Register Address : 타이밍 측정에 사용할 내부 타이머 레지스터 주소

-       Timer 1 Tick Time : Timer 1 tick 당 시간 정보

-       MAX Timer Value : 16bit or 32bit 선택, Max Timer 값 지정

5. Step Num : 함수 진입시 매개변수나 지역변수가 할당 되지 않을 경우에 사용합니다.

                   Start Address에서 지정한 횟수만큼 Step을 합니다.  

③     DONE : Testcase를 작성하기 위한 csv파일이 포맷 완성되어 열립니다.

※ 엑셀과 연동하기 위해서는 config폴더의 excel_path.txt 안에

excel 실행파일 경로를 설정해 주셔야 합니다.

3-3. Test Case 입력 (CSV파일)

 

TEST_CASE를 CSV 포맷으로 작성해 주시면 됩니다.

l  기본 포맷 :  TYPE/[심볼or주소]

TYPE 정보

1. INP : Parameter, 매개변수

2. PRE : Pre-Condition, 전역변수 입력

3. OUT : 함수 Return값, 전역변수 출력 확인

              - T32는 함수 종료시 return이라는 심볼을 생성후 리턴값을 대입합니다.

심볼/ 주소/ 레지스터

  1. 1.     심볼 : 심볼이 로딩되어 있는 경우 변수 이름 입력

ex) INP/tmp ,  OUT/result,  PRE/^coeff

  1. 2.     주소 : 직접 주소값과 포맷을 입력 (INP 타입은 사용 불가)

ex) PRE/0x90000100(long)   ,  OUT/0x1000(short)

  1. 3.     레지스터 : r( )함수를 이용하여 원하는 레지스터 이름 입력

ex) PRE/r(r2)   ,   OUT/R(D15)

 

랜덤값 입력

rand(min~max) 으로 원하는 범위내의 임의의 값을 대입 가능

ex)

 

3-4. Test 시작

 

  1. Main UI의  버튼을 누르면 테스트가 시작됩니다.
  2. Main UI의 AREA창을 통해 테스트 진행상황을 모니터링할 수 있습니다.

 

3-5. Test 결과 확인

 

테스트케이스 대상 별로 폴더가 각각 생성되고 테스트 결과는 csv포맷으로 출력됩니다.

 

아래와 같이 결과를 받아서 테스트케이스의 예상결과값과 다르게 나온 부분이 어디인지 한눈에 파악하실 수 있습니다.