Kiểm thử các ứng dụng dựa trên đầu cuối bằng Rational Functional Tester

Việc kiểm thử truy hồi -- trong đó mã được kiểm tra kỹ càng để bảo đảm rằng các thay đổi khi phát triển không tạo ra các kết quả bất ngờ -- là một phần quan trọng của bất kỳ quá trình phát triển nào. Tuy nhiên nhiều môi trường kiểm thử bỏ qua các ứng dụng dựa trên đầu cuối, trong khi chúng vẫn là xương sống của nhiều ngành công nghiệp. Trong hướng dẫn này, bạn sẽ tìm hiểu xem phần mở rộng Rational® Functional Tester (Bộ kiểm thử chức năng Rational) dùng cho các ứng dụng dựa trên đầu cuối làm việc như thế nào với Bộ kiểm thử chức năng Rational khác để giúp kiểm thử các ứng dụng dựa trên đầu cuối một cách nhanh chóng và dễ dàng.

Dennis Schultz, Kỹ sư tiếp thị, IBM

Dennis Schultz đã tham gia vào Rational năm 1995 với tư cách kỹ sư bán hàng phụ trách kỹ thuật. Trong tám năm, ông đã làm việc gần gũi với nhiều khách hàng, thực hiện các giải pháp Rational trong các dự án của họ. Dennis đã giúp triển khai các giải pháp để quản lý cấu hình phần mềm, quản lý sự thay đổi, quản lý các yêu cầu, quản lý kiểm thử và thực hiện. Từ năm 2003, Dennis trở thành một kỹ sư tiếp thị phụ trách kỹ thuật cho phần mềm Rational của IBM. Dennis có bằng cử nhân kỹ nghệ máy tính của Iowa State University. Ông sống ở St. Louis, Missouri, và dành thời gian rỗi với bốn người con của mình



06 12 2007 (Xuất bản lần đầu tiên vào ngày 30 10 2009)

Tổng quan

Hướng dẫn này nhằm giới thiệu cho người sử dụng lần đầu tiên về Phần mở rộng Rational Functional Tester dùng cho các ứng dụng dựa trên đầu cuối. Nó là công cụ gì và vì sao nó lại xứng đáng với một cái tên dài như vậy? Phần Mở rộng Rational Functional Tester dùng cho các ứng dụng dựa trên Đầu cuối là một chương trình bổ sung, hoặc phần mở rộng, của Rational Functional Tester, nó tạo điều kiện cho Rational Functional Tester thực hiện kiểm thử truy hồi chức năng trên các ứng dụng dựa trên đầu cuối. Mặc dù tên sản phẩm rất có tính miêu tả và thực tế, nó lại hơi bất tiện khi đàm luận. Để ngắn gọn, trong hướng dẫn này chúng ta sẽ chỉ gọi nó một cách chung chung là Phần mở rộng.

Hướng dẫn này sẽ giúp bạn ghi lại, biên tập, và thi hành việc kiểm thử truy hồi đầu tiên của bạn đối với một ứng dụng dựa trên đầu cuối bằng cách sử dụng phần Mở rộng này. Chúng ta sẽ nói ngắn gọn một số thách thức về việc kiểm thử ứng dụng dựa trên đầu cuối và quan sát xem khả năng cốt lõi của Rational Functional Tester và phần Mở rộng đáp ứng được các thách thức này đến mức nào. Đây hoàn toàn không phải là một vòng khảo sát toàn diện về tất cả các khả năng của Rational Functional Tester và phần Mở rộng. Một vòng khảo sát toàn diện như thế có thể phải mất nhiều ngày! Hướng dẫn này thực sự nhằm mang lại cho bạn có một bước khởi động về các vấn đề cơ bản trong khoảng một giờ đồng hồ.

Sau khi hoàn thành hướng dẫn này, bạn sẽ tìm hiểu được:

  • Cách ghi lại một bài kiểm thử truy hồi của Functional Tester (Bộ kiểm thử chức năng) đối với một ứng dụng dựa trên đầu cuối mẫu.
  • Cách Bộ kiểm thử chức năng nắm bắt các tương tác của bạn với ứng dụng này ghi thành một tập lệnh Java.
  • Công nghệ ScriptAssure làm cho các kiểm thử của bạn vững chãi đối với các thay đổi giao diện người dùng (UI) trong ứng dụng đang thử nghiệm như thế nào.
  • Kiểm chứng cả nội dung tĩnh và động trong ứng dụng của bạn như thế nào.

Ai cần học theo hướng dẫn này?

Nếu bạn đã từng là một người sử dụng Rational Functional Tester của IBM và bạn thích tìm hiểu một chút về phần Mở rộng, làm cho nó có thể kiểm thử ứng dụng dựa trên đầu cuối với cùng công cụ đó, thì bạn đã tìm đúng chỗ.

Nếu bạn đang tìm kiếm một cách để tự động hoá việc kiểm thử truy hồi chức năng của ứng dụng dựa trên đầu cuối và chưa bao giờ sử dụng Rational Functional Tester -- hoặc bất kỳ công cụ kiểm thử tự động nào -- có lẽ bạn sẽ muốn làm một ít bài tập ở nhà trước khi thực hành hướng dẫn này. Hãy bắt đầu với hướng dẫn của developerWorks Automate regression tests: IBM Rational Functional Tester makes regression testing a snap (Tự động hoá kiểm thử truy hồi: Rational Functional Tester của IBM làm cho việc kiểm thử truy hồi thật dễ dàng) hoặc với bài hướng dẫn Learn how to create robust, reusable automated functional tests with Rational Functional Tester (Tìm hiểu cách tạo ra các bài kiểm thử chức năng tự động hoá vững chãi, tái sử dụng được bằng Rational Functional Tester) trong loạt bài hướng dẫn Hello World. Các bài hướng dẫn đó sẽ cung cấp cho bạn các cơ sở mà trên đó hướng dẫn này được xây dựng.

Nếu bạn trước đây đã sử dụng phần Mở rộng và muốn có một kiến thức sâu về cách nó làm việc và có thể giải quyết các vấn đề cụ thể cho môi trường của bạn, có lẽ đây không phải là chỗ dành cho bạn. Như đã lưu ý trong phần trước, hướng dẫn này sẽ khởi đầu từ đầu và nhanh chóng làm cho bạn thành thạo các cơ sở để ghi lại và cho chạy các kịch bản lệnh đối với một ứng dụng dựa trên đầu cuối. Để có thêm các bài hướng dẫn về Rational, xem phần Tài nguyên.

Yêu cầu về hệ thống

Bạn sẽ cần một vài thứ để hoàn tất các bước trong hướng dẫn này.

  • Nếu bạn còn chưa có phần Mở rộng Rational Functional Tester dùng cho các ứng dụng dựa trên đầu cuối, bạn có thể tải về một bản dùng thử đầy đủ chức năng của Rational Functional Tester. Tiến trình cài đặt sẽ được mô tả sau đây trong hướng dẫn này.
  • Functional Tester hỗ trợ hai ngôn ngữ kịch bản lệnh: ngôn ngữ Java™ và Visual Basic .NET. Để tạo ra các bài kiểm thử bằng cách sử dụng ngôn ngữ Java, Functional Tester gộp cả môi trường phát triển mã nguồn mở Eclipse. Không đòi hỏi thêm các bước cài đặt bổ sung nào. Nếu bạn muốn sử dụng ngôn ngữ kịch bản lệnh Visual Basic .NET thì bạn phải cài đặt Visual Studio .NET trên hệ thống của bạn trước khi bạn cài đặt Rational Functional Tester của IBM. Visual Studio .NET hiện có bán sẵn ở Microsoft®.
  • Ngoài Rational Functional Tester và phần Mở rộng, bạn cũng sẽ cần một gói phần mềm nhỏ, HostSim.zip, dùng cho các mục đích của hướng dẫn này. Gói phần mềm này sẽ mô phỏng lưu lượng truyền thông 3270 từ một ứng dụng dựa trên máy chủ.

Tại sao lại sử dụng phần Mở rộng?

Kiểm thử truy hồi chức năng

Khi tôi mua ngôi nhà của mình, hàng rào sân sau nhà tôi ở tình trạng khá tệ. Vào một mùa hè, tôi quyết định xây dựng lại hàng rào mới. Sau vài ngày làm việc vất vả, nó trông rất tuyệt. Hôm sau, người hàng xóm của tôi về nhà sau một chuyến đi và hỏi, “Điện thoại của ông bạn có hoạt động không đấy ?” Tôi biết ngay điều gì đã xảy ra: khi đào một lỗ chôn cọc cho hàng rào mới của tôi, tôi đã đào phải đường dây điện thoại của người hàng xóm. Khi cố gắng sửa chữa một vấn đề (một hàng rào cũ), tôi đã gây ra một vấn đề khác mà lại không nhận ra điều đó (hàng xóm của tôi giờ không có điện thoại để dùng).

Tôi kể cho bạn câu chuyện đó để minh họa về sự truy hồi (regression). Đôi khi việc phát triển và bảo trì phần mềm có thể là giống nhau. Khi một nhà phát triển thêm vào một đặc tính mới hoặc sửa chữa một lỗi trong hệ thống, hoàn toàn có thể là mã bị thay đổi đó được sử dụng bởi một đặc tính dường như không liên quan. Làm thế nào để tôi biết rằng cùng một miếng đất mà tôi muốn dùng cho cái cọc rào của tôi lại cũng được dùng cho đường điện thoại của nhà hàng xóm? Nếu chúng ta chỉ kiểm tra các tính năng mới mỗi khi sửa đổi mã, chúng ta không thể chắc chắn rằng mọi thứ trước đây thường làm việc thì nay vẫn còn hoạt động. Trong trường hợp của tôi, cái hàng rào hoàn chỉnh đó trông thật tuyệt vời, nhưng tôi không biết rằng người hàng xóm của tôi không thể gọi điện thoại được nữa.

Cách duy nhất để biết chắc rằng chúng ta không làm hỏng các chức năng hiện có là thử lại mọi thứ ở tất cả các bản sửa đổi hoặc làm lại của hệ thống của chúng ta. Đây là cái được gọi là việc kiểm thử truy hồi chức năng.

Sự thách thức

Việc kiểm thử truy hồi chức năng có thể thực hiện bằng tay. Vấn đề là ở chỗ, khi một dự án đang tiến triển, các phép kiểm thử chức năng đó càng ngày càng dài hơn. Đến một điểm nào đó, có thể phải mất thời gian nhiều hơn để chạy dãy phép kiểm thử một cách thủ công so với cái bạn thực sự phải làm giữa hai lần xây dựng (builds) ứng dụng!

Khi điều này xảy ra, nhóm kiểm thử phải đối mặt với các lựa chọn khắc nghiệt. Họ phải tìm ra một cách để quyết định xem phép kiểm thử nào là ít quan trọng hơn và có thể được bỏ qua trong một số lần hay toàn bộ các lần kiểm thử xây dựng. Bây giờ cánh cửa đã mở ra dành cho phép truy hồi vào cuộc, xem lại các khả năng còn chưa được kiểm thử ấy của một ứng dụng.

Rational Functional Tester là gì?

Rational Functional Tester là một công cụ truy hồi chức năng tự động. Điều này có nghĩa là nó sử dụng một máy tính để thi hành kiểm thử nhanh hơn nhiều so với bạn làm bằng tay. Chìa khoá để làm việc này là có một cách để nắm bắt tương tác với một ứng dụng và làm cho tương tác đó sẵn sàng được lặp lại sau đó. Bạn sẽ làm việc này trong giây lát.

Lưu ý rằng Rational Functional Tester là một công cụ truy hồi chức năng. Rational Functional Tester không nhằm để cung cấp tải công việc để thử ứng lực. Để thử tải, bạn phải trông cậy vào Bộ kiểm thử hiệu năng Rational. Trong hướng dẫn này, chúng ta sẽ xem xét cách sử dụng phần Mở rộng để kiểm tra chức năng của ứng dụng, không phải là khả năng mở rộng của nó.


Bắt đầu

Khái quát về cài đặt

Có một vài điều bạn cần phải làm để chuẩn bị cho hướng dẫn này:

  1. Cài đặt Rational Functional Tester.
  2. Cài đặt môi trường chạy thi hành Java (Runtime).
  3. Cài đặt Bộ Mô phỏng Máy chủ mẫu của hướng dẫn này.
  4. Tạo một dự án kiểm thử.

Bạn có thể bỏ qua một số bước này nếu bạn đã cài đặt phần mềm rồi. Nhưng chúng ta sẽ đi qua lần lượt từng bước trong các phần thảo luận sau đây.

Cài đặt Functional Tester

Nếu bạn chưa cài đặt thì bây giờ hãy cài Functional Tester. Một bản dùng thử đầy đủ chức năng của hiện có sẵn ở developerWorks.

Gói phần mềm Kiểm thử Chức năng Rational gồm cả sản phẩm Rational Functional Tester (bao gồm phần Mở rộng dành cho các ứng dụng dựa trên đầu cuối) và cả bộ Kiểm thử Rational thực hiện bằng tay. Đối với hướng dẫn này, thực ra bạn sẽ chỉ cần tải về hai phần dùng cho Rational Functional Tester, nhưng bạn có thể cũng muốn tải về và đánh giá Bộ kiểm thử Rational thực hiện bằng tay để xem cách nó giúp đỡ bạn tổ chức và cải thiện việc kiểm thử bằng tay của bạn như thế nào.

Sử dụng trình khởi chạy (launchpad) thi hành để bắt đầu cài đặt. Nếu bạn chưa cài một sản phẩm Rational nào trên máy của bạn, trình khởi chạy sẽ bắt đầu bằng việc cài đặt trình quản lý cài đặt của IBM (IBM Installation Manager) sau đó nó sẽ hướng dẫn bạn đi qua từng bước phần cài đặt còn lại.

Trên màn hình nơi bạn được hỏi cài gói phần mềm nào, chỉ chọn Rational Functional Tester. Hoàn tất việc cài đặt Rational Functional Tester, sau đó lặp lại quy trình cài đặt và chọn phần Mở rộng Rational Functional Tester dùng cho ứng dụng dựa trên đầu cuối. Quá trình cài đặt phải thực hiện thành hai bước để đảm bảo việc cài đặt chính xác.

Lưu ý một lần nữa rằng nếu bạn định sử dụng Visual Basic .NET làm ngôn ngữ kịch bản lệnh thì Visual Studio .NET phải được cài đặt trên hệ thống của bạn trước khi bạn cài đặt Functional Tester.

Trong hướng dẫn này, bạn sẽ sử dụng biến thể ngôn ngữ kịch bản lệnh Java của Rational Functional Tester, nhưng phần Mở rộng dành cho ưng dụng dựa trên đầu cuối làm việc tốt với cả kịch bản lệnh Visual Basic .NET lẫn kịch bản lệnh Java. Một số đường dẫn trình đơn sẽ hơi khác một chút nếu bạn làm việc với Visual Studio. Thật thú vị là tập lệnh mà Rational Functional Tester tạo ra sẽ gần như giống nhau trong cả hai ngôn ngữ. Khác biệt thực tế chỉ ở chỗ Java là một ngôn ngữ dựa trên dấu chấm phẩy nên mỗi lệnh Java sẽ kết thúc bằng một dấu chấm phẩy, trong khi Visual Basic .NET không có.

Cài đặt môi trường chạy thi hành Java (JRE)

Như bạn sẽ thấy ngay sau đây, Functional Tester tạo ra bản nhật ký để thông báo cho bạn những gì đã xảy ra trong thời gian thi hành kiểm thử. Theo mặc định, nhật ký này là các tài liệu HTML. Tuy nhiên, để cung cấp thêm thông tin, Functional Tester sẽ khởi chạy một ứng dụng có tên là trình so sánh (comparator) làm nổi bật bất cứ sự khác biệt nào giữa kết quả dự tính và kết quả thực tế. Để Functional Tester khởi chạy trình so sánh, Môi trường chạy thi hành Java phải được cài đặt và lập cấu hình.

Môi trường chạy thi hành Java (JRE) đã được cài đặt trên máy của tôi chưa?

Hoàn toàn có thể là bạn có một Môi trường chạy thi hành Java (JRE) trên máy của bạn. Nếu có, bạn sẽ trông thấy một biểu tượng cấu hình Java trong bàn điều khiển (control panel) của bạn. Chọn Start > Settings > Control Panel. Nếu bạn trông thấy một nút tùy chọn trình cắm thêm Java (Java Plug-in) trong danh sách các ứng dụng, thì nghĩa là JRE đã cài trên máy của bạn. Bạn không cần phải cài đặt JRE một lần nữa.

Cài đặt Môi trường chạy thi hành Java

Môi trường chạy thi hành Java có sẵn để tải về từ hãng Sun. Chọn đường liên kết phù hợp với môi trường của bạn.

Cài đặt bộ mô phỏng máy chủ

Việc viết một hướng dẫn đánh giá một công cụ kiểm thử ứng dụng dựa trên đầu cuối có một thách thức đáng kể: khó đóng gói một ứng dụng mẫu. Để đơn giản hóa quy trình trong khi vẫn cung cấp được hầu hết các giá trị của nó, chúng tôi đã làm sẵn một Bộ mô phỏng máy chủ sẵn sàng để tải về cho hướng dẫn này.

Để cài đặt nó, thực hiện các bước sau:

  1. Giải nén tệp tin HostSim.zip vào bất kỳ thư mục nào bạn chọn.
  2. Nhấn đúp chuột vào tệp tin HostSim.bat. Thao tác này sẽ khởi chạy một cửa sổ nhắc lệnh Windows mà trong đó sẽ lần lượt khởi chạy hai ứng dụng Java nhỏ. Mỗi ứng dụng mô phỏng một ứng dụng máy tính lớn, một cái trên cổng 23, cái kia trên cổng 24. Bạn có thể thu nhỏ hai cửa sổ này trong suốt phần còn lại của hướng dẫn.
  3. Để ngừng các bộ mô phỏng, chỉ cần đóng lại các cửa sổ dòng lệnh Java của chúng.

Bộ mô phỏng máy chủ này khá là đơn giản hóa. Nó cung cấp một dòng dữ liệu 3270E sẽ đóng vai trò làm ứng dụng của bạn đang được kiểm thử. Hãy nhớ rằng Bộ mô phỏng Máy chủ này không phải là một ứng dụng thực sự. Bạn sẽ thấy rằng nó sẽ chuyển từ màn hình này đến màn hình khác để phản hồi lại các lệnh gõ từ bàn phím của bạn, nhưng các màn hình này là tĩnh: bộ mô phỏng đó không thực sự phân tích dữ liệu đầu vào từ bàn phím của bạn. Nó sẽ làm việc tốt đối với tuyến đường đã phác thảo ra trong hướng dẫn này, nhưng bạn thực sự không thể đi chệnh khỏi con đường đó. Hãy bám đúng vào kịch bản lệnh ở đây và bạn sẽ làm tốt công việc. Khi đã hoàn tất hướng dẫn này, bạn sẽ sẵn sàng thử nghiệm với ứng dụng dựa trên đầu cuối thực sự của chính bạn.

Hãy nhớ rằng, Bộ mô phỏng Máy chủ này chỉ cần mô phỏng một máy tính lớn. Ở phần cuối hướng dẫn này, trong phần Làm sạch (Clean-up), là các hướng dẫn về cách loại bỏ hoặc vô hiệu hóa nó khỏi hệ thống của bạn. Bạn sẽ không bao giờ cần Bộ mô phỏng máy chủ để kiểm tra một ứng dụng dựa trên đầu cuối thực sự.

Tạo một dự án kiểm thử

Một dự án kiểm thử là địa điểm nơi Functional Tester sẽ giữ tất cả các kịch bản lệnh của bạn, cùng với các kết quả dự kiến và kết quả thực tế. Khuôn dạng của dự án này được quyết định bởi môi trường mà bạn đang sử dụng -- hoặc là Eclipse đối với kịch bản lệnh Java hoặc là Visual Studio .NET đối với kịch bản lệnh Visual Basic .NET. Một lần nữa, bạn sẽ sử dụng kịch bản Java trong hướng dẫn này, nhưng bạn chắc chắn có thể sử dụng phần Mở rộng với kịch bản Visual Basic .NET cho Functional Tester.

  1. Khởi động Functional Tester nếu nó chưa chạy.
  2. Đóng khung nhìn chào mừng (Welcome), nếu nó đang mở.
  3. Bạn bây giờ ở trong môi trường biên tập chính dành cho Functional Tester.
  4. Chọn File > New > Functional Test Project để tạo một dự án mới.
  5. Đặt tên dự án là RFT Extension Tutorial và nhấn Finish để tạo ra dự án của bạn.
  6. Nếu bạn đang sử dụng bản đánh giá của Functional Tester, một cửa sổ sẽ xuất hiện cho biết số ngày còn lại trên giấy phép dùng thử của bạn. Nhấn OK để xác nhận thông báo.

Tạo bài kiểm thử của bạn

Quan sát bộ mô phỏng đầu cuối

Chúng ta hãy bắt đầu một vòng tham quan ứng dụng mà bạn sẽ kiểm thử. Việc này tạo cho bạn một cơ hội để quan sát bộ mô phỏng đầu cuối của phần Mở rộng trước khi bạn thực sự ghi lại kịch bản lệnh.

Phần Mở rộng Rational Functional Tester dùng cho các ứng dụng dựa trên đầu cuối đi đồng bộ với bộ mô phỏng đầu cuối của chính nó. Không có nguy cơ nào về sự không tương thích với bộ mô phỏng của bên thứ ba hay nguy cơ nào về sự không tương thích phiên bản, bởi vì bộ mô phỏng của phần Mở rộng được tích hợp chặt chẽ với Rational Functional Tester để đảm bảo sự đồng bộ hóa đúng đắn và sự ghi nhận dữ liệu với ứng dụng máy tính lớn của bạn. Bạn vẫn có thể sử dụng bất kỳ bộ mô phỏng của bên thứ ba nào để tự kiểm tra thủ công, nếu bạn muốn. Bạn đơn giản chỉ cần sử dụng bộ mô phỏng của phần Mở rộng để ghi lại các kịch bản của bạn, và Functional Tester sẽ sử dụng nó khi nó phát lại các kịch bản lệnh đó.

  1. Nnấn Launch the Extension for Terminal-based Applications trên thanh công cụ.

    Thao tác này khởi động bộ mô phỏng đầu cuối của phần Mở rộng. Nửa trên màn hình có một số nút lệnh điều khiển tác động đến cách thức mà bộ mô phỏng kết nối với ứng dụng của bạn. Bạn thiết đặt các thuộc tính kết nối bạn cần trên màn hình để nối với máy tính lớn đang chứa ứng dụng của bạn. Trong các bước tiếp theo, bạn sẽ nối với máy tính lớn mô phỏng.

  2. Ứng dụng máy tính lớn mô phỏng của bạn chạy trên máy cục bộ của bạn, gọi là máy chủ cục bộ (localhost). Gõ nhập localhost vào trường Host.
  3. Bộ mô phỏng hỗ trợ kiểm thử các ứng dụng sử dụng các giao thức 3270, 3270 nâng cao và 5250. Ứng dụng mô phỏng sử dụng giao thức 3270 nâng cao, vì vậy hãy chọn TN3270E trong trình đơn thả xuống các kiểu đầu cuối (Terminal Type).
  4. Nhấn Connect trên thanh công cụ.

    Bạn sẽ trông thấy một màn hình giống như dưới đây.

Nếu bạn nhận được một cửa sổ báo lỗi truyền thông (Communication Error), có khả năng là vì Bộ Mô phỏng Máy chủ không chạy. Quay lại thư mục HostSim và nhấn đúp vào HostSim.bat.

Nếu bộ mô phỏng xuất hiện để kết nối nhưng màn hình lại trắng, rất có khả năng là bạn đang cố gắng kết nối bằng cách sử dụng giao thức 3270 thay cho 3270E. Để trở về màn hình cấu hình, nhấn Disconnect.

Sau đó chuyển thành TN3270E và kết nối lại

Chú ý hai hàng nút chạy ngang dưới đáy của bộ mô phỏng. Đây là những phím mềm dùng để biểu diễn các phím PF và các phím đặc biệt khác trên một đầu cuối. Bạn sẽ sử dụng các phím này sau đó trong khi ghi.

Chúng ta hãy tham quan một vòng ứng dụng mà bạn sẽ kiểm thử. Nếu bạn theo tất cả các bước nói trong phần trước, bạn sẽ trông thấy màn hình chào đón DEMOnet trong bộ mô phỏng đầu cuối. Đây sẽ là điểm xuất phát để ứng dụng của bạn đi qua.

  1. Gõ nhập cicsa trong cửa sổ bộ mô phỏng đầu cuối. Bạn sẽ trông thấy ký tự bạn gõ hiển thị trên màn hình sau dấu nhắc chọn. Nếu không, hãy kiểm tra chắc chắn là bộ mô phỏng đầu cuối đang ở trạng thái tích cực (in focus). Cicsa là tên của máy chủ giao dịch bạn muốn sử dụng. Để gọi ra một lệnh, bạn có thể hoặc nhấn phím Enter trên bàn phím của bạn hoặc nhấn chuột vào nút Enter ở phần đáy màn hình.
  2. Trên màn hình kế tiếp, gõ nhập mã nhận dạng người dùng (user ID) dnet256. Nhấn phím Tab hai lần. Bây giờ gõ secret làm mật khẩu. Nhấn Enter.
  3. Bây giờ bạn đã đăng nhập vào RCTD. Trên màn kế tiếp, gõ RCTD. Đây là mã số ID giao dịch cho một trình diễn ứng dụng kinh doanh cổ phiếu. Nhấn Enter.
  4. Việc này đưa bạn đến Share Trading Manager: Logon screen (Trình quản lý kinh doanh cổ phiếu: Màn hình đăng nhập). Mã số màn hình màu xanh lơ trong góc trên bên phải của màn hình, sẽ là TRADER.T001. Trên màn hình này, bạn cần nhập vào tên người dùng và mật khẩu cho ứng dụng kinh doanh cổ phiếu. Gõ nhập jan, nhấn phím Tab, và sau đó gõ nhập janpwd làm mật khẩu. Sau đó nhấn Enter.
  5. Trên màn hình tiếp theo, TRADER.T002, chọn công ty có cổ phiếu bạn muốn kinh doanh. Gõ nhập số 1 để chọn Casey Import/Export và nhấn Enter.
  6. Màn hình tiếp theo, TRADER.T003, trình bày trình đơn tùy chọn chính. Hãy phát một lệnh trích dẫn (quote) thời gian thực bằng cách gõ 1 và nhấn Enter.
  7. Màn hình tiếp theo, TRADER.T004, trình bày một số thông tin. Bạn sẽ sử dụng màn này một vài lần để kiểm tra chức năng của ứng dụng này. Lưu ý rằng Jan không nắm một cổ phiếu nào trong công ty này. Đây sẽ là một cơ sở tốt để kiểm tra --để đảm bảo không có cổ phiếu nào được nắm giữ trong công ty này khi bạn bắt đầu kịch bản kiểm thử. Bây giờ, quay trở ra trình đơn tuỳ chọn chính bằng cách nhấn nút PF3 nằm dọc phía dưới đáy màn hình.
  8. Tiếp theo, bạn muốn mua 100 cổ phiếu và kiểm chứng lại rằng lệnh mua này đã được đặt chính xác. Lựa chọn số 2 sẽ đưa bạn đến một màn hình nơi mà bạn có thể làm đúng việc đó. Gõ 2 và nhấn Enter.
  9. Bạn bây giờ sẽ nhìn thấy màn hình TRADER.T005, màn hình mua. Gõ 100 và nhấn Enter.
  10. Bạn ngay lập tức được đưa trở về lại trình đơn tuỳ chọn chính. Chú ý thông báo chạy ngang phía đáy của màn chỉ ra rằng yêu cầu đã thực hiện thành công. Đây có lẽ là một việc khác mà bạn muốn kiểm chứng lại -- đó là yêu cầu đã hoàn tất một cách đúng đắn. Bạn cũng muốn chắc chắn cổ phần của bạn bây giờ phản ánh số cổ phiếu vừa mới mua được. Bạn có thể sử dụng màn hình trích dẫn thời gian thực một lần nữa để xác nhận rằng phần cổ phiếu nắm giữ của bạn đã tăng lên. Tuỳ chọn số 1 của trình đơn chính sẽ dẫn bạn đến một màn hình, ở đây bạn có thể nhận được trích dẫn mới, vì vậy gõ 1 và nhấn Enter.
  11. Chú ý rằng trên màn hình trích dẫn thời gian thực, số lượng cổ phiếu hiện đang nắm giữ là 100.
  12. Nhấn Disconnect để ngắt kết nối từ máy chủ mô phỏng.
  13. Bạn có thể lưu toàn bộ các tham số kết nối bạn đã sử dụng vào một tệp tin cấu hình kết nối. Điều này không chỉ tiết kiệm cho bạn khỏi phải hoàn tất việc thiết đặt mỗi lần bạn chạy một bài kiểm thử; nó còn cung cấp một lược thảo kết nối nhất quán mà tất cả các kiểm thử viên ở nhóm của bạn có thể chia sẻ dùng chung. Để ghi lưu lại các thiết đặt kết nối hiện tại, chọn File > Save. Đặt một tên cho tệp cấu hình kết nối, chẳng hạn như ShareTraderV1.conn. (Lưu ý rằng cửa sổ Save As sẽ tự động thêm phần đuôi mở rộng .conn).
  14. Đóng lại bộ mô phỏng đầu cuối.

Bạn vừa kiểm thử khả năng mua của ứng dụng này một cách thủ công. Bạn đã xử lý một kịch bản khá đơn giản ở đây, nhưng bạn có thể thấy rằng nếu bạn cần cho chạy lại thử nghiệm này thủ công -- cùng với hàng chục hay hàng trăm bài kiểm thử truy hồi bổ sung -- mỗi khi các nhà phát triển của bạn sửa đổi ứng dụng, bạn sẽ nhanh chóng mất hết thời gian giữa hai lần xây dựng (builds) ứng dụng. Bạn đã sẵn sàng chưa để ghi lại một kịch bản lệnh tự động, có thể kiểm thử chính chức năng này trong một khoảng thời gian ngắn? Vậy chúng ta hãy làm việc đó!

Ghi lại kịch bản lệnh đầu tiên của bạn

Để tạo ra một kịch bản lệnh tự động, tất cả cái bạn cần phải làm là đặt Functional Tester vào chế độ ghi lại trong khi bạn lặp lại các bước tương tự bạn đã làm trước đó. Chỉ có điều khác là bạn sẽ chèn thêm vào một vài điểm kiểm tra khi bạn tiến hành.

  1. Nhấn Record a Functional Test Script trên thanh công cụ của Functional Tester. Nó trông giống một hình tròn màu đỏ.

    Bạn sẽ được nhắc cung cấp một cái tên cho kịch bản lệnh mà bạn sắp ghi lại. Đặt tên nó là Buy100SharesCasey. (Lưu ý rằng tên kịch bản lệnh trong thực tế chính là các tên lớp Java trong Functional Tester. Như vậy, chúng phải phù hợp với các quy tắc đặt tên lớp Java. Nếu bạn vi phạm các quy tắc này, một thông điệp cảnh báo sẽ xuất hiện gần trên đỉnh cửa sổ).

  2. Nhấn Finish.
  3. Functional Tester tự thu nhỏ lại và bắt đầu ghi lại bất kỳ tương tác đối tượng nào mà bạn thực hiện. Hãy nhớ điều này! Mọi việc bạn làm bây giờ sẽ được ghi lại vào kịch bản lệnh của bạn. Khá dễ để biên tập lại, loại bất kỳ tương tác thừa nào ra khỏi các tập lệnh, nhưng ít nhất đối với lần ghi đầu tiên này, hãy cố gắng tránh bất kỳ sự đãng trí nào.

    Functional Tester cho bạn thấy một thanh công cụ ghi nhỏ. Có nhiều công cụ và tiện ích có sẵn ở đây mà bạn hẳn muốn sử dụng trong quá trình ghi lại: ví dụ bạn có thể tạm dừng việc ghi, chèn vào chú thích và gọi các kịch bản khác, và chèn vào các điểm kiểm tra. Hướng dẫn này sẽ không trình bày tất cả các tiện ích ấy. Chỉ cần ghi nhận là có nhiều thứ bạn có thể làm thông qua các trình thủ thuật và cửa sổ trong quá trình ghi mà không cần viết bất kỳ mã kịch bản lệnh nào.

  4. Điều đầu tiên bạn muốn làm trong khi ghi lại là khởi động bộ mô phỏng đầu cuối và kết nối đến máy tính lớn mô phỏng của chúng ta. Để khởi động bộ mô phỏng đầu cuối, nhấn Start Application trong thanh công cụ ghi.
  5. Trong trình đơn thả xuống các tên ứng dụng (Application Name), chọn Extension for Terminal Applications và nhấn OK.
  6. Nhấn vào trường Host của bộ mô phỏng đầu cuối. Gõ nhập “localhost”, không có dấu nháy kép.
  7. Sử dụng hộp Terminal type để chọn TN3270E.
  8. Nhấn vào trường Port sau số 23. Nhấn Backspace hai lần để xoá 23, sau đó gõ lại 23 một lần nữa. (Điều này bây giờ có vẻ lạ, nhưng lý do của nó sẽ trở nên rõ ràng ngay sau đây).
  9. Nhấn Connect trên thanh công cụ.
  10. Gõ nhập cicsa và nhấn Enter.
  11. Gõ nhập mã nhận dạng người dùng dnet256. Nhấn phím Tab hai lần. Bây giờ gõ nhập secret làm mật khẩu. Nhấn Enter.
  12. RCTD và nhấn Enter.
  13. jan, nhấn phím Tab, sau đó gõ janpwd làm mật khẩu. Nhấn Enter.
  14. Vào lúc này, sẽ hữu ích khi chèn một chú thích vào kịch bản lệnh đang được ghi lại. Các chú thích không có tác động gì khi chạy lại kịch bản lệnh, nhưng có thể làm cho nó dễ đọc hơn nhiều. Kịch bản lệnh dựa trên đầu cuối đôi khi có thể hơi khó đọc vì quá nhiều tương tác thực hiện thông qua bàn phím. Nhấn vào nút Insert Script Support Commands (Chèn các lệnh hỗ trợ kịch bản lệnh) trên thanh công cụ ghi. Nhấn vào phiếu Comment và gõ nhập Company Selection Screen (màn hình để chọn công ty) làm lời chú thích. Nó cho biết bạn sắp làm gì trong kịch bản lệnh. Nhấn Insert Code và sau đó nhấn Close trong cửa sổ Exit the Script Support Functions (thoát khỏi các chức năng hỗ trợ kịch bản lệnh).
  15. Nhấn Alt-Tab để đưa bộ mô phỏng đầu cuối trở lại trạng thái tích cực. Gõ 1 để chọn Casey Import/Export và nhấn Enter.
  16. 1 và nhấn Enter để yêu cầu một trích dẫn thời gian thực.
  17. Để kiểm chứng rằng không có cổ phiếu nào được nắm giữ ở đây trên màn hình trích dẫn thời gian thực, hãy sử dụng một điểm kiểm tra (verification point) trên thông điệp thông báo trạng thái màu đỏ. Trên thanh công cụ ghi, kéo nút Insert Verification Point or Action Command (Chèn vào điểm kiểm tra hay lệnh hành động) phía trên văn bản thông tin màu đỏ trong bộ mô phỏng đầu cuối đến khi hộp màu đỏ chỉ bao quanh văn bản đó, sau đó nhả chuột.
  18. Bạn không chỉ muốn xác minh văn bản của thông báo này; bạn cũng muốn xác minh các thuộc tính của nó, chẳng hạn như màu đỏ. Trên cửa sổ vừa xuất hiện, chọn Perform Properties Verification Point và nhấn Next hai lần. Bạn có thể kiểm tra bất kỳ thuộc tính nào bạn trông thấy trong trình thủ thuật. Lưu ý rằng nhiều thuộc tính trong số này ánh xạ trực tiếp đến thiết đặt các bit thuộc tính trên trường 3270. Bạn không cần phải kiểm tra tất cả các thuộc tính này, chỉ cần kiểm tra một ít thôi. Nhấn vào các hộp kiểm bên cạnh foreground, highIntensitytext. Sau đó nhấn Finish.
  19. Quay trở lại trình đơn tuỳ chọn chính bằng cách nhấn nút PF3 nằm dọc phía dưới màn hình.
  20. Tiếp theo, bạn muốn mua 100 cổ phiếu. Gõ 2 và nhấn Enter.
  21. 100 và nhấn Enter.
  22. Bây giờ bạn sẽ chèn một điểm kiểm tra về thông báo trạng thái để xác minh rằng các yêu cầu đã được xử lý thành công. Kéo nút Insert Verification Point or Action Command (Chèn điểm kiểm tra hay lệnh hành động) trên văn bản thông báo trong bộ mô phỏng đầu cuối một lần nữa. Lúc này, giữ nguyên mặc định Perform Data Verification Point và nhấn Next hai lần.
  23. Kiểu điểm kiểm tra này chỉ xác minh lại dữ liệu trong một đối tượng. Tuy nhiên, bạn có thể thấy sẽ có một vấn đề, mỗi lần bạn cho chạy lại tập lệnh này, đó là con số yêu cầu sẽ khác nhau. Bạn không thể so sánh đối với văn bản tĩnh. Các biểu thức chính quy là cách giải thoát! Các biểu thức chính quy là một ngôn ngữ so khớp mẫu có thể được sử dụng tại các điểm kiểm tra của bạn, làm cho chúng có khả năng xử lý dữ liệu động chẳng hạn như mã số (ID) của yêu cầu này. Nhấn Convert Value to Regular Expression trong trình thủ thuật. Bây giờ thay thế số có năm chữ số trong trường dữ liệu bằng chuỗi sau đây:
    [0-9]{5}

    Biểu thức này nói rằng bạn muốn tìm một chuỗi dài năm ký tự, và rằng các ký tự trong chuỗi này chỉ là ký số. Dữ liệu của bạn sẽ trông giống thế này:

  24. Nhấn Finish để hoàn thành điểm kiểm tra.
  25. Nhấn Alt-Tab để trở về bộ mô phỏng đầu cuối. Gõ 1 và nhấn Enter để lấy một trích dẫn mới.
  26. Bạn muốn chèn vào một điểm kiểm tra cuối cùng. Đây sẽ là một điểm kiểm tra dữ liệu về số cổ phiếu nắm giữ. Kéo nút Insert Verification Point or Action Command (Chèn điểm kiểm tra hoặc lệnh Hành động) phía trên giá trị cổ phiếu, 0100.
  27. Nhấn Next hai lần, sau đó Finish để hoàn thành điểm kiểm tra.
  28. Nhấn Disconnect để ngắt kết nối từ máy chủ mô phỏng và đóng lại bộ mô phỏng đầu cuối.
  29. Nhấn Stop Recording trên thanh công cụ ghi.

Thế là xong, chúng ta hãy xem lại những gì bạn vừa làm. Nói đơn giản, bạn đã lệnh cho Functional Tester ghi lại tất cả mọi thứ bạn đã làm trong khi bạn thực hiện kiểm thử thủ công ứng dụng của bạn. Bạn đã thực hiện một vài bước bổ sung để cho Functional Tester biết cái nào quan trọng cần kiểm tra. Bây giờ bạn có một bài kiểm thử có thể cho chạy đi chạy lại để làm cùng một việc như bạn đã làm bằng tay. Trong phần kế tiếp, bạn sẽ khám phá Functional Tester đã làm những gì ở đằng sau để nắm bắt bài kiểm thử này.


Xem lại kịch bản lệnh

Tổng quan kịch bản lệnh

Bạn đã tạo ra một bài kiểm thử tự động. Trong thực tế, bạn đã tạo ra một bài kiểm thử tự động có thể cho chạy lặp đi lặp lại trong những lần tiếp theo khi xây dựng (builds) ứng dụng của bạn. Bạn sử dụng kịch bản lệnh này càng nhiều, bạn sẽ thấy lợi nhuận mang lại từ đầu tư của bạn càng lớn. Thực tế có ba thành phần của một bài kiểm thử -- kịch bản lệnh, ánh xạ đối tượng, và pool dữ liệu. Trong phần này, bạn sẽ xem xét các thành phần ấy chi tiết hơn.

Kịch bản lệnh

Kịch bản lệnh là mã trong ô trung tâm của cửa sổ Functional Tester.

Nếu bạn từng quen với các kịch bản lệnh của Functional Tester đối với các ứng dụng Web, Java, hoặc .NET, mã này sẽ khá quen thuộc với bạn. Mã kịch bản lệnh cụ thể này được ghi lại bằng ngôn ngữ Java. (xin nhớ rằng bạn có thể dễ dàng sử dụng Microsoft Visual Studio .NET và ghi lại kịch bản của bạn bằng Visual Basic .NET.) Điều này có nghĩa là nếu bạn thấy thoải mái khi viết mã lệnh, bạn có thể làm bất cứ điều gì trong kịch bản lệnh Functional Tester giống như bạn có thể làm với một chương trình Java. Bạn có thể kết nối các đoạn mã mà các nhà phát triển của bạn đã tạo ra, chẳng hạn như các thuật toán và các lớp, để trợ giúp khi kiểm thử. Nó cũng có nghĩa là các ngôn ngữ tạo kịch bản lệnh mà những nhà kiểm thử của bạn đang tìm hiểu là một ngôn ngữ tiêu chuẩn công nghiệp, không phải là ngôn ngữ sở hữu độc quyền. Những nhà kiểm thử muốn tìm hiểu cách đọc mã sẽ có vô số các cuốn sách và các khóa học trực tuyến sẵn sàng để giúp đỡ họ.

Thậm chí không cần được đào tạo Java chính thức, bạn có thể dễ dàng đọc được kịch bản lệnh và hiểu những gì đang diễn ra. Chúng ta hãy xem chi tiết hơn một vài câu lệnh. Lệnh này báo cho Functional Tester biết phải nhấn chuột trong hộp văn bản chủ chứa trong bộ mô phỏng:

hostText().click(atPoint(41,11));

Lệnh này gửi các cú gõ các phím cicsa đến đầu cuối, kết thúc bằng gõ phím Enter:

tFrame().inputKeys("cicsa{ENTER}");

Lệnh này thực hiện kiểm tra các điểm kiểm tra thuộc tính trên trường thông báo trạng thái của màn hình trích dẫn thời gian thực:

Field_22_2_standardVP().performTest();

Do hầu như toàn bộ tương tác dựa trên đầu cuối là thông qua bàn phím, có ít chỉ dẫn hơn về bạn đang ở đâu trong kịch bản lệnh khi so với một ứng dụng web hay Java. Chú ý rằng phần chú thích bạn đã thêm vào giúp chỉ ra bạn đang ở đâu tại điểm này trong kịch bản lệnh:

// Company Selection Screen
tFrame(ANY,LOADED).inputKeys("1{ENTER}");

Chèn các chú thích thường gặp trong khi ghi lại kịch bản lệnh là một thói quen thực hành tốt nên áp dụng.

Ánh xạ đối tượng

Như vậy, nếu kịch bản lệnh nói cho Functional Tester thực hiện một kiểm thử trên một trường nhất định trên màn hình, Functional Tester làm thế nào để biết cần kiểm tra trường nào? Mỗi đối tượng bạn bắt gặp trong quá trình ghi lại được liệt kê danh sách trong một ánh xạ đối tượng kiểm thử. Bạn có thể nhìn thấy các đối tượng bạn tương tác với chúng trong khung nhìn Script Explorer phía bên phải khung nhìn kịch bản lệnh.

Ánh xạ đối tượng thực hiện hai việc cho bạn. Thứ nhất, nó cung cấp một kho thông tin duy nhất về các đối tượng trong ứng dụng của bạn. Điều đó có nghĩa là nếu có một sự thay đổi đáng kể nào đó trong giao diện người dùng của ứng dụng của bạn, bạn có một nơi để giữ gìn thông tin. Bạn không cần phải tìm kiếm qua toàn bộ kịch bản lệnh của bạn để tìm tất cả các tham chiếu đến đối tượng ấy để thay thế thông tin ghi nhận dành cho nó. Trong hướng dẫn này, bạn đang sử dụng một ánh xạ đối tượng kiểm thử riêng tư (private). Trong một dự án thực tế, bạn sẽ cần sử dụng một ánh xạ đối tượng kiểm thử được chia sẻ (shared) dùng chung, giữa nhiều kịch bản lệnh và nhà kiểm thử, giảm bớt chi phí bảo trì của bạn nhiều hơn nữa.

Ánh xạ đối tượng cũng lưu giữ một số thông tin về các trường của ứng dụng của bạn. Khi bạn cho chạy lại kịch bản lệnh, Functional Tester sẽ tham khảo ánh xạ đối tượng này để xác định xem đối tượng nào hoặc trường nào là đúng cái cần sử dụng. Trong phần này, bạn sẽ xem xét kỹ hơn.

Nhấn đúp chuột vào mục ánh xạ đối tượng field_16_63 trong khung nhìn Script Explorer. Một cửa sổ xuất hiện hiển thị ánh xạ đối tượng kiểm thử.

Nhiều công cụ kiểm thử tự động chỉ dựa vào một thuộc tính để xác định một đối tượng trong khi cho chạy lại. Nhưng điều gì xảy ra nếu giá trị của thuộc tính đó thay đổi? Điều này thường làm cho việc chạy lại bị thất bại và cần thiết phải thay đổi giá trị mong đợi của thuộc tính đó để tiếp tục kiểm thử. Functional Tester hành động khác. Ở đây, Functional Tester nắm được năm thuộc tính và giá trị của chúng. Thử tưởng tượng xem, trong lần xây dựng ứng dụng sẵp tới, giá trị của thuộc tính văn bản không còn là 0100. Không thành vấn đề. Functional Tester vẫn còn bốn thuộc tính nữa dùng để xác định đối tượng này. Điều gì sẽ xảy ra nếu một nhà phát triển di chuyển trường đó xuống dòng dưới trên màn hình trong lần xây dựng tiếp theo? Đó có lẽ vẫn chưa thành vấn đề. Functional Tester sử dụng một hệ thống nhận dạng đối tượng tiên tiến gọi là ScriptAssure để phân tích các trường trên màn hình và xác định xem cái nào có nhiều khả năng là đúng nhất, thậm chí khi có nhiều thuộc tính của đối tượng đã thay đổi từ khi kịch bản lệnh được ghi lại. Bạn có thể kiểm soát mức độ chặt chẽ hay khoan dung mà bạn muốn Functional Tester đạt được ở mức nào, thông qua thứ tự ưu tiên và việc thiết lập tầm quan trọng cho từng thuộc tính.

Nhấn vào phần tử trên đỉnh cao nhất trong Ánh xạ Đối tượng, nó có nhãn Java: Frame: TFrame: com.ibm.terminal.tester.gui.panel.TFrame. Đối tượng này đại diện cho khung bộ mô phỏng đầu cuối. Lưu ý rằng các thuộc tính .captionTextaccessibleContext.accessibleName chứa tên của cấu hình kết nối dùng để kết nối đến ứng dụng. Functional Tester đã chọn ra tên cấu hình kết nối thông qua tiêu đề (caption) của cửa sổ bộ mô phỏng. Trong nhiều trường hợp, điều này rất tiện dụng. Nó có nghĩa là bạn có thể mở nhiều cửa sổ của Bộ mô phỏng đầu cuối và tương tác với chúng trong chỉ một phiên kiểm thử đơn lẻ. Functional Tester sẽ có thể báo từ một cửa sổ này sang một cửa sổ khác trên cơ sở các thuộc tính nhận dạng này.

Trong trường hợp của bạn, bạn muốn sử dụng hai tệp tin cấu hình kết nối -- một cho phiên bản 1 và một cho phiên bản 2 -- có thể hoán đổi cho nhau. Để ghi đè lên hành vi mặc định của Functional Tester, hãy thay đổi các giá trị trong các cột trọng số đối với các thuộc tính .captionTextaccessibleContext.accessibleName thành 0. Thực sự bạn đang nói với Functional Tester rằng bạn không quan tâm đến tiêu đề (caption) của cửa sổ bộ mô phỏng.

Hãy kết thúc chuyến tham quan ngắn của chúng ta về ánh xạ đối tượng. Đóng cửa sổ ánh xạ Đối tượng. Nhấn Yes khi được hỏi bạn có muốn ghi lưu lại các thay đổi hay không.

Pool dữ liệu

Bạn có lẽ đã nhận thấy rằng các thông tin bạn nhập qua bàn phím và các giá trị bạn đã kiểm thử tại các điểm kiểm tra của bạn được mã hoá cứng (hardcoded) vào trong kịch bản lệnh của bạn. Nhưng chuyện gì xảy ra nếu bạn muốn thực hiện cùng một bài kiểm thử bạn vừa mới ghi lại rất nhiều lần, nhưng có sửa đổi chút ít dữ liệu được sử dụng cho mỗi lần kiểm thử? Giả dụ bạn muốn đăng nhập như là một người sử dụng khác hoặc mua cổ phiếu của một công ty khác. Bạn có muốn ghi lại một kịch bản lệnh mới nữa mỗi lần hay không? Điều đó xem ra không hiệu quả.

Kiểm thử điều khiển bởi dữ liệu và pool dữ liệu đáp ứng một cách hiệu quả yêu cầu này. Với kiểm thử điều khiển bằng dữ liệu, bạn có thể tách rời dữ liệu kiểm thử khỏi thủ tục kiểm thử trong kịch bản lệnh của bạn. Ngay cả khi bạn không thiết lập pool dữ liệu và bài kiểm thử điều khiển bằng dữ liệu trong khi ghi lại, bạn vẫn có thể thực hiện nó ngay bây giờ. Giả dụ bạn muốn thay đổi tên người dùng và mật khẩu dùng để đăng nhập vào ứng dụng buôn bán cổ phiếu. Trước tiên bạn cần phải tạo ra một pool dữ liệu rỗng, và sau đó thay thế dữ liệu trực kiện hay dữ liệu tĩnh trong kịch bản lệnh bằng các tham chiếu đến pool dữ liệu đó. Để làm như vậy, hãy theo các bước sau:

  1. Nhấn chuột phải vào Test Datapool trong Script Explorer và chọn Associate with datapool...
  2. Chọn Private Test Datapool trong danh sách các pool dữ liệu kiểm thử trong dự án hiện tại. Một pool dữ liệu thử nghiệm riêng tư chỉ nhìn thấy được đối với một kịch bản lệnh này mà thôi. Trong một môi trường kiểm thử thực sự, bạn gần như chắc chắn cần tạo ra một pool dữ liệu kiểm thử chia sẻ dùng chung, nó có thể nhìn thấy được từ bất kỳ kịch bản lệnh kiểm thử nào. Điều này cho phép bạn chia sẻ hiệu quả bộ dữ liệu giữa nhiều bài kiểm thử và nhà kiểm thử. Nhấn OK.
  3. Các kịch bản lệnh kiểm thử dựa trên đầu cuối sẽ thường chứa một số lớn các dữ liệu xâu văn bản trực kiện và chúng có thể không phải lúc nào cũng ở định dạng bạn cần. Ví dụ, hãy tìm dòng sau đây trong kịch bản lệnh của bạn:
    tFrame().inputKeys("jan{TAB}");
    tFrame().inputKeys("janpwd{ENTER}");

    Dòng đầu tiên gõ nhập jan là tên người sử dụng và nhấn phím Tab để di chuyển đến trường mật khẩu. Dòng thứ hai gõ nhập janpwd là mật khẩu và nhấn phím Enter. Bạn cần trích xuất tên người sử dụng và mật khẩu vào pool dữ liệu của bạn, nhưng bỏ lại các lệnh nhấn phím Tab và Enter trong kịch bản lệnh. Biên tập hai lệnh ấy thành bốn dòng:

    tFrame().inputKeys("jan");
    tFrame().inputKeys("{TAB}");
    tFrame().inputKeys("janpwd");
    tFrame().inputKeys("{ENTER}");
  4. Tìm kiếm qua kịch bản lệnh để tìm các giá trị trực kiện mà bạn có thể thay thế bằng các tham chiếu pool dữ liệu. Functional Tester cung cấp một thủ thuật để làm việc này cho bạn. Để cho phép thủ thuật này tập trung vào chuỗi ký tự bạn quan tâm, nhấn chuột vào gần phần bắt đầu của dòng đầu tiên trong bốn dòng bạn vừa mới nhập vào.
  5. Sử dụng lệnh trình đơn Script > Find Literals and Replace with Datapool References để gọi thực hiện thủ thuật. Nếu bạn nhấn chuột vào đúng chỗ, trình thủ thuật này sẽ ngay lập tức tìm ra chuỗi bằng chữ jan. Lúc này bạn cần cung cấp một tên cho biến pool dữ liệu, hay là một tên cột,để kết hợp với dữ liệu này. Gõ username để kết hợp với dữ liệu này. Gõ Add Literal to Datapool. Nhấn Replace để hoàn thành việc thay thế.
  6. Ngay sau khi bạn nhấn vào nút trong bước trước, trình thủ thuật tìm thấy chuỗi văn bản bằng chữ tiếp theo trong kịch bản lệnh, đó là {TAB}. Bạn không muốn thay thế giá trị này, nên chỉ cần nhấn Find để tìm chuỗi văn bản bằng chữ tiếp theo.
  7. Bây giờ trình thủ thuật tìm thấy janpwd. Bạn muốn thay thế giá trị này, nhưng bằng một biến pool dữ liệu mới. Gõ nhập password vào trường Datapool Variable, viết đè lên giá trị mặc định là username. Nhấn Replace để hoàn tất việc thay thế này.
  8. Đây là giá trị cuối cùng bạn cần để kết nối vào pool dữ liệu của bạn, vì vậy nhấn Close.

Chú ý khung nhìn Test Datapool trong phần dưới của màn hình của bạn. Đây là bảng dữ liệu có thể được sử dụng để điều khiển kịch bản lệnh của bạn. Nó đã được điền trước bằng dữ liệu trích xuất từ kịch bản lệnh bởi trình thủ thuật. Bạn có thể nhập thêm vào nhiều hàng dữ liệu hơn vào bảng này bằng cách sử dụng trình đơn bối cảnh hoặc nhập khẩu từ các tệp tin CSV. Thật không may là, ứng dụng máy chủ mô phỏng chỉ gồm các màn hình tĩnh, đơn giản và sẽ không đáp ứng lại dữ liệu đã thay đổi, nên kịch bản lệnh này không thể cho chạy lại để biểu thị hiệu quả các thay đổi tên người dùng và mật khẩu. Nếu bạn cần một thí dụ chi tiết hơn về cách sử dụng pool dữ liệu, hãy xem hướng dẫn “Tự động hoá kiểm thử truy hồi: Rational Functional Tester của IBM làm cho việc kiểm thử truy hồi thật dễ dàng” (xem Tài nguyên để nhận đường liên kết) đã đề cập trước đây. Hướng dẫn này dẫn bạn qua quy trình thiết lập một bài kiểm thử điều khiển bằng dữ liệu đối với một ứng dụng Java.

Điểm lại

Bạn đã đề cập đến khá nhiều vấn đề nền tảng trong phần này, vì vậy rất đáng dành thêm một vài phút để xem lại những gì bạn đã làm.

  • Bạn đã xem lại ba thành phần của bài kiểm thử: kịch bản lệnh, ánh xạ đối tượng, và pool dữ liệu.
  • Kịch bản lệnh của bạn đã nắm bắt thủ tục kiểm thử của bạn bằng Java hay bằng Visual Basic .NET -- những ngôn ngữ tiêu chuẩn công nghiệp mạnh mẽ.
  • Ánh xạ đối tượng của bạn nắm bắt được các đặc trưng của các đối tượng và các trường bạn gặp trong khi ghi lại. Một cơ cấu cho chạy lại cao cấp gọi là ScriptAssure đã sử dụng ánh xạ này để đảm bảo khả năng chịu đựng của kịch bản lệnh trước các thay đổi giao diện người sử dụng trong ứng dụng đang kiểm thử của bạn.
  • Bạn đã tạo ra một pool dữ liệu và sử dụng một trình thủ thuật để trích xuất dữ liệu trực kiện từ kịch bản lệnh và đưa vào một pool dữ liệu. Việc này tách biệt thủ tục kiểm thử khỏi dữ liệu kiểm thử và cho phép bạn sử dụng lại kịch bản lệnh ấy để thực hiện rất nhiều kịch bản lệnh tương tự với các bộ dữ liệu duy nhất.

Bạn có lẽ rất mong muốn xem Functional Tester chạy lại kịch bản lệnh như thế nào. Sau rốt, đó là toàn bộ vấn đề, phải vậy không? Phần tiếp theo sẽ dẫn bạn qua quy trình cho chạy lại bài kiểm thử và phân tích kết quả.


Chạy bài kiểm thử của bạn

Sẵn sàng kịch bản lệnh cho phiên bản 2

Trong dẫn hướng di chuyển trong ứng dụng đang kiểm thử, bạn đã xoá đi và gõ lại số cổng. Bây giờ là lúc thực hiện một chút biên tập với kịch bản lệnh này để làm cho nó dùng một cổng khác để cho chạy lại phiên bản thứ hai của ứng dụng.

  1. Trong khung nhìn Test Script -- tại trung tâm của cửa sổ Functional Tester -- hãy tìm đến dòng soạn thảo số cổng:
    tFrame().inputKeys("{BKSP}{BKSP}23");
  2. Biên tập dòng này để gõ vào số 24. Dòng này của bạn bây giờ sẽ giống như sau:
    tFrame().inputKeys("{BKSP}{BKSP}24");

Trước khi bạn cho chạy lại kịch bản lệnh, hãy kiểm tra lại một vài thứ:

  • Xác nhận rằng không có bộ mô phỏng đầu cuối nào đang mở. Kịch bản lệnh của bạn sẽ mở một phiên làm việc của bộ mô phỏng đầu cuối và bạn không muốn nó bị nhầm lẫn nếu có nhiều bộ mô phỏng cùng mở.
  • Xác nhận rằng Bộ Mô phỏng Máy chủ đang chạy. Bạn có thể xác định việc này bằng cách kiểm tra lại hai ứng dụng Java hiện ra trên thanh khởi chạy Windows (Windows launch bar) của bạn.

Cho chạy lại kịch bản lệnh

Để cho chạy lại kịch bản lệnh, nhấn Run Functional Test ScriptNút chạy kịch bản lệnh của Functional Test

Bạn sẽ được nhắc đưa vào tên của tệp nhật ký (log) trong đó lưu trữ kết quả của bài kiểm thử. Functional Tester sẽ sử dụng tên của kịch bản lệnh làm tên mặc định cho nhật ký kiểm thử. Nhấn Finish chấp nhận mặc định.

Bây giờ bạn có thể ngồi lại và quan sát khi Functional Tester lặp lại các bước kiểm thử đối với phiên bản mới hơn của ứng dụng của bạn. Đừng cố thử dùng chuột hoặc bàn phím cho đến khi Functional Tester kết thúc việc chạy lại kịch bản lệnh.

Xem xét nhật ký kiểm thử

Khi Functional Tester hoàn tất công việc, bạn sẽ thấy một nhật ký HTML các kết quả của bài kiểm thử. Một lần nữa, nhật ký này giống với nhật ký bạn đã từng thấy khi bạn kiểm thử các ứng dụng Java, Web, hay .NET bằng Functional Tester. Nhật ký ghi lại các sự kiện lớn, chẳng hạn như khởi chạy và kết thúc kịch bản lệnh và ứng dụng, cũng như tình trạng của tất cả các điểm kiểm tra. Nếu có bất kỳ thất bại hoặc cảnh báo nào trong kịch bản lệnh, chúng cũng sẽ được ghi vào nhật ký ở đây.

Khung dẫn hướng bên trái cho phép bạn truy cập nhanh vào phần quan trọng nhất của nhật ký. Bạn sẽ nhận thấy có một thất bại. Một trong các điểm kiểm tra của bạn bị hỏng. Nhấn [Field_16_63_text] failed trong vùng Failure của khung dẫn hướng bên trái. Thao tác này sẽ làm cho nhật ký cuộn đến mục thất bại tương ứng. Để có thêm chi tiết về thất bại này, nhấn chuột vào liên kết View Results. Việc này làm xuất hiện trình so sánh Điểm kiểm tra.

Trình so sánh điểm kiểm tra làm nổi bật bằng màu đỏ sự khác nhau giữa các giá trị dự kiến và kết quả thực tế. Ở đây bạn thấy rằng, mặc dù chúng ta đã mua 100 cổ phiếu rõ ràng, màn hình trích dẫn thời gian thực cuối cùng chỉ cho thấy có 10 cổ phiếu trong tài khoản. Nhiệm vụ hoàn thành! Bài kiểm thử truy hồi đơn giản của bạn đã bộc lộ một điểm thụt lùi lại trong ứng dụng. Tính năng này làm việc trong phiên bản 1, nhưng không thành công trong phiên bản 2. Bây giờ là lúc để đưa ra một báo cáo lỗi.


Tóm lược

Tóm tắt

Vậy bạn đã làm được những gì trong hướng dẫn này?

  • Bạn đã ghi lại một bài kiểm thử tự động cho ứng dụng dựa trên đầu cuối của bạn trong Functional Tester đơn giản bằng cách ghi lại việc thi hành kiểm thử thủ công của chính bạn.
  • Bạn đã sử dụng trình thủ thuật trong khi ghi để chèn vào một vài lệnh để kiểm chứng dữ liệu trên màn hình.
  • Bạn đã tạo cho các điểm kiểm tra đó một mức linh hoạt đủ để làm việc với dữ liệu động được ứng dụng trả lại.
  • Bạn đã thay thế dữ liệu trực kiện trong kịch bản lệnh của bạn bằng các tham chiếu đến dữ liệu trong một pool dữ liệu mới mà bạn tạo ra, do đó làm tăng lợi ích đầu tư của mình khi tái sử dụng chỉ một kịch bản lệnh đơn lẻ để chạy nhiều bộ dữ liệu.
  • Bạn đã làm bộc lộ ra một lỗi trong lần xây dựng mới ứng dụng của bạn đơn giản chỉ bằng cách cho chạy lại bài kiểm thử bạn đã ghi lại.

Bạn thực sự chỉ mới bắt đầu. Có rất nhiều khả năng trong Rational Functional Tester và phần Mở rộng Rational Functional Tester dùng cho ứng dụng dựa trên đầu cuối mà chúng ta không có thời gian đề cập đến trong hướng dẫn này. Bạn bây giờ đã sẵn sàng để khám phá các khả năng ấy trên ứng dụng dựa trên đầu cuối của chính bạn.

Làm sạch

Một khi bạn hoàn tất hướng dẫn này, bạn không còn cần đến Bộ mô phỏng Máy chủ mà bạn đã cài đặt trước đó. Đóng lại hai cửa sổ Bộ mô phỏng Máy chủ Java rồi xoá toàn bộ thư mục HostSim mà bạn đã cài đặt trước đó.


Tải về

Mô tảTênKích thước
Host simulator code used in this tutorialHostSim.zip72KB

Tài nguyên

Học tập

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

Thảo luận

  • Một khi bạn đã khởi động việc sử dụng các sản phẩm Rational, hãy kết nối với các bạn cùng sử dụng tại Rational Software Global User Group Community (Cộng đồng Nhóm người sử dụng Toàn cầu Phần mềm Rational).

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=441848
ArticleTitle=Kiểm thử các ứng dụng dựa trên đầu cuối bằng Rational Functional Tester
publish-date=12062007