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

TRACE32
이동: 둘러보기, 검색
 
(같은 사용자에 의한 68개의 중간 편집이 숨겨짐)
1번째 줄: 1번째 줄:
<h2>기능 소개</h2>
 
<p>&nbsp; 본 페이지에서는 SW 프로그램을 테스트하는 여러 방법 중, 실제 타겟 프로세서에서 SW 테스트를 진행하는 방법에 대해 설명한다.</p>
 
<p>실제 타겟에서의 SW 테스트를 위해서는 "<strong>코드가 다운로드된 타겟" 과&nbsp;</strong><strong>"HW 디버깅 장비 TRACE32"</strong>&nbsp;가 필요하다.</p>
 
<p>&nbsp;이 때, HW 디버깅 장비는 원하는 프로그램 위치에서 타겟 코어의 동작을 멈춘 후 입력 값을 변경하고, 연산이 완료된 출력 값을</p>
 
<p>가져오는 역할을 수행한다. 특히 TRACE32 는&nbsp;수많은 테스트케이스를 수행하는데 있어서 개발자가 직접 수동/반복적으로 테스트</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: x-large;"><strong>&nbsp;다운로드 파일 (업데이트 일자&nbsp;: 2019/01/16)</strong></span></p>
<p>해당 기능을 사용하기 위해서는 먼저 아래와 같은 파일들이 필요하다.</p>
+
<p><span style="white-space: pre;"> </span><img src="/data/wiki/2018-01-17/1516169769.png" alt="" /></p>
+
<p><span style="font-size: medium;"><strong>&lt; 스크립트는 다운로드 링크&gt;</strong></span></p>
+
<p>* 라이선스 케이블의 유지보수가 되어 있어야 횟수 제한없이 사용 가능 (횟수 제한 : 3회)</p>
+
<p>* 현재는 베타 버전으로 2018년 04월까지 유지보수 되어 있지 않더라도 무제한 사용 가능</p>
+
<p>* Update 날짜 : 2018년 2월 12일</p>
+
<p>* Update 방법 : <strong>[T32 설치폴더]\tools\sw_test</strong>에 있는 아래&nbsp;파일들을 업데이트</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>&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>&nbsp;</p>
 
<p>&nbsp;</p>
<h3>기능 실행방법&nbsp;</h3>
+
<p><span style="color: #993300; font-size: medium;">&nbsp;&nbsp; &nbsp; <strong>- Evaluation 기간 연장 : 2019년 6월 올해까지 유지보수와 관계없이 사용 가능합니다.</strong></span></p>
<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>
+
<p><span style="color: #993300; font-size: medium;"><strong><br /></strong></span></p>
<p>&nbsp; &nbsp; &nbsp;&nbsp;END Addresss: 테스트유닛을 실행시킨 뒤 그에 대한 결과값을 확인하는 주소</p>
+
<p><span style="font-family: malgun; font-size: large;"><strong><span style="color: #993300;"><span style="color: #252525;"><span style="white-space: pre;">iTSP Tools는 iTSP에 포함된 확장 기능으로 iTSP를 </span>다운로드 받으시면 사용하실 수 있습니다.</span></span></strong></span></p>
<p>&nbsp; &nbsp; &nbsp;&nbsp;만약 끝주소를 입력하지 않은 경우에는 자동으로 Start Address심볼의 Exit 주소를 찾아 대체됨</p>
+
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
<p>&nbsp; 2) 테스트시 옵션 설정</p>
+
<p><span style="font-family: malgun; font-size: large;"><strong><span style="color: #993300;"><span style="color: #252525;">또한 고객 환경에 맞게 사용하실 수 있도록&nbsp;기술지원 받으실 수 있습니다.</span></span></strong></span></p>
<p><span style="white-space: pre;"> </span><strong>* </strong>TEST MODE : 테스트방식을 결정합니다</p>
+
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - CALL 모드 : 함수 단위 테스트시 <strong>함수 호출을 TRACE32가 대신 실행</strong></p>
+
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;테스트 대상이 반복적으로 호출되지 않더라도 이 모드를 이용하면 빠르게 자동화하여 테스트 가능</p>
+
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - BREAK 모드 : start Address/ End Address 시점에 Breakpoint를 잡고 타겟 수행을 멈추어 테스트하는 방식</p>
+
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;테스트유닛을 실행시키기 위해서는 타겟이 그 코드를 실제 수행해야함</p>
+
<p><strong><span style="white-space: pre;"> </span>*&nbsp;</strong>FLASH Download : 테스트 시작시 지정한 ELF 이미지를 타겟 flash 에 write</p>
+
<p><span style="white-space: pre;"> <strong>*&nbsp;</strong></span>Debug Option :&nbsp;테스트중 FAIL이 발생하면 그 시점에 타겟을 멈춤</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="white-space: pre;"> </span><strong>* </strong>RUNTIME Test : 각 테스트케이스별 실행시간을 측정</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>
+
<ul>
+
</ul>
+
<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="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="white-space: pre;"> <span style="white-space: pre;"> </span></span>&nbsp;- MAX Timer Value : 16bit or 32bit 선택, Max Timer 값 지정</p>
+
<p><span style="white-space: pre;"> </span><strong>* </strong>Step Num :&nbsp; 매개변수 값을 입력 할 프로그램 시점을 맞추기 위해 진입점 도달 후 Step횟수를 설정</p>
+
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
<ul>
 
</ul>
 
<p>&nbsp; 3)&nbsp;&nbsp;<strong>DONE 버튼 : </strong>아래와 같이&nbsp;테스트 케이스를 작성할 수 있는 csv파일 포맷 파일이 생성되고 엑셀과 연동되어 파일이 오픈&nbsp;&nbsp;</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>&nbsp; &nbsp; &nbsp;위의 빨간 네모 안의 영역에 테스트 케이스를 작성한다.</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>&nbsp; &nbsp; &nbsp;최초 메인창에서 Testcase File 경로에 대한 정보가 아래와 같이 자동으로 추가 된다.</p>
 
<p>&nbsp; &nbsp; (사용자가 원하는 테스트케이스를 수동으로 만들어서 아래 리스트에 추가할 수도 있다.)</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>&nbsp;</p>
 
<p>&nbsp;</p>
<p>&nbsp; &nbsp;5)&nbsp;위의&nbsp;Start test 를 클릭하여 테스트를 자동으로 실행하고, 완료 저장된 Result 결과 파일이 자동으로 저장 된다.</p>
+
<p><span style="background-color: #ffff99;"><strong style="font-size: large;"><span style="text-decoration-line: underline;">2018.11.20</span></strong></span></p>
<p>&nbsp; &nbsp; 결과는 아래와 같이 입력한 테스트 케이스를 적용하여 실제로 타겟에서 수행된 변수 값을 파일로 저장하고,</p>
+
<p>- 런타임 측정 기능 개선: 타이머 카운트 계산 관련 정확도 향상 및 표시부 개선</p>
<p>&nbsp; &nbsp; 기대 값과 일치 여부를 Pass/Fail 로 나타내 준다.</p>
+
<p>&nbsp;</p>
<p>&nbsp; &nbsp; 또한 각 테스트 케이스가 수행된 시간의 정보를 같이 생성하여 저장한다.</p>
+
<p>&nbsp; (ns보다 작은 단위의 소수점 단위 계산시 약간의 오차가 발생한 부분 보상 로직을 적용하여 개선)</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>
+
<p>&nbsp;</p>
 +
<p><span style="color: #993300; font-size: medium;"><strong><br /></strong></span></p>
 +
<p><span style="background-color: #ffff99;"><strong style="font-size: large;"><span style="text-decoration-line: underline;">2018.10.22</span></strong></span></p>
 +
<p><span style="background-color: #ffff99;"><strong style="font-size: large;"><span style="text-decoration-line: underline;"><br /></span></strong></span></p>
 +
<p><span style="font-size: large;"><strong><span style="text-indent: -24px;" lang="EN-US">&nbsp;1. 신규 기능: Logging Variables (변수 로깅) 기능 추가</span></strong></span></p>
 +
<p class="MsoListParagraph" style="margin-left: 60.0pt; mso-para-margin-left: 0gd; text-indent: -20.0pt; mso-list: l0 level2 lfo1;"><span style="font-family: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings;" lang="EN-US"><span style="font-variant-numeric: normal; font-variant-east-asian: normal; font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;</span></span></p>
 +
<p>&nbsp; &nbsp; &nbsp;&nbsp;<span style="white-space: pre;"> </span>사용법 관련 자세한 기능은 아래 링크에&nbsp; 설명되어 있습니다.</p>
 +
<p>&nbsp;</p>
 +
<p><span style="font-size: large;"><span style="white-space: pre;">&nbsp; </span><span style="text-decoration: underline; color: #333399;"><a style="font-weight: bold;" href="/wiki/index.php/TRACE32_%EB%B3%80%EC%88%98_%EB%A1%9C%EA%B9%85_/_%EC%8A%A4%ED%83%9D_MAX_%EC%82%AC%EC%9A%A9%EB%9F%89_%EC%B8%A1%EC%A0%95_%ED%88%B4">변수 로깅 전용 툴 (VAR.LOG / SNOOPER)&nbsp;</a></span></span></p>
 +
<div><strong><span style="text-decoration-line: underline;"><span style="font-size: large;"><br /></span></span></strong></div>
 +
<p><span style="font-size: large;"><strong><span style="text-indent: -24px;" lang="EN-US">&nbsp;2. 신규 기능: Stack Max Usage 측정툴&nbsp; (스택 최대 사용량 측정) 기능 추가</span></strong></span></p>
 +
<p class="MsoListParagraph" style="margin-left: 60.0pt; mso-para-margin-left: 0gd; text-indent: -20.0pt; mso-list: l0 level2 lfo1;"><span style="font-family: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings;" lang="EN-US"><span style="font-variant-numeric: normal; font-variant-east-asian: normal; font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;</span></span></p>
 +
<p>&nbsp; &nbsp; &nbsp; &nbsp;사용법 관련 자세한 기능은 아래 링크에&nbsp; 설명되어 있습니다.</p>
 +
<p>&nbsp;</p>
 +
<p><span style="font-size: large;"><span style="white-space: pre;">&nbsp; </span><span style="text-decoration: underline; color: #333399;"><a style="font-weight: bold;" href="/wiki/index.php/%EC%8A%A4%ED%83%9D_MAX_%EC%82%AC%EC%9A%A9%EB%9F%89_%EC%B8%A1%EC%A0%95_%ED%88%B4">스택 MAX 사용량 측정 툴&nbsp;</a></span></span></p>
 +
<p class="MsoListParagraph" style="margin-left: 60.0pt; mso-para-margin-left: 0gd; text-indent: -20.0pt; mso-list: l0 level2 lfo1;"><span style="font-family: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings;" lang="EN-US"><span style="font-variant-numeric: normal; font-variant-east-asian: normal; font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;"><br /></span></span></p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp;</p>
 +
<p><span style="white-space: pre;"><br /></span></p>
 +
<p><span style="background-color: #ffff99;"><strong style="font-size: large;"><span style="text-decoration-line: underline;">2018.7.25</span></strong></span></p>
 +
<p><span style="background-color: #ffff99;"><strong style="font-size: large;"><span style="text-decoration-line: underline;"><br /></span></strong></span></p>
 +
<p><span style="font-size: large;"><strong><span style="text-indent: -24px;" lang="EN-US">&nbsp;1. 신규 기능인 Function Call Testing 기능 추가</span></strong></span></p>
 +
<p class="MsoListParagraph" style="margin-left: 60.0pt; mso-para-margin-left: 0gd; text-indent: -20.0pt; mso-list: l0 level2 lfo1;"><span style="font-family: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings;" lang="EN-US"><span style="font-variant-numeric: normal; font-variant-east-asian: normal; font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;</span></span></p>
 +
<p>&nbsp; &nbsp; &nbsp; <span style="white-space: pre;"> </span>사용법 관련 자세한 기능은 아래 링크에&nbsp; 설명되어 있습니다.</p>
 +
<p>&nbsp;</p>
 +
<p><span style="white-space: pre;"> <span style="white-space: pre;"> </span></span><span style="text-decoration: underline; color: #333399;"><span style="font-size: large;"><strong><a href="/wiki/index.php/%ED%95%A8%EC%88%98_%ED%98%B8%EC%B6%9C_%EA%B8%B0%EB%8A%A5%EC%9D%84_%EC%9D%B4%EC%9A%A9%ED%95%9C_%ED%85%8C%EC%8A%A4%ED%8A%B8_%EC%9E%90%EB%8F%99%ED%99%94">함수 호출 기능을 이용한 Function Call Testing Tool</a></strong></span></span></p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp;</p>
 +
<p><span style="background-color: #ffff99;"><strong style="font-size: large;"><span style="text-decoration-line: underline;">2018.6.19</span></strong></span></p>
 +
<p><span style="background-color: #ffff99;"><strong style="font-size: large;"><span style="text-decoration-line: underline;"><br /></span></strong></span></p>
 +
<p class="MsoListParagraph" style="margin-left: 38.0pt; mso-para-margin-left: 0gd; text-indent: -18.0pt; mso-list: l0 level1 lfo1;"><!--[if !supportLists]--><span lang="EN-US">1.<span style="font-variant-numeric: normal; font-variant-east-asian: normal; font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp; &nbsp; &nbsp;</span></span><span lang="EN-US">Dualport를 이용한 Running Mode 테스트&nbsp;</span>시<span lang="EN-US">, </span>데이터 값 주입되는 시간 간격을 유저가 정의할 수 있도록 기능 추가 (TEST_MODE : RUNNING)</p>
 +
<p class="MsoListParagraph" style="margin-left: 60.0pt; mso-para-margin-left: 0gd; text-indent: -20.0pt; mso-list: l0 level2 lfo1;"><span style="font-family: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings;" lang="EN-US"><span style="font-variant-numeric: normal; font-variant-east-asian: normal; font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;</span></span></p>
 +
<p class="MsoListParagraph" style="margin-left: 60.0pt; mso-para-margin-left: 0gd; text-indent: -20.0pt; mso-list: l0 level2 lfo1;"><span style="font-family: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings;" lang="EN-US"><span style="font-variant-numeric: normal; font-variant-east-asian: normal; font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;</span></span><!--[endif]-->테스트 케이스의 헤더에 다음처럼 입력되어야 합니다<span lang="EN-US">.</span></p>
 +
<p class="MsoListParagraph" style="margin-left: 60.0pt; mso-para-margin-left: 0gd; text-indent: -20.0pt; mso-list: l0 level2 lfo1;">&nbsp;</p>
 +
<p class="MsoListParagraph" style="margin-left: 60.0pt; mso-para-margin-left: 0gd; text-indent: -20.0pt; mso-list: l0 level2 lfo1;"><span lang="EN-US"><img src="/data/wiki/2018-06-15/1529051317.png" alt="" /><br /></span></p>
 +
<p>&nbsp;</p>
 +
<p class="MsoListParagraph" style="margin-left: 38.0pt; mso-para-margin-left: 0gd; text-indent: -18.0pt; mso-list: l0 level1 lfo1;">&nbsp;</p>
 +
<p class="MsoListParagraph" style="margin-left: 38.0pt; mso-para-margin-left: 0gd; text-indent: -18.0pt; mso-list: l0 level1 lfo1;"><span lang="EN-US">2.<span style="font-variant-numeric: normal; font-variant-east-asian: normal; font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp; </span></span><!--[endif]--><span lang="EN-US">&nbsp;Float Type</span>으로 테스트 결과 비교 시 발생하는 문법오류 수정<span lang="EN-US">&nbsp;</span></p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp; &nbsp; &nbsp;3.&nbsp; 매개변수가 테스트포인트에서 아직 할당되지 않을경우 사용자에게 정보를 알려주도록 예외처리 추가</p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp;</p>
 +
<p><span style="font-size: large;"><span style="background-color: #ffff99;"><strong><span style="text-decoration: underline;">2018.4.27</span></strong></span></span></p>
 +
<p><span style="font-size: large;"><span style="background-color: #ffff99;"><strong><span style="text-decoration: underline;"><br /></span></strong></span></span></p>
 +
<p>&nbsp; &nbsp; &nbsp; - Evaluation 기간 연장 : 2018년 6월까지 유지보수와 관계없이 사용 가능</p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp; &nbsp; &nbsp; - 특정 변수값 증가 테스트 기능 추가</p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp; &nbsp; &nbsp; - 테스트 타임아웃 시간 설정 가능</p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp; &nbsp; &nbsp; - 타겟 동작중에 듀얼포트를 통해 전역 변수값 설정 및 확인 기능 추가</p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp;</p>
 +
<h2><strong style="font-size: x-large;">1. 기능 소개</strong></h2>
 +
<p><span style="font-size: x-large;"><span style="font-size: x-large;"><span style="font-size: x-large;"><strong><br /></strong></span></span></span></p>
 +
<p><span style="font-size: medium;">&nbsp; 본 페이지에서는 SW 프로그램을 테스트하는 여러 방법 중, 실제 타겟 프로세서에서 SW 테스트를 진행하는 방법에 대해 설명한다.</span></p>
 +
<p><span style="font-size: medium;"><br /></span></p>
 +
<p><span style="font-size: medium;">실제 타겟에서의 SW 테스트를 위해서는 "<strong>코드가 다운로드된 타겟" 과&nbsp;</strong><strong>"HW 디버깅 장비 TRACE32"</strong>&nbsp;가 필요하다.</span></p>
 +
<p><span style="font-size: medium;"><br /></span></p>
 +
<p><span style="font-size: medium;">&nbsp;이 때, HW 디버깅 장비는 원하는 프로그램 위치에서 타겟 코어의 동작을 멈춘 입력 값을 변경하고, 연산이 완료된 출력 값을</span></p>
 +
<p><span style="font-size: medium;"><br /></span></p>
 +
<p><span style="font-size: medium;">가져오는 역할을 수행한다. 특히 TRACE32 는&nbsp;수많은 테스트케이스를 수행하는데 있어서 개발자가 직접 수동/반복적으로 테스트</span></p>
 +
<p><span style="font-size: medium;"><br /></span></p>
 +
<p><span style="font-size: medium;">해야 했던 일을 자동화하여 많은 시간과 비용을 줄여줄 수 있다.</span></p>
 +
<p><span style="font-size: medium;"><br /></span></p>
 +
<p>&nbsp; &nbsp; &nbsp;&nbsp;<img src="/data/wiki/2018-03-13/1520940285.png" alt="" /></p>
 +
<h2><span style="font-size: x-large;"><strong>2. iTSP 실행 방법</strong></span></h2>
 +
<p><span style="font-size: x-large;"><strong><br /></strong></span></p>
 +
<p><span style="font-family: &quot;맑은 고딕&quot;; font-size: medium;" lang="FI"><span style="text-indent: -18pt;" lang="FI">1. TRACE32 </span><span style="text-indent: -18pt;">홈페이지의 메인 화면에서 <span lang="FI">&rsquo;iTSP&rsquo; </span>아이콘을 클릭합니다<span lang="FI">.</span></span></span></p>
 +
<p><span style="font-family: &quot;맑은 고딕&quot;; font-size: medium;" lang="FI"><span style="text-indent: -18pt;"><span lang="FI"><br /></span></span></span></p>
 +
<p><span style="white-space: pre;"><span style="white-space: pre;"> </span> </span><img src="/data/wiki/2019-04-11/1554974043.png" alt="" /></p>
 +
<p><span style="font-size: medium;">2. iTSP 압축파일을 다운로드 받아 압축해제 합니다.</span></p>
 +
<p><span style="font-size: medium;"><br /></span></p>
 +
<p><span style="font-size: medium;"><span style="font-family: &quot;맑은 고딕&quot;; mso-ansi-language: FI;" lang="FI">3. iTSP </span><span style="font-family: &quot;맑은 고딕&quot;; mso-ansi-language: FI;">설치가 완료되면</span></span><span style="font-family: &quot;맑은 고딕&quot;; font-size: medium; text-indent: -18pt;">&nbsp;&lsquo;</span><span style="font-family: &quot;맑은 고딕&quot;; font-size: medium; text-indent: -18pt;" lang="EN-US">Trace32 ICD Target &lt;</span><span style="font-family: &quot;맑은 고딕&quot;; font-size: medium; text-indent: -18pt;">프로세서</span><span style="font-family: &quot;맑은 고딕&quot;; font-size: medium; text-indent: -18pt;" lang="EN-US">&gt;</span><span style="font-family: &quot;맑은 고딕&quot;; font-size: medium; text-indent: -18pt;">&rsquo; 파일을 더블클릭 합니다</span><span style="font-family: &quot;맑은 고딕&quot;; font-size: medium; text-indent: -18pt;" lang="EN-US">.</span></p>
 +
<p class="MsoNormal" style="margin-left: 38.0pt; text-indent: -18.0pt; mso-list: l1 level1 lfo2;">&nbsp;</p>
 +
<p class="MsoNormal" style="text-indent: 10.0pt; mso-char-indent-count: 1.0;"><span class="titletext" style="font-size: medium;"><span style="font-family: &quot;맑은 고딕&quot;;">※ <strong><span lang="EN-US">T32 </span>설치폴더 내</strong>에<span lang="EN-US">&nbsp;iTSP 폴더를 압축 해제할</span>&nbsp;경우는 별도의 경로를 설정하실 필요 없습니다<span lang="EN-US">.</span></span></span></p>
 +
<p class="MsoNormal"><span style="font-size: medium;" lang="EN-US">&nbsp;</span></p>
 +
<p class="MsoNormal">&nbsp;</p>
 +
<p class="MsoNormal"><span style="font-size: medium;" lang="EN-US"><br /></span></p>
 +
<p><span style="white-space: pre; font-size: large;"><span style="text-decoration: underline;"><span style="color: #ff0000;"><strong><br /></strong></span></span></span></p>
 +
<h2><span style="font-size: x-large;"><strong>3. </strong><strong>화면 구성 및 사용법</strong></span></h2>
 +
<p><span style="font-size: xx-large;"><strong><br /></strong></span></p>
 +
<h3><span style="font-size: x-large; text-decoration: underline;"><strong>3-1. Main UI</strong></span></h3>
 +
<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 style="padding-left: 60px;">&nbsp;</p>
 +
<p style="padding-left: 60px;"><span style="font-size: medium;"><strong>①&nbsp;&nbsp;&nbsp;</strong><strong>Add Test Case File : </strong>Test Case를 설정/정의한 CSV파일을 등록하거나 새로 생성</span></p>
 +
<p style="padding-left: 60px;">&nbsp;</p>
 +
<p style="padding-left: 60px;">&nbsp;</p>
 +
<p style="padding-left: 60px;"><span style="font-size: medium;"><strong>②&nbsp;&nbsp;</strong><strong>Test Scenario:</strong>&nbsp;&nbsp;&nbsp; 테스트 시나리오 리스트 (T32_Test_List.txt 파일)</span></p>
 +
<p style="padding-left: 60px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 210px;"><span style="font-size: medium;"><span style="white-space: pre;"><span style="white-space: pre;"> </span></span>테스트케이스를 만들거나 추가 등록시키면 리스트가 업데이트 된다.</span></p>
 +
<p style="padding-left: 210px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 210px;"><span style="font-size: medium;"><span style="white-space: pre;"><span style="white-space: pre;"> </span></span>Start버튼을 누르면 테스트케이스 파일과 T32 커맨드를 정의한 순서대로 수행한다.</span></p>
 +
<p style="padding-left: 210px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 210px;"><span style="font-size: medium;"><strong><span style="white-space: pre;"> <span style="white-space: pre;"> </span></span>[Edit Test Scenario]버튼</strong>을 통해 시나리오를 직접 수정 가능</span></p>
 +
<p style="padding-left: 210px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 240px;"><span style="font-size: medium;"><span style="white-space: pre;"> <span style="white-space: pre;"> </span></span>-&nbsp; TEST_FILE : [테스트케이스 파일의 경로]</span></p>
 +
<p style="padding-left: 240px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 240px;"><span style="font-size: medium;"><span style="white-space: pre;"> <span style="white-space: pre;"> </span></span>-&nbsp; T32_CMD : [T32 명령어]</span></p>
 +
<p style="padding-left: 240px;">&nbsp;</p>
 +
<p style="padding-left: 240px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 60px;"><span style="font-size: medium;"><strong>③&nbsp;&nbsp;&nbsp;</strong><strong>Simulator Debugging </strong>: 디버깅 환경을 시뮬레이터로 전환</span></p>
 +
<p style="padding-left: 60px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 270px;"><span style="font-size: medium;">시뮬레이터에서는 코드 커버리지나 백트레이스 등 고급 기능들을 사용 가능하다.</span></p>
 +
<p style="padding-left: 300px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 270px;"><span style="font-size: medium;">※ 전환할 경우 PowerView가 재시작 되니 주의하십시오.</span></p>
 +
<p style="padding-left: 300px;">&nbsp;</p>
 +
<p style="padding-left: 300px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 60px;"><span style="font-size: medium;"><strong>④&nbsp;&nbsp; </strong><strong>ETC :<span style="font-size: medium;"><strong><br /></strong></span></strong></span></p>
 +
<p style="padding-left: 210px;"><span style="font-size: medium;"><span style="white-space: pre;"> </span>- Coverage : 코드 커버리지를 보거나 리셋한다.</span></p>
 +
<p style="padding-left: 150px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 210px;"><span style="font-size: medium;"><span style="white-space: pre;"> </span>- Load Symbol : 심볼를 로딩한다.</span></p>
 +
<p style="padding-left: 150px;">&nbsp;</p>
 +
<p style="padding-left: 150px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 60px;"><span style="font-size: medium;"><strong>⑤&nbsp;&nbsp;&nbsp; </strong><strong>Test Start :&nbsp; </strong>정의한 시나리오대로 테스트를 시작한다.</span></p>
 +
<p style="padding-left: 60px;"><span style="font-size: medium;"><strong>&nbsp;</strong></span></p>
 +
<p>&nbsp;</p>
 +
<p><span style="font-size: medium;"><strong><br /></strong></span></p>
 +
<h3><span style="font-size: x-large; text-decoration: underline;"><strong>3-2. Test Case </strong><strong>생성</strong></span></h3>
 +
<p>&nbsp;</p>
 +
<p><span style="font-size: medium;">- Main UI에 있는 [Create] 버튼을 누르면 아래와 같은 창이 나타난다.</span></p>
 +
<p><span style="font-size: medium;"><br /></span></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 style="padding-left: 60px;">&nbsp;</p>
 +
<p style="padding-left: 60px;">&nbsp;</p>
 +
<p style="padding-left: 60px;"><span style="font-size: medium;"><strong>①&nbsp;&nbsp;</strong><strong>Test Unit</strong> : [Sel] 버튼을 눌러 테스트 함수를 검색하거나</span></p>
 +
<p style="padding-left: 60px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 180px;"><span style="font-size: medium;"><strong>&nbsp;<span style="white-space: pre;"> </span>&nbsp;</strong>주소나 심볼을 직접 입력한다.</span></p>
 +
<p style="padding-left: 180px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 210px;"><span style="font-size: medium;"><span style="white-space: pre;"> </span>- 테스트 시작 지점 (Input/ Pre-Condition 대입 시점)</span></p>
 +
<p style="padding-left: 210px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 210px;"><span style="font-size: medium;"><span style="white-space: pre;"> </span>- 테스트 끝 지점&nbsp;&nbsp; (예상 Output 값과&nbsp; 실제 Output 값 비교 시점)</span></p>
 +
<p style="padding-left: 210px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 210px;"><span style="font-size: medium;"><span style="white-space: pre;"> </span>※ End Address를 입력하지 않을 경우 함수 종료 시점이 자동 입력된다.</span></p>
 +
<p style="padding-left: 210px;">&nbsp;</p>
 +
<p style="padding-left: 210px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 60px;"><span style="font-size: medium;"><strong>②&nbsp;&nbsp;</strong><strong>Test Setting :</strong>&nbsp; 테스트 방법이나 항목을 설정한다.</span></p>
 +
<p style="padding-left: 60px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 150px;"><span style="font-size: medium;"><strong><span style="white-space: pre;"> </span>1. </strong>TEST MODE : 테스트 방식을 결정</span></p>
 +
<p style="padding-left: 150px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 180px;"><span style="font-size: medium;"><span style="white-space: pre;"> </span>- CALL 모드 : 함수 단위 테스트시 함수 호출을 TRACE32가 대신 실행</span></p>
 +
<p style="padding-left: 180px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 180px;"><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><span style="font-size: medium;">&nbsp;반복하여 빠르게 테스트가 가능함</span></p>
 +
<p style="padding-left: 180px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 180px;"><span style="font-size: medium;"><span style="white-space: pre;"> </span>- BREAK 모드 : 테스트 시작점에 Breakpoint를 잡고 테스트하는 방식</span></p>
 +
<p style="padding-left: 180px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 240px;"><span style="font-size: medium;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="white-space: pre;"> </span>&nbsp; 코드 흐름에 맞추어 테스트 진행됨</span></p>
 +
<p style="padding-left: 240px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 150px;"><span style="font-size: medium;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="white-space: pre;"> </span> ※ CMD : 각 테스트 케이스가 실행되기 전에 수행되는 명령어</span></p>
 +
<p style="padding-left: 60px;">&nbsp;</p>
 +
<p style="padding-left: 60px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 150px;"><span style="font-size: medium;"><strong><span style="white-space: pre;"> </span>2. </strong>FLASH Download : 타겟에 ELF 이미지파일의 다운로드와 관련된 설정 항목이다.</span></p>
 +
<p style="padding-left: 150px;">&nbsp;</p>
 +
<p style="padding-left: 150px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 150px;"><span style="font-size: medium;"><strong><span style="white-space: pre;"> </span>3. </strong>Debug Option : 테스트중 FAIL이 발생하면 그 시점에 타겟을 멈추게하는 기능</span></p>
 +
<p style="padding-left: 150px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 300px;"><span style="font-size: medium;">&nbsp;타겟이 멈추면 그 시점을 디버깅하여 FAIL의 원인을 찾을수 있음</span></p>
 +
<p style="padding-left: 300px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 300px;"><span style="font-size: medium;">&nbsp;[Continue Test] 버튼을 누르면 이어서 테스트 시작</span></p>
 +
<p style="padding-left: 60px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 150px;"><span style="font-size: medium;"><strong><span style="white-space: pre;"> </span>4. </strong>RUNTIME Test : 각 테스트케이스별 수행시간을 측정하는 기능이다.</span></p>
 +
<p style="padding-left: 150px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 180px;"><span style="font-size: medium;"><span style="white-space: pre;"> </span><img src="/data/wiki/2018-03-13/1520940894.png" alt="" /></span></p>
 +
<p style="padding-left: 180px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 180px;"><span style="font-size: medium;"><span style="white-space: pre;"> </span>-&nbsp; &nbsp;Timer Register Address : 타이밍 측정에 사용할 내부 타이머 레지스터 주소</span></p>
 +
<p style="padding-left: 180px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 180px;"><span style="font-size: medium;"><span style="white-space: pre;"> </span>-&nbsp; &nbsp;Timer 1 Tick Time : Timer 1 tick 당 시간 정보</span></p>
 +
<p style="padding-left: 180px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 180px;"><span style="font-size: medium;"><span style="white-space: pre;"> </span>-&nbsp; &nbsp;MAX Timer Value : 16bit or 32bit 선택, Max Timer 값 지정</span></p>
 +
<p style="padding-left: 60px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 150px;"><span style="font-size: medium;"><strong><span style="white-space: pre;"> </span>5. Step Num : </strong>함수 진입시 매개변수나 지역변수가 할당 되지 않을 경우에&nbsp; 테스트 시작점에서 지정한 횟수만큼 Step을 하고&nbsp;테스트를&nbsp;진행한다.</span></p>
 +
<p style="padding-left: 150px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 180px;"><span style="font-size: medium;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
 +
<p style="padding-left: 60px;">&nbsp;</p>
 +
<p style="padding-left: 60px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 60px;"><span style="font-size: medium;"><strong>③&nbsp;&nbsp;&nbsp; </strong><strong>&nbsp;DONE</strong> : Testcase를 작성하기 위한 csv파일 포맷이 자동 완성되어 열린다.</span></p>
 +
<p style="padding-left: 60px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 180px;"><span style="font-size: medium;"><span style="white-space: pre;"> </span>※ 엑셀과 연동하기 위해서는 config폴더의 excel_path.txt 안에</span><span style="font-size: medium;">&nbsp;excel 실행파일 경로를 반드시 설정해주어야함</span></p>
 +
<p style="padding-left: 60px;">&nbsp;</p>
 +
<p style="padding-left: 60px;">&nbsp;</p>
 +
<p><span style="font-size: x-large;"><br /></span></p>
 +
<h3><span style="font-size: x-large; text-decoration: underline;"><strong>3-3. Test Case </strong><strong>입력 (CSV파일)</strong></span></h3>
 +
<p><span style="text-decoration: underline;"><span style="font-size: medium;"><strong><br /></strong></span></span></p>
 +
<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 style="padding-left: 60px;">&nbsp;</p>
 +
<p style="padding-left: 60px;"><span style="font-size: medium;"><span style="font-size: large;"><span style="white-space: pre;"> </span><span style="text-decoration: underline;">1. 기본 포맷</span> : </span>&nbsp;<strong>TYPE/[</strong><strong>심볼or주소]</strong></span></p>
 +
<p style="padding-left: 60px;">&nbsp;</p>
 +
<p style="padding-left: 60px;"><span style="font-size: medium;"><strong><br /></strong></span></p>
 +
<p style="padding-left: 60px;"><span style="text-decoration: underline; font-size: large;"><span style="white-space: pre;"> </span>2.&nbsp;TYPE 정보</span></p>
 +
<p style="padding-left: 60px;"><span style="font-size: medium;"><span style="text-decoration: underline;"><br /></span></span></p>
 +
<p style="padding-left: 120px;"><span style="font-size: medium;"><strong><span style="white-space: pre;"> </span>1. INP : </strong>Parameter, 매개변수</span></p>
 +
<p style="padding-left: 120px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 120px;"><span style="font-size: medium;"><strong><span style="white-space: pre;"> </span>2. PRE : </strong>Pre-Condition, 전역변수 입력</span></p>
 +
<p style="padding-left: 120px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 120px;"><span style="font-size: medium;"><strong><span style="white-space: pre;"> </span>3. OUT : </strong>함수 Return값, 전역변수 출력 확인</span></p>
 +
<p style="padding-left: 120px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 120px;">&nbsp;</p>
 +
<p style="padding-left: 60px;"><span style="font-size: large;"><span style="text-decoration: underline;"><span style="white-space: pre;"> </span>3.&nbsp;</span><span style="text-decoration: underline;">심볼/ 주소/ 레지스터</span></span></p>
 +
<p style="padding-left: 60px;"><span style="font-size: medium;"><span style="text-decoration: underline;"><br /></span></span></p>
 +
<p style="padding-left: 120px;"><span style="font-size: medium;"><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span><strong>1.&nbsp;&nbsp;&nbsp;&nbsp; </strong></span><strong style="font-size: medium;">심볼 :</strong><span style="font-size: medium;"> 심볼이 로딩되어 있는 경우 변수 이름 입력</span></p>
 +
<p style="padding-left: 120px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 180px;"><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;">&nbsp; <span style="line-height: 107%; font-family: &quot;맑은 고딕&quot;; font-size: 10pt; mso-bidi-font-size: 11.0pt; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &quot;Times New Roman&quot;; mso-bidi-theme-font: minor-bidi; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-ansi-language: EN-US; mso-fareast-language: KO; mso-bidi-language: AR-SA;" lang="EN-US">(※ float 소수점 자료형은</span><span style="line-height: 107%; font-family: &quot;맑은 고딕&quot;; font-size: 10pt; mso-bidi-font-size: 11.0pt; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &quot;Times New Roman&quot;; mso-bidi-theme-font: minor-bidi; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-ansi-language: EN-US; mso-fareast-language: KO; mso-bidi-language: AR-SA;"> 심볼앞에 <span lang="EN-US">&ldquo;<strong style="mso-bidi-font-weight: normal;">^</strong>&rdquo; </span>마킹<span lang="EN-US">)</span></span></span></span></p>
 +
<p style="padding-left: 180px;"><span style="font-size: medium;"><span style="white-space: pre;"><br /></span></span></p>
 +
<p style="padding-left: 120px;"><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 style="padding-left: 120px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 180px;"><span style="font-size: medium;"><span style="white-space: pre;"> </span>ex) PRE/0x90000100(long)&nbsp;&nbsp; ,&nbsp; OUT/0x1000(short)</span></p>
 +
<p style="padding-left: 180px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 120px;"><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 style="padding-left: 120px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 180px;"><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 style="padding-left: 60px;">&nbsp;</p>
 +
<p style="padding-left: 60px;"><span style="text-decoration: underline; font-size: large;">4.&nbsp;테스트케이스 값&nbsp;입력</span></p>
 +
<p style="padding-left: 60px;">&nbsp;</p>
 +
<p style="padding-left: 60px;"><span style="text-decoration: underline; font-size: large;"><br /></span></p>
 +
<p style="padding-left: 60px;"><span style="font-size: medium;">아래와 같이 calculator 함수의 명세서가 있다고 가정해 보자.</span></p>
 +
<p style="padding-left: 60px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 60px;"><img src="/data/wiki/2018-03-13/1520945740.png" alt="" /></p>
 +
<p style="padding-left: 60px;">&nbsp;</p>
 +
<p style="padding-left: 60px;"><span style="text-decoration: underline;"><span style="font-size: medium;">이러한 함수 사양 명세서를 보고 아래와 같이 여러개의 테스트케이스를 만들 수 있다.</span></span></p>
 +
<p style="padding-left: 60px;"><span style="text-decoration: underline;"><span style="font-size: medium;"><br /></span></span></p>
 +
<p style="padding-left: 60px;"><span style="font-size: medium;">참고로 아래처럼 입력값을 넣지 않고 빈칸으로 놔두게 되면&nbsp;이전 테스트케이스의 값을 유지한다.</span></p>
 +
<p style="padding-left: 60px;"><span style="font-size: x-small;"><span style="font-size: medium;"><br /></span></span></p>
 +
<p style="padding-left: 60px;"><span style="font-size: medium;"><span style="font-size: x-large;"><strong><img src="/data/wiki/2018-03-13/1520945359.png" alt="" /></strong></span><br /></span></p>
 +
<p style="padding-left: 60px;">&nbsp;</p>
 +
<p style="padding-left: 60px;">&nbsp;</p>
 +
<p style="padding-left: 60px;"><span style="font-size: large;"><span style="text-decoration: underline;">5.&nbsp;랜덤값 입력</span></span></p>
 +
<p style="padding-left: 60px;"><span style="font-size: medium;"><span style="text-decoration: underline;"><br /></span></span></p>
 +
<p style="padding-left: 60px;"><span style="font-size: medium;"><span style="white-space: pre;">만약 </span>원하는 범위내의 임의의 값을 대입하고 싶다면 아래처럼</span><span style="font-size: large;"><strong><span style="white-space: pre;"> </span></strong></span><span style="font-size: medium;"><span style="font-size: large;"><strong>rand(min~max)</strong></span> 형태로 입력할</span><span style="font-size: medium;">&nbsp;수 있다.</span></p>
 +
<p style="padding-left: 60px;"><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 style="padding-left: 60px;"><span style="font-size: medium;"><strong>&nbsp;</strong></span></p>
 +
<p style="padding-left: 60px;"><strong><span style="font-size: large;"><span style="text-decoration: underline;">6.&nbsp;증가값 입력 (신규 추가 기능)</span></span></strong></p>
 +
<p style="padding-left: 60px;">&nbsp;</p>
 +
<p style="padding-left: 60px;">&nbsp;</p>
 +
<p style="padding-left: 60px;"><span style="font-size: medium;">특정 변수의 Min부터 Max까지의 Delta증가값에 따른&nbsp;결과를&nbsp;보고싶을 때 사용하는 기능으로&nbsp;OUT 변수들의 결과값을 뽑아낼 수 있는 기능이다.</span></p>
 +
<p style="padding-left: 60px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 60px;"><span style="font-size: medium;"><span style="font-size: small;">사용 방법은 </span><span style="font-size: large;"><strong><span style="font-size: x-large;">inc(min~max:Delta)&nbsp;</span><span style="font-size: x-large;"><span style="font-size: small;">&nbsp;형태로 입력할 수 있다.&nbsp;</span></span></strong></span></span></p>
 +
<p style="padding-left: 60px;">&nbsp;</p>
 +
<p style="padding-left: 60px;"><span style="font-size: small;"><strong>해당 결과는 아래와 같이 나온다.</strong></span></p>
 +
<p style="padding-left: 60px;"><span style="font-size: medium;"><br /></span></p>
 +
<p style="padding-left: 60px;">&nbsp;</p>
 +
<p style="padding-left: 60px;">&lt;TEST CASE&gt;</p>
 +
<p style="padding-left: 60px;">&nbsp;</p>
 +
<p style="padding-left: 60px;"><img src="/data/wiki/2018-04-06/1522977453.png" alt="" /></p>
 +
<p style="padding-left: 60px;">&nbsp;</p>
 +
<p style="padding-left: 60px;">&nbsp;</p>
 +
<p style="padding-left: 60px;">&lt;REPORT&gt;</p>
 +
<p style="padding-left: 60px;">&nbsp;</p>
 +
<p style="padding-left: 60px;"><img src="/data/wiki/2018-04-06/1522978819.png" alt="" /></p>
 +
<p style="padding-left: 60px;">&nbsp;</p>
 +
<p style="padding-left: 60px;">&nbsp;</p>
 +
<p style="padding-left: 60px;">&nbsp;</p>
 +
<p style="padding-left: 60px;"><span style="font-size: medium;"><strong><br /></strong></span></p>
 +
<h3><span style="font-size: x-large; text-decoration: underline;"><strong>3-4. Test </strong><strong>시작</strong></span></h3>
 +
<p><span style="text-decoration: underline;"><span style="font-size: medium;"><strong><br /></strong></span></span></p>
 +
<p><span style="font-size: medium;">&nbsp;&nbsp; 1.&nbsp;</span><span style="font-size: medium;">Main UI의    &nbsp;</span><img style="font-size: medium;" src="/data/wiki/2018-03-13/1520941139.png" alt="" /><span style="font-size: medium;">&nbsp;버튼을 누르면 테스트가 시작된다.</span></p>
 +
<p><span style="font-size: medium;"><br /></span></p>
 +
<p><span style="font-size: medium;">&nbsp;</span><span style="font-size: medium;">&nbsp; 2. Main UI의 AREA창을 통해 테스트 진행상황을 모니터링할 수 있다.</span></p>
 +
<p><span style="font-size: medium;"><br /></span></p>
 +
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<img src="/data/wiki/2018-03-13/1520941240.png" alt="" /></p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp;</p>
 +
<p><strong> <span style="text-decoration: underline;"><span style="font-size: x-large;">3-5. Test Report 결과 확인</span></span></strong></p>
 +
<p><strong style="font-size: medium; text-decoration-line: underline;"><br /></strong></p>
 +
<p><span style="font-size: medium;">&nbsp; &nbsp;&nbsp; 테스트케이스 대상 별로 폴더가 각각 생성되고 테스트 결과는 csv포맷으로 출력된다.</span></p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-size: medium;"><span style="text-decoration: underline;"><strong> RES/ </strong></span>로 출력되는 TYPE은 실제 타겟에서 출력된 결과를 의미한다.</span></p>
 +
<p><span style="font-size: medium;"><br /></span></p>
 +
<p><span style="font-size: medium;">&nbsp; &nbsp; 아래와 같이 결과를 받아서 테스트케이스의 예상결과값과 다르게 나온 부분이 어디인지 한눈에 파악이 가능하다.</span></p>
 +
<p>&nbsp;</p>
 +
<p><span style="font-size: medium;"><br /></span></p>
 +
<p><span style="font-size: medium;"><span style="font-size: x-large;"><strong><img src="/data/wiki/2018-03-13/1520944933.png" alt="" /></strong></span><br /></span></p>
 +
<p>&nbsp;</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>

2019년 4월 15일 (월) 11:23 기준 최신판

 

※ 다운로드 파일 (업데이트 일자 : 2019/01/16)

 

     - Evaluation 기간 연장 : 2019년 6월 올해까지 유지보수와 관계없이 사용 가능합니다.

 


iTSP Tools는 iTSP에 포함된 확장 기능으로 iTSP를 다운로드 받으시면 사용하실 수 있습니다.

 

또한 고객 환경에 맞게 사용하실 수 있도록 기술지원 받으실 수 있습니다.

 

 

 

2018.11.20

- 런타임 측정 기능 개선: 타이머 카운트 계산 관련 정확도 향상 및 표시부 개선

 

  (ns보다 작은 단위의 소수점 단위 계산시 약간의 오차가 발생한 부분 보상 로직을 적용하여 개선)

 


2018.10.22


 1. 신규 기능: Logging Variables (변수 로깅) 기능 추가

 

       사용법 관련 자세한 기능은 아래 링크에  설명되어 있습니다.

 

  변수 로깅 전용 툴 (VAR.LOG / SNOOPER) 


 2. 신규 기능: Stack Max Usage 측정툴  (스택 최대 사용량 측정) 기능 추가

 

       사용법 관련 자세한 기능은 아래 링크에  설명되어 있습니다.

 

  스택 MAX 사용량 측정 툴 


 

 


2018.7.25


 1. 신규 기능인 Function Call Testing 기능 추가

 

      사용법 관련 자세한 기능은 아래 링크에  설명되어 있습니다.

 

함수 호출 기능을 이용한 Function Call Testing Tool

 

 

 

 

2018.6.19


1.     Dualport를 이용한 Running Mode 테스트 , 데이터 값 주입되는 시간 간격을 유저가 정의할 수 있도록 기능 추가 (TEST_MODE : RUNNING)

 

 테스트 케이스의 헤더에 다음처럼 입력되어야 합니다.

 


 

 

2.      Float Type으로 테스트 결과 비교 시 발생하는 문법오류 수정 

 

     3.  매개변수가 테스트포인트에서 아직 할당되지 않을경우 사용자에게 정보를 알려주도록 예외처리 추가

 

 

 

2018.4.27


      - Evaluation 기간 연장 : 2018년 6월까지 유지보수와 관계없이 사용 가능

 

      - 특정 변수값 증가 테스트 기능 추가

 

      - 테스트 타임아웃 시간 설정 가능

 

      - 타겟 동작중에 듀얼포트를 통해 전역 변수값 설정 및 확인 기능 추가

 

 

 

 

 

 

1. 기능 소개


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


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


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


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


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


      

2. iTSP 실행 방법


1. TRACE32 홈페이지의 메인 화면에서 ’iTSP’ 아이콘을 클릭합니다.


2. iTSP 압축파일을 다운로드 받아 압축해제 합니다.


3. iTSP 설치가 완료되면 ‘Trace32 ICD Target <프로세서>’ 파일을 더블클릭 합니다.

 

T32 설치폴더 내 iTSP 폴더를 압축 해제할 경우는 별도의 경로를 설정하실 필요 없습니다.

 

 



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 생성

 

- Main UI에 있는 [Create] 버튼을 누르면 아래와 같은 창이 나타난다.


                         

 

 

①  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 : 함수 진입시 매개변수나 지역변수가 할당 되지 않을 경우에  테스트 시작점에서 지정한 횟수만큼 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  (※ float 소수점 자료형은 심볼앞에 ^마킹)


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


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


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


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

 

4. 테스트케이스 값 입력

 


아래와 같이 calculator 함수의 명세서가 있다고 가정해 보자.


 

이러한 함수 사양 명세서를 보고 아래와 같이 여러개의 테스트케이스를 만들 수 있다.


참고로 아래처럼 입력값을 넣지 않고 빈칸으로 놔두게 되면 이전 테스트케이스의 값을 유지한다.



 

 

5. 랜덤값 입력


만약 원하는 범위내의 임의의 값을 대입하고 싶다면 아래처럼 rand(min~max) 형태로 입력할 수 있다.

                       

 

6. 증가값 입력 (신규 추가 기능)

 

 

특정 변수의 Min부터 Max까지의 Delta증가값에 따른 결과를 보고싶을 때 사용하는 기능으로 OUT 변수들의 결과값을 뽑아낼 수 있는 기능이다.


사용 방법은 inc(min~max:Delta)  형태로 입력할 수 있다. 

 

해당 결과는 아래와 같이 나온다.


 

<TEST CASE>

 

 

 

<REPORT>

 

 

 

 


3-4. Test 시작


   1. Main UI의   버튼을 누르면 테스트가 시작된다.


   2. Main UI의 AREA창을 통해 테스트 진행상황을 모니터링할 수 있다.


         

 

 

 

3-5. Test Report 결과 확인


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

 

      RES/ 로 출력되는 TYPE은 실제 타겟에서 출력된 결과를 의미한다.


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

 



 

 

 

 

 

 

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포맷으로 출력됩니다.

 

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