Mở rộng Rational Functional Tester với các công cụ mã nguồn mở: Phần 2: Tự động hóa thử nghiệm cơ sở dữ liệu

Kịch bản lệnh dựa vào SQuirreL SQL

Kịch bản tiêu biểu để thử nghiệm phía cơ sở dữ liệu ứng dụng của bạn là để thực hiện một số hoạt động chèn hoặc xóa bên trong ứng dụng của bạn và sau đó kiểm tra xem cơ sở dữ liệu đã được cập nhật đúng chưa. Vì Rational® Functional Tester của IBM® không cung cấp một phương tiện nguyên gốc để làm việc với các cơ sở dữ liệu, nên SquirreL SQL là một công cụ tuyệt vời để đáp ứng các yêu cầu thử nghiệm cơ sở dữ liệu của bạn. Đây là một công cụ mã nguồn mở viết bằng Java™, làm cho nó trở thành một ứng cử viên lý tưởng cho các khả năng tự động ghi và chạy lại của Rational Functional Tester. Phần 1 của bài viết này đã chỉ cho bạn cách thiết lập Rational Functional Tester và phần này sẽ giúp bạn tạo và đóng gói kịch bản lệnh.

Daniel Gouveia, Kỹ sư phần mềm, IBM

Dan Gouveia là một kỹ sư bán hàng cho IBM, chủ yếu tập trung được vào các công cụ thử nghiệm hiệu năng và chức năng của Rational. Ông làm việc với các khách hàng về thực hiện các công cụ này theo cách hiệu quả nhất, thường đối phó với các chủ đề như thử nghiệm hướng-từ khóa, phát triển các khung công tác tự động hóa, v.v..



28 06 2011

Thử nghiệm cơ sở dữ liệu

Nhiều nhà thử nghiệm quan tâm đến việc thử nghiệm phía-cơ sở dữ liệu của ứng dụng của họ. Kịch bản tiêu biểu là bạn thực hiện một số hoạt động chèn hoặc xóa trong ứng dụng của bạn và sau đó kiểm tra xem cơ sở dữ liệu đã được cập nhật đúng chưa. Khi các nhóm thử nghiệm chuyển sang tự động hóa, thì việc thử nghiệm cơ sở dữ liệu này trở thành một mong muốn tự nhiên. Thật không may, Rational® Functional Tester IBM® (Nhà thử nghiệm chức năng Rational của IBM) không cung cấp một phương tiện nguyên gốc để làm việc với các cơ sở dữ liệu.

SquirreL SQL là một công cụ tuyệt vời để đáp ứng các yêu cầu kiểm tra cơ sở dữ liệu của bạn. Khi biết điều này, bạn có thể khai triển một trường hợp bất ngờ là "Lại thêm một hội chứng công cụ khác". Cuối cùng, trên thực tế nó là một công cụ khác mà bạn cần. Tin tốt là nó là một công cụ nguồn mở. Điều này sẽ cho bạn khả năng tải về và sử dụng công cụ này miễn phí. Hơn nữa, nó đưa ra một mức hỗ trợ, trong trường hợp bạn gặp phải các vấn đề với công cụ này. Cuối cùng, nó được viết bằng Java™. Điều này làm cho nó trở thành một ứng cử viên lý tưởng cho các khả năng tự động ghi và chạy lại của Rational Functional Tester.

Bài viết này trình bày phỏng theo một hướng dẫn "mở đầu" đã giúp cho các khách hàng chấp nhận việc sử dụng SquirreL SQL vào việc tự động hóa Rational Functional Tester của họ. SquirreL SQL cung cấp dư thừa chức năng cho tham vọng trở thành chuyên gia-cơ sở dữ liệu. Tuy nhiên, ý định của loạt bài này là để giữ cho mọi thứ đơn giản trong khi vẫn bảo đảm rằng nó truyền đạt các khái niệm quan trọng nào đó, chẳng hạn như chạy một truy vấn, kiểm tra bộ-kết quả. Nó không giải quyết nhiều khả năng còn lại, mà để chúng cho việc nghiên cứu tìm hiểu theo như suy nghĩ của bạn.

Bạn sẽ thấy lợi ích của bài viết này sau đây. Để làm rõ thêm, các kịch bản lệnh được tạo ra trong bài viết này có sẵn để giúp bạn nghiên cứu sâu hơn. Bạn có thể tải chúng từ bảng ở cuối bài viết này.

Xin lưu ý rằng bạn cần phải có trải nghiệm về Rational Functional Tester (ít nhất là hoạt động ghi và chạy lại) trước khi thực hiện các bài tập trong bài viết này.

Phần 1 của loạt bài này chỉ cho bạn cách cấu hình Rational Functional Tester (Nhà thử nghiệm chức năng Rational) cho các hàm của kịch bản lệnh này. Bài viết này sẽ chỉ cho bạn cách tạo và đóng gói kịch bản lệnh. Bài viết này giả định rằng bạn đã hoàn thành các bước chi tiết trong Phần 1.


Điều đầu tiên: các điều kiện tiên quyết

Trước khi bắt đầu, hãy chắc chắn rằng bạn đã cài đặt Rational Functional Tester, có bản quyền và đã sẵn sàng chạy! Điều này là khá rõ ràng, nhưng hết sức quan trọng để bạn hoàn thành thắng lợi các nhiệm vụ trong bài viết này.


Tự động hóa thử nghiệm cơ sở dữ liệu : Tạo kịch bản lệnh dựa vào SquirreL SQL

Các bước sau đây sẽ đưa bạn qua việc tạo bốn kịch bản lệnh. Ba kịch bản lệnh đầu tiên được tập trung vào nhiệm vụ SquirreL SQL cụ thể. Kịch bản lệnh cuối cùng là kịch bản lệnh trình vỏ (shell), tập hợp ba kịch bản lệnh để thực hiện theo chuỗi.

Kịch bản lệnh đầu tiên

Ghi lại kịch bản lệnh đầu tiên của bạn dựa vào SquirreL SQL: kịch bản lệnh SQuirreL_SQL_Connect.

  1. Nhấn nút Record (Ghi lại).
  2. Đưa vào tên của kịch bản lệnh và nhấn nút Finish để bắt đầu ghi, như trong Hình 1.
Hình 1. Đưa vào một vị trí và tên cho kịch bản lệnh
cửa sổ để ghi lại một kịch bản lệnhthanh công cụ ghi lại
  1. Chọn nút Start Application (Khởi động ứng dụng), chọn squirrel-sql – executable làm ứng dụng của bạn và nhấn nút OK, như trong Hình 2.
Hình 2. Chọn ứng dụng
cửa sổ để chọn ứng dụng
  1. Nhấn đúp vào bí danh Classics Database (trong cửa sổ SquirreL SQL), như trong Hình 3.
Hình 3. Chọn một bí danh
cửa sổ có các cửa sổ con phủ lên
  1. Nhấn nút Connect (một lần nữa, không cần tên User hoặc Password , như trong Hình 4).
Hình 4. Kết nối tới cơ sở dữ liệu
cửa sổ để nối tới cơ sở dữ liệu
  1. Nhấn nút Stop Recording (Dừng ghi) trong Rational Functional Tester.

Bây giờ bạn sẽ có một kịch bản lệnh trông tương tự như trong Liệt kê 1.

Liệt kê 1. Kịch bản lệnh kết nối SQL đã ghi
import resources.SQuirrel_SQL_ConnectHelper;

/**
 *  Description		: XDE Tester Script
 *  @author	IBM Rational
 */
public class SQuirrel_SQL_Connect extends SQuirrel_SQL_ConnectHelper
{
/**
 *  Script Name		: SQuirrel_SQL_Connect
 *  Generated			: Jun 20, 2007 9:51:08 AM
 *  Description		: XDE Tester Script
 *  Original Host		: WinNT Version 5.1 Build 2600 (S)
 *
 *  @since 	2007/06/20
 *  @author	IBM Rational
 */
public void testMain (Object[] args)
{
		startApp(“squirrel-sql”);
	
			// Frame :  SQuirrel SQL Client Version 2.5
		listOfDatabaseAliasesThatCanBe().doubleClick(atText(“Classics Database”));
		connect().click();
}
}

Kịch bản lệnh thứ hai

Ghi lại kịch bản lệnh tiếp theo của bạn dựa vào SquirreL SQL: kịch bản lệnh SQuirreL_SQL_Simple_Query.

  1. Đưa vào tên của kịch bản lệnh và nhấn nút Finish button to begin recording it, như trong Hình 5.
Hình 5. Bắt đầu ghi kịch bản lệnh của bạn
cửa sổ để ghi lại một kịch bản lệnhthanh công cụ ghi lại
  1. Chọn Session > New SQL Worksheet (Phiên làm việc > Phiếu công tác SQL mới), như trong Hình 6.
Hình 6. Mở một Phiếu công tác SQL mới
cửa sổ cho thấy trình đơn của phiên làm việc
  1. Nhấn vào trường chỉnh sửa SQL và nhập SELECT * FROM ORDERS, như trong Hình 7.
Hình 7. Nhập lệnh SQL
cửa sổ rỗng để nhập mã

Lưu ý: Bạn có thể cần mở to nhất cửa sổ của bạn và thay đổi kích thước ô RESULTS (Các kết quả).

  1. Nhấn nút Run SQL (như trong Hình 7).
  2. Khởi tạo trình thủ thuật hoạt động và điểm xác nhận hợp lệ, như trong Hình 8.
Hình 8. Chọn một đối tượng
cửa sổ có trình đơn thả xuống
  1. Sử dụng công cụ Object Finder (Trình tìm kiếm đối tượng) để chọn bộ-kết quả trong cửa sổ SquirreL SQL, như trong Hình 9.
Hình 9. Chọn tập-kết quả
cửa sổ có bảng
  1. Chọn Table Contents (Các nội dung bảng) với Data Value, cung cấp VerifyOrdersResultSet cho Verification Point Name (Tên của điểm xác nhận hợp lệ) và sau đó nhấn nút Next (như trong Hình 10).
Hình 10. Chèn một điểm xác nhận hợp lệ
cửa sổ có các thông tin chi tiết về điểm xác nhận hợp lệ
  1. Chọn 5 cột đầu tiên (đối với dữ liệu cần kiểm tra) và nhấn nút Finish, như trong Hình 11.
Hình 11. Chọn dữ liệu để kiểm tra
cửa sổ có dữ liệu bảng được chọn

Lưu ý: Hãy chắc chắn rằng bạn đã chọn Column Selection (Chọn cột) trong danh sách thả xuống. Sau đó bạn có thể chọn cột đầu tiên (có nghĩa là, nhấn ô dữ liệu đầu tiên) và kéo về bên phải.

  1. Nhấn nút Stop Recording (Dừng ghi) trong Rational Functional Tester.

Bây giờ bạn sẽ có một kịch bản lệnh trông tương tự như trong Liệt kê 2.

Liệt kê 2. Kịch bản lệnh truy vấn đơn giản đã ghi
public class SQuirrel_SQL_Simple_Query extends SQuirrel_SQL_Simple_QueryHelper
{
/**
 *  Script Name		: SQuirrel_SQL_Simple_Query
 *  Generated			: Jun 20, 2007 9:54:46 AM
 *  Description		: XDE Tester Script
 *  Original Host		: WinNT Version 5.1 Build 2600 (S)
 *
 *  @since 	2007/06/20
 *  @author	IBM Rational
 */
public void testMain (Object[] args)
{

			// Frame :  SQuirrel SQL Client Version 2.5
		mainFrameMenuBar().click(atPath(“Session”));
		mainFrameMenuBar().click(atPath(“Session->New SQL Worksheet”));
		justToMakeGetToolTiptextToBeCa().click(atPoint(30,9));
		mainFrame().inputKeys(“{CAPSLOCK}SELECT * FROM ORDERS”);
		runSQLControlENTER().click();
		VerifyOrdersResultSetVP().performTest();

}
}

Lưu ý: Tùy thuộc vào phiên bản của Rational Functional Tester mà bạn đang sử dụng, dòng lệnh điểm xác nhận hợp lệ của bạn trông giống như sau:
dataSetViewerTablePanelMyJTabl().performTest(VerifyOrderResultSetVP());

Kịch bản lệnh thứ ba

Ghi lại kịch bản lệnh cuối cùng của bạn dựa vào SquirreL SQL: kịch bản lệnh SQuirreL_SQL_Close.

  1. Đưa vào vị trí và tên của kịch bản lệnh, sau đó nhấn nút Finish để bắt đầu ghi, như trong Hình 12.
Hình 12. Bắt đầu ghi
cửa sổ để ghi lại một kịch bản lệnhthanh công cụ ghi lại
  1. Trong SQuirreL SQL, chọn File > Exit, như trong Hình 13.
Hình 13. Thoát khỏi SquirreL SQL
cửa sổ cho thấy trình đơn tệp
  1. Nhấn nút Yes trong hộp thoại xác nhận, như trong Hình 14.
Hình 14. Xác nhận rằng bạn muốn đóng lại phiên làm việc này
cửa sổ đóng phiên làm việc
  1. Nếu bạn nhận được một thông báo "các thay đổi chưa được lưu" như Hình 15, chỉ cần nhấn No (Không).
Hình 15. Không lưu các thay đổi
cửa sổ xác nhận các thay đổi lưu trữ
  1. Nhấn nút Stop Recording trong Rational Functional Tester.

Bây giờ bạn sẽ có một kịch bản lệnh trông tương tự như trong Liệt kê 3.

Liệt kê 3. Kịch bản lệnh Đóng SQL đã ghi
public class SQuirrel_SQL_Close extends SQuirrel_SQL_CloseHelper
{
/**
 *  Script Name		: SQuirrel_SQL_Close
 *  Generated			: Jun 20, 2007 10:01:03 AM
 *  Description		: XDE Tester Script
 *  Original Host		: WinNT Version 5.1 Build 2600 (S)
 *
 *  @since 	2007/06/20
 *  @author	IBM Rational
 */
public void testMain (Object[] args)
{

			// Frame :  SQuirrel SQL Client Version 2.5
		mainFrameMenuBar().click(atPath(“File”));
		mainFrameMenuBar().click(atPath(“File->Exit”));
		
		
			//
		yes().click();

			//
		no().click();

}
}

Kịch bản lệnh thứ tư

Để liên kết tất cả nó lại với nhau, hãy tạo kịch bản lệnh shell: SQuirreL_SQL_Shell.

  1. Nhấn đúp vào dự án của bạn trong khung nhìn Functional Test Project (Dự án thử nghiệm chức năng) trong Rational Functional Tester, rồi chọn Add Empty Script (Thêm vào kịch bản lệnh rỗng) như trong Hình 16.
Hình 16. Thêm một kịch bản lệnh rỗng
trình đơn thêm kịch bản lệnh
  1. Đưa vào một vị trí và tên cho kịch bản lệnh, rồi nhấn Finish, như trong Hình 17.
Hình 17. Bắt đầu ghi một kịch bản lệnh rỗng
cửa sổ cung cấp các thông tin chi tiết về kịch bản lệnh rỗng
  1. Tạo một dòng mới sau // TODO Insert code here // (Chèn mã vào đây) và nhấn vào dòng rỗng để đặt con trỏ ở đó.
  2. Nhấn đúp lần lượt vào từng kịch bản lệnh Squirrel SQL và chọn Insert As callScript (Chèn như là kịch bản lệnh gọi) để thêm chúng vào kịch bản lệnh shell mới của bạn, như trong Hình 18.

Lưu ý: Hãy cẩn thận thêm các kịch bản lệnh theo thứ tự mong muốn.

Hình 18. Chèn các kịch bản lệnh vào trong trình vỏ shell của bạn
cửa sổ có các khung được gắn thẻ

Lưu ý: Hãy cẩn thận thêm các kịch bản lệnh theo thứ tự mong muốn.

Bây giờ bạn sẽ có một kịch bản lệnh shell trông tương tự như trong Liệt kê 4.

Liệt kê 4. Kịch bản lệnh shell SQL đã hoàn thành
import resources.SQuirrel_SQL_ShellHelper;

/**
 *  Description		: XDE Tester Script
 *  @author	IBM Rational
 */
public class SQuirrel_SQL_Shell extends SQuirrel_SQL_ShellHelper
{
/**
 *  Script Name		: SQuirrel_SQL_Shell
 *  Generated			: Jun 20, 2007 10:09:19 AM
 *  Description		: XDE Tester Script
 *  Original Host		: WinNT Version 5.1 Build 2600 (S)
 *
 *  @since 	2007/06/20
 *  @author	IBM Rational
 */
public void testMain (Object[] args)
{
		callScript(“SQuirrel_SQL_Connect”);
		callScript(“SQuirrel_SQL_Simple_Query”);
		callScript(“SQuirrel_SQL_Close”);
	
}
}

Bây giờ là lúc trưng ra! Hãy chạy lại các kịch bản lệnh

Vì bạn đã tạo ra các kịch bản lệnh SQuirreL của mình rồi, nên bây giờ chỉ còn vấn đề chạy lại chúng thôi. Có một vài điều cần lưu ý:

  • Khi chạy lại các kịch bản lệnh, bạn có thể nhận thấy một số vấn đề tính thời gian. Chỉ cần khắc phục những điều này bằng cách thêm các cuộc gọi phương thức waitForExistence() đến các đối tượng nhất định. Ví dụ, trong kịch bản lệnh đầu tiên, thêm nó vào đối tượng bí danh của cơ sở dữ liệu. Các dòng mã mà tôi sử dụng trông như sau:

    listOfDatabaseAliasesThatCanBe().waitForExistence();
  • Bạn có thể cần thêm việc đồng bộ hóa vào hai kịch bản lệnh khác của bạn. Về cơ bản, bạn muốn bảo đảm chắc chắn rằng nếu kịch bản lệnh đầu tiên để mặc dữ liệu xử lý của SquirreL SQL, thì kịch bản lệnh thứ hai sẽ chờ đợi cho đến khi nó kết thúc.

Kết thúc suy nghĩ: Từ đây sẽ đi đâu

Nó sẽ giúp ích cho bạn để tìm hiểu các khả năng mở rộng mà SquirreL SQL cung cấp cho bạn. Nếu chức năng đơn giản mà bạn đã xem xét hôm nay sẽ là đủ cho bạn, thì tất cả tốt hơn. Tuy nhiên, có thể bạn sẽ thấy rằng có một số điều tuyệt vời nữa mà bạn có thể thực hiện với công cụ này. Điều làm cho mọi thứ thú vị hơn là ở chỗ bạn sẽ có khả năng tự động hóa những điều bạn thấy khi sử dụng Rational Functional Tester.

Là một kỹ sư tự động hóa, bạn không tạo ra các dự án thử nghiệm chỉ tập trung vào việc thử nghiệm cơ sở dữ liệu (tất nhiên, trừ khi đó là tất cả mọi thứ mà bạn đang làm). Thay vào đó, bạn gói lại kiểu tự động hóa này thành việc tạo kịch bản lệnh ứng dụng của bạn. Có một vài cách giúp bạn có thể làm điều này.

  • Một cách là tạo các phương thức chung cho các kịch bản lệnh, có nghĩa là chúng có thể chuyển qua nhiều tham số (chẳng hạn như các chuỗi truy vấn SQL) và tự động kiểm tra tập kết quả. Sau đó bạn có thể tạo ra Các lớp trình trợ giúp siêu lớp tùy chỉnh và đưa các phương thức chung này vào trong đó. Điều này cho phép bạn chỉ cần gọi phương thức cần thiết (ví dụ để truy vấn vào một bảng) từ các kịch bản lệnh thử nghiệm của bạn.
  • Một cách khác, có lẽ dễ dàng hơn, là chỉ cần duy trì chúng như là các kịch bản lệnh. Bạn vẫn cần tạo dạng chung chung cho chúng (ví dụ, chấp nhận các tham số khác nhau và v.v..), nhưng gọi chúng trong các kịch bản lệnh shell (tương tự như kịch bản lệnh shell mà bạn đã tạo trong bài tập này).

Tuy nhiên, bạn làm những điều này như thế nào là hoàn toàn tùy thuộc vào bạn. Kết quả cuối cùng trong bất kỳ trường hợp nào là bây giờ bạn biết cách tự động hoá thành công việc thử nghiệm cơ sở dữ liệu của mình bằng Rational Functional Tester và SquirreL SQL.


Tải về

Mô tảTênKích thước
Scripts to accompany the articlesquirrel-sql-scripts.zip15KB

Tài nguyên

Học tập

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

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, Nguồn mở
ArticleID=696144
ArticleTitle=Mở rộng Rational Functional Tester với các công cụ mã nguồn mở: Phần 2: Tự động hóa thử nghiệm cơ sở dữ liệu
publish-date=06282011