2011-01-24 34 views
5

Tôi đã googling rất nhiều để tìm giải pháp cho các vấn đề của tôi với UI Automation. Thay vào đó tôi thấy rằng gửi tóm tắt đẹp họ:Tôi làm cách nào để cải thiện Tự động hóa giao diện người dùng iPhone?

Không có cách nào để chạy thử nghiệm từ dòng lệnh (...)

Không có cách nào để thiết lập hoặc thiết lập lại trạng thái.. (...)

Một phần của vấn đề trước đó là UI Automation không có khái niệm kiểm tra riêng biệt. (...)

Không có cách nào để truy xuất kết quả chạy thử nghiệm theo chương trình. (...)

nguồn: http://pivotallabs.com/users/amilligan/blog/articles/1323-iphone-ui-automation-tests-a-decent-start

Vấn đề không. 3 có thể được giải quyết bằng hoa nhài (https://github.com/pivotal/jasmine-iphone)

còn các vấn đề khác thì sao? Có bất kỳ cải tiến nào được giới thiệu kể từ bài đăng đó (ngày 20 tháng 7 năm 2010) không?

Và một vấn đề nữa là đúng là chỉ có một phương pháp hiện có để chọn yếu tố giao diện người dùng cụ thể là thêm nhãn trợ năng vào mã nguồn ứng dụng?

Trả lời

5

Trong khi giao diện người dùng tự động hóa đã được cải thiện kể từ khi bài đăng đó được thực hiện, những cải tiến mà tôi thấy tất cả đều liên quan đến độ tin cậy chứ không phải là chức năng mới.

Anh ấy đưa ra những điểm tốt về một số vấn đề với việc sử dụng Giao diện người dùng tự động hóa để kiểm tra nghiêm túc hơn. Nếu bạn đọc các ý kiến ​​sau này, có một số lượng đáng kể các cuộc thảo luận về các cách để giải quyết những vấn đề này.

Chủ đề chạy thử nghiệm từ dòng lệnh được thảo luận trong this question, trong đó giải pháp tiềm năng được gợi ý tại in the Apple Developer Forums. Tôi đã không cố gắng điều này bản thân mình.

Bạn có thể xuất kết quả của thử nghiệm sau khi chạy thử, bạn có thể phân tích cú pháp ngoại tuyến.

Cuối cùng, liên quan đến câu hỏi cuối cùng của bạn, bạn có thể giải quyết các yếu tố giao diện người dùng mà không chỉ định cho họ nhãn trợ năng. Nhiều điều khiển UIKit phổ biến có thể truy cập theo mặc định, vì vậy bạn có thể nhắm mục tiêu chúng theo tên. Nếu không, bạn có thể chọn ra quan điểm từ vị trí của họ trong hệ thống phân cấp hiển thị, như trong ví dụ sau:

var tableView = mainWindow.tableViews()[0]; 

Như mọi khi, nếu có điều gì đó mất tích từ công cụ UI Automation đó là quan trọng với bạn, file an enhancement request để nó có thể tìm đường vào phiên bản tiếp theo của SDK.

+0

Cảm ơn rất nhiều câu trả lời chi tiết. Tôi sẽ đọc các trang bạn đề cập đến sau này, nhưng sau khi nhanh chóng nhìn tôi nghĩ rằng họ có thể giúp tôi. Về "kiểm tra nghiêm trọng" - đây là trường hợp của tôi, vì tôi sẽ tích hợp quá trình này với máy chủ CI của tôi. –

+1

Xin lỗi, nhưng tích hợp dụng cụ trong CI sẽ bị đau ở mông. Hiện tại tôi đang sử dụng Sikuli (sikuli.org) để hack các vấn đề mà bạn đang trỏ, nhưng tôi vẫn không đưa nó vào CI. Đối với CI tôi sẽ sử dụng phương pháp này http://cocoawithlove.com/2009/12/sample-iphone-application-with-complete.html – yoosiba

+0

yoosiba: Bạn thực sự thích sử dụng một cách tiếp cận chung chung như Sikuli? Làm thế nào bạn sẽ so sánh những nỗ lực thời gian khi viết các trường hợp kiểm tra gui tiêu chuẩn cho UIAutomation và Sikuli? –

0

Hãy thử kiểm tra cấu trúc phân cấp phần tử, bảng có thể được đặt trên UIScrollView.

var tableV = mainWindowTarget.scrollViews()[0].tableViews()[0].scrollToElementWithName("Name of element inside the cell"); 

kịch bản trên sẽ làm việc ngay cả những phần tử là trong phòng giam 12 (nhưng tên nên giống hệt nhau như đã đề cập bên trong tế bào)

0

Check-out http://lemonjar.com/blog/?p=69 Nó nói về làm thế nào để chạy UIA từ dòng lệnh

+1

Chào mừng bạn đến với Stack Overflow! Trong khi điều này về lý thuyết có thể trả lời câu hỏi, [nó sẽ là thích hợp hơn] (http://meta.stackexchange.com/q/8259) để bao gồm các phần thiết yếu của câu trả lời ở đây, và cung cấp liên kết để tham khảo. – Kev

+0

đồng ý với Kev. nhưng đó là tin tốt rằng sdk mới cuối cùng đã hỗ trợ cmd. cảm ơn vì tin tốt! –

3

Bạn đã thử IMAT chưa? https://code.intuit.com/sf/sfmain/do/viewProject/projects.ginsu.Nó sử dụng sdk javascript gốc mà Apple cung cấp và có thể được kích hoạt thông qua dòng lệnh hoặc Instruments.

Để đối phó với mỗi câu hỏi của bạn:

Không có cách nào để chạy thử nghiệm từ dòng lệnh (...)

của Apple hiện nay cung cấp này.. Với IMAT, bạn có thể khởi động các bài kiểm tra thông qua dòng lệnh hoặc qua Thiết bị. Trước khi Apple cung cấp giao diện dòng lệnh, chúng tôi đã sử dụng AppleScript để đưa ra các công cụ và sau đó khởi động các thử nghiệm - khó chịu.

Không có cách nào để thiết lập hoặc đặt lại trạng thái. (...)

Kiểm tra sơ đồ trạng thái này: https://code.intuit.com/sf/wiki/do/viewPage/projects.ginsu/wiki/RecoveringFromTestFailures

phần của vấn đề trước đó là giao diện người dùng tự động không có khái niệm về kiểm tra rời rạc. (...)

Đồng ý. Cả IMAT và tuneup.js (https://github.com/alexvollmer/tuneup_js#readme) đều cho phép điều này.

Không có cách nào để truy lục kết quả chạy thử nghiệm theo chương trình. (...)

Đọc tệp plist ở cuối không phải là nhỏ. IMAT cung cấp một jUnit như báo cáo sau khi chạy thử nghiệm bằng cách đọc tệp plist và điều này được chọn bởi Công cụ CI của tôi (Teamcity, Jenkins, CruiseControl)

+0

Có một liên kết đến trang này vẫn có trên trang githhub của tôi. https://github.com/rdpfeffer/IMAT –

+1

btw, nó sẽ là tuyệt vời nếu bạn có thể chấp nhận một trong những câu trả lời ở đây ;-) @sogwiz dường như đã trả lời tất cả các mối quan tâm của bạn. –

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