2008-09-18 24 views
6

Tôi có một máy ảo (VMware) với cài đặt Mercury Quick Test Professional 9.2. Tôi có một kịch bản để kiểm tra một ứng dụng, được viết bằng VB.NET bằng cách sử dụng thư viện Infragistics.Mercury Quick Test Pro và máy ảo: Hoạt động từ một máy khách nhưng không khác

Nếu tôi truy cập máy ảo này bằng máy tính xách tay của tôi (sử dụng Remote Desktop), mọi thứ hoạt động tốt, tập lệnh hoàn tất mà không gặp sự cố. Máy tính xách tay của tôi chạy XP, với chủ đề Windows Classic.

Nếu tôi truy cập máy ảo này bằng máy khác (sử dụng Remote Desktop), tập lệnh khởi động tốt, nhưng dừng lại nửa chừng mà không có thông báo lỗi từ QTP, không có gì. Máy này chạy XP, với chủ đề Windows Classic.

Một sự khác biệt giữa hai thiết lập là kích thước của màn hình, máy tính xách tay là 1920x1280, máy khác 1280x1024.

Bước mà tập lệnh ngừng liên quan đến việc chọn hộp kiểm trong UltraWinGrid. Hộp kiểm được hiển thị, nằm trên màn hình trong cả hai trường hợp.

Có ai có vấn đề này trước đây hay có bất kỳ ý tưởng nào về lý do hành vi này khác nhau giữa hai máy?

Cảm ơn.

Trả lời

5

OK. Tôi đã tìm thấy vấn đề. Trong thực tế, kịch bản đã thất bại âm thầm bởi vì đó là những gì người viết kịch bản nói với nó để làm. Nó không thể xác nhận một cái gì đó đã được tắt màn hình, do đó, kịch bản không thành công.

Vấn đề là định nghĩa QTP của 'tắt màn hình'. Tôi có hai màn hình gắn liền với máy tính xách tay của tôi, màn hình cho máy tính xách tay (1920x1200) và màn hình khác (1280x1024). Tôi kết nối với VM cho QTP bằng cách sử dụng máy tính từ xa, và nó sử dụng các thiết lập của màn hình cho máy tính xách tay. Điều này có nghĩa là khi tôi khởi chạy kịch bản QTP của mình và di chuyển sang màn hình khác, nó không vừa, vì vậy màn hình không còn được phóng to nữa và đối tượng là một phần tắt màn hình, vì vậy không thể tìm thấy.

Khắc phục rất đơn giản: trong Remote Desktop, sử dụng tab Hiển thị và đặt kích thước của màn hình thành kích thước là 1280x1024 và QTP không gặp bất kỳ sự cố nào khác.

Voilà.

+0

Tôi đoán có thể nhìn thấy là tương đối :) Tôi là RDP từ Linux, vì vậy tôi đã không chạy vào vấn đề cụ thể, cho rằng cửa sổ RDP của tôi không thể thay đổi kích cỡ sau khi tôi bắt đầu ... – tloach

1

Nếu bạn không sử dụng Chế độ chuyên gia và/hoặc cho phép QTP thực hiện hầu hết công việc để tạo đối tượng kho lưu trữ của bạn, thì có thể tham chiếu mọi thứ theo pixel.

Tôi tạo tất cả các đối tượng kho lưu trữ của mình bằng tay, xem nguồn (trong trường hợp kiểm tra ứng dụng web tự động) và sử dụng Object Spy để được trợ giúp khi cần. Tôi làm cho một điểm để không có bất kỳ thông tin định vị như một phần của định nghĩa đối tượng của tôi, vì chính lý do bạn đang chạy vào.

Đối với các phần của ứng dụng web tương tác với Windows (mở tệp để tải lên, v.v.) Spy đối tượng là điều cần thiết cho bản dùng thử và lỗi cần thiết để tạo mã định danh duy nhất để tạo đối tượng kho lưu trữ. Nhưng nó có thể được thực hiện.

EX1: File Browse Dialog
text = "Chọn tập tin"
nativeclass = # 32.770 (rõ ràng là một số Windows VooDoo cho một hộp thoại mở tập tin?)

Ex2: Tên file textbox trong Duyệt thoại:
nativeclass = "Edit"
văn bản kèm theo "file & tên:" (? hơn Windows VooDoo Nó woudn't làm việc cho tôi mà không có sự "&")

EX3: Mở nút trong hộp thoại:
text = "& Open"
lớp đối tượng = "Nút"

Good Luck!

0

QTP không không sử dụng tọa độ màn hình ngoại trừ phương sách cuối cùng, nếu đối tượng được xác định là đối tượng cấp cao (SwfTable trong trường hợp này) bạn nên OK, tuy nhiên QTP không nhận ra đối tượng bị rơi đến WinObject và tọa độ màn hình.

Nếu bạn đang sử dụng Infragistics thì bạn nên biết rằng họ mở rộng sự hỗ trợ của QTP với sản phẩm TestAdvantage có thể sẽ giải quyết được vấn đề của bạn.


Edit: @MatthieuF nói:

Trong thực tế, chúng tôi sử dụng các plugin Infragistics cho QTP, và chúng tôi vẫn có vấn đề

Bạn có thể cho tôi một ví dụ về một dòng không thành công?

0

Một vài điều:

Bạn sẽ có thể gỡ lỗi trên máy ảo dễ dàng - chỉ cần chờ cho nó dừng lại, đi vào kho lưu trữ đối tượng của bạn, và xem nếu nó có thể xác định các đối tượng. Nếu không thì sử dụng đối tượng gián điệp để tìm ra những thuộc tính khác nhau giữa các hệ điều hành. Nếu có sự khác biệt thì bạn luôn có thể đặt thuộc tính đó thành cụm từ thông dụng và kiểm tra cả hai khả năng.

Giả sử đó không phải là vấn đề chúng tôi đã gặp phải sự cố khi sử dụng máy tính từ xa với QTP nếu cửa sổ Từ xa bị đóng hoặc thu nhỏ. Đối với chúng tôi, đó là một vấn đề mà clipboard không thể thay đổi khi một cửa sổ RDP không hiển thị, nhưng có thể có những bất ngờ khác khi sử dụng QTP theo cách đó.

1

Điểm làm rõ: Bạn đã đề cập rằng QTP dừng không có thông báo lỗi. Điều đó cũng có nghĩa là tệp nhật ký kết quả kiểm tra cũng không có thông báo lỗi? Nếu nhật ký có bất kỳ thông tin nào, điều đó có thể hữu ích trong việc chẩn đoán sự cố. Bạn có thể chia sẻ các dòng mã tại điểm mà kịch bản không thành công?

Ngoài ra, máy tính từ xa sẽ thay đổi kích thước màn hình nền trên máy từ xa. Mặc dù các kịch bản QTP không được phối hợp dựa trên vốn, các câu lệnh riêng lẻ có thể được phối hợp dựa trên một đối tượng. Độ phân giải có thể là một vấn đề trong vấn đề đó. Ví dụ, hãy tưởng tượng bạn có một dòng như Button.Click (5, 150) được ghi lại trên một máy có độ phân giải cao hơn. Nhưng nếu bạn cố gắng phát lại nó trên một máy có độ phân giải thấp hơn, và 150 nằm ngoài giới hạn của vật thể ở độ phân giải thấp hơn, nó có thể gây ra vấn đề.

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