Main Content

앱 테스트 프레임워크 개요

MATLAB® 앱 테스트 프레임워크를 사용하여 앱 디자이너로 만든 앱 또는 uifigure 함수를 통해 프로그래밍 방식으로 빌드된 앱을 테스트합니다. 앱 테스트 프레임워크에서는 UI 컴포넌트에 대한 제스처(예: 버튼 누르기 또는 슬라이더 끌기)를 프로그래밍 방식으로 수행하고 앱 동작을 확인하는 테스트 클래스를 작성할 수 있습니다.

앱 테스트

테스트 생성 – 클래스 기반 테스트에서 matlab.uitest.TestCase를 서브클래스화하여 앱 테스트 프레임워크를 사용할 수 있습니다. matlab.uitest.TestCasematlab.unittest.TestCase의 서브클래스이기 때문에 테스트는 가설 검정(Qualification), 픽스처, 플러그인 같은 단위 테스트 프레임워크 기능에 액세스할 수 있습니다. 명령 프롬프트에서 앱 테스트 프레임워크를 시험하려면 matlab.uitest.TestCase.forInteractiveUse를 사용하여 테스트 케이스 인스턴스를 생성하십시오.

테스트 콘텐츠 – 통상적으로 앱의 테스트는 matlab.uitest.TestCase의 제스처 메서드(예: press 또는 type)를 사용하여 프로그래밍 방식으로 앱 컴포넌트와 상호 작용하고, 그 결과에 대해 가설 검정(Qualification)을 수행합니다. 예를 들어, 테스트는 한 체크박스를 누른 후 다른 체크박스가 비활성화되는지를 확인할 수 있습니다. 또는 텍스트 상자에 숫자를 입력한 후 앱이 예상된 결과를 계산하는지 확인할 수 있습니다. 이러한 유형의 테스트를 하려면 테스트 중인 앱의 속성을 이해해야 합니다. 버튼 누름을 확인하려면 MATLAB이 앱 객체 내에서 버튼 상태를 저장하는 위치를 알아야 합니다. 계산 결과를 확인하려면 앱 내에서 결과에 액세스하는 방법을 알아야 합니다.

테스트 정리 – 테스트 후 앱을 삭제하는 해제 동작을 포함하는 것이 좋습니다. 통상적으로 테스트 메서드에서는 matlab.unittest.TestCaseaddTeardown 메서드를 사용하여 이 동작을 추가합니다.

앱 잠금 – 앱 테스트에서 Figure를 만들면 프레임워크는 컴포넌트와 외부 상호 작용을 하지 못하도록 즉시 Figure를 잠급니다. 명령 프롬프트에서 시험용으로 matlab.uitest.TestCase.forInteractiveUse의 인스턴스를 만든 경우에는 앱 테스트 프레임워크에서 UI 컴포넌트를 잠그지 않습니다.

디버그 용도로 Figure 잠금을 해제하려면 matlab.uitest.unlock 함수를 사용하십시오.

알림 무시 – 일부 경우 앱이 모달 알림 대화 상자를 표시하며, 그 상태에서는 앱 컴포넌트와 상호작용할 수 없습니다. 대화 상자 뒤에 있는 Figure에 액세스하려면 대화 상자를 닫아야 합니다. 프로그래밍 방식으로 Figure 창의 알림 대화 상자를 닫으려면 dismissAlertDialog 메서드를 사용하십시오.

UI 컴포넌트의 제스처 지원

matlab.uitest.TestCase의 제스처 메서드는 다양한 UI 컴포넌트를 지원합니다.

컴포넌트일반적인 생성 함수matlab.uitest.TestCase 제스처 메서드
presschoosedragscrolltypehoverchooseContextMenu
좌표축axes  
버튼uibutton     
버튼 그룹uibuttongroup      
체크박스uicheckbox    
날짜 선택기uidatepicker     
불연속 노브uiknob     
드롭다운uidropdown    
편집 필드(숫자, 텍스트)uieditfield     
하이퍼링크uihyperlink     
이미지uiimage     
노브uiknob    
레이블uilabel      
목록 상자uilistbox     
메뉴uimenu      
패널uipanel    
극좌표 좌표축polaraxes    
푸시 툴uipushtool      
라디오 버튼uiradiobutton    
슬라이더uislider    
스핀 상자uispinner    
상태 버튼uibutton    
스위치(로커, 슬라이더, 토글)uiswitch    
uitab      
탭 그룹uitabgroup      
테이블uitable    
텍스트 영역uitextarea     
토글 버튼uitogglebutton    
토글 툴uitoggletool     
트리 노드uitreenode     
UI 좌표축uiaxes  
UI Figureuifigure   

예제: 앱에 대한 테스트 작성하기

이 예제에서는 현재 폴더에 있는 앱에 대한 테스트의 작성 방법을 보여줍니다. 이 앱은 플롯의 샘플 크기와 컬러맵을 변경할 수 있는 옵션을 제공합니다. 앱과 프로그래밍 방식으로 상호 작용하고 결과를 가설 검정하려면 앱 테스트 프레임워크와 단위 테스트 프레임워크를 사용하십시오.

테스트 전에 앱의 속성을 살펴보려면 앱의 인스턴스를 생성하십시오. 이 단계는 테스트에 반드시 필요하진 않지만 테스트에서 사용하는 속성을 살펴보는 것은 도움이 됩니다. 예를 들어, app.UpdatePlotButton을 사용하여 앱 내 Update Plot 버튼에 액세스할 수 있습니다.

app = ConfigurePlotAppExample;

{"String":"Figure Configure Plot contains an axes object and other objects of type uilabel, uidropdown, uibutton, uinumericeditfield. The axes object contains an object of type surface.","Tex":[],"LaTex":[]}

현재 폴더에 있는 ConfigurePlotAppExampleTest.m이라는 파일에서 matlab.uitest.TestCase에서 파생된 테스트 클래스를 만듭니다. 두 개의 Test 메서드를 ConfigurePlotAppExampleTest 클래스에 추가합니다. 각 메서드에서, 테스트하기 전에 앱의 인스턴스를 만들고 테스트가 완료되면 이를 삭제합니다.

  • testSampleSize 메서드 — 샘플 크기를 수정하고, 플롯을 업데이트하며, 플롯에서 지정된 샘플 크기를 사용하는지 확인합니다.

  • testColormap 메서드 — 컬러맵을 선택하고, 플롯을 업데이트하며, 플롯에서 지정된 컬러맵을 사용하는지 확인합니다.

classdef ConfigurePlotAppExampleTest < matlab.uitest.TestCase
    methods (Test)
        function testSampleSize(testCase)
            app = ConfigurePlotAppExample;
            testCase.addTeardown(@delete,app)

            testCase.type(app.SampleSizeEditField,12)
            testCase.press(app.UpdatePlotButton)

            ax = app.UIAxes;
            surfaceObj = ax.Children;
            testCase.verifySize(surfaceObj.ZData,[12 12])
        end

        function testColormap(testCase)
            app = ConfigurePlotAppExample;
            testCase.addTeardown(@delete,app)

            testCase.choose(app.ColormapDropDown,"Winter")
            testCase.press(app.UpdatePlotButton)

            expectedMap = winter;
            ax = app.UIAxes;
            testCase.verifyEqual(ax.Colormap,expectedMap)
        end
    end
end

테스트를 실행하십시오. 이 예제에서는 두 테스트가 모두 통과했습니다.

results = runtests("ConfigurePlotAppExampleTest")
Running ConfigurePlotAppExampleTest
.
.
Done ConfigurePlotAppExampleTest
__________
results = 
  1×2 TestResult array with properties:

    Name
    Passed
    Failed
    Incomplete
    Duration
    Details

Totals:
   2 Passed, 0 Failed, 0 Incomplete.
   11.9555 seconds testing time.

참고 항목

관련 항목