Thử nghiệm tự động các ứng dụng dựa trên thiết bị đầu cuối với Rational Functional Tester

Cách sử dụng Mở rộng với các ứng dụng dựa trên thiết bị đầu cuối

Nhiều ứng dụng phần mềm, hỗ trợ nhiều nền tảng, cung cấp giao diện bàn điều khiển. Một kỹ sư đảm bảo chất lượng hoặc người thử nghiệm phần mềm luôn cần sử dụng bàn điều khiển bằng cách gõ trên bàn phím của trình mô phỏng đầu cuối. Mở rộng của IBM Rational Functional Tester cho các ứng dụng dựa trên thiết bị đầu cuối (IBM® Rational® Functional Tester Extension for Terminal-based Applications) sẽ giúp bạn tạo ra các kịch bản lệnh thử nghiệm để tự động hóa các trường hợp thử nghiệm về ứng dụng máy tính chủ. Bài này giải thích cách sử dụng công cụ này, vì vậy bạn có thể thực hiện thử nghiệm ứng dụng dựa trên thiết bị đầu cuối vừa dễ hơn lại vừa tự động nữ.

Shi Ming Qu, Kỹ sư phần mềm, IBM

Shi Ming Qu photoShi Ming Qu là thành viên của nhóm Lotus Notes và Lotus Domino của IBM ở Bắc Kinh, Trung Quốc, nơi anh chủ yếu làm về thử nghiệm Domino. Anh cũng có kinh nghiệm về thử nghiệm tự động hóa GUI, thử nghiệm quy mô toàn cầu, thử nghiệm sản phẩm phần mềm đa ngôn ngữ và Lotus Notes.



17 01 2012

Tại sao các ứng dụng dựa trên thiết bị đầu cuối vẫn còn quan trọng

Các ứng dụng phần mềm càng ngày càng trở nên phức tạp hơn trong các giao diện người dùng của chúng. Nhưng vẫn còn nhiều ứng dụng dựa vào thiết bị đầu cuối và các ứng dụng này đóng một vai trò quan trọng trong ngành công nghiệp phần mềm, vì chúng luôn luôn được sử dụng trên các máy chủ.

Một ứng dụng dựa trên thiết bị đầu cuối thường được thiết kế cho các nền tảng khác với Microsoft Windows, ví dụ như Linux, IBM® AIX® và Solaris. Ứng dụng này không có giao diện người dùng, vì vậy người dùng tương tác với ứng dụng bằng cách nhập một lệnh có trả về trực tiếp kết quả đầu ra bằng văn bản. So với các giao diện người dùng đồ họa (GUI), các ứng dụng này có trọng số nhẹ, đòi hỏi tài nguyên hệ thống ít hơn và khởi động nhanh hơn.

Có thể khởi chạy các ứng dụng dựa trên thiết bị đầu cuối tại chỗ hoặc từ xa. Do đó, bạn có thể đăng nhập vào hệ thống từ xa, bằng cách sử dụng một bộ mô phỏng thiết bị đầu cuối, và sau đó khởi chạy ứng dụng bằng cách nhập vào các lệnh ở thiết bị đầu cuối. Ứng dụng này rất dễ điều khiển từ xa miễn là có cài đặt bộ mô phỏng thiết bị đầu cuối trên hệ thống.


Tổng quan về mở rộng dựa trên thiết bị đầu cuối

IBM® Rational® Functional Tester là một công cụ thử nghiệm chức năng tự động theo hướng-đối tượng. Công cụ này nổi tiếng về thử nghiệm tự động hóa GUI. Phiên bản 8.0 cung cấp một công cụ mở rộng dựa trên thiết bị đầu cuối mới có thể giúp bạn thử nghiệm các ứng dụng dựa trên thiết bị đầu cuối. Nó hỗ trợ thử nghiệm chức năng cho các kiểu thiết bị đầu cuối sau:

  • IBM® pSeries® (các thiết bị đầu cuối ảo, như VT mặc định, VT100, VT420-7, VT420-8, VT UTF-8)
  • IBM® zSeries® (máy tính lớn, như TN3270, TN3270E)
  • IBM® iSeries® (IBM® AS/400®, như TN5250)

Công cụ này giống như một bộ mô phỏng thiết bị đầu cuối, trong đó nó có thể hoạt động như một máy khách để kết nối với máy tính chủ. Nó được nhúng trong phần mềm thử nghiệm và dựa vào Java, vì vậy nó rất dễ tự động hóa thử nghiệm với Rational Functional Tester.


Khởi chạy công cụ mở rộng dựa trên thiết bị đầu cuối

Có ba cách để khởi chạy công cụ mở rộng.

Sử dụng biểu tượng

Bạn có thể nhấn vào biểu tượng khởi động trên thanh công cụ, như trong Hình 1.

Hình 1. Khởi chạy công cụ mở rộng, ví dụ 1
Phần màn hình hiển thị biểu tượng chớp sét được chọn

Sử dụng trình các trình đơn

Bạn có thể sử dụng các trình đơn để khởi chạy Application Configuration Tool (Công cụ cấu hình ứng dụng):

  1. Nhấn Configure (Cấu hình) trong thanh trình đơn, rồi chọn Configure Applications for Testing (Cấu hình các ứng dụng để thử nghiệm) từ trình đơn thả xuống (Hình 2).
  2. Chọn và chạy mở rộng bằng cách chọn Extension for Terminal Applications (Mở rộng với các ứng dụng thiết bị đầu cuối) từ danh sách các ứng dụng, rồi nhấn Run (Hình 3).
Hình 2. Khởi chạy công cụ mở rộng, ví dụ 2
Hiển thị các lựa chọn thanh công cụ và trình đơn thả xuống
Hình 3. Khởi chạy công cụ mở rộng, ví dụ 2
Thông tin chi tiết với ứng dụng đã chọn ở giữa

Sử dụng mã tự động hóa

Bạn có thể khởi chạy công cụ mở rộng theo mã tự động hóa của bạn. Bạn có thể thêm mã trong Liệt kê 1 vào phần tự động hóa của bạn để khởi chạy công cụ trong lúc thử nghiệm tự động của bạn.

Liệt kê 1. Khởi chạy công cụ mở rộng bằng cách sử dụng mã, ví dụ 3
com.rational.test.ft.script.RationalTestScript.
       startApp("Extension for Terminal Applications");

Mã này gọi startApp của lớp RationalTestScript. Tham số là tên của công cụ. Lưu ý là tên có phân biệt chữ hoa, chữ thường.

Mẹo nhỏ:
Nếu bạn muốn phát triển tự động hóa của mình để thử nghiệm các ứng dụng bàn điều khiển, thì đây là sự lựa chọn tốt nhất để khởi chạy mở rộng.


Sử dụng mở rộng của Rational Functional Tester

Sau khi công cụ mở rộng được khởi chạy, bạn có thể thấy cửa sổ được hiển thị trong Hình 4.

Hình 4. Mở rộng với cửa sổ của các ứng dụng dựa trên thiết bị đầu cuối
Ảnh chụp màn hình cửa sổ thoại

Ô trên cùng trong cửa sổ này là thông tin về cấu hình kết nối (Connection configuration). Khung nhìn thiết bị đầu cuối ở ô dưới cùng. Các phím chức năng được hiển thị như các nút nằm ngang ở phía dưới cùng. Bạn có thể nhập địa chỉ máy tính chủ, chọn loại thiết bị đầu cuối, quy định một cổng kết nối, chọn một trang mã và chọn kích thước màn hình từ ô trên cùng. Khi bạn đã kết nối với một máy tính chủ, thông tin sẽ hiển thị trong khung nhìn của bàn điều khiển màu đen ở ô dưới cùng và ô dưới cùng sẽ mở rộng tự động, như trong Hình 5.

Hình 5. Khung nhìn màn hình khi được kết nối với máy tính chủ
Ô mày đen lấp đầy màn hình khi đã kết nối

Việc sử dụng công cụ này phổ biến nhất là kết nối với một máy tính chủ. Bạn có thể lưu, tải và chia sẻ các cấu hình máy tính chủ phổ biến bằng cách sử dụng một tệp đặc tính, và bạn có thể sử dụng các kịch bản lệnh để tải cấu hình kết nối. Bạn cũng có thể làm việc với nhiều thiết bị đầu cuối đồng thời.


Điều khiển công cụ mở rộng tự động

Rational Functional Tester là một công cụ rất tốt để phát triển và thử nghiệm tự động hóa GUI, đặc biệt là đối với các ứng dụng dựa trên-Java. Nó có thể nhận ra tất cả các đối tượng trong giao diện người dùng. Bạn có thể lấy các đối tượng thử nghiệm bằng cách sử dụng mã trong Liệt kê 2.

Liệt kê 2. Mã để lấy các đối tượng thử nghiệm
RootTestObject root = RationalTestScript.getRootTestObject();
TestObject[] o = root.find(SubitemFactory.atDescendant( property, value ));

Bản đồ đối tượng thử nghiệm trong Rational Functional Tester có cấu trúc cây và nó là mô hình đơn lẻ. Điều này có nghĩa là chỉ có một RootTestObject, là phần tử cha mẹ của tất cả các TestObject khác.

Dòng đầu tiên của mã trong Liệt kê 2 gọi getRootTestObject. Tất cả các TestObject có các đặc tính và các giá trị để cho bạn có thể xác định từng TestObject theo các đặc tính và các giá trị cụ thể của nó. Dòng thứ hai trong Liệt kê 2 gọi phương thức find để lấy TestObjects theo đặc tính và giá trị.

Tuy nhiên, TestObject có thể có rất nhiều đặc tính, vì vậy bạn cần chọn một hoặc nhiều đặc tính để chỉ mô tả đối tượng này để tìm ra nó. Rational Functional Tester cung cấp một công cụ để lấy các đặc tính và các giá trị của các TestObject.

Trong ảnh chụp màn hình trong Hình 6, bạn có thể thấy rằng công cụ này nhận được các đặc tính và các giá trị được liệt kê trong một bảng. Bạn có lẽ tự hỏi liệu đã liệt kê tất cả các đặc tính chưa. Câu trả lời là "hầu như lúc nào cũng thế", nhưng không phải tất cả các đặc tính này đều được công cụ này hiển thị.

Hình 6. Nhận đặc tính TestObject
Ảnh chụp màn hình của ánh xạ đối tượng cho TestObject cụ thể

Nếu bạn muốn xem tất cả các đặc tính, bạn có thể in tất cả các đặc tính và các giá trị bằng cách sử dụng mã, như ví dụ trong Liệt kê 3.

Liệt kê 3. Mã để in tất cả các đặc tính và các giá trị của một TestObject
TestObject o = getTheObject();
Object[] keys = o.getProperties().keySet().toArray();
for (Object key : keys) {
System.out.println(key.toString() + " : " + o.getProperty(key.toString()));
}

Trong Liệt kê 3, mã này gọi getTheObject, trả về cá thể của TestObject và sau đó nó lấy tất cả các khóa và chuyển đổi chúng thành một mảng. Trong vòng lặp for, nó in tất cả các đặc tính và các giá trị. Nhờ phân tích các kết quả này, bạn có thể quyết định các đặc tính nào mô tả tốt nhất TestObject, vì vậy bạn có thể sử dụng phương thức find để lấy đối tượng thử nghiệm.

Bây giờ bạn có thể lấy được các TestObject, bạn cần mô phỏng các hoạt động bàn phím hoặc chuột trên các TestObject này. Trong Rational Functional Tester, tất cả các phương thức tương tác TestObject có sẵn từ lớp GuiTestObject, vì vậy bạn có thể mô phỏng các hoạt động bàn phím hoặc các hoạt động chuột bằng cách sử dụng lớp này. Sau khi bạn nhận được TestObject bạn có thể tạo GuiTestObject, như trong Liệt kê 4.

Liệt kê 4. Nhấn vào TestObject
TestObject o  = getTheTestObjcet();
new GuiTestObject(o).click();

Như bạn biết, không có GUI nào cho các ứng dụng bàn điều khiển. Những người dùng tương tác với các ứng dụng dựa trên thiết bị đầu cuối bằng cách nhập văn bản rồi đọc thông tin phản hồi dạng văn bản từ bàn điều khiển. Nếu bạn muốn tương tác với các ứng dụng bàn điều khiển theo mã tự động hóa, bạn cần làm cho mã đó trở thành lệnh đầu vào cho thiết bị đầu cuối và nhận được thông tin phản hồi dạng văn bản từ thiết bị đầu cuối.

Như đã đề cập ở trên, GuiTestObject có thể mô phỏng các hoạt động của bàn phím. Vì vậy, nếu bạn đã tìm thấy TestObject, bạn có thể tạo GuiTestObject, rồi GuiTestObject cho phép bạn nhập các lệnh cho thiết bị đầu cuối. Thật dễ sử dụng.

Bây giờ chúng ta hãy xem cách nhận thông tin phản hồi từ thiết bị đầu cuối. Mặc dù bạn có thể cần nhận từng dòng đầu ra, theo mặc định, bạn chỉ có thể nhận các dòng đầu ra cuối cùng trong thiết bị đầu cuối. Để nhận được kết quả đầu ra của tất cả các dòng đơn trong bàn điều khiển, trong tệp ivory.properties, nằm trong Rational Functional Tester install directory\FunctionalTester\bin location, bạn cần thiết lập cờ sau:
rational.test.ft.fte.playback.vt_row_vp = true

Theo mặc định, cờ này được thiết lập là false (sai). Nếu bạn thiết lập cờ này là true (đúng), bạn có thể nhận được TestObject của mọi dòng đơn. Sau đó, bạn có thể nhận được các ký tự của mỗi dòng bằng đặc tính char của đối tượng hàng, như trong Hình 7.

Hình 7. Nhận được kết quả đầu ra của một hàng trên thiết bị đầu cuối
Ảnh chụp màn hình về nhận một đối tượng thử nghiệm hàng

Các mẹo nhỏ để tương tác với nhiều thiết bị đầu cuối

Để tương tác với nhiều thiết bị đầu cuối, điểm then chốt là có khả năng nhận biết từng cửa sổ của thiết bị đầu cuối. Dù bạn đã khởi chạy thiết bị đầu cuối mở rộng như thế nào chăng nữa, tất cả các đặc tính của cửa sổ thiết bị đầu cuối là như nhau. Tuy nhiên, công cụ mở rộng có thể lưu và mở các kết nối trong một tệp. Nếu bạn mở một kết nối từ một tệp, tên của hộp thoại thiết bị đầu cuối sẽ kết thúc bằng tên tệp, như thể hiện trong Hình 8.

Hình 8. Mở một kết nối thiết bị đầu cuối bằng cách sử dụng một tệp
Ảnh chụp màn hình về Kết nối đến máy tính chủ bằng tệp Connection

Có một đặc tính có tên là captionText cho hộp thoại thiết bị đầu cuối. Nhờ sử dụng đặc tính này, bạn có thể chỉ ra trong mã của mình hộp thoại bàn điều khiển nào bạn muốn sử dụng cho lần thử nghiệm này.


Các cách khác để sử dụng công cụ mở rộng

Trong bài này, bạn đã học cách sử dụng Mở rộng của Rational Functional Tester cho các ứng dụng dựa trên thiết bị đầu cuối để tự động hóa các ứng dụng thử nghiệm với một giao diện người dùng của bàn điều khiển. Công cụ này có thể được sử dụng rộng rãi, không chỉ dùng để thử nghiệm tự động hóa mà còn là một công cụ thiết bị đầu cuối hoặc dùng để cấu hình tự động các hệ điều hành.

Tài nguyên

Học tập

Lấy sản phẩm và công nghệ

  • Lấy bản tải về dùng thử miễn phí cho Rational Host Access Transformation Services.
  • Đánh giá Rational Host Access Transformation Services bằng cách dành một vài giờ trong Enterprise Modernization Sandbox (Hộp thử hiện đại hóa doanh nghiệp).
  • Đánh giá phần mềm của IBM theo cách phù hợp với bạn nhất: Tải về phần mềm để dùng thử, dùng thử phần mềm trực tuyến, sử dụng phần mềm trong một môi trường đám mây, hoặc dành một vài giờ trong SOA Sandbox của SOA để tìm hiểu cách thực hiện kiến trúc hướng dịch vụ có hiệu quả.
  • Hãy thử Rational Functional Tester miễn phí, cần đăng ký.
  • Đánh giá phần mềm của IBM theo cách phù hợp với bạn nhất: Tải về phần mềm để dùng thử, dùng thử phần mềm trực tuyến, sử dụng phần mềm trong một môi trường đám mây, hoặc dành một vài giờ trong SOA Sandbox để tìm hiểu cách thực hiện kiến trúc hướng dịch vụ có hiệu quả.

Thảo luận

Bình luận

developerWorks: Đăng nhập

Các trường được đánh dấu hoa thị là bắt buộc (*).


Bạn cần một ID của IBM?
Bạn quên định danh?


Bạn quên mật khẩu?
Đổi mật khẩu

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Ở lần bạn đăng nhập đầu tiên vào trang developerWorks, một hồ sơ cá nhân của bạn được tạo ra. Thông tin trong bản hồ sơ này (tên bạn, nước/vùng lãnh thổ, và tên cơ quan) sẽ được trưng ra cho mọi người và sẽ đi cùng các nội dung mà bạn đăng, trừ khi bạn chọn việc ẩn tên cơ quan của bạn. Bạn có thể cập nhật tài khoản trên trang IBM bất cứ khi nào.

Thông tin gửi đi được đảm bảo an toàn.

Chọn tên hiển thị của bạn



Lần đầu tiên bạn đăng nhập vào trang developerWorks, một bản trích ngang được tạo ra cho bạn, bạn cần phải chọn một tên để hiển thị. Tên hiển thị của bạn sẽ đi kèm theo các nội dung mà bạn đăng tải trên developerWorks.

Tên hiển thị cần có từ 3 đến 30 ký tự. Tên xuất hiện của bạn phải là duy nhất trên trang Cộng đồng developerWorks và vì lí do an ninh nó không phải là địa chỉ email của bạn.

Các trường được đánh dấu hoa thị là bắt buộc (*).

(Tên hiển thị cần có từ 3 đến 30 ký tự)

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Thông tin gửi đi được đảm bảo an toàn.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=70
Zone=Rational
ArticleID=788066
ArticleTitle=Thử nghiệm tự động các ứng dụng dựa trên thiết bị đầu cuối với Rational Functional Tester
publish-date=01172012