Thực thi 3 test case trên sẽ có kết quả như sau:1.2 Kiểm tra đầu vào email_Ngoc28_Vien53 1.2.1 Đặc tả Kiểm tra xem một chuỗi email có hợp lệ hay không?. Vào winform bắt sự kiện cho nút b
Trang 1TRƯỜNG ĐẠI HỌC THỦY LỢI – PH MIỀN NAM
BÁO CÁO KIỂM THỬ PHẦN MỀM
Đề Tài KIỂM THỬ WEB PIBOOK BÁN SÁCH BẰNG CÔNG CỤ UNIT TEST,
TEST SELENIUM, TEST API
Giảng Viên Hướng Dẫn: Th.S Nguyễn Thị Ngọc Thanh
Sinh viên báo cáo:
Huỳnh Hữu Mừng
TP HCM, tháng 6/2024
Trang 2MỤC LỤC
Chương 1 Unit test 3
1.1 Kiểm tra giải phương trình bậc 2 3
1.1.1Đặc tả 3
1.1.2 Có 3 test case 3
1.1.3 Step by step 4
1.2 Kiểm tra đầu vào email 7
1.2.1 Đặc tả 7
1.2.2 Có 2test case 7
1.2.3 Step by step 7
1.3 Chức năng kiểm tra số nguyên tố 10
1.3.1 Đặc tả 10
1.3.2 Có 1 test case 10
1.3.3 Step by step 10
1.4.Tính luỹ thừa 13
1.4.1 Đặc tả 13
1.4.2 Test Case: Có 5 test case 13
1.4.3 Step by Step 13
1.5 Kiểm tra hàm xét học bổng 16
1.5.1Đặc tả: 16
1.5.2 Có 4 test case 16
1.5.3Step by Step 16
Chương 2 Test selenium trên website pibook.vn 19
2.1 Chức năng đăng ký 19
2.1.1 Đặc tả 19
2.1.2 Step by step 19
2.2 Chức năng đăng nhập 23
2.2.1 Đặc tả 23
2.2.2 Step by step 23
2.3 Chức năng quên mật khẩu 26
2 3.1 Đặc tả 26
2.3.2 Step by step 26
Trang 32.4Chức năng tìm kiếm 28
2.4.1Đặc tả 28
2.4.2Step by step 28
2.5 Chức năng thêm giỏ hàng 31
2.5.1 Đặc tả 31
2.5.2Step by step 31
2.6 Chức năng chọn sản phẩm 34
2.6.1 Đặc tả 34
2.6.2 Step by step 35
Chương 3 Test API 37
3.1 Tạo người dùng mới 37
3.1.1 Đặc tả 37
3.1.2 Có 2 test case 37
3.2 Danh sách người dùng 40
3.2.1 Đặc tả 40
3.2.2 Có 3 test case 40
3.2.3 Step by step 40
3.3 Delay 42
3.3.1 Đặc tả 42
3.3.2 Có 3 test case 42
3.3.3 Step by step 42
https://github.com/MATan1808/Ngoc28_Vien53
Trang 4Chương 1 Unit test
1.1 Chức năng Kiểm tra giải phương trình bậc 2
1.1.1Đặc tả
Chức năng này nhằm khởi tạo và giải phương trình bậc 2 dạng 𝑎x^2+𝑏x+𝑐=0nơi 𝑎, 𝑏, 𝑐 là các hệ số thực được cung cấp bởi người dùng Chức năng sẽ tính toán các nghiệm (nếu có) của phương trình dựa trên giá trị của delta (Δ).)
Tính delta (Δ).) theo công thức: Δ).=𝑏^2−4𝑎𝑐
Dựa vào giá trị của Δ).:
o Nếu Δ).>0: phương trình có 2 nghiệm phân biệt
x1 = (-b + Math.Sqrt(delta)) / (2 * a);
x2 = (-b - Math.Sqrt(delta)) / (2 * a);
o Nếu Δ).=0: phương trình có nghiệm kép
x1=x2= - b / (2 * a)
o Nếu Δ).<0: phương trình vô nghiệm
Kết quả mong đợi
Các nghiệm của phương trình (nếu có)
1.1.2 Có 3 test case
ut
Kết quảmongđợi
Thực tế Tes
tresu
Trang 5nHon0_Ngoc28_V
ien53)
Test delta lớnhơn 0
a=
1.0b=-3.0c=2.0
x1=1.0x2=2.0
x1=1.0x2=2.0
Pass
TC03(TestDeltaNh
oHon0_Ngoc28_V
ien53)
Test delta nhỏhơn 0
a=1.0b=2.0c=3.0
Vônghiệm
Vônghiệm
Pass
1.1.3 Step by step
Thiết kế giao diện tính phương trình bậc 2 và các phép tính đều thông qua class PTB2.cs
Trang 6Vào winform bắt sự kiện cho nút button Giải phương trình
private void button1_Click(object sender, EventArgs e)
double x1 = (-b + Math.Sqrt(delta)) / (2 * a);
double x2 = (-b - Math.Sqrt(delta)) / (2 * a);
MessageBox.Show($"Phương trình có hai nghiệm: x1 = {x1}, x2 =
Trang 7Tạo class PTB2.cs
public class PTB2_Ngoc28_Vien53
{
// Phương thức giải phương trình bậc 2 ax^2 + bx + c = 0
public static Tuple<double, double>
GiaiPhuongTrinhBac2_Ngoc28_Vien53(double a_Ngoc28_Vien53, double b_Ngoc28_Vien53, double c_Ngoc28_Vien53)
// Nếu delta > 0, phương trình có 2 nghiệm phân biệt
double x1_Ngoc28_Vien53 = (-b_Ngoc28_Vien53 +
// Nếu delta = 0, phương trình có nghiệm kép
double x_Ngoc28_Vien53 = -b_Ngoc28_Vien53 / (2 *
// Nếu delta < 0, phương trình vô nghiệm (trong tập số thực)
throw new ArgumentException("Phương trình vô nghiệm");
}
Trang 8// Kiểm tra kết quả có đúng như mong đợi
Trang 9// Kiểm tra kết quả có đúng như mong đợi
}
}
}
Trang 10Thực thi 3 test case trên sẽ có kết quả như sau:
1.2 Kiểm tra đầu vào email_Ngoc28_Vien53
1.2.1 Đặc tả
Kiểm tra xem một chuỗi email có hợp lệ hay không?
Input: Một chuỗi địa chỉ email cần kiểm tra
Xử lí:
Sử dụng biểu thức chính quy để kiểm tra xem chuỗi địa chỉ email
Trả về kết quả True nếu chuỗi email đúng, ngược lại trả về kết quả False
Trang 11 Kết quả mong đợi:
True: nếu chuỗi email hợp lệ
False: nếu chuỗi email không hợp lệ
g đợi
Kếtquảthựctế
Testresult
lệ_Ngoc28_
Vien53
ltmvien@gmailcom03
Trang 12Vào winform bắt sự kiện cho nút button Kiem tra
private void kiemtra_Click(object sender, EventArgs e)
{
// Lấy chuỗi email từ ô nhập liệu
string email_Ngoc28_Vien53 = nhap.Text;
// Kiểm tra xem email có hợp lệ hay không bằng phương thức IsValidEmail
// Nếu email không hợp lệ, hiển thị thông báo "Email không hợp lệ."
kq.Text = "Email không hợp lệ.";
// Định nghĩa lớp kiểm tra đầu vào email
public class DauVaoEmail_Ngoc28_Vien53
{
// Phương thức tĩnh để kiểm tra tính hợp lệ của email
public static bool Email_Ngoc28_Vien53(string email_Ngoc28_Vien53) {
// Biểu thức chính quy để kiểm tra định dạng email
string pattern_Ngoc28_Vien53 = 9.-]+\.[a-zA-Z]{2,}$";
// Sử dụng Regex để kiểm tra email có khớp với biểu thức chính quy haykhông
Trang 13// Định nghĩa lớp kiểm thử cho DauVaoEmail_Ngoc28_Vien53
public class TestDauVaoEmail_Ngoc28_Vien53
// Thiết lập các giá trị email hợp lệ
string[] validEmails = { "example@example.com",
"example123@example.co.uk", "user.name@example.domain.com" };
// Thực hiện kiểm tra và xác nhận
foreach (string email in validEmails)
{
bool result_Ngoc28_Vien53 =
DauVaoEmail_Ngoc28_Vien53.Email(email);
bool expected_Ngoc28_Vien53 = true;
// So sánh kết quả thực tế với kết quả mong đợi
Assert.AreEqual(expected_Ngoc28_Vien53,
result_Ngoc28_Vien53);
}
}
Trang 14// Phương thức kiểm thử cho các email không hợp lệ
[TestMethod]
public void EmailKhongHopLe_Ngoc28_Vien53()
{
// Thiết lập các giá trị email không hợp lệ
string[] invalidEmails = { "example.com", "example@example",
"@example.com", "user@.com", "user.name@" };
// Thực hiện kiểm tra và xác nhận
foreach (string email in invalidEmails)
{
bool result_Ngoc28_Vien53 =
DauVaoEmail_Ngoc28_Vien53.Email(email);
bool expected_Ngoc28_Vien53 = false;
// So sánh kết quả thực tế với kết quả mong đợi
Trang 15− Nếu n bằng 0, nó trả về 1.0, vì mọi số mũ của 0 đều bằng 1
− Nếu n lớn hơn 0, nó sử dụng đệ quy để tính toán lũy thừa bằng ( x )
^( n-1)*x
− Nếu n nhỏ hơn 0, nó cũng sử dụng đệ quy ( x ) ^( n+1) / x
Dữ liệu kiểm thử: sử dụng file TestPower.csv để kiểm tra hàm
Kết quả mong đợi: Xác định kết quả mong đợi cho mỗi trường hợp kiểm thửdựa trên quy tắc toán học của phép tính lũy thừa
1.3.2 Test Case: Có 5 test case
t
Kếtquảmongđợi
Kếtquảthự
c tế
Testresult
TC01(testPower_Ngoc28_Vie
n53)
Kiểm tra lũy thừadương_Ngoc28_Vien53
x=2 n=3
Kiểm tra lũy thừa x=2 0.5 0.5 Pass
Trang 16âm_Ngoc28_Vien53
n=-1Kiểm tra lũy thừadương của số
âm_Ngoc28_Vien53
2n=2
x=-0.25 0.2
5Pass
1.3.3 Step by Step
Viết hàm bắt sự kiện nút tính lũy thừa
private void bang_Click(object sender, EventArgs e)
Trang 17// Phương thức tĩnh để tính toán lũy thừa
public static double Power_Ngoc28_Vien53(double x_Ngoc28_Vien53, intn_Ngoc28_Vien53)
Thực hiện testcase với dữ liệu đã có sẵn, tạo thư mục Data trong project
UnitTest_Ngoc28_Vien53 Tạo tập tin TestPower
Nhập dữ liệu vào TestPower
Trang 18Thêm reference sytstem.data vào project UnitTest_Ngoc28_Vien53
Viết testcase sử dụng dữ liệu này chạy các testcase như sau:
// Thuộc tính TestContext để truy cập dữ liệu kiểm thử
public TestContext TestContext { get; set; }
Trang 19// Sử dụng tệp CSV làm nguồn dữ liệu cho kiểm thử
double x_Ngoc28_Vien53, expected_Ngoc28_Vien53;
// Lấy giá trị từ dữ liệu đầu vào trong tệp CSV
n_Ngoc28_Vien53 = int.Parse(TestContext.DataRow[1].ToString()); x_Ngoc28_Vien53 =
Trang 201.4 Kiểm tra hàm xét học bổng_Ngoc28_Vien53
1.4.1Đặc tả:
Mô tả chức năng: phương thức xetHocBong kiểm tra xem một học sinh có
đủ điều kiện nhận học bổng hay không dựa trên điểm trung bình của ba mônhọc và điểm rèn luyện
Đầu vào:
− Hệ số d1(double) : Điểm của môn học thứ nhất
− Hệ số d2(double) : Điểm của môn học thứ hai
− Hệ số d3(double): Điểm của môn học thứ ba
− Hệ số diemRl(double): Điểm rèn luyện
Kết quả mong đợi:
-Nếu cả hai điều kiện đều đúng, trả về True (đủ điều kiện nhận học bổng)
Trang 21- Nếu bất kỳ điều kiện nào không đúng, trả về False (không đủ điều kiện nhận học bổng).
Kếtquảthự
c tế
Testresult
TC01
(DuDieuKien_Ngoc28_Vien53)
Đủđiềukiệnnhậnhọcbổng
d1=9.0d2=9.0d3=9.5diemRl
=85
True
True
Pass
TC02
(Khongdudieukien_Ngoc28_Vien53)
Khôngđủđiềukiệnnhậnhọcbổng
d1=8.0d2=7.5d3=8.0diemRl
=70
False
False
Pass
TC03(ĐiểmTrungBìnhThấpHơnYêuCầu
_Ngoc28_Vien53)
Điểm
d1=7.0d2=8.0
False
FalsePass
Trang 22d3=8.0diemRl
=85
TC04(ĐiểmRènLuyệnThấpHơnYêuCầu
_Ngoc28_Vien53)
Điểmrènluyệnthấphơnyêucầu
d1=8.5d2=8.5d3=8.5diemRl
=79
False
False
Pass
1.4.3Step by Step
Viết hàm bắt sự nút kết quả
private void ktra_Click(object sender, EventArgs e)
{
Trang 23double d1_Ngoc28_Vien53 = double.Parse(diem1.Text);
double d2_Ngoc28_Vien53 = double.Parse(diem2.Text);
double d3_Ngoc28_Vien53 = double.Parse(diem3.Text);
double diemRl_Ngoc28_Vien53 = double.Parse(renluyen.Text);
bool result_Ngoc28_Vien53 = XetHocBong(d1_Ngoc28_Vien53,
d2_Ngoc28_Vien53, d3_Ngoc28_Vien53, diemRl_Ngoc28_Vien53);
public static bool xetHocBong_Ngoc28_Vien53(double
d1_Ngoc28_Vien53, double d2_Ngoc28_Vien53, double d3_Ngoc28_Vien53, double diemRl_Ngoc28_Vien53)
{
// Tính điểm trung bình của các môn
double DiemTb_Ngoc28_Vien53 = (d1_Ngoc28_Vien53 +
d2_Ngoc28_Vien53 + d3_Ngoc28_Vien53) / 3;
Trang 24// Kiểm tra điều kiện để nhận học bổng: điểm rèn luyện lớn hơn 80 và điểm trung bình lớn hơn 8.5
if (diemRl_Ngoc28_Vien53 > 80 && DiemTb_Ngoc28_Vien53 > 8.5) {
Trang 25// Assert
bool expected_Ngoc28_Vien53 = true;
Assert.AreEqual(expected_Ngoc28_Vien53, result_Ngoc28_Vien53); }
// Kiểm thử cho trường hợp khi không đủ điều kiện nhận học bổng
// Kiểm thử cho trường hợp khi điểm trung bình thấp hơn yêu cầu
Trang 27Chương 2 Test selenium trên website pibook.vn
Trang 282.1 Chức năng đăng ký
2.1.1 Đặc tả
Mục tiêu của kiểm thử này là xác minh rằng chức năng đăng ký trên trang web pibook.vn hoạt động chính xác Điều này bao gồm kiểm tra xem người dùng có thể tạo tài khoản mới với thông tin hợp lệ và nhận được xác nhận đăng ký thànhcông
Kết quảthực tế
Test date Test
result
Trang 29g kí thành
công)
Đăng kíthành công
-Nhậptất cảthôngtin hợplệ
-Nhấnnútđăng kí
Đăngkíthànhcông
Đăng kíthànhcông
30/5/20241/6/2024
kí tự
-Nhậpmậtkhẩu 6
kí tự-Nhấnnútđăng kí
Đăngkíkhôngthànhcông
Vẫn ởtrangđăng kí
và hiểnthị
thôngbáo “mậtkhẩu tốithiểu 8
kí tự”
30/5/20241/6/2024
False
Mật khẩunhập lạikhôngkhớp
-Mậtkhẩunhập lạikhôngkhớp-Nhấnnútđăng kí
Đăngkíkhôngthànhcông
Vẫn ởtrangđăng kí
và hiểnthị
thôngbáo “mậtkhẩunhập lạikhôngđúng”
30/5/20241/6/2024
False
Email đãtồn tại
-Nhậpđịa chỉemail
đã đăngkýthànhcông-Nhấnnútđăng kí
Đăngkíkhôngthànhcông
Vẫn ởtrangđăng kí
và hiểnthị
thôngbáo “địa chỉemail đãđược sửdụng”
30/5/20241/6/2024
False
Nhập vào -Không Đăng Vẫn ở 30/05/202 False
Trang 30các trườngbắt buộc
nhậpthôngtin vàobất kítrườngnào-Nhấnnútđăng kí
kíkhôngthànhcông
trangđăng kí
và hiểnthị
thôngbáo
“pleasefill outthisfield”
41/6/2024
// Khởi tạo WebDriver cho Chrome
driver_Ngoc28_Vien53 = new ChromeDriver();
// Điều hướng đến trang web
driver_Ngoc28_Vien53.Navigate().GoToUrl("https://pibook.vn/");Bước 2: Vào web pibook.vn right click vaò thanh tìm kiếm và kiểm tra thành phần lấy id, name
Điền họ tên
Số điện thoại
Mật khẩu
Nhập lại mật khẩu
Trang 32Bước 3: Tiến hành viết kiểm thử
By.Name(string name): tìm dựa trên thuộc tính name
By.CssSelector(string css): tìm dựa trên selector của css
// Nhấn vào biểu tượng đăng nhập
//điền mật khẩu
driver_Ngoc28_Vien53.FindElement(By.CssSelector("#form-reg > child(4) > div > input")).SendKeys("vien@123");
//điền lại mật khẩu
driver_Ngoc28_Vien53.FindElement(By.CssSelector("input.form-control[name='re_password']")).SendKeys("vien@123");
//nhấn nút đăng ký
driver_Ngoc28_Vien53.FindElement(By.CssSelector("#form-reg > group.text-right > button")).Click();
div.form-Kết quả
Trang 342.2 Chức năng đăng nhập
2.2.1 Đặc tả
Mục tiêu của kiểm thử này là xác minh rằng chức năng đăng nhập trên trang web pibook.vn hoạt động chính xác Điều này bao gồm kiểm tra xem người dùng có thể nhập thông tin đăng nhập hợp lệ và truy cập thành công vào tài khoản của họ
Kết quảthực tế
Test date Test
result
Trang 35g nhập
thành công)
nhậpthànhcông
đúngthôngtin tàikhoản-Nhấnnútđăngnhập
nhậpthànhcông
đêntrangchủ
-Nhập
số điệnthoạihoặcmậtkhẩukhôngchínhxác-Nhấnnútđăngnhập
Đăngnhậpkhôngthànhcông
Vẫn ởtrangđăngnhập,hiển thịthôngbáo “sốđiệnthoạihoặcmậtkhẩukhôngchínhxác”
30/505/2024
01/06/2024
False
Đăngnhập vớitrườngtrống
-Khôngnhậpmậtkhẩuhoặc,
và sốđiệnthoại-Nhấnnútđăngnhập
Đăngnhậpkhôngthànhcông
Vẫn ởtrangđăngnhập vàhiển thịthôngbáo
“Vuilòngnhập sốđiệnthoại vàmậtkhẩu”
30/05/202401/06/2024
False
2.2.3 Step by step
Bước 1: Khởi tạo WebDriver cho Chrome, điều hướng đến trang web
pibook.vn
Trang 36public class DangNhap_Ngoc28_Vien53
// Khởi tạo WebDriver cho Chrome
driver_Ngoc28_Vien53 = new ChromeDriver();
// Điều hướng đến trang web
driver_Ngoc28_Vien53.Navigate().GoToUrl("https://pibook.vn/");Bước 2: Vào web pibook.vn right click vaò thanh tìm kiếm và kiểm tra thành phần lấy id, name
Bước 3: Tiến hành viết kiểm thử
By.Name(string name): tìm dựa trên thuộc tính name
By.CssSelector(string css): tìm dựa trên selector của css
// Nhấn vào biểu tượng đăng nhập
// Nhập mật khẩu
driver_Ngoc28_Vien53.FindElement(By.Name("password")).SendKeys("myvien1234");
//Nhấn nút đăng nhập
driver_Ngoc28_Vien53.FindElement(By.CssSelector(".btnSubmit.w-100")).Click();
Kết quả:
Trang 372.3 Chức năng quên mật khẩu
Trang 382 3.1 Đặc tả
Mục tiêu của kiểm thử này là xác minh rằng chức năng quên mật khẩu trên trang web pibook.vn hoạt động chính xác Điều này bao gồm kiểm tra xem người dùng có thể nhập email hợp lệ để nhận liên kết hoặc hướng dẫn đặt lại mật khẩu qua email
Kết quảthực tế
Test date Test
-Nhấn vàoliên kết
“Quênmật khẩu”
-Nhập địachỉ emailtrong hệthống-Nhấn nútlấy lại mậtkhẩu
Quênmậtkhẩuthànhcông
Thôngbáo
“Mậtkhẩukhôiphục đãđượcgửi vàoemailcủa bạn
“
30/05/2024
01/06/2024
-Nhấn vàoliên kết
“Quênmật khẩu”
-Nhập saiemail-Nhấn nútlấy lại mậtkhẩu
Quênmậtkhẩukhôngthànhcông
Thôngbáo
“Khôngtìm thấythànhviên”
30/05/2024
01/06/2024
False
Quênmậtkhẩu vớicáctrườngtrống
-Nhấn vàoliên kết
“Quênmật khẩu”
- Khôngnhậpemail-Nhấn nútlấy lại mật
Quênmậtkhẩukhôngthànhcông
Thôngbáo
“pleasefill outfield”
30/05/2024
01/06/2024
False
Trang 39// Khởi tạo WebDriver cho Chrome
driver_Ngoc28_Vien53 = new ChromeDriver();
// Điều hướng đến trang web
Nhấn nút lấy lại mật khẩu
Bước 3: Tiến hành viết kiểm thử
By.CssSelector(string css): tìm dựa trên selector của css
// Nhấn vào biểu tượng đăng nhập
IWebElement searchButton =
driver_Ngoc28_Vien53.FindElement(By.Id("Header_account_view"));