2014-04-07 18 views
13

Vì vậy, tôi đã có ý tưởng này để kiểm tra việc triển khai theo dõi màn hình (với Google Analytics) trên ứng dụng của tôi bằng cách sử dụng tự động hóa giao diện người dùng.Thử nghiệm theo dõi màn hình với tự động hóa giao diện người dùng trên iOS

Ý tưởng ban đầu là tạo tập lệnh UI để xem qua màn hình trong khi kiểm tra xem các sự kiện theo dõi có được gửi tương ứng hay không. Tôi cần điều này như đôi khi tôi không thể soạn tất cả mọi thứ ra khỏi bộ điều khiển xem hoặc các sự kiện không được chuyển tiếp theo thứ tự mong đợi. Bất kể điều đó, tôi nên kiểm tra khía cạnh này của ứng dụng của tôi là tốt và tôi nghĩ rằng tự động hóa giao diện người dùng là câu trả lời.

Tôi đã triển khai tập lệnh để xem qua màn hình bằng công cụ tự động hóa giao diện người dùng và điều này hoạt động chính xác. Tôi thậm chí đã đi xa như sử dụng tuneup js để làm cho mã được sắp xếp hợp lý hơn và dễ dàng hơn để làm theo. tôi đã mong có một cái gì đó tương tự (trong điều kiện chung, cú pháp chỉ là một việc đơn giản hóa):

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

Tuy nhiên, theo như tôi đã có thể kiểm tra, kiểm tra theo dõi màn hình là cái gì đó không phải là có thể với tự động hóa giao diện người dùng. Hoặc tôi có thiếu gì đó không?

Tôi đã nghĩ đến việc tạo chế độ xem ẩn ở trên tất cả các phân cấp chế độ xem và thay đổi tên mỗi lần màn hình mới được tải để cho phép tôi kiểm tra nó với tự động hóa giao diện người dùng. ..

Mọi người đề xuất gì? Tìm một công cụ tự động hóa giao diện người dùng khác? Làm nó với thử nghiệm đơn vị thay thế?

Cảm ơn bạn đã giúp đỡ

+0

Bạn có thể thực hiện kiểm tra thủ công của Google Analytics không?Có lẽ bạn có thể kiểm tra ba thiết bị ba lần khác nhau; cách đối tác của tôi và tôi đã làm là phân tích dữ liệu từ một hoặc hai ngày tải xuống đầu tiên và hỏi bạn bè những trang họ đã truy cập. – aug2uag

+0

tham chiếu mà GoogleAnalytics có thể được sử dụng trong trình mô phỏng: http://stackoverflow.com/a/19934264/1546710 – aug2uag

+1

Tôi muốn thực hiện việc này tự động để tôi có thể chạy nó trong máy chủ dưới dạng thử nghiệm hồi quy. Tôi muốn bao gồm điều này trong một loại thử nghiệm công việc để kiểm tra xem không có gì bị hỏng. –

Trả lời

2

Bạn có thể sử dụng UIAlertView và kiểm tra các cảnh báo đó. Thay vì gửi các sự kiện phân tích, bạn có thể bật lên cảnh báo để bạn có thể kiểm tra nó trong UIAutomation.

Các khung trừu tượng Analytics như AnalyticsKit cung cấp cách dễ dàng để thay đổi nhà cung cấp phân tích. Và AnalyticsKit thậm chí có một ví dụ cho điều đó (hãy xem lớp AnalyticsKitDebugProvider). Vì vậy, những thay đổi đối với mã sản xuất của bạn là tối thiểu.

Bạn có thể sử dụng một cấu hình xây dựng nơi bạn thiết lập một biến xây dựng để kiểm soát việc khởi tạo phân tích của bạn

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

[AnalyticsKit initializeLoggers:@[provider]]; 

Trong UIAutomation bạn có thể kiểm tra sự tỉnh táo sắp tới. Bạn có thể sử dụng assertions.js trong gói tuneup.js để viết một chức năng như thế này

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; 
}; 

Kết hợp này chờ cảnh báo và thử nghiệm nếu nó xuất hiện cuối cùng. Nếu cảnh báo không xuất hiện, kiểm tra sẽ không thành công.

Trong thử nghiệm của bạn, bạn sử dụng này theo cách sau:

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 

Để thực hiện việc này, bạn cũng cần phải thiết lập một handler onAlert. Nếu không, UIAutomation sẽ cố gắng loại bỏ cảnh báo của bạn ngay lập tức. Điều này phải được thực hiện trước khi kiểm tra mã của bạn. Xử lý cảnh báo được giải thích trong tài liệu 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

Cảm ơn bạn đã trả lời và đề xuất AnalyticsKit, tuy nhiên, có vẻ thú vị là thiếu một số tài liệu. Phải kiểm tra lại nhận xét của họ sau. Ý tưởng về việc có một UIAlertView rất giống với một cái nhìn ẩn và có vẻ thú vị hơn và dễ dàng đạt được hơn tôi. Tuy nhiên tôi phải phân biệt giữa các cảnh báo này và những thông báo tôi sử dụng để giao tiếp các lỗi hoặc thông tin cho người dùng. Bạn có thể cân nhắc điều này không? –

+0

Tôi đã cố gắng phác thảo thêm các thử nghiệm của bạn sẽ trông như thế nào. HTH – sofacoder

Các vấn đề liên quan