Các lợi ích cho các nhà phát triển khi sử dụng Rational Functional Tester

Vậy là bạn đã thực hiện một số thay đổi và đã chuyển dịch một số lớp xung quanh và bạn chắc chắn rằng mình đã không phá hỏng bất cứ điều gì. Nếu bạn đã ghi lại các trường hợp thử nghiệm (test case) của mình bằng Rational Functional Tester của IBM, bạn có thể chạy lại toàn bộ tập các bài thử nghiệm hồi quy chỉ mất một phần nhỏ thời gian so với thời gian bình thường cần dùng.

Michael Kelly, Nhà tư vấn, Liberty Mutual

Michael Kelly hiện là một cố vấn độc lập và cung cấp đào tạo theo đặt hàng về các công cụ kiểm thử IBM Rational. Ông tư vấn, viết, và thuyết trình về các chủ đề về kiểm thử phần mềm. Ông hiện đang làm Giám đốc Chương trình cho Hiệp hội Bảo đảm Chất lượng Indianapolis và là một Giám đốc của Hiệp hội Kiểm thử Phần mềm



Allen Stoker, Kỹ sư công nghệ, Liberty Mutual

Allen Stoker là một Kỹ sư công nghệ về Liberty Mutual trong phòng Các thị trường đại lý Regional (RAM). Ông đã triển khai thực hiện các hệ thống trên nhiều nền tảng (bao gồm hệ thống máy tính lớn của IBM, Windows và J2EE) kể từ năm 1983 và hiện nay đang tập trung chủ yếu vào việc phát triển dựa vào-chất lượng trong môi trường J2EE. Gần đây ông chịu trách nhiệm về việc hướng dẫn triển khai thực hiện các bài thực hành thử nghiệm-đơn vị trên toàn bộ tổ chức bộ nhớ RAM



28 06 2011

Việc phát triển ứng dụng doanh nghiệp thường yêu cầu các đội dự án lớn với các nhóm riêng biệt có các trách nhiệm khác nhau. Thường thì các đội được chia thành đội các nhà phân tích, đội các nhà phát triển và đội các nhà thử nghiệm nhỏ hơn. Trong khi đây có thể là một cơ cấu quản lý phù hợp, thì điều đó cũng có thể tạo ra rào cản giữa các đội. Chúng tôi đã có kinh nghiệm rằng khi một đội thử nghiệm chính thức được thành lập, các nhà phát triển ít có khả năng thực hiện trọn vẹn thử nghiệm mã riêng của họ. Đây không phải để nói rằng các nhà phát triển không quan tâm đến việc phát triển một sản phẩm tốt, mà chỉ đơn giản là việc thử nghiệm trở thành "công việc của người khác". Thường vấn đề này bị pha trộn với giả định rằng việc thử nghiệm chức năng này chỉ là công việc của riêng đội thử nghiệm và việc thử nghiệm đơn vị chỉ là công việc của riêng đội phát triển. Ranh giới giữa hai mức thử nghiệm có thể mờ nhạt và dẫn đến có các khe hở nếu các trách nhiệm không được truyền đạt rõ ràng.

Điều quan trọng là bạn nhận ra rằng các nhà phát triển (các nhà phát triển mà chúng ta thường biết) thích giải quyết các vấn đề thiết kế phần mềm và mã hóa phức tạp, mà không thích phát triển các bài thử nghiệm. Việc thử nghiệm chỉ quan trọng khi nó gắn liền với việc giúp họ giải quyết vấn đề đó, khi nó đảm bảo vấn đề đó vẫn còn được giải quyết khi họ tiếp tục giải quyết các vấn đề khác. Cuối cùng, bài viết này sẽ xem xét các cách mà bạn có thể sử dụng Rational® Functional Tester của IBM® để giúp giải quyết những vấn đề này. Đây không phải là một công cụ thay thế cho các công cụ thử nghiệm của nhà phát triển truyền thống, mà là một công cụ khác cho phép bạn thực hiện các kiểu thử nghiệm cụ thể tốt hơn.

Những vấn đề phổ biến với việc thử nghiệm của nhà phát triển

Việc thử nghiệm của nhà phát triển truyền thống diễn ra ở mức đơn vị. Các công cụ như JUnit và NUnit cho phép thao tác các hàm của nhà phát triển ở mức thấp và chúng cung cấp một cấu trúc tạo bản ghi chuẩn đối với các kết quả qua thành công/thất bại. Các công cụ khác, như JUnitEE, cho phép thực hiện các trường hợp thử nghiệm trong một thùng chứa web để thử nghiệm tài nguyên của thùng chứa. Tất cả các công cụ này thường:

  • Cho phép bạn ghi các trường hợp thử nghiệm trong môi trường và ngôn ngữ bản địa của bạn.
  • Có thể mở rộng.
  • Bao gồm một rất nhiều phần mở rộng để giải quyết hầu hết các kiểu thử nghiệm mà bạn có thể muốn thực hiện.

Tuy nhiên, hầu hết các công cụ này không giải quyết việc thử nghiệm theo quan điểm của người dùng. Các công cụ cho phép thử nghiệm theo quan điểm của người dùng thường bị hạn chế vào một kịch bản hoặc môi trường cụ thể (như Swing, Internet Explorer và v.v). JFCUnit là một ví dụ tuyệt vời về một công cụ như vậy. Ngoài ra, hầu như tất cả những công cụ này yêu cầu bạn phải viết mã cho trường hợp thử nghiệm bằng thủ công. Chúng thường không cung cấp phương thức tự động hóa để nắm giữ các bài thử nghiệm, dữ liệu thử nghiệm hoặc các kịch bản phức tạp. Do sự phụ thuộc của chúng vào các trường hợp thử nghiệm được mã hóa, vào các giao diện khó hiểu và vào nhiều công cụ cần thử nghiệm trong các môi trường khác nhau, nên các nhà phát triển thường hạn chế sử dụng các công cụ này. Các nhà thử nghiệm thường không sử dụng lại chúng, trừ khi về bản chất các nhà thử nghiệm đó thực sự là nhà kỹ thuật.

Người ta thường đặt cho các nhà phát triển các mốc thời gian dự án chặt chẽ. Điều này dẫn đến các trường hợp thử nghiệm sẽ khó duy trì cập nhật. Khi sử dụng một giải pháp mã hóa như NUnit, các tạo phẩm thử nghiệm đơn vị phải được duy trì cập nhật thủ công. Nếu bạn đang chậm tiến độ và một trường hợp thử nghiệm ngừng lại, thì bạn phải sửa chữa nó nhanh chóng hoặc nó sẽ trở thành một đốm sáng trong lịch sử nỗ lực phát triển của bạn. Thông thường, chỉ có các nhà phát triển tận tâm nhất mới dành thời gian cho tất cả các bài thử nghiệm đơn vị của mình khi đối mặt với một thời hạn chặt chẽ.

Các giao diện người dùng đặt ra thêm một thách thức nữa. Việc thử nghiệm một thành phần giao diện người dùng yêu cầu thực hiện đơn vị, nhập dữ liệu và đánh giá các kết quả. Các giao diện phức tạp (dựa vào Web, Swing, hoặc cái khác) thổi phồng vấn đề đó. Bạn có thể cần thử nghiệm phản ứng của thành phần theo một giá trị đầu vào cụ thể, nhưng vùng đầu vào đó chỉ được kích hoạt dựa vào các điều kiện phát sinh từ đầu vào trên nhiều bảng trước khi đến thành phần đó. Điều này có thể mất một vài phút nhập dữ liệu và dẫn đến các hiển thị bảng trước khi đạt đến nơi bạn có thể cuối cùng đánh giá một giá trị liên quan..


Rational Functional Tester

Rational Functional Tester là một công cụ thử nghiêm tự động hóa hướng-đối tượng cho phép bạn thử nghiệm một loạt các ứng dụng. Bạn có thể nhanh chóng tạo các kịch bản lệnh bằng cách ghi lại các bài thử nghiệm dựa vào một ứng dụng và bạn có thể thử nghiệm bất kỳ đối tượng nào trong ứng dụng, bao gồm các đặc tính và dữ liệu của đối tượng. Rational Functional Tester cung cấp cho bạn một sự lựa chọn về ngôn ngữ tạo kịch bản lệnh và môi trường phát triển -- Java™ trong khung công tác Eclipse hoặc Microsoft® Visual Basic® .NET trong Môi trường phát triển Microsoft® Visual Studio® .NET.

Việc tích hợp Rational Functional Tester vào nền tảng phát triển của bạn có thể mang lại cho bạn bạn một mức hiệu quả mới. Đây là một lợi thế rất lớn, vì trong bản cài đặt, Rational Functional Tester trở thành một phần liên tục của môi trường phát triển bản địa của bạn. Rational Functional Tester cung cấp chức năng ghi và chạy lại và lưu trữ các kịch bản lệnh đã ghi theo mã nguồn Java hoặc .NET. Điều này cho phép bạn tạo ra một kịch bản lệnh thử nghiệm lặp lại mà chẳng cần nỗ lực gì, trong khi cũng cho phép bạn sử dụng các kỹ năng lập trình của mình để nâng cao các kịch bản lệnh theo ngôn ngữ phát triển bản địa của bạn để đáp ứng các yêu cầu cụ thể.

Khả năng và việc dễ sử dụng này tạo ra vị thế cho một mức tích hợp mới giữa các đội phát triển và thử nghiệm. Hãy xem xét một dự án sử dụng một kho lưu trữ nguồn phổ biến không chỉ có các dự án ứng dụng vùng làm việc điển hình, mà còn có các dự án tạo phẩm thử nghiệm. Dưới đây là một vài kịch bản tiềm năng với kiểu môi trường này:

  • Kịch bản 1: Một nhà phát triển ghi lại một kịch bản lệnh mới để nâng cấp một hệ thống và kiểm tra kịch bản lệnh thử nghiệm. Kịch bản lệnh này ngay lập tức có sẵn cho một nhà thử nghiệm, người có thể thêm kịch bản lệnh đó vào một bộ thử nghiệm thích hợp và sẵn sàng để thử nghiệm hồi quy phiên bản ứng dụng mới trước khi nhà phát triển đã mã hóa xong!
  • Kịch bản 2: Một nhà phát triển ghi lại một kịch bản lệnh mới để nâng cấp một hệ thống và kiểm tra kịch bản lệnh thử nghiệm. Kịch bản lệnh này ngay lập tức có sẵn cho một nhà thử nghiệm, người có thể thực hiện dựa vào dữ liệu của kịch bản lệnh và bắt đầu thêm nhiều trường hợp nữa vào các trường hợp đơn giản mà các nhà phát triển đã mã hóa.
  • Kịch bản 3: Một nhà phát triển nhận được một phiếu lỗi cho một vấn đề đã gặp phải trong một chu kỳ kiểm tra chức năng. Phiếu lỗi đó nhận ra kịch bản lệnh thử nghiệm đã gặp phải vấn đề đó. Nhà phát triển khởi động ứng dụng cục bộ trong chế độ gỡ lỗi, đặt một điểm ngắt ở một điểm thích hợp, chọn kịch bản lệnh được nhận biết theo phiếu đó và bắt đầu chạy lại.
  • Kịch bản 4: Một nhà thử nghiệm đang tiếp tục phát triển một trường hợp thử nghiệm cho một tính năng trong sản phẩm. Nhà thử nghiệm bị rối tung lên về việc sẽ chạy hay nên chạy một cái gì đó. Nhà thử nghiệm có thể mở kịch bản lệnh thử nghiệm của nhà phát triển, xem lại mã và các nhận xét và chạy kịch bản lệnh thử nghiệm để xem nhà phát triển nghĩ gì về việc mình đã đang phát triển. Nếu nhà thử nghiệm thấy một vấn đề, anh ta có thể đưa ra các thay đổi dưới dạng một trường hợp thử nghiệm mới để nhà phát triển có thể mã hóa.
  • Kịch bản 5: Một nhà phát triển ngồi xuống để giữ lại một đoạn mã mà anh vẫn chưa phát triển đến. Nhà phát triển đó bị lẫn lộn về cách thực hiện mã hóa. Nhà phát triển có thể mở kịch bản lệnh thử nghiệm, xem lại mã và các nhận xét và chạy kịch bản lệnh thử nghiệm để xem nhà phát triển nghĩ gì về việc mình đã đang phát triển.

Khó tìm thấy các công cụ tăng cường mức hợp tác của nhà phát triển và nhà thử nghiệm

Nhà thử nghiệm của bạn không ghi và chạy lại

Khi bạn ghi lại một kịch bản lệnh, Rational Functional Tester tự động tạo ra một ánh xạ đối tượng thử nghiệm cho ứng dụng đang thử nghiệm. Ánh xạ đối tượng có các đặc tính nhận dạng cho từng đối tượng. Khi bạn cập nhật thông tin nhận dạng trong ánh xạ đối tượng, bất kỳ các kịch bản lệnh nào có sử dụng ánh xạ đối tượng này sẽ chia sẻ thông tin đã cập nhật, giảm chi phí bảo trì và độ phức tạp tổng thể về phát triển kịch bản lệnh. Ánh xạ đối tượng cũng cung cấp một cách nhanh chóng để thêm các đối tượng vào một kịch bản lệnh. Nó liệt kê các đối tượng thử nghiệm có sẵn trong ứng dụng, cho dù chúng hiện đang hiển thị hay không. Bạn có thể tạo ra một ánh xạ đối tượng thử nghiệm mới bằng cách hoặc bố trí nó vào một ánh xạ hiện có hoặc bổ sung thêm các đối tượng cần thiết.

Rational Functional Tester cũng mô tả ScriptAssure: công nghệ nhận dạng đối tượng cho phép bạn chạy lại thành công các kịch bản lệnh ngay cả khi ứng dụng đang thử nghiệm đã được cập nhật. Bạn có thể đặt các ngưỡng cho các điểm số nhận dạng mà một đối tượng thử nghiệm phải vượt qua để được coi là một ứng cử viên cho việc nhận dạng và bạn cũng có thể viết các cảnh báo để ghi nhật ký các tệp khi Rational Functional Tester chấp nhận một ứng cử viên có số điểm cao hơn ngưỡng quy định. Điều này làm giảm thời gian mà các nhà phát triển dùng để duy trì các kịch bản lệnh thử nghiệm mức giao diện đồ họa người dùng của mình (ví dụ, không giống như JFCUnit).

Các ánh xạ đối tượng có thể hoặc dùng chung hay dùng riêng. Một ánh xạ riêng được gắn vào một kịch bản lệnh và chỉ được truy cập bằng kịch bản lệnh cụ thể đó, trong khi một ánh xạ dùng chung được nhiều kịch bản lệnh chia sẻ. Lợi thế của một ánh xạ dùng chung là khi các đối tượng cần được cập nhật, chỉ có một cập nhật cho một ánh xạ sẽ sửa chữa cho nhiều kịch bản lệnh khác nhau. Bạn có thể kết hợp nhiều ánh xạ đối tượng thử nghiệm dùng chung hay dùng riêng thành một ánh xạ đối tượng thử nghiệm dùng chung đơn từ hoặc khung nhìn Các dự án của Rational Functional Tester hoặc khi bạn tạo một ánh xạ đối tượng thử nghiệm mới. Theo tùy chọn, Rational Functional Tester có thể cập nhật các kịch bản lệnh mà bạn chọn để trỏ đến ánh xạ đối tượng thử nghiệm vừa được kết hợp.

Nhiều hơn là một sự xác nhận đơn giản

Trong quá trình ghi lại, bạn có thể chèn các điểm xác nhận hợp lệ vào kịch bản lệnh để xác nhận trạng thái của một đối tượng trên toàn bộ quá trình xây dựng của ứng dụng đang thử nghiệm. Điểm xác nhận hợp lệ nắm giữ thông tin đối tượng (dựa vào kiểu điểm xác nhận hợp lệ, có thể là một điểm xác nhận hợp lệ các đặc tính đối tượng hay một trong năm kiểu điểm xác nhận hợp lệ dữ liệu -- hệ thống phân cấp trình đơn, bảng, văn bản, hệ thống phân cấp dạng cây, hoặc danh sách) và lưu nó trong một tệp dữ liệu chuẩn. Thông tin trong tệp này sẽ trở thành trạng thái đối tượng được dự kiến trong các quá trình xây dựng tiếp theo. Sau khi thực hiện một thử nghiệm, bạn có thể sử dụng Trình so sánh điểm xác nhận hợp lệ (Verification Point Comparator) để phân tích các sự khác biệt hoặc để cập nhật tệp chuẩn (trạng thái đối tượng được dự kiến) nếu hành vi của đối tượng thay đổi. Điều này không chỉ cung cấp nhiều chức năng hơn chỉ là việc xác nhận truyền thống của bạn, nó cũng đặt dữ liệu tới một nơi nào đó để có thể sử dụng lại.

Bạn có thể thay thế một đặc tính nhận dạng bằng một biểu thức chính quy -- hoặc bằng một dãy số -- để cho phép nhận dạng dựa theo mẫu, thay vì bị hạn chế theo một sự so khớp chính xác. Điều này cho phép linh hoạt hơn trong việc nhận dạng đối tượng. Bạn cũng có thể chuyển đổi các đặc tính thành các biểu thức chính quy và các dãy số từ bên trong Trình soạn thảo điểm xác nhận hợp lệ (Verification Point Editor) hoặc ánh xạ đối tượng thử nghiệm. Ngoài ra, Trình đánh giá biểu thức chính quy (Regular Expression Evaluator) cho phép bạn kiểm tra một biểu thức trong khi bạn đang chỉnh sửa nó, tiết kiệm cho bạn thời gian phải chạy kịch bản lệnh để xem mẫu đó đã hoạt động chưa.


Tiến lên phía trước

Cài đặt và thiết lập

Nếu bạn đã mua các bản sao có phép của nhiều ứng dụng Rational của IBM, bạn sẽ thấy rằng -- trong quá trình cài đặt -- các thành phần riêng được cài đặt vào trong một môi trường eclipse tích hợp (cũng đúng trong một chừng mực nào đó với .NET). Để biết các chi tiết cụ thể về các ứng dụng tích hợp, hãy tìm trong tệp install.html trên đĩa 1 của gói cài đặt của bạn.

Tích hợp phần mềm dùng thử

Nếu bạn đã tải về và cài đặt phiên bản Rational Functional Tester dùng thử, sản phẩm này sẽ cài đặt theo một cấu hình độc lập và sẽ không được tích hợp với các bản cài đặt công cụ Rational của IBM khác. Có một cách để tích hợp các thành phần này cho mục đích đánh giá, nhưng bạn sẽ không có đủ điều kiện để nhận được sự trợ giúp kỹ thuật từ Rational của IBM có liên quan đến việc tích hợp bắt buộc các sản phẩm này.

Nền tảng eclipse được thiết kế để kết hợp các sản phẩm từ nhiều nhà cung cấp thành một môi trường tích hợp duy nhất. Mỗi sản phẩm được cài đặt theo một cách độc lập sẽ có một thư mục eclipse và cũng sẽ có các thư mục cụ thể cho thành phần có thể cắm thêm. Nếu bạn kiểm tra các thư mục cài đặt cho phiên bản dùng thử Rational Functional Tester, bạn sẽ tìm thấy một thư mục tên là eclipse với một thư mục con tên là links và một tệp trong thư mục đó có tên là com.rational.test.ft_6.1.0.link. Nếu bạn sao chép tệp này từ vị trí này và đặt bản sao đó vào trong thư mục links của bản cài đặt nền tảng eclipse đích, thì các thành phần Rational Functional Tester sẽ được thêm vào nền tảng eclipse của bạn khi bạn khởi động nó lần sau.

Tìm hiểu Rational Functional Tester

Để có một số tư liệu giới thiệu về cách sử dụng Rational Functional Tester, hãy đọc Các vấn đề cấu hình và cài đặt với Rational Functional Tester của IBM, Functional Tester, hãy đọc Các vấn đề cấu hình và cài đặt với Rational Functional Tester của IBM, Giới thiệu về Rational Functional Tester phiên bản 6.1, và Sử dụng Rational Functional Tester 6.1 của IBM để chạy bài thử nghiệm hồi quy chức năng đầu tiên của bạn.

Các công cụ thử nghiệm của nhà phát triển Rational của IBM khác

Một lưu ý bổ sung cho các công cụ thử nghiệm của nhà phát triển mà bạn muốn biết, đó là Rational Functional Tester làm việc trong một khung nhìn cho phép Quản lý thay đổi thống nhất (UCM - Unified Change Management) luồng đơn của Rational® ClearCase® của IBM®. Các tạo phẩm đã tạo ra trong Rational Functional Tester có thể là phiên bản được kiểm soát riêng, giống như các kịch bản lệnh thử nghiệm đơn vị truyền thống. Hãy đọc bài Kiểm soát phiên bản các tài sản của Rational Functional Tester 6.1 của IBM khi sử dụng Rational ClearCase của IBM để biết thêm về tích hợp ClearCase.

Tùy thuộc vào bạn đang sử dụng IDE nào, việc tích hợp Rational® Component Tester (Nhà thử nghiệm thành phần Rational) của IBM® cũng có thể giúp cho việc thử nghiệm của nhà phát triển của bạn. Hãy đọc Thử nghiệm thành phần với Rational Application Developer của IBM với phần mềm WebSphere.

Cuối cùng, việc sử dụng Rational Functional Tester với Rational® PurifyPlus™ của IBM® để phân tích thời gian chạy cũng có thể có lợi cho nhiều ứng dụng. Một lần nữa, nếu bạn đang làm việc trong Java, hãy đọc Thiết lập IBM Rational Purify, xác định số lượng và các máy chủ PureCoverage với IBM WebSphere Studio Application Developer (Nhà phát triển ứng dụng Studio WebSphere của IBM).

Tài nguyê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=696161
ArticleTitle=Các lợi ích cho các nhà phát triển khi sử dụng Rational Functional Tester
publish-date=06282011