2014-04-07 2 views
13

그래서 UI 자동화를 사용하여 내 앱에서 내 화면 추적 (Google 애널리틱스 사용)의 구현을 테스트 해 보았습니다.iOS의 UI 자동화로 화면 추적 테스트

최초의 생각은 추적 이벤트가 적절하게 전송되는지 확인하면서 화면을 관통하는 UI 스크립트를 작성하는 것이 었습니다. 가끔은보기 컨트롤러에서 모든 것을 작성할 수 없거나 예상 된 순서로 이벤트가 전달되지 않기 때문에 필요합니다. 어쨌든, 필자는이 앱의 측면을 테스트해야하며 UI 자동화가 답이라고 생각했습니다.

UI 자동화 도구를 사용하여 화면을 통과하는 스크립트를 구현했으며 올바르게 작동합니다. 코드를 더 간소화하고 따라하기 쉽게하기 위해 나는 심지어 tuneup js을 사용했다. 나는 같은 것을 가지고 기다리고 있었다 (일반적인 용어를, 구문 만 단순화) : 그러나

Being on screen X 
    Tap button A 
Expect screen Y and tracking event for the screen Y 

, 지금까지의 내가 확인 할 수 있었다으로 화면 추적을 테스트하는 것은 불가능 무언가가있다 UI 자동화 또는 뭔가 빠졌습니까?

새로운 뷰가로드 될 때마다 뷰 계층 구조의 맨 위에 머물러있는 보이지 않는 뷰를 작성하고 UI 자동화로 테스트 할 수 있도록 아이디어를 조금씩 보였습니다. ..

당신은 사람들에게 무엇을 제안합니까? 다른 UI 자동화 도구를 찾으십니까? 대신 단위 테스트를 수행합니까? 어떤 도움

+0

Google Analytics 수동 테스트가 가능합니까?어쩌면 세 가지 장치를 각각 세 번씩 테스트 할 수 있습니다. 파트너와 내가했던 방식은 처음 1-2 일 동안 다운로드 한 데이터를 분석하고 그들이 방문한 페이지를 친구에게 물어 보는 것이 었습니다. – aug2uag

+0

GoogleAnalytics를 시뮬레이터에서 사용할 수있는 참조 : http://stackoverflow.com/a/19934264/1546710 – aug2uag

+1

회귀 테스트로 서버에서 실행할 수 있도록 자동으로 만들고 싶습니다. 나는 이것을 일종의 워크 플로우 테스트에 포함 시켜서 아무 것도 깨지지 않았는지 확인하고자했다. –

답변

2

당신은 UIAlertView를 사용하고 그 경고를 검사 할 수있는 사전에

감사합니다. 분석 이벤트를 보내는 대신 경고를 팝업하여 UIAutomation에서 확인할 수 있습니다.

AnalyticsKit과 같은 애널리틱스 추상화 프레임 워크는 분석 제공자를 쉽게 변경할 수있는 방법을 제공합니다. AnalyticsKit도 그 예입니다 (AnalyticsKitDebugProvider 클래스를 살펴보십시오). 따라서 프로덕션 코드의 변경 사항은 최소화됩니다. 당신은 당신이오고 알림을 테스트 할 수 있습니다 UIAutomation에서 분석

id<AnalyticsKitProvider> provider 
#ifdef USE_UI_AUTOMATION_ANALYTICS 
provider = [[TestAutomationProvider alloc] init]; 
#else 
provider = [[RealProvider alloc] initWithApiKey:API_KEY]; 
#endif 

[AnalyticsKit initializeLoggers:@[provider]]; 

의 초기화를 제어하기 위해 빌드 변수를 설정 곳

당신은 빌드 구성을 사용할 수 있습니다. 당신이이 경고 기다리고 마침내 나타나면 테스트 결합이

function checkForAlert() 
{ 
    var alert = null; 
    retry(function() { 
      log("wait until alert appaers"); 
      alert = UIATarget.localTarget().frontMostApp().alert(); 
      assertNotNull(alert, "No alert found"); 
      assertTrue("The name you can choose for the alert" == alert.name()); 
      }, 5, 1.0); 
    return alert; 
}; 

같은 함수를 작성하기 위해 tuneup.js 패키지 중 assertions.js을 활용할 수 있습니다. 경고가 나타나지 않으면 테스트가 실패합니다. 테스트에서

다음과 같은 방법이 사용

var analyticAlert = checkForAlert() // if alert appears it will be in the var, otherwise the test fails at this point. 
analyticAlert.buttons()["OK"].tap(); // dismiss the alert 

당신은 또한 onAlert 핸들러를 설정해야이 작업을하려면. 그렇지 않으면 UIAutomation이 경고를 즉시 닫으려고합니다. 테스트 코드를 작성하기 전에이 작업을 수행해야합니다. 경고 처리는 UIAutomation 문서에 설명되어 있습니다.

function MyOnAlertHandler(alert) 
{ 
    if("The name you choose"==alert.name()) // filter all alerts created by analytics provider 
    { 
     return true; // handle alert in your test 
    } 

    return false // automaticly dismiss all other 
} 

UIATarget.onAlert = MyOnAlertHandler; // set the alert handler 
+0

답변과 AnalyticsKit을 제안 해 주셔서 감사합니다.하지만 흥미로운 부분이 있지만 설명서가 부족합니다. 나중에 그들의 코멘트를 다시 확인해야합니다. UIAlertView를 갖는 아이디어는 숨겨진 시각을 갖는 것과 매우 흡사하며 내 것보다 더 재미 있고 쉽게 달성 될 수 있습니다. 그러나 나는 이러한 경고와 사용자에게 오류 또는 정보를 알리는 데 사용하는 경고를 구별해야합니다. 이것에 무게를 달 수 있니? –

+0

나는 당신의 검사가 어떻게 생겼는지에 대해 더 자세히 설명하려고 노력했다. HTH – sofacoder