2012-05-23 21 views
5

Trong khoảng một năm rưỡi, tôi đã làm việc với SilkTest, một công cụ tự động hóa GUI, cho cả ứng dụng web và máy tính để bàn. Nó mô phỏng đầu vào chuột và bàn phím, mà cuối cùng mô phỏng hành vi người dùng cuối. Tuy nhiên, tôi thấy rằng nó là một chút flaky; Các phương thức Button.Click() hoặc DialogBox.Close() gọi là hoạt động tốt gấp 9 lần liên tiếp dường như thất bại trong cuộc gọi thứ 10, chỉ để quay lại làm việc vào ngày 11. Thông thường, tôi sẽ chỉ viết một câu hỏi với SilkTest (hoặc ứng dụng dưới Test, hoặc hệ điều hành, hoặc những gì có bạn) nhưng sau đó tôi thấy rằng có những vấn đề tương tự với các công cụ tự động hóa GUI khác như Selenium:Tại sao các công cụ GUI tự động lại quá mỏng manh?

Selenium Click() fails with Anchor Elements

Selenium Click() fails clicking button object

tôi biết rằng cho các ứng dụng máy tính để bàn, mỗi giao diện điều khiển/hộp thoại có một yếu tố thẻ liên kết với nó (ít nhất là trong GUI dựa trên Windows) và cho các trang web có một hệ thống phân cấp mô hình đối tượng lĩnh vực yếu tố trang. Tôi đoán là những công cụ này đôi khi chạy vào các vấn đề điều hướng các cấu trúc phân cấp này và tìm các phần tử và điều khiển duy nhất. Nhưng những gì đang xảy ra ở đây? SilkTest là một gói phần mềm thương mại tương đối cũ, trong khi selen là tương đối mới, nguồn mở và không ngừng phát triển. Thực tế là cả hai đều có thể có vấn đề tương tự đặt ra một vài lá cờ với tôi.

Ngoài ra, đây có phải là trường hợp với các công cụ kiểm tra GUI khác không? Hay tôi chỉ có một trải nghiệm hơi khác thường?

Trả lời

6

Có 2 điều ở đây mà bạn đang nói đến, trước tiên là khái niệm tìm kiếm một đối tượng trong ứng dụng đang được thử nghiệm mà bạn muốn tự động hóa. Mô tả của bạn về cách SilkTest (và các công cụ khác) thực hiện điều này là khá chính xác, tức là miễn là có cái gì đó mà phần mềm tự động hóa có thể sử dụng để xác định sự kiểm soát thì bạn vẫn ổn. Điều thứ hai là tại sao tự động hóa tự động thất bại một cách ngẫu nhiên, vì công cụ đã không báo cáo rằng nó không thể tìm thấy sự kiểm soát thì nó phải nghĩ rằng nó đã gửi hành động thích hợp đến ứng dụng, ví dụ: Nhấp chuột hoặc Loại. Điều này có thể là ứng dụng chưa sẵn sàng chấp nhận hành động mà bạn đang gửi, điều này tương tự như bạn đang cố gắng nhấp vào thứ gì đó "trước khi nó sẵn sàng", trong trường hợp này ứng dụng có thể quyết định đệm đầu vào hoặc loại bỏ đầu vào.

Vì vậy, bạn khắc phục điều này như thế nào? Một cách sẽ là sử dụng các khả năng của công cụ để cố gắng làm việc khi ứng dụng đã sẵn sàng cho đầu vào thay vì gửi cho nó một luồng đầu vào một cách mù quáng. SilkTest có khả năng cho phép bạn làm điều này (cũng như TestPartner). Tôi không thể bình luận về Selen vì nó là thứ mà tôi chưa từng sử dụng. Một cách đơn giản để kiểm tra điều này là chèn tạm dừng trong vài giây trước hành động vi phạm, sau đó chạy vòng lặp này để xem việc này có giải quyết được vấn đề hay không, nếu đây là trường hợp thì đó là vấn đề của bạn . Nếu điều này không khắc phục được sự cố thì có điều gì đó khác xảy ra mà bạn cần liên hệ với nhà cung cấp công cụ kiểm tra. Hãy nhớ rằng các ứng dụng ngày càng trở nên phức tạp, tức là đa luồng, thông tin liên lạc, bất kỳ ứng dụng nào trong số này có thể làm cho quá trình đồng bộ hóa tự động không thực hiện được các hành động thất bại.

Hy vọng điều đó sẽ hữu ích.

+0

Tôi đồng ý rằng có nhiều vấn đề khác nhau: 1) thực hiện kiểm tra ổn định (luôn kiểm tra các điều khiển có thể nhận đầu vào - một số hoạt động cũng mất tùy ý) 2) giới hạn công cụ - nơi không thể thực hiện được. Ngoài ra nhiều công cụ cố gắng để có một số logic nội bộ thông minh xung quanh 1) và cho 2) bạn chỉ cần có để mua sắm xung quanh, Silk Test không phải là tốt nhất ở đó. –

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