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

TRACE32
이동: 둘러보기, 검색
161번째 줄: 161번째 줄:
 
<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: 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;">&nbsp;</p>
 +
<p style="padding-left: 60px;"><span style="text-decoration: underline;"><span style="font-size: medium;">3.&nbsp;테스트케이스 값&nbsp;입력</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: x-small;"><span style="font-size: medium;">&nbsp;참고로 아래처럼 입력값을 넣지 않고 빈칸으로 놔두게 되면&nbsp;이전 테스트케이스의 값을 유지한다.</span></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="white-space: pre;"> </span>4.&nbsp;<span style="text-decoration: underline;">랜덤값 입력</span></span></p>
+
<p style="padding-left: 60px;">&nbsp;</p>
 +
<p style="padding-left: 60px;"><span style="font-size: large;">4.&nbsp;<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: 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>rand(min~max) 으로 원하는 범위내의 임의의 값을 대입하도록 설정할 수 있다.</span></p>
 
<p style="padding-left: 60px;"><span style="font-size: medium;"><span style="white-space: pre;"> </span>rand(min~max) 으로 원하는 범위내의 임의의 값을 대입하도록 설정할 수 있다.</span></p>

2018년 3월 13일 (화) 21:50 판

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

 

- 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)

 

3. 테스트케이스 값 입력


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



 

 

4. 랜덤값 입력


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

                       

 

 


3-4. Test 시작


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


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


         

 

 

 

3-5. Test Report 결과 확인


     테스트케이스 대상 별로 폴더가 각각 생성되고 테스트 결과는 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포맷으로 출력됩니다.

 

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