Kiểm thử Cơ sở dữ liệu với Selenium
Selenium Webdriver được sử dụng trong kĩ thuật kiểm thử ứng dụng bằng trình duyệt. Để dùng được Selenium Webdriver trong việc Kiểm chứng Cơ sở dữ liệu (CSDL) (Database Verification), bạn cần sử dụng JDBC ("Java Database Connectivity"). I. Vậy JDBC là gì? JDBC (Java Database Connectivity) ...
Selenium Webdriver được sử dụng trong kĩ thuật kiểm thử ứng dụng bằng trình duyệt. Để dùng được Selenium Webdriver trong việc Kiểm chứng Cơ sở dữ liệu (CSDL) (Database Verification), bạn cần sử dụng JDBC ("Java Database Connectivity").
I. Vậy JDBC là gì?
JDBC (Java Database Connectivity) là một API tiêu chuẩn cho phép người dùng thực hiên một câu lệnh SQL. Nó có khả năng tạo ra sự liên kết giữa ngôn ngữ lập trình Java và hàng loạt các CSDL. API JDBC cung cấp các class và interfaces giúp cho ứng dụng có thể tương tác với các CSDL.
- Driver Manager: Là một class, được dùng để nạp driver vào bộ nhớ và quản lí danh sách các driver (Database drivers). Có thể sử dụng nó để mở các kết nối tới một nguồn dữ liệu.
- Driver: Là một interface được dùng để tạo liên kết và điều khiển các liên lạc với CSDL . Khi driver được tải lên thì lập trình viên không cần gọi tên nó một cách cụ thể.
- Connection: Là một interface có chứa các method phục vụ cho việc liên lạc với CSDL. Connection mô tả nội dung liên lạc. Tất cả các thông tin liên lạc với CSDL đều thông qua đối tượng connection.
- Statement: Là một interface chứa câu lệnh SQL để gửi tới CSDL, câu lệnh này được phân tích, tổng hợp, lập kế hoạch và thực hiện.
- ResultSet: Là tên gọi cho tập hợp các bản ghi được lấy ra từ CSDL bằng cách thực hiện truy vấn.
- SQLException: là một class xử lý lỗi ngoại lệ, chứa các lỗi truy cập cơ sở dữ liệu.
II. Làm thế nào để thực hiện kiểm thử CSDL sử dụng Selenium?
Để thực hiện được việc kiểm thử CSDL sử dụng Selenium, ta cần phải triển khai theo ba bước sau đây:
1. Tạo kết nối tới CSDL. 2. Gửi các câu truy vấn tới CSDL. 3. Xử lí kết quả.
1. Tạo kết nối tới CSDL
Cú pháp để tạo kết nối tới CSDL như sau: ``` DriverManager.getConnection(URL, "userid", "password" ) ```
Trong đó:
- Userid là tên user được thiết đặt trong CSDL
- Password là mật khẩu của user đã được thiết đặt ở trên
- URL được viết theo khuôn mẫu
jdbc:<dbtype>://ipaddress:portnumber/db_name
- <dbtype> - là driver của CSDL mà bạn đang muốn kết nối tới. Ví dụ nếu bạn muốn kết nối tới CSDL Oracle thì giá trị này sẽ là "oracle"
Để kết nối tới CSDL có tên "emp" chẳng hạn thì trong MySQL, URL sẽ là:
jdbc:mysql://localhost:3036/emp
Và câu lệnh để tạo kết nối sẽ là:
Connection con = DriverManager.getConnection(dbUrl,username,password);
Bên cạnh đó bạn cũng phải load JDBC Driver về bằng code:
Class.forName("com.mysql.jdbc.Driver");
### 2. Gửi các câu truy vấn tới CSDL
Sau khi hoàn tất bước khởi tạo kết nối, bước tiếp theo là chạy các câu truy vấn. Ở bước này, bạn có thể sử dụng đối tượng `Statement` để gửi truy vấn. ``` Statement stmt = con.createStatement(); ``` Khi đối tượng `Statement` được tạo thành công, sử dụng method `executeQuery` để thực hiện các câu lệnh SQL. ``` stmt.executeQuery(select * from employee;); ```
### 3. Xử lí kết quả
Các kết quả có được sau khi chạy truy vấn được lưu vào đối tượng `ResultSet` Java hỗ trợ rất nhiều phương thức tân tiến để phục vụ cho việc xử lí các dữ liệu kết quả. Dưới đây là một số các phương thức người dùng có thể sử dụng: | Tên phương thức | Mô tả | | -------- | -------- | | String `getString()` | Phương thức dùng để lấy ra dữ liệu kiểu chuỗi từ tập kết quả | | Int `getInt()` | Phương thức dùng để lấy ra dữ liệu kiểu số nguyên từ tập kết quả | | Double `getDouble()` | Phương thức dùng để lấy ra dữ liệu kiểu double từ tập kết quả | | Date `getDate()` | Phương thức dùng để lấy ra dữ liệu kiểu date từ tập kết quả | | `boolean next()` | Phương thức dùng để di chuyển tới bản ghi tiếp theo trong tập kết quả | | ` boolean previous()` | Phương thức dùng để di chuyển tới bản ghi trước đó trong tập kết quả | | `boolean first()` | Phương thức dùng để di chuyển tới bản ghi đầu tiên trong tập kết quả | | ` boolean last()` | Phương thức dùng để di chuyển tới bản ghi cuối cùng trong tập kết quả | | `boolean absolute(int rowNumber)` | Phương thức dùng để di chuyển tới một bản ghi nhất định trong tập kết quả |
## III. Ví dụ về kiểm thử CSDL bằng Selenium
### Bước 1. Cài đặt [MySQL Server](https://dev.mysql.com/downloads/mysql/) và [MySQL Workbench](https://dev.mysql.com/downloads/workbench/) Nếu bạn chưa từng sử dụng hai công cụ này, bạn có thể tham khảo tại [đây ](https://www.guru99.com/sql.html) Một lưu ý đó là khi cài đặt MySQL Server, hãy ghi lại những thông tin sau đây về CSDL của mình để sử dụng cho các bước tiếp theo: * **Username** * **Password** * **Port number** MySQL Workbench cho phép người dùng quản trị và thao tác trên CSDL dễ dàng hơn mà không cần thiết phải gõ các câu lệnh SQL. Tuy nhiên, bạn vẫn hoàn toàn có thể tương tác với CSDL thông qua MySQL Terminal.
### Bước 2. Khởi động MySQL Workbench và kết nối tới MySQL Server của bạn ![](https://viblo.asia/uploads/7c9bf98d-e4e1-4e38-93c9-95c0abcb91ee.png) Ở màn hình tiếp theo, thực hiện các bước sau: 1. Lựa chọn "Local instance" của MySQL 2. Điền port number 3. Điền username 4. Điền password 5. Bấm chọn OK ![](https://viblo.asia/uploads/6c20597f-c79d-4491-b1b6-1f6c8b89bcfb.jpg)
### Bước 3. Tạo CSDL 1. Bấm chọn "Schema" 2. Điền tên của Schema/CSDL 3. Chọn Apply ![](https://viblo.asia/uploads/50636aab-f27b-4b49-a4c5-e5ca234102e3.jpg)
### Bước 4. Tại menu điều hướng phía tay trái, thực hiện: 1. Bấm chọn "Tables" phía dưới CSDL `thao_sample` 2. Bấm chuột phải và chọn "Create table..." 3. Điền tên bảng là `danh_sach_nhan_vien` 4. Điền tên các trường (cột) trong bảng là 'id', 'Ten', 'Tuoi' và 'Vi_tri' và lựa chọn Datatype cho mỗi trường 5. Bấm chọn "Apply" ![](https://viblo.asia/uploads/93335bba-c690-4230-8fa0-126ddc275028.jpeg) Sau đó, một cửa sổ pop-up hiện ra. Bấm chọn Apply ![](https://viblo.asia/uploads/e9d265d8-5adf-402a-99e8-cb7b34eed853.png)
### Bước 5. Tạo các dữ liệu như sau: | id| Ten| Tuoi | Vi_tri | | --------| -------- | -------- | -------- | |1| Lan | 25 | QA | |2| Nam | 23| Developer| |3| Quang| 33| Manager| Để tạo dữ liệu đưa vào bảng cần làm theo các bước sau: 1. Chọn bảng `danh_sach_nhan_vien` từ thanh điều hướng 2. Ở phía bên phải sẽ xuất hiện các lựa chọn hiển thị, chọn Form Editor 3. Điền nội dung của các trường như bảng dữ liệu trên 4. Bấm chọn Apply ![](https://viblo.asia/uploads/41bc9d19-bc9d-497a-8217-87d4d26f2e4b.jpeg) Tương tự như vậy, tạo toàn bộ các dữ liệu cần thiết. ![](https://viblo.asia/uploads/285525a8-4439-4ce0-afdf-fd99236da960.png)
### Bước 6. Tải về và cài đặt Eclipse, JAVA sau đó tải xuống JDBC connector Tham khảo cách cài đặt trên Ubuntu tại [JAVA](https://tecadmin.net/install-oracle-java-8-ubuntu-via-ppa/#)[](https://tecadmin.net/install-oracle-java-8-ubuntu-via-ppa/#), [Eclipse](https://www.eclipse.org/downloads/eclipse-packages/), [MySQL JDBC connector](https://code.google.com/archive/p/find-ur-pal/downloads)
Bước 7. Thêm file jar vừa download ở trên vào Project của bạn
- Bấm chuột phải vào tập tin .java. (Ở đây là tập tin SQLConnecto.j Chọn Build Path > Configure build path
- Chọn thẻ Libraries
- Bấm chọn Add Externals JARs
- Điều hướng và chọn tập tin .jar bạn vừa tải xuống
- Chọn OK để thêm nó vào project
Bước 8. Sao chép đoạn code sau vào editor.
** Lưu ý các thông tin cần được tùy chỉnh cho phù hợp với dữ liệu của bạn
package test; import java.sql.Connection; import java.sql.Statement; import java.sql.ResultSet; import java.sql.DriverManager; import java.sql.SQLException; public class SQLConnector { public static void main(String[] args) throws ClassNotFoundException, SQLException { //Connection URL Syntax: "jdbc:mysql://ipaddress:portnumber/db_name" String dbUrl = "jdbc:mysql://localhost:3306/thao_sample"; //Database Username String username = "root"; //Database Password String password = "123456"; //Query to Execute String query = "select * from danh_sach_nhan_vien;"; //Load mysql jdbc driver Class.forName("com.mysql.jdbc.Driver"); //Create Connection to DB Connection con = DriverManager.getConnection(dbUrl,username,password); //Create Statement Object Statement stmt = con.createStatement(); // Execute the SQL Query. Store results in ResultSet ResultSet rs= stmt.executeQuery(query); // While Loop to iterate through all data and print results while (rs.next()){ String myTen = rs.getString("Ten"); String myTuoi = rs.getString("Tuoi"); String myvi_tri = rs.getString("vi_tri"); System.out.println(myTen+" "+myTuoi+" "+myvi_tri); } // closing DB Connection con.close(); } }
### Bước 9. Chạy đoạn code và kiểm tra kết quả thu được. ![](https://viblo.asia/uploads/7fd59cef-0b26-4cf3-bd87-f8f464d02ffa.png)
## IV. Tổng quát lại các bước cần thực hiện khi kiểm thử CSDL bằng Selenium #### Bước 1. Tạo kết nối tới CSDL sử dụng method `DriverManager.getConnection(URL, "userid", "password")` #### Bước 2. Tạo truy vấn tới CSDL sử dụng Statement Object `Statement stmt = con.createStatement();` #### Bước 3. Gửi câu truy vấn tới CSDL sử dụng executeQuery và lưu kết quả vào đối tượng ResultSet. `ResultSet rs = stmt.executeQuery(select * from danh_sach_nhan_vien;);`
Java cung cấp rất nhiều methods được tích hợp để xử lý kết quả của các câu SQL sử dụng đối tượng ResultSet.
Nguồn tham khảo: https://www.guru99.com/database-testing-using-selenium-step-by-step-guide.html http://o7planning.org/vi/10167/huong-dan-su-dung-java-jdbc http://congdongjava.com/forum/threads/khái-niệm-và-các-loại-kết-nối-của-jdbc.85/