Tìm hiểu về Selenium Database Testing
Bài đăng này đã không được cập nhật trong 5 năm
Tạo test data trong Database
Đầu tiên hãy download và cài đặt database bằng cách truy cập link – “http://dev.mysql.com/downloads/”
Sau khi cơ sở dữ liệu được cài đặt thành công, người dùng có thể chạy MySQL Command Line Prompt như ảnh chụp màn hình sau đây.
Ứng dụng có thể yêu cầu người dùng nhập Password. Password mặc định là root.
Bước tiếp theo là tạo test database với một vài bảng và bản ghi được lưu trữ trong các bảng đó để tạo kết nối với cơ sở dữ liệu và thực hiện các truy vấn.
Bước 1: Gõ "show databases" để xem tất cả các cơ sở dữ liệu đã có sẵn
Bước 2: Gõ "create database user;” tạo 1 database có tên là "user".
Bước 3: Gõ "use user;" để chọn cơ sở dữ liệu mới được tạo sau đó gõ "show tables;" để xem tất cả các bảng có sẵn trong cơ sở dữ liệu.
Bước 4: Nhập lệnh sau để tạo 1 bảng có 4 cột (userId, userName, userAge, userAddress).
create table userinfo
(
userId int,
userName varchar(255),
userAge int,
userAddress varchar(255)
);
Bước 5: Nhập lệnh sau để insert dữ liệu cho tất cả bốn trường cột (userId, userName, userAge, userAddress).
Tương tự, bạn có thể thêm nhiều dữ liệu vào bảng của mình và cũng có thể tạo các bảng khác.
Như các bạn đã biết, Selenium WebDriver là một tool UI Automation. Do đó, một mình Selenium WebDriver không đủ điều kiện để thực hiện kiểm tra cơ sở dữ liệu nhưng điều này có thể được thực hiện bằng cách sử dụng Java Database Connectivity API (JDBC). API cho phép người dùng kết nối và tương tác với nguồn dữ liệu và tìm nạp dữ liệu với sự trợ giúp của automated queries. Để có thể khai thác API JDBC, bắt buộc phải có Java Virtual Machine (JVM) chạy trên hệ thống.
JDBC Workflow
Để thực hiện được việc kiểm thử CSDL, ta cần phải triển khai theo ba bước sau đây:
- Tạo kết nối tới CSDL.
- Thực hiện các câu truy vấn tới CSDL.
- Xử lí kết quả.
- Ngắt kết nối cơ sở dữ liệu.
Bây giờ chúng ta hãy kiểm tra test scenario manually sử dụng “MySQL command line”.
Scenario:
-
Mở Database server và kết nối với “user” database.
-
List down tất cả các bản ghi từ “userinfo” table.
- Đóng Database connection.
Lưu ý rằng read query sẽ liệt kê tất cả dữ liệu người dùng có trong bảng userinfo. Bảng bao gồm các cột sau.
userId username userAge userAddress
Kết quả cũng cho thấy chỉ có một tập dữ liệu duy nhất có trong bảng.
Bây giờ, chúng ta hãy thực hiện cùng một scenario bằng cách sử dụng Java Class.
Bước 1: Bước đầu tiên và quan trọng nhất là configure the project’s build path và thêm tệp “mysql-connector-java-3.1.13-bin.jar” vào thư viện bên ngoài.
Bước 2: Tạo một java class có tên là “DatabaseTesingDemo”.
Bước 3: Sao chép và dán mã dưới đây vào class được tạo ở bước trên.
1
import org.junit.After;
2
import org.junit.Before;
3
import org.junit.Test;
4
import java.sql.Connection;
5
import java.sql.DriverManager;
6
import java.sql.ResultSet;
7
import java.sql.Statement;
8
9
public class DatabaseTesingDemo {
10
// Connection object
11
static Connection con = null;
12
// Statement object
13
private static Statement stmt;
14
// Constant for Database URL
15
public static String DB_URL = "jdbc:mysql://localhost:3306/user";
16
// Constant for Database Username
17
public static String DB_USER = "root";
18
// Constant for Database Password
19
public static String DB_PASSWORD = "root";
20
21
@Before
22
public void setUp() throws Exception {
23
try{
24
// Make the database connection
25
String dbClass = "com.mysql.jdbc.Driver";
26
Class.forName(dbClass).newInstance();
27
// Get connection to DB
28
Connection con = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
29
// Statement object to send the SQL statement to the Database
30
stmt = con.createStatement();
31
}
32
catch (Exception e)
33
{
34
e.printStackTrace();
35
}
36
}
37
38
@Test
39
public void test() {
40
try{
41
String query = "select * from userinfo";
42
// Get the contents of userinfo table from DB
43
ResultSet res = stmt.executeQuery(query);
44
// Print the result untill all the records are printed
45
// res.next() returns true if there is any next record else returns false
46
while (res.next())
47
{
48
System.out.print(res.getString(1));
49
System.out.print("\t" + res.getString(2));
50
System.out.print("\t" + res.getString(3));
51
System.out.println("\t" + res.getString(4));
52
}
53
}
54
catch(Exception e)
55
{
56
e.printStackTrace();
57
}
58
}
59
60
@After
61
public void tearDown() throws Exception {
62
// Close DB connection
63
if (con != null) {
64
con.close();
65
}
66
}
67
}
Output của đoạn code trên là:
1 shruti 25 Noida
2 shrivastava 55 Mumbai
Trường hợp mệnh đề với điều kiện duy nhất
String query = “select * from userinfo where userId='” + 1 + “‘”;
ResultSet res = stmt.executeQuery(query);
Output:
1 shruti 25 Noida
Trường hợp mệnh đề có nhiều điều kiện
String Address =”Mumbai”;
String query = “select * from userinfo where userId='” + 2 + “‘ and userAddress='”+Address+”‘”;
ResultSet res = stmt.executeQuery(query);
Output:
2 shrivastava 55 Mumbai
Theo cùng một cách người dùng có thể thực hiện các truy vấn khác nhau trên cơ sở dữ liệu.
Dưới đây là một số các phương thức người dùng có thể sử dụng:
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ả
float getFloat() Phương thức dùng để lấy ra dữ liệu kiểu float từ tập kết quả
long getLong() Phương thức dùng để lấy ra dữ liệu kiểu long từ tập kết quả
short getShort() Phương thức dùng để lấy ra dữ liệu kiểu short 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ả
Link tham khảo:
https://techblog.vn/kiem-thu-co-so-du-lieu-voi-selenium
Trên đây là chia sẻ của mình về Selenium Database Testing. Cám ơn các bạn đã đọc, rất mong bài viết của mình có thể giúp đỡ phần nào những vướng mắc của các bạn!
All rights reserved