Vũ Công Minh – CT1801
1
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG
——————————-
ISO 9001:2015
ĐỒ ÁN TỐT NGHIỆP
NGÀNH: CÔNG NGHỆ THÔNG TIN
Sinh viên : Vũ Công Minh
Giảng viên hướng dẫn: ThS. Nguyễn Trịnh Đông
HẢI PHÒNG – 2018
Kiểm thử ứng dụng trên nền Web bằng công cụ Selenium
Vũ Công Minh – CT1801
2
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG
———————————–
KIỂM THỬ ỨNG DỤNG TRÊN NỀN WEB BẰNG CÔNG CỤ
SELENIUM
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
NGÀNH: CÔNG NGHỆ THÔNG TIN
Sinh viên : Vũ Công Minh
Giảng viên hướng dẫn : ThS. Nguyễn Trịnh Đông
HẢI PHÒNG – 2018
Kiểm thử ứng dụng trên nền Web bằng công cụ Selenium
Vũ Công Minh – CT1801
3
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG
————————————–
NHIỆM VỤ ĐỀ TÀI TỐT NGHIỆP
Sinh viên: Vũ Công Minh Mã SV: 1412101135
Lớp: CT1801 Ngành: Công nghệ thông tin
Tên đề tài: Kiểm thử ứng dụng trên nền Web bằng công cụ Selenium
Kiểm thử ứng dụng trên nền Web bằng công cụ Selenium
Vũ Công Minh – CT1801
4
LỜI CẢM ƠN
Lời đầu tiên em xin chân thành cảm ơn các thầy, cô trong khoa Công
nghệ thông tin, trường Đại học Dân lập Hải Phòng đã tạo điều kiện thuận lợi
cho em trong quá trình học tập tại trường cũng như trong thời gian thực hiện
đồ án tốt nghiệp. Đặc biệt, em muốn gửi lời cảm ơn tới Thạc sỹ Nguyễn Trịnh
Đông – giảng viên trực tiếp hướng dẫn, chỉ bảo, giúp em khắc phục những
khó khăn, thiếu sót để có thể hoàn thành các phần trong đồ án tốt nghiệp từ lý
thuyết cho tới thực hành sử dụng công cụ.
Mặc dù đã cố gắng với tất cả nỗ lực của bản thân để hoàn thiện đồ án,
nhưng do thời gian có hạn, năng lực và kinh nghiệm còn hạn chế nên đồ án
không thể tránh khỏi những thiếu sót. Kính mong nhận được sự đóng góp ý
kiến từ phía thầy cô, bạn bè để em có thể nâng cao kiến thức của bản thân,
hoàn thiện đồ án được tốt hơn.
Em xin chân thành cảm ơn!
Hải Phòng, ngày … tháng … năm 2018.
Sinh viên thực hiện
Vũ Công Minh
Kiểm thử ứng dụng trên nền Web bằng công cụ Selenium
Vũ Công Minh – CT1801
5
MỤC LỤC
LỜI CẢM ƠN ……………………………………………………………………………………… 1
MỤC LỤC
…………………………………………………………………………………………… 5
MỞ ĐẦU
…………………………………………………………………………………………….. 7
DANH MỤC HÌNH VẼ VÀ BẢNG BIỂU ……………………………………………… 9
DANH MỤC TỪ VIẾT TẮT
……………………………………………………………….. 11
CHƯƠNG 1: PHẦN MỀM VÀ KIỂM THỬ PHẦN MỀM
……………………… 12
1.1. Phần mềm và khái niệm liên quan ………………………………………………. 12
1.1.1. Phần mềm
………………………………………………………………………….. 12
1.1.2. Lỗi phần mềm ……………………………………………………………………. 12
1.1.3. Yêu cầu của khách hàng
………………………………………………………. 13
1.1.4. Đặc tả yêu cầu phần mềm ……………………………………………………. 14
1.1.5. Chất lượng và độ tin cậy của phần mềm
………………………………… 15
1.2. Kiểm thử phần mềm
………………………………………………………………….. 15
1.2.1. Khái niệm ………………………………………………………………………….. 15
1.2.2. Vai trò của kiểm thử phần mềm
……………………………………………. 16
1.2.3. Các cấp độ trong kiểm thử phần mềm …………………………………… 16
1.2.4. Quy trình kiểm thử phần mềm ……………………………………………… 18
1.2.5. Phân loại kiểm thử phần mềm
………………………………………………. 21
1.2.6. Các mức độ nghiêm trọng của lỗi …………………………………………. 24
1.2.7. Ca kiểm thử ……………………………………………………………………….. 25
1.2.8. Kiểm thử tự động ……………………………………………………………….. 27
1.2.9. Nguyên tắc quan trọng trong kiểm thử phần mềm ………………….. 29
1.3.Các kỹ thuật xác định ca kiểm thử
……………………………………………….. 31
1.3.1. Kỹ thuật phân vùng tương đương …………………………………………. 31
1.3.2. Kỹ thuật phân tích giá trị biên
………………………………………………. 32
1.3.3. Đoán lỗi …………………………………………………………………………….. 34
1.3.4. Kỹ thuật chuyển trạng thái …………………………………………………… 34
1.4. Kết luận …………………………………………………………………………………… 34
CHƯƠNG 2: KIỂM THỬ ỨNG DỤNG TRÊN NỀN WEB ……………………. 36
2.1. Khái quát về kiểm thử ứng dụng trên nền Web …………………………….. 36
2.1.1. Khái quát …………………………………………………………………………… 36
2.1.2. Các loại ứng dụng Web
……………………………………………………….. 36
Kiểm thử ứng dụng trên nền Web bằng công cụ Selenium
Vũ Công Minh – CT1801
6
2.1.3. Đặc điểm về chất lượng của một ứng dụng trên nền Web
………… 37
2.2. Công việc chính khi kiểm thử ứng dụng Web ………………………………. 39
2.2.1. Kiểm thử chức năng ……………………………………………………………. 39
2.2.2. Kiểm thử khả năng sử dụng …………………………………………………. 41
2.2.3 Kiểm thử sự tương thích ………………………………………………………. 42
2.2.4. Kiểm thử hiệu suất ……………………………………………………………… 43
2.2.5. Kiểm thử bảo mật
……………………………………………………………….. 44
2.3. Một số công cụ hỗ trợ kiểm thử ứng dụng trên nền Web ……………….. 44
2.3.1. Công cụ kiểm thử hiệu năng ………………………………………………… 44
2.3.2. Công cụ kiểm thử bảo mật …………………………………………………… 45
2.3.3. Công cụ kiểm thử chức năng ……………………………………………….. 46
2.4. Kết luận …………………………………………………………………………………… 47
CHƯƠNG 3: KIỂM THỬ ỨNG DỤNG TRÊN NỀN WEB BẰNG CÔNG
CỤ SELENIUM …………………………………………………………………………………. 48
3.1. Công cụ kiểm thử tự động Selenium …………………………………………… 48
3.1.1. Giới thiệu chung về Selenium
………………………………………………. 48
3.1.2. Selenium IDE …………………………………………………………………….. 49
3.2. Một số công cụ hỗ trợ kiểm thử ứng dụng Web ……………………………. 61
3.2.1. Firebug ……………………………………………………………………………… 61
3.2.2. Monosnap ………………………………………………………………………….. 62
3.2.3. Công cụ quản lý lỗi (bug) MantisBT …………………………………….. 63
3.3. Bài toán thực tế ………………………………………………………………………… 66
3.3.1. Giới thiệu bài toán
………………………………………………………………. 66
3.3.2. Kiểm thử chức năng đăng ký tài khoản trên website
https://id.zing.vn/ sử dụng công cụ Selenium IDE …………………………… 67
3.4. Kết luận …………………………………………………………………………………… 73
KẾT LUẬN ……………………………………………………………………………………….. 74
DANH MỤC TÀI LIỆU THAM KHẢO
……………………………………………….. 76
Kiểm thử ứng dụng trên nền Web bằng công cụ Selenium
Vũ Công Minh – CT1801
7
MỞ ĐẦU
Ngày nay, công nghệ thông tin nói chung và công nghệ phần mềm nói
riêng đang chiếm một vị trí quan trọng trong tiến trình công nghiệp hoá, hiện
đại hoá đất nước. Song song với việc phát triển công nghệ phần mềm luôn
tiềm ẩn những thách thức cho dành các doanh nghiệp, nhà phát triển phần
mềm trong việc kiểm soát lỗi, chất lượng đầu ra của sản phẩm. Tuy nhiên ở
Việt Nam, số lượng các kiểm thử viên vẫn chưa đáp ứng được với nhu cầu
của thị trường. Tại Hội nghị Quốc tế về kiểm thử phần mềm tự động
(12/2011, TP. HCM), các chuyên gia đã nhận định: “Với đà tăng trưởng mạnh
mẽ của ngành gia công phần mềm, trong vài năm tới, Việt Nam thiếu khoảng
10.000 kiểm thử viên.”
Bên cạnh đó, xu hướng áp dụng tự động hoá đang được triển khai rộng
rãi ở nhiều lĩnh vực, trong đó có kiểm thử phần mềm. Đặc biệt, khi kiểm thử
phần mềm là công đoạn chiếm phần lớn thời gian trong quá trình phát triển dự
án phần mềm thì sự ra đời của các công cụ kiểm thử tự động càng có ý nghĩa
hơn bao giờ hết, giúp tiết kiệm thời gian, công sức và tiền bạc. Selenium là
một công cụ hỗ trợ kiểm thử tự động dành cho các ứng dụng Web, hoạt động
trên hầu hết các trình duyệt phổ biến hiện nay như Firefox, Chrome, Internet
Explorer, Safari, v.v. cũng như hỗ trợ số lượng lớn các ngôn ngữ lập trình
Web phổ biến. Công cụ Selenium hiện được đánh giá là một trong những
công cụ tốt nhất cho kiểm thử tự động các ứng dụng Web.
Với mong muốn được tìm hiểu sâu về lĩnh vực kiểm thử phần mềm cũng
như trở thành một kỹ sư kiểm thử phần mềm sau khi tốt nghiệp đại học, em đã
chọn đề tài “Kiểm thử ứng dụng trên nền Web bằng công cụ Selenium.”
Trong quá trình làm đồ án, do còn hạn chế về thời gian và kinh nghiệm thực
tế, em mong nhận được những góp ý chân thành từ thầy cô và các bạn.
Kiểm thử ứng dụng trên nền Web bằng công cụ Selenium
Vũ Công Minh – CT1801
8
Đề tài giới thiệu về lý thuyết kiểm thử phần mềm, các công cụ hỗ trợ
kiểm thử tự động. Ngoài ra, đề tài đi sâu vào việc tìm hiểu, sử dụng các tính
năng, công cụ của bộ phần mềm Selenium như:
– Đưa ra hướng dẫn cài đặt, sử dụng hiệu quả bộ công cụ.
– Ứng dụng các kiến thức đã học được để viết một kịch bản kiểm thử cho
ứng dụng cụ thể.
Đồ án được tổ chức làm 5 phần như sau:
– Mở đầu: Trình bày rõ lý do chọn đề tài, mục tiêu nghiên cứu đồ án và
bố cục của đồ án.
– Chương 1: Phần mềm và kiểm thử phần mềm. Chương này trình bày
các khái niệm cơ bản về phần mềm, kiểm thử phần mềm và các kỹ thuật kiểm
thử phần mềm.
– Chương 2: Kiểm thử ứng dụng trên nền Web. Chương này trình bày chi
tiết các khái niệm về kiểm thử ứng dụng Web, các công việc khi kiểm thử ứng
dụng Web, giới thiệu một số công cụ hỗ trợ kiểm thử ứng dụng web.
– Chương 3: Kiểm thử ứng dụng trên nền Web bằng công cụ Selenium.
Giới thiệu chung về Selenium, các cài đặt và sử dụng bộ công cụ, ứng dụng
thực tế với Selenium.
– Kết luận: Phần này đưa ra những kết quả đồ án đạt được, những thiếu
sót chưa thực hiện được và hướng phát triển đề tài trong tương lai.
Kiểm thử ứng dụng trên nền Web bằng công cụ Selenium
Vũ Công Minh – CT1801
9
DANH MỤC HÌNH VẼ VÀ BẢNG BIỂU
Hình 1-1: Vòng đời của quá trình kiểm thử. …………………………………………………….
16
Hình 1-2: Quy trình kiểm thử phần mềm.
………………………………………………………..
18
Hình 1-3: Xác định ca kiểm thử với kiểm thử hộp trắng. …………………………………..
22
Hình 1-4: Minh hoạ kỹ thuật kiểm thử hộp đen.
……………………………………………….
23
Hình 1-5: Biểu đồ Venn nguồn các ca kiểm thử.
………………………………………………
23
Hình 1-6: Bảng phân loại mức độ nghiêm trọng của lỗi.
……………………………………
24
Hình 1-7: Minh họa mẫu ca kiểm thử đơn giản. ……………………………………………….
26
Hình 1-8: Minh họa kỹ thuật phân vùng tương đương ………………………………………
32
Hình 1-9: Minh họa kỹ thuật phân tích giá trị biên.
…………………………………………..
33
Hình 3-1: Truy cập trang Download tiện ích Selenium IDE. ……………………………..
50
Hình 3-2: Tiến hành chọn phiên bản Selenium IDE để cài đặt. ………………………….
51
Hình 3-3: Thêm tiện ích Selenium IDE vào Firefox.
…………………………………………
51
Hình 3-4: Xác nhận cài đặt tiện ích Selenium IDE vào trình duyệt. ……………………
51
Hình 3-5: Khởi động lại trình duyệt Firefox để hoàn tất quá trình cài đặt. …………..
52
Hình 3-6: Khởi chạy tiện ích Selenium IDE.
……………………………………………………
52
Hình 3-7: Giao diện khởi chạy Selenium IDE. …………………………………………………
52
Hình 3-8: Giải thích một số chức năng, ký hiệu trong Selenium IDE.
…………………
53
Hình 3-9: Kịch bản kiểm thử được Selenium IDE lưu trữ dưới dạng HTML. ………
54
Hình 3-10: Chức năng tạo mới ca kiểm thử/bộ kiểm thử nằm trong menu File.
……
55
Hình 3-11: Minh họa thao tác lưu ca kiểm thử. ………………………………………………..
55
Hình 3-12: Minh họa thao tác lưu bộ kiểm thử.
………………………………………………..
56
Hình 3-13: Minh họa thao tác mở ca kiểm thử. ………………………………………………..
56
Hình 3-14: Minh họa thao thác mở bộ kiểm thử đã lưu.
…………………………………….
56
Hình 3-15: Thiết lập điểm dừng cho ca kiểm thử. …………………………………………….
57
Hình 3-16: Thiết lập điểm bắt đầu cho ca kiểm thử.
………………………………………….
58
Hình 3-17: Minh họa thao tác chèn dòng lệnh mới. ………………………………………….
59
Hình 3-18: Chèn nhận xét cho một dòng lệnh trong Selenium IDE.
……………………
59
Hình 3-19: Bảng liệt kê một số lệnh thường dùng trong Selenium IDE. ……………..
61
Hình 3-20: Giao diện tiện ích hỗ trợ kiểm thử Firebug. …………………………………….
61
Hình 3-21: Cài đặt công cụ Firebug trong trình quản lý Add-ons của Firefox.
……..
62
Kiểm thử ứng dụng trên nền Web bằng công cụ Selenium
Vũ Công Minh – CT1801
10
Hình 3-22: Giao diện ứng dụng chụp ảnh màn hình Monosnap.
…………………………
63
Hình 3-23: Giao diện trang chủ MantisBT. ……………………………………………………..
65
Hình 3-24: Giao diện hiện tại của website Zing ID. ………………………………………….
66
Hình 3-25: Thực thi ca kiểm thử ZID_101 trên Selenium IDE. ………………………….
68
Hình 3-26: Thực thi ca kiểm thử ZID_102 trên Selenium IDE. ………………………….
71
Hình 3-27: Thực thi ca kiểm thử ZID_103 trên Selenium IDE. ………………………….
72
Hình 3-28: Báo cáo lỗi thông qua công cụ MantisBT. ………………………………………
73
Kiểm thử ứng dụng trên nền Web bằng công cụ Selenium
Vũ Công Minh – CT1801
11
DANH MỤC TỪ VIẾT TẮT
STT
KÝ HIỆU
CỤM TỪ ĐẦY ĐỦ
Ý NGHĨA
1
API
Application Programming
Interface
Giao diện lập trình ứng
dụng
2
CAPTCHA
Completely Automated
Public Turing test to tell
Computers and Humans
Apart
Trình kiểm tra tự động
phân biệt hành động của
máy tính với hành động
của người dùng
3
CSS
Cascading Style Sheets
Ngôn ngữ quy định cách
hiển thị của các phần tử
HTML
4
DOM
Document Object Model
Mô hình đối tượng tài
liệu
5
ERP
Enterprise Resource
Planning
Hệ thống hoạch định tài
nguyên doanh nghiệp
6
HTML
HyperText Markup
Language
Ngôn ngữ đánh dấu siêu
văn bản
7
ISTQB
International Software
Testing Qualifications
Board
Tổ chức cung cấp chứng
chỉ kiểm thử phần mềm
có giá trị toàn cầu
8
RTM
Requirement Traceability
Matrix
Ma trận truy xuất nguồn
gốc các yêu cầu kiểm thử
9
SEO
Search Engine Optimization Tối ưu hóa máy tìm kiếm
10
UI
User Interface
Giao diện người dùng
Kiểm thử ứng dụng trên nền Web bằng công cụ Selenium
Vũ Công Minh – CT1801
12
CHƯƠNG 1: PHẦN MỀM VÀ KIỂM THỬ PHẦN MỀM
Chương đầu tiên của đồ án đi sâu vào việc tìm hiểu các khái niệm về
phần mềm và kiểm thử phần mềm, giúp khái quát việc phân loại kiểm thử
phần mềm, đưa ra các quy trình, mức độ, các kỹ thuật trong kiểm thử phần
mềm.
1.1. Phần mềm và khái niệm liên quan
1.1.1. Phần mềm
Phần mềm thường được mô tả với ba bộ phận cấu thành:
Tập các lệnh (chương trình máy tính) trên máy tính khi được thực hiện
sẽ tạo ra các dịch vụ và đem lại những kết quả mong muốn cho người
dùng.
Các cấu trúc dữ liệu (lưu giữ trên các bộ nhớ) làm cho chương trình
thao tác hiệu quả với các thông tin thích hợp và nội dung thông tin
được số hoá.
Các tài liệu để mô tả các thao tác, cách sử dụng và bảo trì phần mềm
(hướng dẫn sử dụng, tài liệu kỹ thuật, tài liệu phân tích, thiết kế, kiểm
thử, v.v.) [1].
1.1.2. Lỗi phần mềm
Lỗi phần mềm nhìn chung là sự không khớp giữa chương trình và đặc tả
của nó, kéo theo những vấn đề xuất hiện trong các giai đoạn phát triển phần
mềm.
Lỗi phần mềm thường xuất hiện ở các hình thức sau đây:
Sai (Fault): Khi phần mềm gặp lỗi sẽ đưa đến những sai sót. Tuy nhiên,
không dễ để phát hiện ra sai sót trong quá trình phát triển phần mềm.
Sai lầm có thể xuất hiện ở ngay đầu quy trình phát triển phần mềm khi
người phân tích, thiết kế bỏ sót thông tin dẫn tới thiếu chức năng mà lẽ
ra cần phải có.
Kiểm thử ứng dụng trên nền Web bằng công cụ Selenium
Vũ Công Minh – CT1801
13
Thất bại (Failure): Thất bại dễ nhận thấy nhất khi một lỗi được thực thi.
Chúng thường xuất hiện dưới 2 dạng: thất bại có thể chạy được (ví dụ
như mã nguồn) và thất bại chỉ liên kết với các lỗi về nhiệm vụ. Ngoài
ra, có thể kể đến các thất bại liên quan tới các lỗi do bỏ quên. Chúng ta
có thể hạn chế thất bại ngay tại bước đầu tiên của quy trình phát triển
phần mềm nếu việc khảo sát được thực hiện tốt.
Sự cố (Incident): Sự cố thường được liên kết với một thất bại. Tuy
nhiên nó khác với thất bại ở chỗ sự cố luôn hiển thị cho người dùng
hoặc kiểm thử viên biết về sự tồn tại của nó.
Thừa: 1 số chức năng không có trong bản đặc tả yêu cầu phần mềm
nhưng lại xuất hiện trong phần mềm được xây dựng.
Ngoài ra, còn xuất hiện 1 số lỗi phi chức năng như phần mềm khó sử
dụng, tốc độ không đáp ứng yêu cầu (vấn đề hiệu năng) hay giao diện khó
nhìn cũng dễ khiến cho người sử dụng nghĩ rằng phần mềm đang hoạt động
không đúng.
1.1.3. Yêu cầu của khách hàng
Phần mềm được phát triển dựa trên nhu cầu của khách hàng. Chính vì lẽ
đó, các chức năng của phần mềm được xây dựng dựa trên việc thu thập,
phân tích, khảo sát nhu cầu của khách hàng thông qua những yêu cầu cụ thể.
Đối với phần mềm, yêu cầu thường được tổng hợp từ nhiều người, nhiều tổ
chức có mức độ chuyên môn và mức độ tham gia cũng như tương tác với
phần mềm khác nhau trong môi trường hoạt động của nó.
Có thể phân loại yêu cầu của khách hàng cho sản phẩm phần mềm thành
một số loại như sau:
Phân loại theo sản phẩm và tiến trình
– Yêu cầu sản phẩm: là những đòi hỏi hay ràng buộc mà phần mềm phải
thực hiện [2].
Kiểm thử ứng dụng trên nền Web bằng công cụ Selenium
Vũ Công Minh – CT1801
14
– Yêu cầu tiến trình: là những ràng buộc liên quan đến việc phát triển
phần mềm (kĩ thuật sử dụng, mô hình phát triển, v.v.) [2].
Ví dụ: Khách hàng muốn phát triển một website làm bài thi trực tuyến.
Lúc này, yêu cầu sản phẩm là xây dựng website thi trực tuyến với các tính
năng như quản lý câu hỏi; quản lý đề thi; cho phép người dùng có thể tham
gia làm bài thi; quản trị viên có thể duyệt các câu hỏi và bộ đề thi trước khi
đăng lên website. Việc website được phát triển theo mô hình Agile hay mô
hình thác nước chính là yêu cầu tiến trình của sản phẩm phần mềm.
Phân loại theo chức năng
– Yêu cầu chức năng: đặc tả các chức năng mà phần mềm cần phải thực hiện.
– Yêu cầu phi chức năng: là các ràng buộc về giải pháp và chất lượng
(hiệu năng, việc bảo trì, mức độ an toàn, bảo mật, v.v.).
– Yêu cầu đặc tả các thuộc tính nổi bật: là đặc tả cho các thuộc tính phụ
thuộc vào sự vận hành, đặc biệt là kiến trúc hệ thống. Các thuộc tính này
không thể xác định được cho từng thành phần đơn lẻ.
Phân loại theo tính kiểm định
– Những yêu cầu mang tính mơ hồ, không thể kiểm định
– Những yêu cầu đã rõ ràng và có thể kiểm định được.
Phân loại theo phạm vi đặc tả
– Yêu cầu hệ thống: đặc tả các cấu hình, cơ sở hạ tầng, phần cứng, phần
mềm, con người, kỹ thuật, v.v. của toàn bộ hệ thống.
– Yêu cầu phần mềm: đặc tả các chức năng, giao diện, v.v. của các cấu
phần phần mềm.
1.1.4. Đặc tả yêu cầu phần mềm
Từ yêu cầu của khách hàng và những yêu cầu bắt buộc khác, đặc tả yêu
cầu phần mềm được viết ra để mô tả một cách chính xác các yêu cầu cần đáp
ứng của sản phẩm phần mềm. Đây cũng chính là tài liệu cơ sở để lập trình
viên, kiểm thử viên và các bộ phận khác dựa vào để phát triển phần mềm
hoàn chỉnh, đúng với yêu cầu đặt ra ban đầu. Các khái niệm về lỗi đã nói ở
Kiểm thử ứng dụng trên nền Web bằng công cụ Selenium
Vũ Công Minh – CT1801
15
mục 1.1.2 cũng chính là đề cập đến việc phần mềm sau khi xây dựng hoạt
động không đúng với bản đặc tả yêu cầu phần mềm. Tài liệu đặc tả yêu cầu
phần mềm cũng cần cung cấp đầy đủ các thông tin về chi phí, rủi ro và lịch
trình cho quá trình phát triển sản phẩm.
Đặc tả yêu cầu phần mềm được viết ra phục vụ rất nhiều đối tượng từ
người dùng hệ thống, khách hàng đến các nhà phát triển và bảo trì phần mềm.
Do đó, tài liệu đặc tả nên được viết bằng ngôn ngữ tự nhiên, sử dụng biểu đồ,
bảng biểu để đảm bảo tính dễ hiểu, dễ sử dụng cho tất cả các đối tượng trên.
1.1.5. Chất lượng và độ tin cậy của phần mềm
Chất lượng của phần mềm trước hết là sự đáp ứng các yêu cầu đề ra
trong bản đặc tả yêu cầu phần mềm. Có thể kể đến các yếu tố đại diện cho
chất lượng phần mềm như: tính đúng đắn, tính hiệu quả, độ tin cậy, tính khả
kiểm thử, dễ học, dễ sử dụng, dễ bảo trì… Ta có thể thấy độ tin cậy chỉ là một
trong những yếu tố đánh giá chất lượng phần mềm. Tuy nhiên người kiểm thử
lại hay nhầm lẫn giữa khái niệm chất lượng và độ tin cậy của phần mềm. Sau
quá trình kiểm thử đảm bảo phần mềm có thể chạy ổn định, kiểm thử viên
thường sẽ cho rằng phần mềm lúc này đã đạt chất lượng tốt.
Độ tin cậy của phần mềm là xác suất để phần mềm chạy không có thất
bại trong một khoảng thời gian nhất định [3]. Ngoài ra, có thể dựa vào thời
gian khắc phục sự cố để đánh giá độ tin cậy của phần mềm.
Trong phần tiếp theo, chúng ta sẽ tìm hiểu về khái niệm cũng như các
vấn đề xung quanh việc Kiểm thử phần mềm.
1.2. Kiểm thử phần mềm
1.2.1. Khái niệm
Kiểm thử phần mềm là một cuộc kiểm tra được tiến hành để cung cấp
cho các bên liên quan thông tin về chất lượng của sản phẩm hoặc dịch vụ
được kiểm thử [4]. Hiểu theo cách đơn giản hơn, kiểm thử phần mềm là quá
trình tìm thất bại hoặc chứng tỏ việc tiến hành của phần mềm là đúng đắn.
Kiểm thử ứng dụng trên nền Web bằng công cụ Selenium
Vũ Công Minh – CT1801
16
1.2.2. Vai trò của kiểm thử phần mềm
Kiểm thử phần mềm chiếm một vị trí quan trọng trong việc nâng cao
chất lượng cũng như độ tin cậy của phần mềm trong quá trình phát triển.
Hoàn thành vòng quay “đưa lỗi vào – tìm lỗi – khử lỗi đi” của quy trình kiểm
thử phần mềm sẽ thu lại được những cải tiến đáng kể cho chất lượng sản
phẩm phần mềm. Việc biết được sản phẩm phần mềm tốt tới mức nào trước
khi đưa vào sử dụng sẽ hạn chế tối đa những rủi ro gặp phải trong quá trình
phát triển phần mềm.
Hình 1-1: Vòng đời của quá trình kiểm thử.
1.2.3. Các cấp độ trong kiểm thử phần mềm
Có rất nhiều cách để chia cấp độ kiểm thử phần mềm, nhưng tựu chung
lại sẽ gồm 4 cấp độ sau:
Kiểm thử đơn vị: Cấp độ này chủ yếu do lập trình viên trực tiếp thực
hiện. Phần mềm khi phát triển sẽ bao gồm nhiều đơn vị chức năng (hàm,
phương thức) hợp thành. Mỗi lập trình viên sẽ đảm nhiệm việc phát triển một
hay nhiều đơn vị chức năng. Kiểm thử đơn vị chính là việc lập trình viên sau
khi hoàn thành code đơn vị chức năng của mình sẽ tiến hành kiểm thử chức
năng đó một cách cô lập nhằm phát hiện ra lỗi và khắc phục trước khi tích
Lỗi
Sửa sai
Sai lầm
Sai lầm
Lỗi
Lỗi
Đặc tả
yêu cầu
Thiết kế
Lập trình
Kiểm thử
Phân loại
sai lầm
Cô lập
sai lầm
Xử lý
sai lầm
Lỗi
Sai lầm
Sự cố
Kiểm thử ứng dụng trên nền Web bằng công cụ Selenium
Vũ Công Minh – CT1801
17
hợp với các đơn vị chức năng khác. Kiểm thử đơn vị thường được tiến hành
theo 2 giai đoạn: kiểm thử đơn vị tĩnh và kiểm thử đơn vị động.
Kiểm thử tích hợp: Sau khi kiểm thử đơn vị được tiến hành bởi chính
lập trình viên viết ra nó, các đơn vị chức năng sẽ được ghép lại với nhau để
tạo thành hệ thống đầy đủ và có thể làm việc được. Các đơn vị chức năng hoạt
động tốt khi ở trạng thái độc lập riêng rẽ, nhưng khi ghép lại sẽ có thể xuất
hiện những lỗi về giao diện hoặc cho ra kết quả không đúng khi phải sử dụng
dữ liệu từ những đơn vị chức năng khác. Đó chính là lý do tại sao phải tiếp
tục kiểm thử để phát hiện ra những lỗi kể trên. Người ta thường chia bước kế
tiếp này thành 2 giai đoạn: kiểm thử tích hợp và kiểm thử hệ thống. Ở mức
kiểm thử tích hợp, các đơn vị chức năng được kết hợp lại với nhau và tiến
hành kiểm thử chúng theo phương pháp tăng dần để đảm bảo cụm các đơn vị
chức năng sẽ làm việc ổn định trong môi trường thử nghiệm.
Kiểm thử hệ thống: Sau khi tất cả các đơn vị chức năng đã được tích
hợp lại với nhau tạo thành một hệ thống hoàn chỉnh, kiểm thử hệ thống sẽ
được thực thi để đảm bảo sản phẩm phần mềm đáp ứng đầy đủ các yêu cầu
trong bản đặc tả yêu cầu phần mềm. Đây là công việc tốn nhiều công sức nhất
trong quá trình kiểm thử phần mềm. Đồng thời cũng sử dụng nhiều kỹ thuật
kiểm thử khác nhau như: kiểm thử giao diện người dùng, kiểm thử chức năng,
kiểm thử hiệu năng, kiểm thử tính dễ dùng, v.v. để hoàn tất công việc kiểm
thử trong cấp độ này.
Kiểm thử chấp nhận: Khi kiểm thử hệ thống hoàn tất, sản phẩm phần
mềm được coi như đã sẵn sàng cho việc đưa vào sử dụng thực tế. Lúc này,
phần mềm cần được tiến hành cấp độ kiểm thử cuối cùng – kiểm thử chấp
nhận bởi chính khách hàng hay người sử dụng phần mềm. Tuy có phần tương
tự như kiểm thử hệ thống nhưng mục đích chính của kiểm thử chấp nhận là
quyết định việc đưa vào sử dụng chính thức sản phẩm phần mềm. Người ta
dựa trên các số liệu thống kê thực tế về chất lượng, độ tin cậy của phần mềm
để quyết định triển khai cho người dùng cuối. Kiểm thử chấp nhận thường
Kiểm thử ứng dụng trên nền Web bằng công cụ Selenium
Vũ Công Minh – CT1801
18
được thực hiện dưới hình thức cho một nhóm người dùng thử sản phẩm phần
mềm để phát hiện các lỗi và nhận phản hồi từ người dùng. Trong đó, phiên
bản alpha dành cho đội phát triển phần mềm và phiên bản beta được cung cấp
cho người sử dụng thật để đưa ra đánh giá trong môi trường thực tế. Ở thời
điểm hiện tại, kiểm thử chấp nhận được coi là cấp độ quy chuẩn bắt buộc
không thể thiếu trong quy trình phát triển của nhiều sản phẩm phần mềm.
1.2.4. Quy trình kiểm thử phần mềm
Kiểm thử phần mềm bao gồm nhiều giai đoạn với sự phối hợp của nhiều
bên liên quan chứ không chỉ là một hoạt động đơn lẻ. Chính vì thế, cần có quy
trình kiểm thử phần mềm để làm rõ các công đoạn, các bước kiểm thử, người
chịu trách nhiệm và khi nào việc kiểm thử được tiến hành trong toàn bộ quy
trình phát triển phần mềm. Nói cách khác, quy trình kiểm thử phần mềm
chính là chuỗi các hoạt động được tiến hành để thực hiện việc kiểm thử. Các
giai đoạn trong quy trình kiểm thử phần mềm được biểu diễn tổng quát bằng
sơ đồ sau:
Hình 1-2: Quy trình kiểm thử phần mềm.
Phân tích yêu cầu: Nhóm kiểm thử sẽ tương tác với các bên liên quan
để hiểu rõ những yêu cầu cụ thể cần cho việc kiểm thử. Các yêu cầu có
thể là chức năng (xác định phần mềm cần phải làm những gì) hoặc phi
chức năng (hiệu năng, tính bảo mật hệ thống, màu sắc, v.v.)
Hoạt động cụ thể:
Xác định loại kiểm thử sẽ thực hiện.
Phân tích
yêu cầu Lên kế hoạch
kiểm thử
Tạo ca
kiểm thử
Cài đặt môi
trường kiểm thử
Thực hiện
kiểm thử
Đóng chu
trình kiểm
thử
Kiểm thử ứng dụng trên nền Web bằng công cụ Selenium
Vũ Công Minh – CT1801
19
Tổng hợp chi tiết về và mức độ tập trung thứ tự ưu tiên.
Chuẩn bị RTM (Requirement Traceability Matrix – một tài liệu
dưới dạng bảng sử dụng để theo dõi các yêu cầu của khách hàng
và kiểm tra xem các yêu cầu này đã được đáp ứng đầy đủ hay
chưa)
Xác định môi trường kiểm thử.
Phân tích khả năng sử dụng kiểm thử tự động.
Tài liệu sử dụng:
RTM.
Báo cáo về khả năng sử dụng kiểm thử tự động (nếu cần).
Lên kế hoạch kiểm thử: Còn được gọi bằng tên khác là lên chiến lược
thử nghiệm. Ở giai đoạn này, trưởng nhóm kiểm thử sẽ dự toán chi phí
cho dự án cũng như chuẩn bị kế hoạch kiểm thử.
Hoạt động cụ thể:
Lựa chọn công cụ kiểm thử (test tool).
Lên kế hoạch về nhân sự và ấn định vai trò trách nhiệm cho từng
người trong nhóm.
Phổ biến cho mọi người trong nhóm kiểm thử về yêu cầu dự án.
Tài liệu sử dụng:
Bản kế hoạch kiểm thử.
Tạo ca kiểm thử: Giai đoạn này cần phải tạo, xác minh, kiểm tra lại
các ca kiểm thử. Dữ liệu kiểm thử cũng được tạo và xác định trong giai
đoạn này.
Hoạt động cụ thể:
Tạo ca kiểm thử.
Xác minh, kiểm tra lại các ca kiểm thử.
Tạo dữ liệu kiểm thử.
Tài liệu sử dụng:
Ca kiểm thử.
Kiểm thử ứng dụng trên nền Web bằng công cụ Selenium
Vũ Công Minh – CT1801
20
Dữ liệu kiểm thử.
Cài đặt môi trường kiểm thử: Môi trường kiểm thử quyết định bởi
các điều kiện phần cứng và phần mềm trong từng dự án. Thiết lập môi
trường kiểm thử có thể thực hiện song song với giai đoạn sinh ca kiểm
thử và là một tiêu chí quan trọng trong quá trình kiểm thử. Tuy nhiên,
nhóm kiểm thử có thể không cần tham gia vào giai đoạn này nếu đã có
các bên liên quan khác hỗ trợ, nhiệm vụ của nhóm kiểm thử chỉ là yêu
cầu môi trường kiểm thử cần thiết.
Hoạt động cụ thể:
Hiểu được kiến trúc yêu cầu, thiết lập môi trường và chuẩn bị
danh sách yêu cầu về phần cứng và phần mềm cho môi trường thử
nghiệm.
Thiết lập môi trường kiểm thử.
Thực hiện kiểm thử: Nhóm kiểm thử thực hiện kiểm thử theo kế
hoạch và danh sách ca kiểm thử đã chuẩn bị từ giai đoạn trước. Các lỗi
phát hiện ở giai đoạn này sẽ được thông báo lại cho nhóm phát triển phần
mềm để chỉnh sửa và thực hiện kiểm thử lại.
Hoạt động cụ thể:
Thực hiện kiểm thử theo kế hoạch.
Làm tài liệu về kết quả kiểm thử, cập nhật lại các lỗi trong ca kiểm thử.
Kiểm thử lại các lỗi đã được chỉnh sửa.
Kiểm tra để đóng lỗi.
Tài liệu sử dụng:
Ca kiểm thử (cập nhật kết quả).
Báo cáo lỗi.
Đóng chu trình kiểm thử: Nhóm kiểm thử sẽ họp, thảo luận và phân
tích những bài học rút ra sau quá trình kiểm thử, đưa ra chiến lược cho
những lần kiểm thử kế tiếp hoặc chia sẻ kinh nghiệm cho những dự án
tương tự.
Kiểm thử ứng dụng trên nền Web bằng công cụ Selenium
Vũ Công Minh – CT1801
21
Hoạt động cụ thể:
Đánh giá việc hoàn thành quy trình kiểm thử dựa vào thời gian,
mức độ bao phủ, chi phí và chất lượng.
Chuẩn bị dữ liệu dựa trên các tiêu chí trên.
Chuẩn bị báo cáo kết thúc kiểm thử.
Báo cáo chất lượng sản phẩm cho khách hàng.
Phân tích kết quả kiểm thử để tìm ra sự phân bố lỗi theo loại và
mức độ nghiêm trọng.
Tài liệu sử dụng:
Báo cáo kết thúc kiểm thử.
1.2.5. Phân loại kiểm thử phần mềm
Có 2 cách cơ bản để xác định các ca kiểm thử là kiểm thử tĩnh và kiểm
thử động.
Kiểm thử tĩnh: là một hình thức của kiểm thử phần mềm mà không
cần thực thi chương trình. Điều này ngược với thử nghiệm động. Công
việc chủ yếu là kiểm tra tính đúng đắn của mã lệnh, thuật toán hay tài
liệu. Đây là loại kiểm thử được thực hiện bởi lập trình viên. Lỗi được
phát hiện bằng kiểm thử tĩnh ít tốn kém để sửa chữa hơn so với lỗi phát
hiện bằng kiểm thử động sẽ được đề cập dưới đây. Các lập trình viên có
thể trao đổi mã nguồn chéo nhau hoặc làm việc một cách độc lập để thực
hiện kiểm thử tĩnh.
Kiểm thử động: Liên quan đến việc thực thi chương trình để phát hiện
các lỗi, thất bại có thể có của chương trình hay tìm ra các vấn đề về hiệu
năng hệ thống. Việc thực thi chương trình trên tất cả các dữ liệu đầu vào
là không thể nên ta chỉ có thể chọn một tập con các dữ liệu đầu vào để
thực thi hay nói cách khác là sinh ra các ca kiểm thử. Trong kiểm thử
động, người ta chia làm 2 kỹ thuật: kiểm thử hộp trắng (kiểm thử cấu
trúc) và kiểm thử hộp đen (kiểm thử chức năng).
Kiểm thử ứng dụng trên nền Web bằng công cụ Selenium
Vũ Công Minh – CT1801
22
– Kiểm thử hộp trắng: là kỹ thuật kiểm thử dựa vào thuật toán, cấu
trúc mã nguồn bên trong của chương trình với mục đích đảm bảo rằng
tất cả các câu lệnh và điều kiện sẽ được thực hiện ít nhất một lần.
Người kiểm thử truy cập vào mã nguồn chương trình và kiểm tra nó,
lấy đó làm cơ sở để thực hiện việc kiểm thử. Kiểm thử hộp trắng bao
gồm các công việc cơ bản: Kiểm thử đường dẫn, kiểm thử luồng điều
khiển, kiểm thử nội bộ (xác nhận các tham số, vòng lặp), kiểm thử
tính năng (kiểm tra thời gian xử lý, dữ liệu cụ thể). Tuy nhiên, việc
kiểm thử hộp trắng tồn tại khá nhiều hạn chế như: không thể đảm bảo
rằng chương trình đã tuân theo đặc tả, khó phát hiện được các lỗi do
dữ liệu, thiếu đường dẫn, v.v. Như vậy, không thể chỉ sử dụng kiểm
thử hộp trắng để kiểm thử chương trình.
Hình 1-3: Xác định ca kiểm thử với kiểm thử hộp trắng.
– Kiểm thử hộp đen: Là kỹ thuật kiểm thử dựa trên đầu vào và đầu ra
của chương trình mà không quan tâm tới mã nguồn bên trong được
viết ra sao. Với kỹ thuật này, kiểm thử viên xem phần mềm như là
một hộp đen. Để thực hiện, kiểm thử viên sẽ xây dựng các nhóm giá
trị đầu vào sao cho chúng có thể thực hiện đầy đủ các chức năng cần
có của chương trình. Kiểm thử hộp đen sử dụng các phương pháp:
phân tích giá trị biên, kiểm thử tính bền vững, kiểm thử trường hợp
xấu nhất, kiểm thử phân lớp tương đương miền dữ liệu đầu vào, đầu
ra, kiểm thử giá trị đặc biệt, kiểm thử dựa trên bảng quyết định. Tất cả
Đặc tả
Chương trình
Kiểm thử ứng dụng trên nền Web bằng công cụ Selenium
Vũ Công Minh – CT1801
23
các phương pháp trên đều dựa trên thông tin xác định về các thành
phần đang được kiểm thử.
Hình 1-4: Minh hoạ kỹ thuật kiểm thử hộp đen.
Cho tới nay, việc xác định kỹ thuật kiểm thử nào là tốt hơn trong 2 kỹ
thuật: kiểm thử hộp đen và kiểm thử hộp trắng vẫn còn là một dấu hỏi lớn.
Biểu đồ Venn sau đây sẽ giúp hình dung khái quát về mối liên hệ giữa kiểm
thử hộp đen và kiểm thử hộp trắng trong thực tế kiểm thử hiện nay.
Hình 1-5: Biểu đồ Venn nguồn các ca kiểm thử.
Trước hết cần khẳng định mục đích của hai kỹ thuật trên đều là để xác
định ca kiểm thử. Trong khi kiểm thử hộp trắng chỉ dùng đặc tả để xác định
ca kiểm thử, thì kiểm thử hộp đen lại dùng mã nguồn chương trình để làm cơ
sở xác định ca kiểm thử. Trong phần trình bày chi tiết về hai kỹ thuật đã nói ở
trên đều cho thấy không có kỹ thuật nào là đủ tốt hoàn toàn. Cụ thể: Nếu tất
cả các hành vi được nêu trong bản đặc tả yêu cầu phần mềm vẫn chưa được
cài đặt thì kiểm thử hộp trắng sẽ không thể nhận biết được điều đó. Hay nếu
các hành vi đã được cài đặt trong chương trình nhưng lại chưa có trong bản
đặc tả yêu cầu phần mềm, kiểm thử hộp đen dường như bất lực trong trường
Dữ liệu đầu ra
Dữ liệu đầu vào
Kiểm thử hộp đen
Kiểm thử hộp trắng
Kiểm thử ứng dụng trên nền Web bằng công cụ Selenium
Vũ Công Minh – CT1801
24
hợp này. Qua biểu đồ Venn, ta có thể khẳng định: việc kết hợp khéo léo cả hai
kỹ thuật kiểm thử trên sẽ đem lại một kết quả tốt nhất trong kiểm thử phần
mềm. Thực hiện song song kiểm thử hộp đen và kiểm thử hộp trắng sẽ hạn
chế tối đa các khiếm khuyết có thể bị bỏ sót. Tuy nhiên, nếu biết được loại lỗi
nào hay mắc phải hoặc những sai lầm thường thấy trong dự án đang được
triển khai, ta hoàn toàn có thể chọn kỹ thuật kiểm thử thích hợp cho từng ca
kiểm thử. Kinh nghiệm của kiểm thử viên sẽ được phát huy trong những
trường hợp này.
1.2.6. Các mức độ nghiêm trọng của lỗi
Chương trình một khi đã xuất hiện lỗi đều kéo theo những hệ luỵ nghiêm
trọng. Một trong những cách phân loại mức độ nghiêm trọng của lỗi thường
được sử dụng là dựa trên tần suất xuất hiện: chỉ một lần, thỉnh thoảng, xuất
hiện lại hay lặp đi lặp lại nhiều lần. Việc phân loại mức độ nghiêm trọng của
lỗi sẽ giúp kiểm thử viên cũng như lập trình viên ý thức được đâu là lỗi cần
được giải quyết trước, nhằm giảm thiểu tối đa những tổn thất về chi phí và
nâng cao chất lượng cho sản phẩm phần mềm. Hình 1.6 dưới đây minh hoạ
các mức độ nghiêm trọng của lỗi dựa trên độ nghiêm trọng và hậu quả.
1
Nhẹ
Lỗi chính tả
2
Vừa
Hiểu lầm hoặc thừa thông tin
3
Khó chịu
Tên bị thiếu, cụt chữ hoặc hoá đơn có giá trị 0.0 đồng
4
Bực mình
Một vài giao dịch không được xử lý
5
Nghiêm trọng
Mất giao dịch
6
Rất nghiêm trọng
Xử lý giao dịch sai
7
Cực kỳ nghiêm trọng Lỗi rất nghiêm trọng thường xuyên xảy ra
8
Quá quắt
Huỷ hoại cơ sở dữ liệu
9
Thảm hoạ
Hệ thống dừng hoạt động
10 Dịch hoạ
Thảm hoạ chuyển sang mức lây lan
Hình 1-6: Bảng phân loại mức độ nghiêm trọng của lỗi.
Kiểm thử ứng dụng trên nền Web bằng công cụ Selenium
Vũ Công Minh – CT1801
25
1.2.7. Ca kiểm thử
Ca kiểm thử là một khái niệm không thể thiếu trong kiểm thử phần mềm.
Theo ISTQB “ca kiểm thử là một tập hợp các giá trị đầu vào, tiền điều kiện,
các kết quả mong đợi và điều kiện kết thúc, được xây dựng cho mục đích hoặc
điều kiện kiểm thử riêng biệt để kiểm tra tính đúng đắn của chương trình với
yêu cầu của bản đặc tả yêu cầu phần mềm” [5]. Hay nói cách khác, ca kiểm
thử mô tả dữ liệu bao gồm: đầu vào, hành động hoặc sự kiện và kết quả đầu ra
mong đợi (expected results) để xác định liệu 1 ứng dụng, hệ thống phần mềm
hoặc một trong các tính năng của nó có hoạt động đúng như mong muốn hay
không.
Cấu trúc của một ca kiểm thử thông thường bao gồm:
Test case ID: Xác định số lượng trường hợp cần kiểm thử.
Function (Chức năng): Các function có thể được chia nhỏ dựa
theo chức năng của hệ thống nhằm giúp ca kiểm thử trở nên rõ
ràng hơn.
Pre-condition: Điều kiện đầu vào của ca kiểm thử, ví dụ như khi
thực hiện kiểm thử form đăng nhập, pre-condition sẽ là form đăng
nhập phải được hiển thị ra.
Test Data: Dữ liệu đầu vào cần chuẩn bị trước khi kiểm thử.
Test Steps: Mô tả chi tiết các bước thực hiện kiểm thử.
Expected Results: Kết quả mong đợi sau khi thực hiện các bước
kiểm thử.
Actual result: Mô tả kết quả thực tế khi thực hiện kiểm thử trên
môi trường của hệ thống. Actual result thường bao gồm ba giá trị:
pass, fail và pending.
Comments: Có thể chứa screen shot hoặc thông tin liên quan khi
thực hiện ca kiểm thử.