Tải bản đầy đủ (.pdf) (86 trang)

Nghiên cứu một số Framework hỗ trợ đánh giá tự động cho môn học lập trình web 1

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (5.25 MB, 86 trang )

ỦY BAN NHÂN DÂN TP.HCM
TRƯỜNG CAO ĐẲNG CÔNG NGHỆ THỦ ĐỨC
KHOA CÔNG NGHỆ THÔNG TIN

NGHIÊN CỨU KHOA HỌC

Tên đề tài:

NGHIÊN CỨU MỘT SỐ FRAMEWORK HỖ TRỢ ĐÁNH GIÁ TỰ
ĐỘNG CHO MƠN HỌC LẬP TRÌNH WEB 1

Chủ nhiệm đề tài: PHAN GIA PHƯỚC

Tp. Hồ Chí Minh, năm 2016


LỜI CẢM ƠN

Tôi xin chân thành cảm ơn Ban Giám Hiệu trường Cao đẳng
Công nghệ Thủ Đức đã hỗ trợ, tạo mọi điều kiện tốt nhất cho tôi được
tham gia nghiên cứu khoa học.
Xin kính chúc Ban Giám Hiệu Nhà trường luôn dồi dào sức khỏe để
tiếp tục đào tạo được thế hệ sinh viên vừa hồng, vừa chuyên, góp phần vào
sự nghiệp phát triển của đất nước.
Xin chân thành cảm ơn Thầy Vũ Phạm Việt Hà – Trưởng phòng
Khoa học Công nghệ Trường Cao đẳng Công nghệ Thủ Đức đã tạo mọi
điều kiện thuận lợi để những giảng viên như tơi có điều kiện thực hiện tốt
nhất nhiệm vụ nghiên cứu khoa học của mình.
Xin chân thành cảm ơn Thầy Võ Thành Trung – Trưởng Khoa
Công nghệ thông tin đã tin tưởng và giao nhiệm vụ thực tập tại doanh
nghiệp cho tơi để tơi có điều kiện trau dồi và phát triển kiến thức của mình


trong giảng dạy bộ mơn lập trình cũng như trong cơng tác nghiên cứu
khoa học. Xin kính chúc Thầy ln ln mạnh khỏe và vui tươi để dìu dắt
khoa Cơng nghệ thơng tin ngày càng phát triển hơn nữa.
Xin chân thành cảm ơn gia đình, người thân và đồng nghiệp đã cổ
vũ, động viên tơi trong suốt q trình thực hiện nhiệm vụ nghiên cứu khoa
học của mình.
Xin chân thành cảm ơn !
Tp. Hồ Chí Minh, ngày 14 tháng 02 năm 2016
GIẢNG VIÊN

Phan Gia Phước
ii

i


MỤC LỤC
TRANG TỰA

TRANG

LỜI CẢM ƠN ....................................................................................................... i
MỤC LỤC ........................................................................................................... iii
DANH MỤC CÁC CHỮ VIẾT TẮT ....................................................................vi
DANH MỤC CÁC HÌNH ................................................................................... vii
DANH MỤC CÁC BẢNG ................................................................................ viii
PHẦN MỞ ĐẦU ................................................................................................... 2
1.1 Lý do chọn đề tài ......................................................................................... 2
1.1.1 Tính thời sự của đề tài ........................................................................... 2
1.1.2 Tính cấp thiết đáp ứng nhu cầu phát triển kinh tế - xã hội, nâng cao chất

lượng đào tạo: ................................................................................................. 2
1.2 Mục tiêu của đề tài ...................................................................................... 2
1.3 Đối tượng và phạm vi nghiên cứu ................................................................ 3
1.3.1 Đối tượng nghiên cứu ............................................................................ 3
1.3.2 Phạm vi nghiên cứu ............................................................................... 3
1.4 Phương pháp nghiên cứu ............................................................................. 3
1.4.1 Phương pháp nghiên cứu lý luận............................................................. 3
1.4.2 Phương pháp nghiên cứu thực tiễn......................................................... 3
1.5 Đóng góp của đề tài ..................................................................................... 3
1.6 Kết cấu của đề tài ........................................................................................ 3
PHẦN NỘI DUNG ................................................................................................ 6
Chương 1 ............................................................................................................... 7
CƠ SỞ LÝ LUẬN CỦA VẤN ĐỀ NGHIÊN CỨU ............................................... 7
1.1 Lịch sử của vấn đề nghiên cứu ..................................................................... 7
1.1.1 Trên thế giới .......................................................................................... 7
1.1.2 Ở Việt Nam ........................................................................................... 8
1.2 Cơ sở lý thuyết ............................................................................................ 9
1.2.1 Tổng quan về Selenium Framework ...................................................... 9
1.2.2. Làm việc với Selenium WebDriver...................................................... 11
1.2.2.1 Giới thiệu ..................................................................................... 11
ii


1.2.2.2 Kiểm tra text của một phần tử....................................................... 11
1.2.2.3 Kiểm tra những giá trị thuộc tính của một phần tử ........................ 12
1.2.2.4 Kiểm tra giá trị CSS của một phần tử .......................................... 13
1.2.2.5 Sử dụng API tương tác người dùng nâng cao cho các sự kiện chuột và
bàn phím .................................................................................................. 14
1.2.2.6 Thực hiện nhấn đúp (double-click) vào một phần tử ..................... 15
1.2.2.7 Thực hiện thao tác kéo-và-thả một cách tự động .......................... 16

1.2.2.8 Thực thi mã JavaScript ................................................................. 17
1.2.2.9 Chụp ảnh màn hình với Selenium WebDriver............................... 18
1.2.2.10 Phóng lớn tối đa cửa sổ trình duyệt ............................................. 19
1.2.2.11 Kiểm thử tự động các control Dropdown và List ........................ 19
1.2.2.12 Kiểm tra các option trong Dropdown và List: ............................ 23
1.2.2.13 Kiểm thử tự động với radio buttons và radio groups: ................. 24
1.2.2.14 Kiểm thử tự động với các Checkbox: ......................................... 26
1.2.2.15 Kiểm sốt các tiến trình Windows ............................................. 28
1.2.2.16 So sánh hình ảnh trong Selenium: .............................................. 28
1.2.2.17 Highlight tự động các phần tử trong trang web: ......................... 33
1.2.2 Khái quát về kiểm thử hiệu năng (Performance Test) ........................... 34
1.2.3 Tổng quan về công cụ Load Runner ..................................................... 37
1.2.4 Tổng quan về công cụ Jmeter .............................................................. 38
Chương 2 ............................................................................................................. 41
ỨNG DỤNG CÁC FRAMEWORK VÀO HỖ TRỢ ĐÁNH GIÁ TỰ ĐỘNG CHO
MÔN HỌC LẬP TRÌNH WEB 1......................................................................... 41
2.1 Đánh giá về mặt chức năng của trang Web ................................................ 41
2.1.1 Cài đặt và cấu hình Selenium WebDriver ............................................ 41
2.2.2 Ứng dụng Selenium vào đánh giá chức năng của trang Web ................ 44
2.2.2.1 Chấm điểm chức năng điều hướng trên trang web: ...................... 44
2.2.2.2 Chấm điểm sự tồn tại của các phần tử trên trang Web ................. 46
2.2.2.3 Chấm điểm chức năng tìm kiếm trên trang Web .......................... 47
2.2.2.4 Hỗ trợ chấm điểm tự động cho chức năng đăng ký tài khoản (không
trùng email).............................................................................................. 49
2.2.2.5 Chấm điểm control DropDownList trên trang Web...................... 51
iv


2.2 Đánh giá hiệu năng của trang Web ............................................................ 53
2.2.1 Cài đặt và ứng dụng LoadRunner vào đánh giá hiệu năng của trang Web

2.2.1.1 Cài đặt LoadRunner ..................................................................... 53
2.2.1.2 Ứng dụng LoadRunner vào đánh giá hiệu năng của trang Web .... 56
2.2.2 Cài đặt và ứng dụng Jmeter vào đánh giá hiệu năng của trang Web ..... 70
PHẦN KẾT LUẬN ............................................................................................. 76
1. Kết luận: ....................................................................................................... 76
2. Tự nhận xét về những đóng góp của đề tài:................................................... 76
3. Hướng phát triển đề tài: ................................................................................ 77
TÀI LIỆU THAM KHẢO ................................................................................... 78

v


DANH MỤC CÁC CHỮ VIẾT TẮT
STT

Nội dung viết tắt

Ký hiệu chữ viết tắt

1

Giáo viên

GV

2

Học sinh

HS


3

Sinh viên

SV

4

Hệ điều hành

HĐH

5

Kiểm thử phần mềm

KTPM

6

Behavior Driven Development

BDD

7

Test Case

TC


8

Automation Testing

AT

9

Manual Testing

MT

iv


DANH MỤC CÁC HÌNH
HÌNH

TRANG

Hình 2.1: Màn hình ghi lại Vuser script. .................................................................... 59
Hình 2.2: Màn hình Step Navigator ........................................................................... 63
Hình 2.3: Màn hình Vuser Editor. .............................................................................. 64
Hình 2.4: Màn hình Replay Vuser script .................................................................... 65
Hình 2.5: Màn hình hiển thị Trường hợp script Failed. .............................................. 66
Hình 2.6: Màn hình hiển thị Trường hợp Script Passed. ............................................. 66
Hình 2.7: Kết quả đo hiệu năng trang web sau khi Replay tự động nhiều lần. ............ 69
Hình 2.8: Màn hình tạo Test Plan trên Jmeter. ........................................................... 70
Hình 2.9: Màn hình tạo Thread Group. ...................................................................... 70

Hình 2.10: Màn hình tạo HTTP Request. ................................................................... 71
Hình 2.11: Màn hình Summary Report ...................................................................... 72
Hình 2.12: Màn hình View Results Tree. ................................................................... 73
Hình 2.13: Kiểm thử hiệu năng cho các mục con của trang Web................................ 73


DANH MỤC CÁC BẢNG
BẢNG

TRANG

Bảng 1.1: Phân biệt Performance Test, Load Test, Stress Test. .................................. 35
Bảng 1.2: Các thành phần của LoadRunner ............................................................... 37
Bảng 2.1: Danh sách các Driver Server và các trình duyệt tương ứng. ....................... 44

vi


PHẦN MỞ ĐẦU

1


PHẦN MỞ ĐẦU
1.1 Lý do chọn đề tài
1.1.1 Tính thời sự của đề tài
Việc đánh giá môn học tự động đang rất được quan tâm tại Khoa Công nghệ thông
tin Trường Cao đẳng Cơng nghệ Thủ Đức vì việc này sẽ giúp tăng thêm tính chính xác
và nhanh chóng trong việc đánh giá môn học, đặc biệt là các môn học về Lập trình nói
chung và mơn học Lập trình Web 1 nói riêng.

Hiện nay, có một số Framework hỗ trợ kiểm thử tự động ứng dụng Web rất hay
như: Selenium; Load Runner; Jmeter;….Tuy nhiên, việc ứng dụng các Framework này
vào hỗ trợ đánh giá tự động cho môn học Lập trình Web 1 chưa được nghiên cứu.
1.1.2 Tính cấp thiết đáp ứng nhu cầu phát triển kinh tế - xã hội, nâng cao chất
lượng đào tạo:
Trường Cao đẳng Công nghệ Thủ Đức có bề dày lịch sử hơn 30 năm thành lập và
phát triển. Số lượng ngành nghề được đào tạo ở trường rất nhiều, trong đó có ngành
Cơng nghệ thông tin – một ngành thu hút rất nhiều nhân lực trong giai đoạn hiện nay.
Cơ sở vật chất để đáp ứng việc giảng dạy công nghệ thông tin của trường rất đầy đủ và
hiện đại, đội ngũ giáo viên luôn được tiếp cận thực tế với môi trường làm việc tại các
doanh nghiệp để đem những công nghệ mới nhất, hiện đại nhất truyền đạt lại cho sinh
viên nhằm giúp các em thuận lợi hơn trong quá trình làm việc thực tế sau này.
Là giảng viên khoa Công nghệ thông tin, vinh dự được Nhà trường tạo điều kiện
cho đi học tập và làm việc thực tế về Lập trình và Kiểm thử phần mềm tại Cơng ty
TMA Solutions và Công ty FPT Software, người nghiên cứu đã mạnh dạn vận dụng
những kiến thức và kinh nghiệm đã tích lũy được để thực hiện đề tài “Nghiên cứu một
số Framework hỗ trợ đánh giá tự động cho môn học Lập trình Web 1” nhằm tăng tính
chính xác, nhanh chóng và thuận lợi trong việc đánh giá mơn học này.

1.2 Mục tiêu của đề tài
Đề tài có mục tiêu nghiên cứu là:
- Ứng dụng được một số Framework vào hỗ trợ đánh giá tự động cho mơn học
Lập trình Web 1.
2


1.3 Đối tượng và phạm vi nghiên cứu
1.3.1 Đối tượng nghiên cứu
Các Framework: Selenium; Load Runner; Jmeter.
1.3.2 Phạm vi nghiên cứu

Trong phạm vi nghiên cứu của đề tài này người nghiên cứu chỉ tập trung nghiên
cứu và vận dụng các Framework: Selenium; Load Runner; Jmeter vào hỗ trợ đánh
giá tự động về mặt chức năng và hiệu năng cho môn học Lập trình Web 1
(bậc Cao đẳng).

1.4 Phương pháp nghiên cứu
1.4.1 Phương pháp nghiên cứu lý luận
Tìm hiểu các sách, báo, tạp chí …, các website có liên quan để tổng hợp nội dung
cần thiết làm cơ sở lý luận cho đề tài.
1.4.2 Phương pháp nghiên cứu thực tiễn
- Tham khảo ý kiến của giảng viên giảng dạy môn Lập trình Web 1 để đưa ra
hướng đánh giá phù hợp với các tiêu chí đánh giá của mơn học đó.
- Tham khảo ý kiến của các chuyên gia về lập trình và kiểm thử Web ở các
cơng ty phần mềm để có được hướng nghiên cứu đúng đắn nhất.
- Quan sát cách thức hoạt động của các website thông dụng hiện nay để có
được hướng đánh giá chính xác nhất.

1.5 Đóng góp của đề tài
Sau khi hồn tất, đề tài sẽ đóng góp tích cực vào việc hỗ trợ đánh giá tự động cho
mơn học Lập trình Web 1.
Đề tài sẽ là động lực thúc đẩy các em sinh viên tham gia nghiên cứu khoa học một
cách nghiêm túc. Đây là tiền đề rất tốt cho các em để khi ra trường các em có thể hịa
nhập vào mơi trường làm việc thực tế ở doanh nghiệp một cách nhanh chóng.
Các kết quả nghiên cứu của đề tài sẽ được ứng dụng để hỗ trợ đánh giá tự động cho
các bài tập và bài thi Web của sinh viên học mơn Lập trình Web 1.

1.6 Kết cấu của đề tài
Đề tài có kết cấu bao gồm các phần và các chương như sau:

3



PHẦN MỞ ĐẦU
1. Lý do chọn đề tài
2. Mục tiêu của đề tài
3. Đối tượng và phạm vi nghiên cứu
4. Phương pháp nghiên cứu
5. Đóng góp của đề tài
6. Kết cấu của đề tài
PHẦN NỘI DUNG
Chương 1: CƠ SỞ LÝ LUẬN CỦA VẤN ĐỀ NGHIÊN CỨU
1.1 Lịch sử của vấn đề nghiên cứu
1.1.1 Trên thế giới
1.1.2 Ở Việt Nam
1.2 Cơ sở lý thuyết
1.2.1 Tổng quan về Selenium Framework.
1.2.2 Tổng quan về Load Runner.
1.2.3 Tổng quan về Jmeter.
Chương 2: ỨNG DỤNG CÁC FRAMEWORK VÀO HỖ TRỢ ĐÁNH GIÁ TỰ
ĐỘNG CHO MÔN HỌC LẬP TRÌNH WEB 1
2.1 Đánh giá về mặt chức năng của trang Web.
2.1.1 Cài đặt và cấu hình Selenium.
2.2.2 Ứng dụng Selenium vào đánh giá chức năng của trang Web.
2.2 Đánh giá hiệu năng của trang Web.
2.2.1 Cài đặt và ứng dụng LoadRunner vào đánh giá hiệu năng của trang Web.
2.2.2 Cài đặt và ứng dụng Jmeter vào đánh giá hiệu năng của trang Web.
PHẦN KẾT LUẬN
1. Kết luận
2. Tự nhận xét về những đóng góp của đề tài
3. Hướng phát triển đề tài

TÀI LIỆU THAM KHẢO

4


PHẦN NỘI DUNG

5


PHẦN NỘI DUNG
Ngoài phần mở đầu và phần kết luận, phần nội dung của đề tài gồm 2 chương sau:
Chương 1: Cơ sở lý luận của vấn đề nghiên cứu
Chương 2: Ứng dụng các Framework vào hỗ trợ đánh giá tự động cho mơn học
Lập trình Web 1

6


Chương 1

CƠ SỞ LÝ LUẬN CỦA VẤN ĐỀ NGHIÊN CỨU
1.1 Lịch sử của vấn đề nghiên cứu
1.1.1 Trên thế giới
Hiện nay, việc chấm bài thi hoặc bài kiểm tra một cách tự động đang được áp dụng
rộng rãi trên thế giới. Việc chấm bài thi tự động bằng phần mềm sẽ tăng tính khách
quan và chính xác trong việc đánh giá năng lực của người học, đồng thời giảm được
thời gian cho các giáo viên.
Các phần mềm chấm bài thi trắc nghiệm được áp dụng rộng rãi trong các buổi kiểm
tra, buổi thi, ví dụ: phần mềm chấm thi trắc nghiệm trên giấy, phần mềm chấm thi trắc

nghiệm online,… Các phần mềm chấm bài thi tự luận một cách tự động cũng đang
được áp dụng rộng rãi, tuy nhiên các phần mềm dạng này thường ít và chưa đa dạng
như các phần mềm chấm bài thi trắc nghiệm tự động, chi phí phát triển các phần mềm
dạng này cũng rất cao.
Qualrus - phần mềm chấm điểm tự động
Chỉ vài giây sau khi nhấn nút gửi bài đi, Qualrus sẽ gửi lại ngay bài viết với nội
dung nhận xét và chấm điểmQualrus được thiết kế không phải để thay thế hẳn vai trò
chấm điểm của giáo viên, mà giúp các học sinh có nhiều thời gian suy nghĩ kỹ càng về
bài viết trước khi có một bài làm hồn chỉnh nộp cho giáo viên. Phần mềm Qualrus do
Trường Đại học Missouri (Mỹ) phát triển và đang được ứng dụng vào việc chấm điểm
bài làm sinh viên. Qualrus sẽ “nhặt ra” những câu, đoạn chính trong bài kèm theo phần
phân tích, sau đó chấm điểm cho bài viết. Theo người phát triển phần mềm Qualrus,
giáo sư Edward Brent, phần mềm này sử dụng một số kỹ thuật thông minh khác nhau
cho phép máy có thể so sánh nội dung bài viết với phần cơ sở dữ liệu thông tin mà các
bài viết mẫu đã sử dụng nhằm phát hiện những bài viết sao chép từ mạng hay do các
giáo viên, gia sư đưa ra trong các bài mẫu của họ. Cũng theo giáo sư Edward Brent,
các phần phân tích và hướng dẫn do máy đưa ra chỉ mang tính hướng dẫn dựa trên
những gì sinh viên nêu ra trong bài. Như vậy, Qualrus sẽ khơng gây ảnh hưởng gì đến
chủ đề hay văn phong trong bài viết đầu tiên của sinh viên và sinh viên có thêm nhiều
thời gian đọc và suy nghĩ kỹ bài viết trước khi có bài làm hồn chỉnh gửi đến cho giáo
7


viên. Đối với những sinh viên chưa tốt nghiệp, khả năng đánh giá và chấm điểm những
bài tập chuẩn bị cho một kỳ thi của Qualrus thật sự là một sự hỗ trợ rất tuyệt vời. Các
lớp dạy thử nghiệm Qualrus tại Đại học Missouri trong nửa năm, trước khi phần mềm
này được chính thức sử dụng, đã thu hút từ 70-200 sinh viên tham dự mỗi ngày. Chính
họ đã đề nghị chọn sử dụng Qualrus trong số rất nhiều phần mềm chấm điểm tự động
được giới thiệu ở trường. Qualrus giúp thầy cô giáo tiết kiệm khối lượng thời gian rất
lớn cho việc chấm bài và nhờ phần mềm Qualrus, họ không phải lưu tâm đến các lỗi

về cơ sở lập luận mà dành nhiều thời gian hơn nữa cho phần ý tưởng của bài làm của
sinh viên. Qualrus không phải là phần mềm chấm điểm tự động duy nhất được sử dụng
trên thế giới. Năm ngoái, các trường trung học ở bang Indiana (Mỹ) cũng bắt đầu dùng
phần mềm chấm điểm tự động E-rater để chấm các bài làm tiếng Anh của học sinh. Ở
Anh, nhiều trường cũng cho phép học sinh gửi bài làm qua e-mail cho giáo viên để họ
có thể chấm bài ngay khi ở nhà. Nhưng Qualrus được đánh giá cao vì các tính năng hỗ
trợ thiết thực của nó cho sinh viên và giúp tiết kiệm thời gian cho giáo viên. Phần mềm
này được thiết kế với 100.000 USD do Ủy ban Khoa học Quốc gia tài trợ.1
1.1.2 Ở Việt Nam
Ở Việt Nam hiện nay, phần mềm chấm thi tự động đang được áp dụng rộng rãi
trong các kỳ thi, ví dụ: thi tuyển sinh đại học, thi kết thúc học phần, thi tiếng Anh,…
Tuy nhiên, đa số các phần mềm hiện nay chỉ hỗ trợ chấm thi trắc nghiệm trên giấy
hoặc online một cách tự động, chưa có nhiều phần mềm hỗ trợ chấm thi tự động cho
các môn thi tự luận, ví dụ: trong bộ mơn Cơng nghệ phần mềm người nghiên cứu đang
giảng dạy có các mơn áp dụng hình thức thi tự luận như: Lập trình Web 1, Lập trình
Web 2, Lập trình Android,… Do đó, việc nghiên cứu để xây dựng các phần mềm
chấm điểm thi tự luận một cách tự động đang rất cần thiết, nhằm giảm tải thời gian
chấm bài cho các giáo viên, đồng thời tăng tính chính xác, khách quan trong việc chấm
thi.
Hiện nay ở nước ta các hệ thống chấm điểm tự động cịn được áp dụng trong các
gameshow truyền hình, các cuộc thi tin học, ví dụ: các cuộc thi MOS, IC3 đều sử dụng
hình thức chấm bài tự động (chấm cả các câu trắc nghiệm lẫn các câu thực hành thao

1

Việt Báo (Theo_Người lao động)

8



tác),.. và trong việc thi giấy phép lái xe máy cũng đang được triển khai chấm điểm tự
động.
Thi giấy phép lái xe máy: Chấm điểm bằng “mắt thần”
Từ ngày 1-7-2016, người dự thi lấy giấy phép lái xe máy trong cả nước sẽ được
chấm điểm tự động bằng “mắt thần” trên hình đối với phần thi thực hành, thay vì hiện
nay là thi thủ công do cán bộ sát hạch chấm điểm.
Theo đó, bài thi thực hành hạng A1 và A2 vẫn như cũ trên hình vịng số 8, đường
thẳng... Tuy nhiên bên dưới hình - trong nền đất đều được gắn các thiết bị cảm biến
điện tử kết nối với phần điện tử lắp trên xe. Vì vậy, nhìn bằng mắt thường sẽ thấy như
một cuộc thi bình thường.
Nhưng người dự thi nếu cán bánh xe lên mức vạch sơn trên hình ngay lập tức thiết
bị điện tử sẽ phát loa (loa gắn ngay trên xe máy) thông báo lỗi người chạy xe vi phạm.
Đồng thời loa trên sân thi cũng thông báo cho mọi người biết lỗi xe vi phạm. Điều này
cho thấy cuộc thi hồn tồn khơng có sự can thiệp của con người.
Sau khi cuộc thi kết thúc, thiết bị chấm điểm sẽ tự động thông báo bằng loa trên sân
thi công bố rõ ràng kết quả đậu hoặc rớt cho thí sinh. Theo đó, thí sinh đậu khi đạt từ
80 điểm trở lên và rớt khi chỉ đạt từ 79 điểm trở xuống.2
Có thể thấy, các hệ thống chấm điểm tự động hiện nay đang được áp dụng rộng rãi
trong nhiều lĩnh vực, và trong tương lai các phần mềm chấm điểm tự động sẽ được
phát triển mạnh mẽ hơn và áp dụng được cho nhiều mơn học, bao gồm các mơn có
hình thức thi trắc nghiệm lẫn các mơn có hình thức thi tự luận.

1.2 Cơ sở lý thuyết
1.2.1 Tổng quan về Selenium Framework
Selenium là một trong những công cụ kiểm thử phần mềm tự động mã nguồn mở
(open source test automation tool) mạnh mẽ nhất hiện nay cho việc kiểm thử ứng dụng
Web. Selenium script có thể chạy được trên hầu hết các trình duyệt như IE, Mozilla
FireFox, Chrome, Safari, Opera; và hầu hết các hệ điều hành như Windows, Mac,
Linux.
Selenium là một công cụ kiểm thử phần mềm tự động, được phát triển bởi

ThoughtWorks từ năm 2004 với tên ban đầu là JavaScriptTestRunner. Đến năm 2007,
2

Theo báo Tuổi Trẻ ngày 18/01/2016

9


tác giả Jason Huggins rời ThoughtWorks và gia nhập Selenium team, một phần của
Google và phát triển thành Selenium như hiện nay.
Về cấu trúc thì Selenium có 4 phần


Selenium IDE



Selenium RC (Selenium 1 – Selenium Remote Control)



Selenium Gird



Selenium WebDriver (Selenium 2)

Selenium IDE (Integrated Development Environment) là một công cụ cho phép
chúng ta Record/Playback một test script. Đây là một add-on hỗ trợ cho FireFox.
Chúng ta chỉ có thể Record trên trình duyệt FireFox, nhưng bù lại, chúng ta có thể

Playback trên các trình duyện khác như là IE, Chrome….
Selenium Gird là một hệ thống hỗ trợ người dùng thực thi test script trên nhiều
trình duyệt một cách song song mà không cần phải chỉnh sửa test script.
Selenium RC, Selenium WebDriver là một thư viện cho phép chúng ta lập trình
(scripting) test script trên các ngơn ngữ lập trình khác nhau như Python, Java, C#,
Ruby.
Các đặc điểm của Selenium
1. Mã nguồn mở. Phải nói điểm này là điểm mạnh nhất của Selenium khi so sánh
với các test tool khác. Vì là mã nguồn mở nên chúng ta có thể sử dụng mà khơng
phải lo lắng về phí bản quyền hay thời hạn sử dụng.
10


2. Cộng đồng hỗ trợ. Vì là mã nguồn mở nên Selenium có một cộng đồng hỗ trợ
khá mạnh mẽ. Bên cạnh đó, Google là nơi phát triển Selenium nên chúng ta hồn
tồn có thể n tâm về sự hổ trợ miễn phí khi có vấn đề về Selenium. Tuy nhiên,
đây cũng là một điểm yếu của Selenium. Cơ bản vì là hàng miễn phí, cộng đồng
lại đơng nên một vấn đề có thể nhiều giải pháp, và có thể một số giải pháp là
khơng hữu ích. Mặc khác, chúng ta không thể hối thúc hay ra deadline cho sự hỗ
trợ.
3. Selenium hỗ trợ nhiều ngơn ngữ lập trình.
4. Selenium hỗ trợ chạy trên nhiều OS khác nhau với mức độ chỉnh sửa script hầu
như là khơng có. Thực sự thì điều này phụ thuộc phần lớn vào khả năng viết
script của chúng ta.
5. Chạy test case ở backround. Khi chúng ta thực thi một test scrpit, chúng ta hoàn
toàn có thể làm việc khác trên cùng một PC. Điều này hỗ trợ chúng ta không cần
tốn quá nhiều tài ngun máy móc khi chạy test script.
6. Khơng hỗ trợ Win app. Selenium thực sự chỉ hỗ trợ chúng ta tương tác với
Browser mà không hỗ trợ chúng ta làm việc với các Win app, kể cả Win dialog
như Download/Upload – ngoại trừ Browser Alarm. Vậy nên, để xử lý các trường

hợp cần tương tác với hệ thống hay một app thứ ba, chúng ta cần một hay nhiều
thư viện khác như AutoIt hay Coded UI.
1.2.2. Làm việc với Selenium WebDriver
1.2.2.1 Giới thiệu
Selenium WebDriver thực thi một API rất toàn diện để làm việc với các phần tử
Web, hỗ trợ những tương tác người dùng nâng cao, thực thi mã JavaScript, và hỗ trợ
nhiều loại điều khiển khác nhau như List, Dropdown, Radio Button, và Checkbox
1.2.2.2 Kiểm tra text của một phần tử
Trong quá trình kiểm thử một ứng dụng Web, chúng ta cần kiểm tra xem những
phần tử nào đó có hiển thị đúng giá trị hay văn bản trên trang hay không. WebElement
API của Selenium WebDriver cung cấp nhiều cách để truy xuất và kiểm tra văn bản
trên trang.
Chúng ta có thể truy xuất và kiểm tra văn bản trong một phần tử bằng cách dùng
phương thức getText() của lớp WebElement.
Ví dụ:
11


Như ta thấy, phương thức getText() của lớp WebElement sẽ trả về giá trị của thuộc
tính innerText của phần tử: String messageText = message.getText();
Nếu một phần tử có những phần tử con, giá trị của thuộc tính innerText của những
phần tử con này cũng sẽ được trả về cùng với phần tử cha. Trong ví dụ sau đây, chúng
ta có một phần tử <span> nằm trong một phần tử <div>. Khi chúng ta lấy innerText từ
phần tử <div> thì innerText của phần tử <span> cũng được lấy theo.

Chúng ta cũng có thể thực hiện việc so sánh một phần bằng cách sử dụng những
phương thức Java String API như contains(), startsWith(), và endsWith(). Ví dụ:

1.2.2.3 Kiểm tra những giá trị thuộc tính của một phần tử
Những nhà phát triển cấu hình những thuộc tính khác nhau cho những phần tử

được hiển thị trên trang web trong suốt quá trình thiết kế hoặc trong thời gian chạy để
12


điều khiển hành vi hoặc phong cách của những phần tử này khi chúng được hiển thị
trên trình duyệt. Ví dụ, phần tử <input> có thể được thiết lập sang trạng thái “readonly” bằng cách đặt thuộc tính readonly cho nó.
Sẽ có những bài kiểm tra cần thiết để xác định rằng những thuộc tính của phần tử đã
được thiết lập chính xác hay chưa. Chúng ta có thể truy xuất và kiểm tra thuộc tính của
một phần tử bằng cách sử dụng phương thức getAttribute() của lớp WebElement. Ví
dụ:

Bằng cách truyền tên thuộc tính vào phương thức getAttribute(), nó sẽ trẻ về giá trị của
thuộc tính đó để kiểm tra. Trong ví dụ này, chúng ta đang kiểm tra xem thuộc tính
align của phần tử

có được thiết lập giá trị là “justify” hay không.

1.2.2.4 Kiểm tra giá trị CSS của một phần tử
Có nhiều style được áp dụng cho các phần tử được hiển thị trên một ứng dụng
Web, làm cho những phần tử này trờ nên gọn gàng và tiện dụng hơn. Những lập trình
viên thêm những style này bằng cách sử dụng CSS (Cascading Style Sheets).
Sẽ có những bài kiểm tra cần thiết để kiểm tra xem những style được áp dụng cho các
phần tử đã chính xác hay chưa. Để làm điều này, chúng ta có thể sử dụng phương thức
getCSSValue() của lớp WebElement, phương thức này sẽ trả về giá trị của thuộc tính
style được chỉ định. Ví dụ như sau:

Bằng cách truyền tên thuộc tính CSS vào phương thức getCSSValue(), phương thức
này sẽ trả về giá trị của thuộc tính CSS. Trong ví dụ này, chúng ta đang kiểm tra xem
thuộc tính width của phần tử <div> có được thiết lập giá trị là 150px hay không.
13



1.2.2.5 Sử dụng API tương tác người dùng nâng cao cho các sự kiện chuột
và bàn phím
API tương tác người dùng nâng cao của Selenium WebDriver cho phép chúng ta
thực hiện những hoạt động từ những sự kiện bàn phím và các sự kiện chuột từ đơn
giản đến phức tạp như sự kiện kéo và thả chuột, sự kiện nhấn giữ một phím và đồng
thời thực hiện thao tác chuột. Selenium cung cấp lớp Actions giúp ta có thể xây dựng
một chuỗi các sự kiện phức tạp để chạy tự động một cách chính xác giống như người
dùng đang thực hiện chuỗi thao tác này bằng tay.
Trong ví dụ sau, chúng ta sẽ sử dụng lớp Actions để xây dựng một chuỗi sự kiện tự
động chọn các dòng trong một bảng.
Chúng ta sẽ tạo một bộ test để chọn nhiều dịng từ những vị trí khác nhau trong một
bảng sử dụng phím Ctrl. Chúng ta có thể chọn nhiều dịng bằng cách chọn một dịng
đầu tiên, rồi giữ phím Ctrl, sau đó chọn những dịng khác, cuối cùng thả phím Ctrl, ta
sẽ chọn được các dòng mong muốn từ một bảng.

14


Chúng ta cần khởi tạo một đối tượng của lớp Actions bằng cách truyền đối tượng
của lớp driver vào contructor theo cách sau:

Chúng ta sẽ xây dựng một chuỗi các sự kiện cần thiết để thực thi chọn các dòng
trong bảng một cách tự động. Đầu tiên ta sẽ thực thi phương thức click() để chọn dịng
đầu tiên, sau đó nhấn giữ phím Ctrl (sử dụng phương thức keyDown()), rồi chọn dịng
kết thúc, sau đó nhả phím Ctrl bằng cách gọi phương thức keyUp(). Lớp Actions cung
cấp nhiều phương thức khác nhau để thực thi các thao tác chuột và bàn phím.

Chúng ta có thể khởi tạo một hành động hỗn hợp sẵn sàng được thực thi bằng cách
gọi phương thức build(). Cuối cùng chúng ta sẽ thực thi chạy tự động hành động hỗn
hợp này bằng cách gọi phương thức perform() của lớp Actions.

Lớp Keys sẽ đại diện cho tất cả các phím khơng phải là văn bản trên bàn phím, ví dụ
phím Control, phím Shift, các phím chức năng, v..v.. Trong ví dụ trên, ta đã sử dụng
phương thức keyDown(Keys.CONTROL) để nhấn và giữ phím Ctrl cho đến khi thao
tác kế tiếp được hoàn thành.
1.2.2.6 Thực hiện nhấn đúp (double-click) vào một phần tử
Trong vài trường hợp, chúng ta cần double-click vào các phần tử trên một ứng dụng
web để thực thi những hành động nào đó, ví dụ như double-click trên một dòng của
một bảng để mở ra một cửa sổ mới,.. API tương tác người dùng nâng cao của
Selenium cung cấp một phương thức của lớp Actions để thực thi hành động doubleclick.

15


Để thực hiện double-click lên một phần tử, ta gọi phương thức doubleClick() của lớp
Actions. Để gọi phương thức này, ta cần tạo một đối tượng của lớp Actions như sau:

Sau đó chúng ta sẽ gọi phương thức doubleClick() để thực hiện hành động như sau:

1.2.2.7 Thực hiện thao tác kéo-và-thả một cách tự động
Chúng ta sẽ sử dụng lớp Actions để thực hiện các thao tác kéo-và-thả một cách tự động

16


Để kéo một phần tử vào một phần tử khác và thả nó, chúng ta cần xác định những
phần tử này và truyền chúng vào phương thức dragAndDrop() của lớp Actions. Để gọi
phương thức này, chúng ta cần khởi tạo một đối tượng của lớp Actions theo cách sau:

Phương thức dragAndDrop() sẽ cần 2 tham số là phần tử nguồn và phần tử đích.
Chúng ta có thể gọi thực thi phương thức dragAndDrop() theo cách sau:


1.2.2.8 Thực thi mã JavaScript
Selenium WebDriver API cung cấp khả năng để thực thi mã JavaScript trên các cửa
sổ trình duyệt. Đây là một tính năng rất hữu ích khi chúng ta cần tương tác với những
trang web sử dụng JavaScript. Sử dụng API này, những mã JavaScript ở phía client
cũng có thể được kiểm thử với Selenium WebDriver. Selenium WebDriver cung cấp
một interface JavascriptExecutor dùng để thực thi những đoạn mã JavaScript bên trong
trình duyệt.
Chúng ta sẽ viết một đoạn code như sau: gọi mã JavaScript để trả về tiêu đề của
trang web và đếm số liên kết có TagName là “A” trong trang web đó. Ta có thể sử
dụng phương thức driver.getTitle() để trả về tiêu đề của trang web.

17


×