Preface

테스트 자동화에 대한, 필요성, 중요성은 이제 아무리 말해도 입아프다.

Instruments를 이용한 UI Test 자동화는 TDD로 사용하기에는 조금 부족하다. 
Xcode에 Integrated되어 있지 않기 때문에, Test Code와 Real Code간의 전환등이 쉽지 않고, 
Build & Run의 Step이 자동화 되어 있지 않기에 여러모로 불편함이 많다.

개발 부서에서도 당연히 사용하게 되겠지만, QA부서에서의 사용성이 더 부각 된다고나 할까,
여튼 한번 시작해보겠습니다.

UI Automation with Instruments

UIKit 기반 Application용 Test 자동화
Accessibility를 통한 UI Element 접근
Test Script로 JavaScript사용

Instruments에서는 JavaScript를 사용한다. 
JavaScript는 이해하기 쉽고, 널리 알려져 있는 Language다. 즉 그만큼 접근성이 좋다는 뜻이다.

How to automate an Application

1. Automation Template을 이용한 Trace Document 생성


Instruments Template중에 Automation Template을 사용하여 Trace Document를 생성한다. 

2. Target 설정

Target으로는 실제 Device , iOS Simulator둘다 사용할 수 있는데, 이포스트에서는 iOS Simulator를 사용한다. 


"Choose Target"을 선택하여, Test 대상이 될 Application Package(XXXX.app) 을 선택
 Target을 선택한 후 Record 버튼을 누르면 iOS Simulator가 나타남과 동시에 App이 실행된다.

이 포스트에서 사용한 Sample Project는 Apple Developer 사이트 에서 제공하는 Recipes Sample이다.


3. Recipes를 추가하는 Test Script 만들기


Script를 불러와서 Edit는 가능하지만, Create할 수 없다.
적당한곳에서 Test.js파일을 생성하고 불러 온후 "Edit"를 눌러서 Editor를 켠다.


우리가 수행할 Test Phase는 아래와 같다. 

"+" UIBarButtonItem을 터치 
Recipe Name 입력
"Done" UIBarButtonItem 터치
"Recipes" 터치
추가한 Recipe 확인

"+" UIBarButtonITem 터치하기

   UIATarget.localTarget().frontMostApp().mainWindow().navigationBar().buttons()["Add"].tap();

    app.navigationBar().withName("Add Recipe");


Recipe Name 입력

UIATarget.localTarget().frontMostApp().mainWindow().textFields()[0].setValue(name);

"Done" UIBarButtonItem 터치

target.delay(2);

app.navigationBar().rightButton().tap();


"Recipes" 터치

    target.delay(2);

    app.navigationBar().leftButton().tap();


추가한 Recipe 확인

 app.navigationBar().withName("Recipes");

    var cell = app.mainWindow().tableViews()[0].scrollToElementWithPredicate("name beginswith '"+name+"'");

    

    if(cell.isValid() ) {

        UIALogger.logPass(testName);

    }

    else {

        UIALogger.logFail(testName);

    }


TestScript작성법은 다루지 않았는데, 다음 포스트에 할 예정이다. 


"UI Automation Reference" "Instruments User Guide" 을 참고 하면 어렵지 않게 이해할 수 있다. 


4. UI Test




5. Test Result



스크립트 로그 창에, Log Pass/Fail이 표기 된다. 





+ Recent posts