11 Allure Report đưa ra nguyên nhân dẫn đến Test Script bị fail

Một phần của tài liệu NGHIÊN CỨU WEBDRIVERIO VÀ ÁP DỤNG TRONG KIỂM THỬ TỰ ĐỘNG ỨNG DỤNG WEB (Trang 68 - 86)

Trong ví dụ về các test script cho chức năng chỉnh sửa số lượng sản phẩm, trên màn hình hiển thị test script có ID là “EDC07” tương ứng với test case có nội dung muốn kiểm tra việc thay đổi giá trị số lượng của sản phẩm lớn hơn số lượng tối đa thì hệ thống có chấp nhận hay không (số lượng đặt mua một sản phẩm tối đa trong trường hợp này là 50). Phần nội dung trong mục Overview cho thấy rằng số lượng đầu vào 51 đã được cập nhật thành công, hay giá trị thực tế đã bằng với giá trị không mong muốn. Điều này đã không thỏa mãn điều kiện của chức năng và nội dung của đoạn code cho test script EDC07:

Bảng 3. 13 Ví dụ code cho test script có ID là “EDC07” it('EDC07', async() => {

await EditCart.inputQuanity(TestEditCart.incorrect.EDC7.sl_dat); await EditCart.onClickUpdateCart();

if(await EditCart.onClickUpdateCart()){

let actualQuanity = await $(SOLUONG_TXT).getValue(); let expectQuanity = await TestEditCart.incorrect.EDC7.sl_dat; await expect(actualQuanity).to.not.equal(expectQuanity);}

SVTH: Tạ Hữu Đức Lớp: KTĐT & THCN K58

});

3.3. KẾT LUẬN CHƯƠNG

Chương 3 đã thiết kế kịch bản kiểm thử cho các chức năng chính của hệ thống web siêu thị hoa online. Đồng thời, cũng đã đưa ra giải pháp giải quyết bài toán kiểm thử tự động một ứng dụng Web, đưa ra báo cáo kiểm thử và hỗ trợ tìm nguyên nhân xảy ra lỗi với các test script bị fail.

Trong Chương 4 sẽ vận dụng các cơ sở lý thuyết về kiểm thử phần mềm và kiểm thử phần mềm tự động, kết hợp với việc sử dụng công cụ kiểm thử WebDriverIO và framework Mocha để kiểm thử các chức năng chính của ứng dụng Web siêu thị hoa online.

CHƯƠNG 4: THỰC NGHIỆM VÀ ĐÁNH GIÁ KẾT QUẢ 4.1. GIỚI THIỆU VỀ WEB SIÊU THỊ BÁN HOA ONLINE

Siêu thị bán hoa online được phát triển nhằm thể hiện tương đối các chức năng quan trọng của một web về thương mại điện tử .

Các chức năng chính bao gồm:

Đăng Nhập: khách hàng có thể đăng nhập vào hệ thống và thực hiện các chức

năng như thêm sản phẩm vào giỏ hàng, chỉnh sửa giỏ hàng, đặt hàng.

Đăng Ký: Người dùng khi chưa có tài khoản đăng nhập hệ thống, có thể thực

hiện đăng ký tài khoản mới.

Thêm sản phẩm vào giỏ hàng: Thành viên của hệ thống có thể thêm sản

phẩm mới vào giỏ hàng.

Chỉnh sửa giỏ hàng: Khi muốn thay đổi số lượng sản phẩm trong giỏ hàng,

thành viên của hệ thống có thể sử dụng chức năng sửa giỏ hàng khi trong giỏ hàng đã có sản phẩm.

SVTH: Tạ Hữu Đức Lớp: KTĐT & THCN K58

Hướng dẫn giả lập trang web siêu thị bán hoa online:

1. Mở win/ chọn Xampp 2. Start apache/ my SQL

a. Apache -> config -> http.config b. Ctrl F tìm cổng 80

c. Replace: listen: 80 -> 81 servername local host: 80 -> 81 3. Paste dự án và database: hoa.sql) vào: C:\\xampp\\htdocs

4. Mở trình duyệt, nhập: localhost:81 a. chọn phpmyadmin

b. DB create DB -> import file

5. Mở trình duyệt, nhập: localhost:81/banhoa (web cho khách hàng) (Link download Xampp:

https://liquidtelecom.dl.sourceforge.net/project/xampp/XAMPP%20Windows/5.5.3 7/xampp-win32-5.5.37-0-VC11-installer.exe)

Đồ án kiểm thử web siêu thị bán hoa trên các chức năng chính: đăng ký tài khoản mới, thêm sản phẩm vào giỏ hàng, sửa giỏ hàng và đặt hàng.

4.2. KIỂM THỬ TỰ ĐỘNG WEBSITE VỚI WEBDRIVERIO VÀ NODE.JS 4.2.1. Chức năng đăng kí tài khoản 4.2.1. Chức năng đăng kí tài khoản

Kịch bản kiểm thử chức năng đăng ký tài khoản mới

Bước 1: Tạo một file base.js chứa các phương thức dùng chung cho các page

object. Và sẽ được làm mới liên tục khi tiến hành kiểm tra các chức năng khác của web

Bảng 4. 1 Tạo Base.js chứa các phương thức dùng chung cho các page object const USERNAME_LOGIN = '#txttendangnhap'; const USERNAME_LOGIN = '#txttendangnhap';

const PASSWORD_LOGIN = '#txtpass'; const LOGIN_BTN = '[type="submit"]'; const REGISTER_BTN = '=Đăng Ký';

SVTH: Tạ Hữu Đức Lớp: KTĐT & THCN K58

class Base {

async OpenPage(pageUrl){await browser.url(pageUrl);return this;}

async inputUsernameLogin(username){await

$(USERNAME_LOGIN).setValue(username);return this;}

async inputPasswordLogin(password){await

$(PASSWORD_LOGIN).setValue(password);return this;} async clickLogin(){await $(LOGIN_BTN).click();}

async clickRegisterBtn(){await $(REGISTER_BTN).click();} };

module.exports = Base;

Bước 2: Tạo một page object cho chức năng đăng ký tài khoản mới

(register.js). Trong page object này sẽ kế thừa các phương thức trong Base.js. Trong đó cũng lưu trữ các WebElements và cũng chứa các phương thức thực hiện các thao tác trên các WebElements cần dùng trong quá trình tạo test script

Bảng 4. 2 Tạo một page object cho chức năng đăng ký tài khoản mới let Base = require('../page_objects/Base'); let Base = require('../page_objects/Base');

const USERNAME_REGISTER = '#tendangnhap'; const PASSWORD_REGISTER = '#matkhau'; const HO_TXT = '#ho';

const TEN_TXT = '#ten'; const SDT_TXT = '#sdt'; const EMAIL_TXT = '#email';

const DIACHI_TXT = '[name="diachi"]'; const CODE_TXT = '[name="code"]';

SVTH: Tạ Hữu Đức Lớp: KTĐT & THCN K58

const GIOITINH_TXT = '[name="gioitinh"]'; const REGISTER_BTN = '[type="submit"]';

const RESET_FORM = '[value="Làm Trắng Form"]'

class Register extends Base {

async inputUsernameRegister(ten_dn){

await $(USERNAME_REGISTER).setValue(ten_dn);return this;} async inputUsernameRegister1(){

await $(USERNAME_REGISTER).clearValue();return this;} async inputPasswordRegister(mat_khau){

await $(PASSWORD_REGISTER).setValue(mat_khau);return this;} async inputPasswordRegister2(){

await $(PASSWORD_REGISTER).clearValue();return this;}

async inputHoRegister(ho_kh){await $(HO_TXT).setValue(ho_kh);return this;}

async inputHoRegister3(){await $(HO_TXT).clearValue();return this;} async inputTenRegister(ten_kh){

await $(TEN_TXT).setValue(ten_kh);return this;}

async inputTenRegister4(){await $(TEN_TXT).clearValue();return this;} async inputSDT(sdt){await $(SDT_TXT).setValue(sdt);return this;} async inputSDT5(){await $(SDT_TXT).clearValue();return this;} async inputEmailRegister(email){

await $(EMAIL_TXT).setValue(email);return this;}

async inputEmailRegister8(){await $(EMAIL_TXT).clearValue();return this;} async inputDiachi(dia_chi){

await $(DIACHI_TXT).setValue(dia_chi);return this;}

async inputDiachi9(){await $(DIACHI_TXT).clearValue();return this;} async inputGioiTinh(gt_id){

const GT = await $(GIOITINH_TXT); await GT.selectByAttribute('value', gt_id);

SVTH: Tạ Hữu Đức Lớp: KTĐT & THCN K58

return this; }

async inputCodeRegister(code){

await $(CODE_TXT).setValue(code);return this;} async onClickRegisterBtn(){ await $(REGISTER_BTN).click(); return this; } async onClickResetForm(){ await $(RESET_FORM).click(); return this; } }

module.exports = new Register();

Form đăng ký tài khoản mới của web siêu thị bán hoa online đã xuất hiện lỗi hiển thị các đoạn code HTML trong các textbox tất cả các trường trong Form. Để có thể thực thi các test script kiểm tra thông báo khi các trường này bị bỏ trống chúng ta cần sử dụng API command có nội dung “$(selector).clearValue()” dùng để xóa đi các giá trị trong textbox cần để trống.

Bước 3: Tạo file Json chứa các input data cho các test script cho chức năng đăng ký tài khoản mới (TestRegister.json)

o Cách 1: chuyển file Excel chứa input data của cho các test scipt sang file json

o Cách 2: tạo file json theo cách thủ công nếu như số lượng test script là không nhiều.

Bảng 4. 3 Tạo file Json chứa các input data cho các test script cho chức năng đăng ký tài khoản mới

SVTH: Tạ Hữu Đức Lớp: KTĐT & THCN K58

"RGC02":{"ten_dn":"tahuuduc","error":"bạn chưa nhập vào mật khẩu!"}, "RGC03":{"ten_dn":"tahuuduc","mat_khau":"abc@1234","error":"bạn chưa nhập vào họ!"},

"RGC04":{"ten_dn":"tahuuduc","mat_khau":"abc@1234","ho_kh":"Ta", "error":"bạn chưa nhập vào tên!"},

"RGC05":{"ten_dn":"tahuuduc","mat_khau":"abc@1234","ho_kh":"Ta", "ten_kh":"Huu Duc","error":"bạn chưa nhập vào số điện thoại!"},

"RGC06":{"ten_dn":"tahuuduc","mat_khau":"abc@1234","ho_kh":"Ta", "ten_kh":"Huu Duc","sdt":"giaothongvantai","error":"bạn phải nhập bằng số có từ 10 đến 11 ký tự!"},

"RGC07":{"ten_dn":"tahuuduc","mat_khau":"abc@1234","ho_kh":"Ta", "ten_kh":"Huu

Duc","sdt":"01234567891","email":"giaothongvantai","error":"bạn nhập sai dạng email - dạng email vd: tenban@yahoo.com"},

"RGC08":{"ten_dn":"tahuuduc","mat_khau":"abc@1234","ho_kh":"Ta", "ten_kh":"Huu Duc","sdt":"01234567891","error":"bạn chưa nhập email!"}, "RGC09":{"ten_dn":"tahuuduc","mat_khau":"abc@1234","ho_kh":"Ta", "ten_kh":"HuuDuc","sdt":"01234567891","email":"tahuuduc@gmail.com","error ":"bạn chưa nhập vào địa chỉ!"},

"RGC10":{"ten_dn":"tahuuduc","mat_khau":"abc@1234","ho_kh":"Ta", "ten_kh":"HuuDuc","sdt":"01234567891","email":"tahuuduc@gmail.com","dia_c hi":"Hà Nội", "code":"123456", "error":"Bạn Nhập Sai Mã Xác Nhận Vui Lòng Nhập Lại!\nBấm Vào Đây Để Nhập Lại Mã Xác Nhận"}

"RGC11":{"ten_dn":"tahuuduc","mat_khau":"abc@1234","ho_kh":"Ta",

"ten_kh":"HuuDuc","sdt":"01234567891","email":"tahuuduc@gmail.com","dia_c hi":"Hà Nội","error":"Bạn Nhập Sai Mã Xác Nhận Vui Lòng Nhập Lại!\nBấm Vào Đây Để Nhập Lại Mã Xác Nhận"}

SVTH: Tạ Hữu Đức Lớp: KTĐT & THCN K58 "RGC12":{"ten_dn":"tahuuduc","mat_khau":"abc@1234","ho_kh":"Ta","ten_kh" :"Huu Duc","sdt":"012345678","email":"tahuuduc@gmail.com","dia_chi":"Hà Nội","error":"bạn phải nhập bằng số có từ 10 đến 11 ký tự!"}, "RGC13":{"ten_dn":"daihocgiaothongvantai","mat_khau":"abc@1234","ho_kh": "Khoa","ten_kh":"DienTu","sdt":"01234567891","email":"utceeec@gmail.com", "dia_chi":"Hà Nội","thanhcong":"Bạn Đã Đăng Ký THành Cơng..!"}

}

Bước 4: Tạo file chứa các test script để kiểm tra các tính năng chính của chức năng đăng ký tài khoản mới

Bảng 4. 4 Tạo file chứa các test script để kiểm tra các tính năng chính của chức năng đăng ký tài khoản mới

let expect = require('chai').expect;

let TestRegister = require('../test_data/TestRegister.json') let Register= require('../page_objects/register');

let errorUsername = '#loitendangnhap'; let errorPassword = '#loimatkhau'; let errorHoten = '#loihoten';

let errorSDT = '#loidienthoai'; let errorEmail = '#loimail'; let errorDiachi = '#loidiachi';

let errorCode = 'body > div > div > div.main > table > tbody > tr > td:nth-child(1) > div > table > tbody > tr > td > center > span';

let thanhcong = 'body > div > div > div.main > table > tbody > tr > td:nth-child(1) > div > table > tbody > tr > td > center > span';

let Return_rg = 'body > div > div > div.main > table > tbody > tr > td:nth-child(2) > table:nth-child(11) > tbody > tr:nth-child(2) > td > form > table > tbody > tr:nth-child(6) > td > a:nth-child(1)';

SVTH: Tạ Hữu Đức Lớp: KTĐT & THCN K58

let pageUrl = 'http://localhost:81/banhoa';

describe('Register Account', () => {

before('Open form register', async() => { await Register.OpenPage(pageUrl); await Register.clickRegisterBtn(); })

beforeEach('Reset Form Register', async()=>{ await Register.onClickResetForm();

})

//Để trống textbox của trường [Tên Đăng Nhập] it('RGC01', async() => {

await Register.inputUsernameRegister1(); await Register.onClickRegisterBtn();

let errorRGc01 = await $(errorUsername).getText();

await expect(errorRGc01).to.equal(TestRegister.RGC01.error); })

//Để trống textbox của trường [Mật Khẩu] it('RGC02', async()=>{

await Register.inputUsernameRegister(TestRegister.RGC02.ten_dn); await Register.inputPasswordRegister2();

await Register.onClickRegisterBtn();

let errorRGc02 = await $(errorPassword).getText();

await expect(errorRGc02).to.equal(TestRegister.RGC02.error); })

//Để trống textbox của trường [Họ] it('RGC03', async()=>{

await Register.inputUsernameRegister(TestRegister.RGC03.ten_dn); await Register.inputPasswordRegister(TestRegister.RGC03.mat_khau);

SVTH: Tạ Hữu Đức Lớp: KTĐT & THCN K58

await Register.inputHoRegister3(); await Register.onClickRegisterBtn();

let errorRGc03 = await $(errorHoten).getText();

await expect(errorRGc03).to.equal(TestRegister.RGC03.error); })

//Để trống textbox của trường [Tên] it('RGC04', async()=>{ await Register.inputUsernameRegister(TestRegister.RGC04.ten_dn); await Register.inputPasswordRegister(TestRegister.RGC04.mat_khau); await Register.inputHoRegister(TestRegister.RGC04.ho_kh); await Register.inputTenRegister4(); await Register.onClickRegisterBtn();

let errorRGc04 = await $(errorHoten).getText();

await expect(errorRGc04).to.equal(TestRegister.RGC04.error); })

//Để trống textbox của trường [Số Điện Thoại] it('RGC05', async()=>{ await Register.inputUsernameRegister(TestRegister.RGC05.ten_dn); await Register.inputPasswordRegister(TestRegister.RGC05.mat_khau); await Register.inputHoRegister(TestRegister.RGC05.ho_kh); await Register.inputTenRegister(TestRegister.RGC05.ten_kh); await Register.inputSDT5(); await Register.onClickRegisterBtn();

let errorRGc05 = await $(errorSDT).getText();

await expect(errorRGc05).to.equal(TestRegister.RGC05.error);}) //Nhập kí tự chữ vào textbox của trường [Số Điện Thoại]

it('RGC06', async()=>{

await Register.inputUsernameRegister(TestRegister.RGC06.ten_dn); await Register.inputPasswordRegister(TestRegister.RGC06.mat_khau); await Register.inputHoRegister(TestRegister.RGC06.ho_kh);

SVTH: Tạ Hữu Đức Lớp: KTĐT & THCN K58

await Register.inputTenRegister(TestRegister.RGC06.ten_kh); await Register.inputSDT(TestRegister.RGC06.sdt);

await Register.onClickRegisterBtn();

let errorRGc06 = await $(errorSDT).getText();

await expect(errorRGc06).to.equal(TestRegister.RGC06.error); })

//Nhập giá trị sai định dạng email vào textbox của trường [Email] it('RGC07', async()=>{ await Register.inputUsernameRegister(TestRegister.RGC07.ten_dn); await Register.inputPasswordRegister(TestRegister.RGC07.mat_khau); await Register.inputHoRegister(TestRegister.RGC07.ho_kh); await Register.inputTenRegister(TestRegister.RGC07.ten_kh); await Register.inputSDT(TestRegister.RGC07.sdt); await Register.inputEmailRegister(TestRegister.RGC07.email) await Register.onClickRegisterBtn();

let errorRGc07 = await $(errorEmail).getText();

await expect(errorRGc07).to.equal(TestRegister.RGC07.error); })

//Để trống textbox của trường [Email] it('RGC08', async()=>{ await Register.inputUsernameRegister(TestRegister.RGC08.ten_dn); await Register.inputPasswordRegister(TestRegister.RGC08.mat_khau); await Register.inputHoRegister(TestRegister.RGC08.ho_kh); await Register.inputTenRegister(TestRegister.RGC08.ten_kh); await Register.inputSDT(TestRegister.RGC08.sdt); await Register.inputEmailRegister8(); await Register.onClickRegisterBtn();

let errorRGc08 = await $(errorEmail).getText();

await expect(errorRGc08).to.equal(TestRegister.RGC08.error); })

SVTH: Tạ Hữu Đức Lớp: KTĐT & THCN K58

//Để trống textbox của trường [Địa Chỉ Nhà] it('RGC09', async()=>{ await Register.inputUsernameRegister(TestRegister.RGC09.ten_dn); await Register.inputPasswordRegister(TestRegister.RGC09.mat_khau); await Register.inputHoRegister(TestRegister.RGC09.ho_kh); await Register.inputTenRegister(TestRegister.RGC09.ten_kh); await Register.inputSDT(TestRegister.RGC09.sdt); await Register.inputEmailRegister(TestRegister.RGC09.email); await Register.inputDiachi9(); await Register.onClickRegisterBtn();

let errorRGc09 = await $(errorDiachi).getText();

await expect(errorRGc09).to.equal(TestRegister.RGC09.error); }) //Nhập sai mã xác nhận it('RGC10', async()=>{ await Register.inputUsernameRegister(TestRegister.RGC10.ten_dn); await Register.inputPasswordRegister(TestRegister.RGC10.mat_khau); await Register.inputHoRegister(TestRegister.RGC10.ho_kh); await Register.inputTenRegister(TestRegister.RGC10.ten_kh); await Register.inputSDT(TestRegister.RGC10.sdt); await Register.inputEmailRegister(TestRegister.RGC10.email); await Register.inputDiachi(TestRegister.RGC10.dia_chi); await Register.inputCodeRegister(TestRegister.RGC10.code) await Register.onClickRegisterBtn();

let errorRGc10= await $(errorCode).getText();

await expect(errorRGc10).to.equal(TestRegister.RGC10.error); await Register.clickRegisterBtn();

})

//Để trống textbox mã xác nhận it('RGC11', async()=>{

SVTH: Tạ Hữu Đức Lớp: KTĐT & THCN K58 await Register.inputUsernameRegister(TestRegister.RGC11.ten_dn); await Register.inputPasswordRegister(TestRegister.RGC11.mat_khau); await Register.inputHoRegister(TestRegister.RGC11.ho_kh); await Register.inputTenRegister(TestRegister.RGC11.ten_kh); await Register.inputSDT(TestRegister.RGC11.sdt); await Register.inputEmailRegister(TestRegister.RGC11.email); await Register.inputDiachi(TestRegister.RGC11.dia_chi); await Register.inputCodeRegister(); await Register.onClickRegisterBtn();

let errorRGc11= await $(errorCode).getText();

await expect(errorRGc11).to.equal(TestRegister.RGC11.error); await Register.clickRegisterBtn();

})

//Nhập số điện thoại có số lượng kí tự khơng hợp lệ it('RGC12', async()=>{ await Register.inputUsernameRegister(TestRegister.RGC12.ten_dn); await Register.inputPasswordRegister(TestRegister.RGC12.mat_khau); await Register.inputHoRegister(TestRegister.RGC12.ho_kh); await Register.inputTenRegister(TestRegister.RGC12.ten_kh); await Register.inputSDT(TestRegister.RGC12.sdt); await Register.onClickRegisterBtn();

let errorRGc12 = await $(errorSDT).getText();

await expect(errorRGc12).to.equal(TestRegister.RGC12.error); }) //Nhập các thông tin hợp lệ it('RGC13', async()=>{ await Register.inputUsernameRegister(TestRegister.RGC13.ten_dn); await Register.inputPasswordRegister(TestRegister.RGC13.mat_khau); await Register.inputHoRegister(TestRegister.RGC13.ho_kh); await Register.inputTenRegister(TestRegister.RGC13.ten_kh);

SVTH: Tạ Hữu Đức Lớp: KTĐT & THCN K58 await Register.inputSDT(TestRegister.RGC13.sdt); await Register.inputEmailRegister(TestRegister.RGC13.email); await Register.inputDiachi(TestRegister.RGC13.dia_chi); await Register.inputCodeRegister(); await browser.pause(15000); await Register.onClickRegisterBtn();

let validateRGc13= await $(thanhcong).getText();

await expect(validateRGc13).to.equal(TestRegister.RGC13.thanhcong); })

//Tên đăng nhập chứa khoảng trằng it('RGC14', async()=>{ await Register.inputUsernameRegister(TestRegister.RGC14.ten_dn); await Register.inputPasswordRegister(TestRegister.RGC14.mat_khau); await Register.inputHoRegister(TestRegister.RGC14.ho_kh); await Register.inputTenRegister(TestRegister.RGC14.ten_kh); await Register.inputSDT(TestRegister.RGC14.sdt); await Register.inputEmailRegister(TestRegister.RGC14.email); await Register.inputDiachi(TestRegister.RGC14.dia_chi); await Register.inputCodeRegister(); await browser.pause(10000); await Register.onClickRegisterBtn();

let errorRGc014 = await $(errorUsername).getText();

await expect(errorRGc014).to.equal(TestRegister.RGC14.error); })

//Tên đăng nhập chứa kí tự đặc biệt it('RGC15', async()=>{

await Register.inputUsernameRegister(TestRegister.RGC15.ten_dn); await Register.inputPasswordRegister(TestRegister.RGC15.mat_khau); await Register.inputHoRegister(TestRegister.RGC15.ho_kh);

SVTH: Tạ Hữu Đức Lớp: KTĐT & THCN K58 await Register.inputSDT(TestRegister.RGC15.sdt); await Register.inputEmailRegister(TestRegister.RGC15.email); await Register.inputDiachi(TestRegister.RGC15.dia_chi); await Register.inputCodeRegister(); await browser.pause(10000); await Register.onClickRegisterBtn();

let errorRGc015 = await $(errorUsername).getText();

await expect(errorRGc015).to.equal(TestRegister.RGC15.error); })

//Tên đăng nhập chứa tiếng việt có dấu it('RGC16', async()=>{ await Register.inputUsernameRegister(TestRegister.RGC16.ten_dn); await Register.inputPasswordRegister(TestRegister.RGC16.mat_khau); await Register.inputHoRegister(TestRegister.RGC16.ho_kh); await Register.inputTenRegister(TestRegister.RGC16.ten_kh); await Register.inputSDT(TestRegister.RGC16.sdt); await Register.inputEmailRegister(TestRegister.RGC16.email); await Register.inputDiachi(TestRegister.RGC16.dia_chi); await Register.inputCodeRegister(); await browser.pause(10000); await Register.onClickRegisterBtn();

let errorRGc016 = await $(errorUsername).getText();

await expect(errorRGc016).to.equal(TestRegister.RGC16.error); })

//Tài khoản đã tồn tại trong cơ sở dữ liệu it('RGC17', async()=>{

await Register.inputUsernameRegister(TestRegister.RGC17.ten_dn); await Register.inputPasswordRegister(TestRegister.RGC17.mat_khau); await Register.inputHoRegister(TestRegister.RGC17.ho_kh);

SVTH: Tạ Hữu Đức Lớp: KTĐT & THCN K58 await Register.inputSDT(TestRegister.RGC17.sdt); await Register.inputEmailRegister(TestRegister.RGC17.email); await Register.inputDiachi(TestRegister.RGC17.dia_chi); await Register.inputCodeRegister(); await browser.pause(10000); await Register.onClickRegisterBtn();

let errorRGc017 = await $(errorUsername).getText();

await expect(errorRGc017).to.not.equal(TestRegister.RGC17.error); })

//Tên đăng nhập ít hơn 3 kí tự it('RGC18', async()=>{ await Register.inputUsernameRegister(TestRegister.RGC18.ten_dn); await Register.inputPasswordRegister(TestRegister.RGC18.mat_khau); await Register.inputHoRegister(TestRegister.RGC18.ho_kh); await Register.inputTenRegister(TestRegister.RGC18.ten_kh); await Register.inputSDT(TestRegister.RGC18.sdt); await Register.inputEmailRegister(TestRegister.RGC18.email); await Register.inputDiachi(TestRegister.RGC18.dia_chi); await Register.inputCodeRegister(); await browser.pause(10000); await Register.onClickRegisterBtn();

let errorRGc018 = await $(errorUsername).getText();

await expect(errorRGc018).to.equal(TestRegister.RGC18.error); })

//Tên đăng nhập chứa 31 kí tự it('RGC19', async()=>{

await Register.inputUsernameRegister(TestRegister.RGC19.ten_dn); await Register.inputPasswordRegister(TestRegister.RGC19.mat_khau); await Register.inputHoRegister(TestRegister.RGC19.ho_kh);

SVTH: Tạ Hữu Đức Lớp: KTĐT & THCN K58 await Register.inputSDT(TestRegister.RGC19.sdt); await Register.inputEmailRegister(TestRegister.RGC19.email); await Register.inputDiachi(TestRegister.RGC19.dia_chi); await Register.inputCodeRegister(); await browser.pause(10000); await Register.onClickRegisterBtn();

let errorRGc019 = await $(errorUsername).getText();

await expect(errorRGc019).to.equal(TestRegister.RGC19.error); })

//Check độ dài mật khẩu ít hơn 6 kí tự (4 kí tự) it('RGC20', async()=>{ await Register.inputUsernameRegister(TestRegister.RGC20.ten_dn); await Register.inputPasswordRegister(TestRegister.RGC20.mat_khau); await Register.inputHoRegister(TestRegister.RGC20.ho_kh); await Register.inputTenRegister(TestRegister.RGC20.ten_kh); await Register.inputSDT(TestRegister.RGC20.sdt); await Register.inputEmailRegister(TestRegister.RGC20.email); await Register.inputDiachi(TestRegister.RGC20.dia_chi); await Register.inputCodeRegister(); await browser.pause(10000); await Register.onClickRegisterBtn();

let errorRGc20 = await $(errorPassword).getText();

await expect(errorRGc20).to.equal(TestRegister.RGC20.error); })

//Check độ dài mật khẩu chứa 31 kí tự it('RGC21', async()=>{

await Register.inputUsernameRegister(TestRegister.RGC21.ten_dn); await Register.inputPasswordRegister(TestRegister.RGC21.mat_khau); await Register.inputHoRegister(TestRegister.RGC21.ho_kh);

SVTH: Tạ Hữu Đức Lớp: KTĐT & THCN K58 await Register.inputSDT(TestRegister.RGC21.sdt); await Register.inputEmailRegister(TestRegister.RGC21.email); await Register.inputDiachi(TestRegister.RGC21.dia_chi); await Register.inputCodeRegister(); await browser.pause(10000); await Register.onClickRegisterBtn();

let errorRGc21 = await $(errorPassword).getText();

await expect(errorRGc21).to.equal(TestRegister.RGC21.error); })

//Check số điện thoại chứa 12 kí tự it('RGC22', async()=>{ await Register.inputUsernameRegister(TestRegister.RGC22.ten_dn); await Register.inputPasswordRegister(TestRegister.RGC22.mat_khau); await Register.inputHoRegister(TestRegister.RGC22.ho_kh); await Register.inputTenRegister(TestRegister.RGC22.ten_kh); await Register.inputSDT(TestRegister.RGC22.sdt); await Register.inputEmailRegister(TestRegister.RGC22.email); await Register.inputDiachi(TestRegister.RGC22.dia_chi); await Register.inputCodeRegister(); await browser.pause(10000); await Register.onClickRegisterBtn();

let errorRGc22 = await $(errorSDT).getText();

await expect(errorRGc22).to.equal(TestRegister.RGC22.error); })

//Check số điện thoại có chứa số âm it('RGC23', async()=>{

await Register.inputUsernameRegister(TestRegister.RGC23.ten_dn); await Register.inputPasswordRegister(TestRegister.RGC23.mat_khau); await Register.inputHoRegister(TestRegister.RGC23.ho_kh);

SVTH: Tạ Hữu Đức Lớp: KTĐT & THCN K58 await Register.inputSDT(TestRegister.RGC23.sdt); await Register.inputEmailRegister(TestRegister.RGC23.email); await Register.inputDiachi(TestRegister.RGC23.dia_chi); await Register.inputCodeRegister(); await browser.pause(10000); await Register.onClickRegisterBtn();

let errorRGc23 = await $(errorSDT).getText();

await expect(errorRGc23).to.equal(TestRegister.RGC23.error); })

})

Bảng 4. 5 Tạo file chứa các test script để kiểm tra các tính năng chính của chức năng đăng ký tài khoản mới

Trong đó, tất cả các giá trị nhập giá trị nhập vào: Tên Đăng Nhập, Mật Khẩu, Họ, Tên đều đã được thể hiện dưới dạng tham số để có thể truyền các dữ liệu đầu vào khác nhau mà không cần thay đổi mã code.

Trong file Test Script có sử dụng thư viện “Chai Assertion Library” dùng để thực hiện việc test verification các nội dung của thơng báo lỗi đã chính xác như trong yêu cầu đặc tả.

File Excel mô tả các dữ liệu đầu vào cho chức năng đăng ký tài khoản:

Một phần của tài liệu NGHIÊN CỨU WEBDRIVERIO VÀ ÁP DỤNG TRONG KIỂM THỬ TỰ ĐỘNG ỨNG DỤNG WEB (Trang 68 - 86)