Kiểm thử LV
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
LỜI CẢM ƠN
Em xin chân thành cảm ơn các thầy giáo, cô giáo Khoa Công nghệ thông tin I của
Học viện công nghệ bưu chính viễn thông Hà Nội và các thầy cô của viện CNTT&TT-
CDIT đã tạo điều kiện thuận lợi cho em trong quá trình học tập 4 năm qua và trong quá
trình thực hiện đồ án tốt nghiệp.
Em xin gửi lời cảm ơn đặc biệt đến thạc sĩ Đỗ Mạnh Hùng - Viện CNTT&TT-
CDIT đã nhiệt tình hướng dẫn và chỉ bảo em trong suốt thời gian thực hiện đồ án.
Em xin cũng xin gửi lời cảm ơn chân thành đến gia đình, bạn bè và các anh chị
đồng nghiệp tại trung tâm phần mềm viễn thông Viettel đã hết lòng hỗ trợ em trong thời
gian thực hiện đồ án.
Hà Nội, ngày…….tháng……năm 2012
Sinh viê n:
Nguyễn Huyền Trang
SVTH: Nguyễn Huyền Trang – D08CNPM2
i
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
NHẬN XÉT, ĐÁNH GIÁ, CHO ĐIỂM
(Của giảng viên hướng dẫn)
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
………………………………………………
Điểm:
………….………………… (bằng
chữ:………..…………………………………)
Đồng ý/Không đồng ý
cho sinh viên bảo vệ trước hội đồng chấm đồ án tốt nghiệp?
Hà Nội, ngày tháng năm 2012
CÁN BỘ - GIẢNG VIÊN HƯỚNG DẪN
SVTH: Nguyễn Huyền Trang – D08CNPM2
ii
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
NHẬN XÉT, ĐÁNH GIÁ, CHO ĐIỂM
(Của giảng viên phản biện)
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
………………………………………………
Điểm:
………….………………… (bằng
chữ:………..…………………………………)
Đồng ý/Không đồng ý
cho sinh viên bảo vệ trước hội đồng chấm đồ án tốt nghiệp?
Hà Nội, ngày tháng năm 2012
CÁN BỘ - GIẢNG VIÊN PHẢN BIỆN
SVTH: Nguyễn Huyền Trang – D08CNPM2
iii
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
MỤC LỤC
MỞ ĐẦU ............................................................................................................................... - 1 -
1. Lý do chọn đề tài .............................................................................................................. - 1 -
2. Mục tiêu nghiên cứu ........................................................................................................ - 1 -
3. Bố cục nội dung của đồ án .............................................................................................. - 1 -
CHƯƠNG 1: TỔNG QUAN VỀ PHẦN MỀM VÀ LỖI PHẦN MỀM .......................... - 1 -
1.1. Định nghĩa phần mề m .................................................................................................. - 1 -
1.2. Định nghĩa công nghệ phần mề m ................................................................................ - 1 -
1.3. Vòng đời phần mề m...................................................................................................... - 1 -
1.4. Định nghĩa chất lượng phần mề m và đảm bảo chất lượng phần mề m.................... - 2 -
1.4.1. Định nghĩa chất lượng phần mềm ........................................................................... - 2 -
1.4.2. Định nghĩa đảm bảo chất lượng phần mềm ............................................................ - 3 -
1.5. Lỗi phần mề m ............................................................................................................... - 3 -
1.5.1. Định nghĩa lỗi phần mềm và phân loại lỗi phần mềm ............................................ - 3 -
1.5.2. Các nguyên nhân gây lỗi phần mềm ....................................................................... - 3 -
1.5.3. Chi phí cho việc sửa lỗi phần mềm ......................................................................... - 4 -
1.6. Qui trình xử lý lỗi phần mề m ...................................................................................... - 5 -
1.6.1. Bước 1: Đưa lỗi lên phần mềm quản lý lỗi ............................................................. - 7 -
1.6.2. Bước 2: Gán lỗi cho nhân viên phát triển ............................................................... - 7 -
1.6.3. Bước 3: Xử lý lỗi .................................................................................................... - 8 -
1.6.4. Bước 4: Kiểm thử lại............................................................................................... - 8 -
1.7. Tổng kết chương 1 ........................................................................................................ - 8 -
CHƯƠNG 2: TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM ........................................... - 9 -
2.1. Định nghĩa kiể m thử phần mề m .................................................................................. - 9 -
2.2. Mục tiêu của kiể m thử phần mề m............................................................................... - 9 -
2.2.1. Mục tiêu trực tiếp .................................................................................................... - 9 -
2.2.2. Mục tiêu gián tiếp ................................................................................................. - 10 -
2.3. Các nguyê n tắc cơ bản của kiể m thử phần mề m ..................................................... - 10 -
2.4. Qui trình kiểm thử phần mề m................................................................................... - 10 -
2.5. Các kỹ thuật kiể m thử phần mề m ............................................................................. - 11 -
2.5.1. Kiểm thử hộp đen.................................................................................................. - 11 -
2.5.2. Kiểm thử hộp trắng ............................................................................................... - 11 -
2.5.3. Kiểm thử hộp xám................................................................................................. - 12 -
2.6. Các giai đoạn kiểm thử phần mề m ........................................................................... - 12 -
2.6.1. Kiểm thử đơn vị .................................................................................................... - 12 -
2.6.2. Kiểm thử tích hợp ................................................................................................. - 13 -
2.6.3. Kiểm thử hệ thống................................................................................................. - 13 -
2.6.3.1. Kiểm thử chức năng
..................................................................................................................... - 13 -
2.6.3.2. Kiểm thử hiệu năng
....................................................................................................................... - 15 -
2.6.3.3. Kiểm thử an toàn thông tin
....................................................................................................... - 15 -
2.6.4. Kiểm thử chấp nhận .............................................................................................. - 23 -
2.6.4.1. Kiểm thử alpha
................................................................................................................................ - 23 -
2.6.4.2. Kiểm thử Bêta
.................................................................................................................................. - 24 -
SVTH: Nguyễn Huyền Trang – D08CNPM2
iv
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
2.6.5. Kiểm thử hồi qui ................................................................................................... - 24 -
2.7. Kiểm thử tự động ........................................................................................................ - 24 -
2.7.1. Kiểm thử tự động là gì? Qui trình kiểm thử tự động ............................................ - 24 -
2.7.2. Ưu điểm và nhược điểm của kiểm thử tự động..................................................... - 24 -
2.7.3. Các trường hợp nên áp dụng kiểm thử tự động .................................................... - 25 -
2.8. Tổng kết chương 2 ...................................................................................................... - 26 -
CHƯƠNG 3: CÔNG CỤ KIỂM THỬ TỰ ĐỘNG SELENIUM................................... - 27 -
3.1. Tổng quan về Selenium .............................................................................................. - 27 -
3.1.1. Selenium là gì?...................................................................................................... - 27 -
3.1.2. Các thành phần của Selenium ............................................................................... - 27 -
3.2. Selenium IDE .............................................................................................................. - 28 -
3.2.1. Cài đặt Selenium IDE ........................................................................................... - 28 -
3.2.2. Các icon của Selenium IDE .................................................................................. - 29 -
3.2.3. Các thao tác thực hiện kiểm thử tự động với Selenium ........................................ - 31 -
3.2.3.1. Recording_Thực hiện thu một kịch bản với Selenium IDE
..................................... - 31 -
3.2.3.2. Thêm các lệnh khẳng định và xác nhận với menu ngữ cảnh
................................... - 32 -
3.2.3.3. Các thao tác chỉnh sửa
................................................................................................................. - 33 -
3.2.3.4. Mở và lưu lại một test case
....................................................................................................... - 33 -
3.2.3.5. Chạy các test case
.......................................................................................................................... - 33 -
3.2.4. Selenese................................................................................................................. - 34 -
3.2.4.1. Cú pháp Script
................................................................................................................................. - 34 -
3.2.4.2. Một số lệnh thường sử dụng trong Selenium
................................................................... - 35 -
3.3. Selenium Remote Control (Selenium RC) ................................................................ - 35 -
3.3.1. Các thành phần của Selenium Remote Control .................................................... - 36 -
3.3.1.1. Máy chủ Selenium
......................................................................................................................... - 36 -
3.3.1.2. Các thư viện máy khách
............................................................................................................. - 36 -
3.3.2. Cài đặt Selenium Remote Control ........................................................................ - 36 -
3.3.2.1. Cài đặt máy chủ Selenium
......................................................................................................... - 37 -
3.3.2.2. Chạy Selenium Server
................................................................................................................. - 37 -
3.3.2.3. Sử dụng Java Client Driver
....................................................................................................... - 37 -
3.3.2.4. Sử dụng Python Client Driver
................................................................................................ - 38 -
3.3.2.5. Sử dụng .NET Client Driver
................................................................................................... - 38 -
3.3.2.6. Sử cụng Ruby Client Driver
.................................................................................................... - 38 -
3.3.3. Các thao tác với Selenium RC .............................................................................. - 38 -
3.3.3.1. Chạy các kịch bản kiểm thử Selenium IDE với Selenium Remote Control
.... - 38 -
3.3.3.2. Tạo một kịch bản kiểm thử mới với ngôn ngữ lập trình Java và Eclipse
.......... - 40 -
3.3.3.3. Dịch một kịch bản kiểm thử Selenium IDE thành kịch bản kiểm thử Selenium
RC
........................................................................................................................................................................................ - 42 -
3.3.3.4. Báo cáo kết quả kiểm thử
......................................................................................................... - 45 -
3.4. Tổng kết chương 3 ...................................................................................................... - 47 -
CHƯƠNG 4: THỬ NGHIỆM........................................................................................... - 49 -
4.1. Bài toán thử nghiệ m ................................................................................................... - 49 -
4.2. Sự khác nhau giữa kịch bản kiểm thử tự động và kịch bản kiể m thử thủ công ... - 49 -
4.3. Kịch bản kiể m thử thủ công ...................................................................................... - 50 -
SVTH: Nguyễn Huyền Trang – D08CNPM2
v
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
4.3.1. Chức năng đăng nhập............................................................................................ - 50 -
4.2.2. Chức năng soạn thảo và gửi email ........................................................................ - 50 -
4.4. Kịch bản kiể m thử tự động ........................................................................................ - 51 -
4.5. Kết quả thử nghiệm .................................................................................................... - 57 -
4.5.1. Chức năng đăng nhập............................................................................................ - 57 -
4.5.2. Chức năng gửi email ............................................................................................. - 58 -
4.6. Tổng kết chương 4 ...................................................................................................... - 58 -
KẾT LUẬN......................................................................................................................... - 59 -
DANH MỤC TÀI LIỆU THAM KHẢO ......................................................................... - 60 -
PHỤ LỤC: KỊCH BẢN KIỂM THỬ THỦ CÔNG CHO ỨNG DỤNG THỬ NGHIỆM....
-61-
SVTH: Nguyễn Huyền Trang – D08CNPM2
vi
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
DANH MỤC THUẬT NGỮ VÀ TỪ VIẾT TẮT
Thuật ngữ/Từ viết tắt
IEEE
Test case
Test suite
Ý nghĩa
Institute of Electrical and
Electronic Engineers
Trường hợp kiểm thử
Tập hợp các trường hợp kiểm
thử trong Selenium (Kịch bản
kiểm thử tự động trong
Selenium )
Tập hợp các trường hợp kiểm
thử (Kịch bản kiểm thử)
Selenium Remote Control
Tài khoản đăng nhập vào hệ
thống
Tên đăng nhập
Là một phần của chương
trình, mỗi mô-đun đảm nhiệm
một chức năng riêng
Một thuật ngữ trong kiểm thử
phần mềm dùng để chỉ sự
kiểm tra tính hợp lệ của dữ
liệu trên một yếu tố của ứng
dụng
Trong phần mềm, Framework
là một tập các thư viện hoặc
các lớp có thể sử dụng lại
được
Ghi chú
Test script
Selenium RC
Account
User
Mô-đun
Validate
Framework
SVTH: Nguyễn Huyền Trang – D08CNPM2
vii
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
DANH MỤC BẢNG, HÌNH VẼ, SƠ ĐỒ
Danh mục sơ đồ:
Sơ đồ 1.1 : Chi phí cho việc sửa lỗi phần mềm
Sơ đồ 1.2: Các trạng thái của lỗi
Sơ đồ 1.3: Qui trình xử lý lỗi
Sơ đồ 2.1: Qui trình kiểm thử phần mềm
Sơ đồ 2.2: Các giai đoạn kiểm thử phần mềm
Danh mục hình vẽ:
Hình 2.1: Kiểm tra lỗi SQL Injection
Hình 2.2: Lỗi SQL Injection
Hình 2.3: Lỗi XSS_1
Hình 2.4: Kiểm tra Lỗi XSS_2
Hình 2.5: Lỗi XSS_2
Hình 2.6: Kiểm tra lỗ hổng CFRS_1
Hình 2.7: Kiểm tra lỗ hổng CFRS_2
Hình 2.8: Kiểm tra lỗ hổng CFRS_3
Hình 2.9: Kiểm tra lỗi Path Traversal_1
Hình 2.10: Kiểm tra lỗi Path Traversal_2
Hình 2.11: Kiểm tra lỗi Path Traversal_3
Hình 2.12: Kiểm tra lỗi Path Traversal_4
Hình 2.13: Kiểm tra lỗi xác thực phân quyền
Hình 2.14: Kiểm tra lỗi Session fixation
Hình 2.15: Lỗi HTTP Only Cookie
Hình 3.1: Pop up cài đặt Selenium
Hình 3.2: Kiểm tra cài đặt Selenium thành công
Hình 3.3: Các icon của Selenium IDE
Hình 3.4: Test case Selenium IDE
Hình 3.5: Thực hiện thu các trường hợp kiểm thử_1
Hình 3.6: Thực hiện thu các trường hợp kiểm thử_2
Hình 3.7: Lệnh xác minh (verify) một yếu tố trên trang web
Hình 3.8: Vai trò của Remote Control Server
Hình 3.9: Chạy máy chủ Selenium thành công
Hình 3.10: Câu lệnh chạy testcase Selenium IDE bằng Selenium RC
Hình 3.11: Chạy kịch bản kiểm thử Selenium IDE trên Selenium RC
Hình 3.12: Chạy kịch bản kiểm thử Selenium IDE trên Selenium RC
Hình 3.13: Tạo project Java
SVTH: Nguyễn Huyền Trang – D08CNPM2
- 17 -
- 17 -
- 18 -
- 18 -
- 18 -
- 19 -
- 19 -
- 19 -
- 20 -
- 20 -
- 21 -
- 21 -
- 21 -
- 22 -
- 23 -
- 28 -
- 29 -
- 29 -
- 30 -
- 31 -
- 31 -
- 32 -
- 35 -
- 37 -
- 38 -
- 39 -
- 39 -
- 40 -
viii
-5-
-5-
-6-
- 10 -
- 12 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Hình 3.14 : Thêm các file jar vào thư viện
Hình 3.15: Mẫu test case Selenium RC
Hình 3.16: Export Test Case Selenium IDE sang Test Case Selenium Remote Control
Hình 3.18 : Kết quả chạy test case trên Junit 4
Hình 3.19: Tạo file build.xml
Hình 3.20: Thêm file junit.jar vào Global Entries của Ant
Hình 3.21: Lựa chọn các mục tiêu để thực thi file build.xml
Hình 3.22: Mẫu báo cáo kết quả kiểm thử Selenium dựa trên JUnit
Hình 4.1: Test case đăng nhập bằng Firefox
Hình 4.2: Test case đăng nhập bằng Internet Explore
Hình 4.3: Test case đăng nhập bằng Googlechrome
Hình 4.4: File build.xml
Hình 4.5: Báo cáo kết quả kiểm thử
Danh mục bảng:
Bảng 2.1 : Kiểm thử giao diện người sử dụng
Bảng 2.2 : Kiểm thử luồng nghiệp vụ
Bảng 2.3 : Kiểm thử hiệu năng
Bảng 2.4: Kiểm thử an toàn thông tin
Bảng 2.5: Kiểm thử hồi qui
Bảng 3.1: Cú pháp câu lệnh Selenese
- 14 -
- 14 -
- 15 -
- 16 -
- 24 -
- 34 -
- 41 -
- 42 -
- 43 -
- 45 -
- 45 -
- 46 -
- 46 -
- 47 -
- 51 -
- 52 -
- 53 -
- 56 -
- 57 -
Hình 3.17: Test Case Selenium Remote Control được export từ test case Selenium IDE - 44 -
SVTH: Nguyễn Huyền Trang – D08CNPM2
ix
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
MỞ ĐẦU
1.
Lý do chọn đề tài
Trong giai đoạn phát triển của công nghệ thông tin, ngành công nghệ phần mềm
đang ngày một chiế m vị trí quan trọng trong xu hướng phát triển kinh tế công nghiệp hóa,
hiện đại hóa của đất nước ta. Cùng với sự phát triển của công nghệ phần mềm, lỗi phần
mềm và chất lượng phần mềm luôn là thách thức lớn với bản thân ngành phần mềm khi
thực tế đã chứng minh, kiểm thử phần mềm là gia i đoạn chiếm đến hơn 40% thời gian,
kinh phí và nguồn nhân lực phát triển dự án phần mềm. Tuy nhiên ở Việt Nam hiện nay,
việc kiểm thử phần mề m vẫn chưa thực sự được nhìn nhận đúng với tầm quan trọng của
nó. Điều này thể hiện ở tỷ lệ kỹ sư kiểm thử phần mềm ở Việt Nam còn khá thấp, cứ 5
lập trình viên thì mới có 1 kỹ sư kiểm thử (số liệu thống kê năm 2011 của công ty
LogiGear), trong khi tỷ lệ này theo chuẩn quốc tế là 3:1. Thêm vào đó, mức độ đáp ứng
của kỹ sư kiểm thử phần mềm ở Việt Nam chưa cao. Nguyên nhân của việc này đến từ sự
thiếu hụt các đơn vị đào tạo chuyên sâu về kiểm thử và nguyên nhân sâu xa vẫn là vấn đề
kiểm thử phần mềm ở Việt Nam vẫn chưa được chuyên nghiệp hóa và đầu tư đúng mức.
Ngày nay, tự động hóa đang được nghiên cứu và ứng dụng trong nhiều lĩnh vực
trong đó công nghệ phần mềm nói chung và kiểm thử phần mềm nói riêng cũng không
ngoại lệ. Khi mà kiểm thử phần mềm vẫn tiêu tốn một lượng lớn thời gian, kinh phí và
nhân lực trong một dự án phần mềm thì song song với kiểm thử truyền thống thủ công, sự
ra đời của các công cụ hỗ trợ kiểm thử tự động như Quick Test Professional, Nunit, Junit,
Load Runner (thư ờng dùng trong kiểm thử hiệu năng) là tất yếu. Selenium là một công cụ
kiểm thử các ứng dụng web có khá nhiều ưu điểm như có thể kiểm thử trên nhiều trình
duyệt, hỗ trợ nhiều ngôn ngữ lập trình, giao tiếp được với các công cụ kiểm thử khác như
Junit, testNG (với Java) hay Nunit(với C#), và ưu điểm đặc biệt của công cụ này là nó là
một bộ mã nguồn mở, do đó các tổ chức sẽ không tốn kinh phí mua bản quyền. Tuy chưa
được ứng dụng nhiều trong các tổ chức ở Việt Nam, song với những ưu điểm trên,
Selenium hứa hẹn sẽ ngày càng phát triển và trở lên thông dụng hơn trong các tổ chức
phát triển phần mềm ở nước ta.
Với mong muốn có cái nhìn xác thực, rõ ràng hơn về kiểm thử phần mềm và tiếp
cận được với công cụ kiểm thử tự động Selenium để làm tiền đề cho định hướng tương
lai khi tốt nghiệp đại học sẽ trở thành một kỹ sư kiểm thử phần mềm, cá nhân em lựa
chọn để tài “Nghiên cứu các vấn đề về kiểm thử phần mềm và công cụ kiểm thử tự động
Selenium” làm đề tài cho đồ án tốt nghiệp đại học của mình. Trong khuôn khổ đồ án, do
thời gian và kinh nghiệm thực tế còn hạn chế nên có những phần thực hiện chưa được tốt,
em rất mong nhận được sự góp ý của thầy cô và các bạn.
2.
-
-
-
Mục tiê u nghiê n cứu
Có cái nhìn đúng đắn và sâu sắc hơn về các vấn đề cơ bản của công nghệ phần mềm,
lỗi phần mềm và kiểm thử phần mềm.
Hiểu rõ về các thành phần của bộ công cụ Selenium.
Nắm được cách thức sử dụng của hai công cụ là Selenium IDE và Selenium Remote
Control.
SVTH: Nguyễn Huyền Trang – D08CNPM2
x
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
-
3.
-
-
Ứng dụng các kiến thức kiểm thử phần mềm và kiến thức về Selenium để viết kịch
bản kiểm thử cho một ứng dụng cụ thể.
Bố cục nội dung của đồ án
Đồ án được chia thành 6 chương với nội dung như sau:
Mở đầu:
Chương này trình bày về lý do chọn đề tài, mục tiêu nghiên cứu đồ án và bố
cục nội dung của đồ án.
Chương 1: Tổng quan về phần mề m và lỗi phần mề m:
Chương này trình bày về
những định nghĩa cơ bản về phần mềm, ngành công nghệ phần mềm, lỗi phần mềm,
và qui trình xử lý lỗi phần mềm.
Chương 2: Tổng quan về kiể m thử phần mề m:
Chương này trình bày những kiến
thức cơ bản về kiểm thử phần mềm như các nguyên tắc kiểm thử, các phương pháp
kiểm thử, các giai đoạn kiểm thử phần mềm.
Chương 3: Công cụ kiể m thử tự động Selenium:
Chương này trình bày tổng quan
về bộ công cụ Selenium, đi sâu vào các thao tác với Selenium IDE và Selenium RC.
Chương 4: Thử nghiệ m:
Chương này trình bày kịch bản kiểm thử viết cho một số
chức năng cơ bản của ứng dụng web https://mail.viettel.com.vn và thử nghiệm một số
trường hợp kiểm thử tự động viết bằng Selenium IDE và Selenium RC.
Kết luận:
Chương 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.
-
-
-
-
Hà Nội, tháng 12/2012
Người thực hiện
Sinh viê n: Nguyễ n Huyền Trang
SVTH: Nguyễn Huyền Trang – D08CNPM2
xi
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Chương 1: Tổng quan về phần mề m
CHƯƠNG 1: TỔNG QUAN VỀ PHẦN MỀM VÀ LỖI PHẦN MỀM
1.1. Định nghĩa phần mề m
-
-
Định nghĩa theo IEEE:
Phần mềm là các chương trình máy tính, các thủ tục, các tài liệu
có liên quan và các dữ liệu để vận hành của một hệ thống máy tính.
Theo như định nghĩa của IEEE, phần mềm gồm 4 thành phần:
·
·
Chương trình máy tính (mã nguồn):
Thành phần này giúp cho máy tính thực thi các
ứng dụng được yêu cầu.
Các thủ tục:
Các thủ tục được yêu cầu, để định nghĩa thứ tự và lịch trình mà chương
trình sẽ thực thi, các hàm triển khai, người thực thi các hành động cần thiết cho ứng
dụng phần mềm.
Các tài liệu:
Có rất nhiều những tài liệu cần thiết với nhân viên phát triển, người sử
dụng và nhân viên bảo trì như: tài liệu thiết kế, tài liệu phân tích, tài liệu hướng dẫn sử
dụng, tài liệu hướng dẫn bảo trì.
Dữ liệu cần cho việc vận hành hệ thống:
Dữ liệu bao gồm các biến, mã nguồn, danh sách
tên thích ứng phần mềm với yêu cầu xác định của khách hàng để vận hành phần mềm.
·
·
1.2. Định nghĩa công nghệ phần mề m
Công nghệ phần mề m
là việc áp dụng các công cụ, kỹ thuật một cách hệ thống trong
việc phát triển các ứng dụng dựa trên máy tính. Nói cách khác đó là việc áp dụng các quan
điểm, các tiến trình có kỷ luật và có bài bản vào để phát triển, vận hành và bảo trì phần mềm.
Về cơ bản, công nghệ phần mềm thực hiện các tác vụ chủ yếu sau: thiết kế phần mềm,
xây dựng phần mềm, kiểm thử phần mềm và bảo trì phần mềm.
Mục tiêu của công nghệ phần mềm là tạo ra những phần mềm tốt, giảm đến mức tối
thiểu sai sót xảy ra trong quá trình vận hành, cũng như tạo điều kiện thuận lợi trong việc bảo
trì và nâng cấp phần mềm.
1.3. Vòng đời phần mề m
Vòng đời phần mềm là một loạt các pha mà phần mềm phải trải qua từ việc khám phá các
khái niệm đến khi phần mềm bị loại bỏ hoàn toàn. Mô hình vòng đời phần mềm gồm 7 pha:
-
Pha yêu cầu
(requirements phase): Là pha đầu tiên trong quá trình xây dựng phần
mềm, còn gọi là pha tìm hiểu khái niệm (concept exploration). Ở pha này, đại diện nhóm phát
triển và khách hàng gặp nhau, khách hàng nêu ra những yêu cầu mà phần mềm phải có, đại
diện nhóm phát triển ghi chép lại. Nếu dịch theo tiếng Anh "requirements phase" là pha yêu
cầu. Tuy nhiên cách gọi này có thể hơi khó hiểu, do đó người ta thường gọi là pha xác định
yêu cầu.
-
Pha đặc tả
(specification phase): Pha này phân tích các yêu cầu của khách hàng. Mô
tả các kết quả phân tích dưới dạng "tài liệu đặc tả". Cuối giai đoạn này, kế hoạch quản lý dự
án phần mềm được đưa ra, mô tả chi tiết quá trình phát triển phần mềm. Câu hỏi mà pha này
cần trả lời là: "Phần mềm sẽ làm gì?" .
-
Pha thiết kế
(design phase): Là pha tiếp theo pha đặc tả. Căn cứ vào tài liệu đặc tả, pha
này mô tả cách thức mà phần mềm thực hiện các công việc cụ thể. Pha này trả lời câu hỏi "phần
mềm sẽ được làm như thế nào?". Pha thiết kế thường có hai phần: thiết kế kiến trúc (architecture
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 1 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Chương 1: Tổng quan về phần mề m
design) và thiết kế chi tiết (detail design). Thiết kế kiến trúc phân chia phần mềm thành các thành
phần gọi là mô-đun. Thiết kế chi tiết là thiết kế từng mô-đun một cách chi tiết.
-
Pha cài đặt
(implementation phase): Ở pha này, người ta thực hiện viết chương trình
bằng một ngôn ngữ lập trình cụ thể.
-
Pha tích hợp
(integration phase): Kết nối các mô-đun đã viết của chương trình thành
một phần mềm thống nhất và chạy thử, chỉnh sửa cho đến khi phần mềm chạy tốt.
-
Pha bảo trì
(maintenance phase): Khi chương trình đã được cài đặt trên máy của
khách hàng vẫn có thể có lỗi phát sinh trong phần mềm cần loại trừ và điều chỉnh lại theo yêu
cầu khách hàng. Công việc bảo trì được chia thành hai loại: bảo trì sửa lỗi (software repair)
và bảo trì cập nhật (software update). Bảo trì sửa lỗi là sửa các lỗi có thể vẫn còn xuất hiện
trong khi chạy chương trình. Bảo trì cập nhật lại được chia làm hai loại: bảo trì hoàn
thiện (perfective maintenance) và bảo trì thích nghi (adaptive maintenance). Bảo trì hoàn
thiện là sửa đổi phần mềm theo ý khách hàng để nâng cao hiệu quả. Bảo trì thích nghi là sửa
đổi để phần mềm thích nghi với môi trường mới. Người ta tính toán rằng bảo trì sửa lỗi và
thích nghi chiếm thời gian gần bằng nhau và bằng khoảng 20% thời gian bảo trì, còn bảo trì
hoàn thiện chiếm thời gian khoảng gấp ba lần mỗi loại bảo trì kia (khoảng 60%).
-
Pha loại bỏ
(retirement phase): Đến một thời điển nào đó, do sự thay đổi của môi
trường làm việc và một số yếu tố khác, chi phí bảo trì phần mềm sẽ lớn hơn rất nhiều so với
chi phí phát triển một phần mềm mới. Đó là lúc việc loại bỏ phần mềm được thực hiện.
1.4. Định nghĩa chất lượng phần mề m và đảm bảo chất lượng phần mề m
1.4.1. Định nghĩa chất lượng phần mề m
Có rất nhiều định nghĩa về chất lượng phần mềm được đưa ra bởi các tổ chức, cá nhân
khác nhau. Trong phạm vi của đồ án này trình bày một số định nghĩa tiêu biểu.
-
Định nghĩa theo IEEE (1991):
·
Định nghĩa 1:
Chất lượng phần mềm là một mức độ mà một hệ thống, thành phần hệ
thống hay tiến trình đáp ứng được yêu cầu đã được đặc tả.
·
Định nghĩa 2:
Chất lượng phần mềm là mức độ mà một hệ thống, thành phần hệ thống
hay tiến trình đáp ứng được yêu cầu và sự mong đợi của khách hàng hay người sử dụng.
-
Phân tích hai quan điểm của IEEE:
·
Theo quan điểm thứ nhất của IEEE: Nếu theo quan điểm này, chúng ta sẽ bị phụ thuộc
quá nhiều vào tài liệu đặc tả yêu cầu, dẫn đến nếu việc xác định yêu cầu bị sai, thiếu thì một
phần mềm được làm đúng với đặc tả chưa chắc đã là một phần mềm có chất lượng.
·
Theo quan điểm thứ hai của IEEE: Khách hàng đôi khi không có nhiều kiến thức về
công nghệ, họ có thể đưa ra những mong muốn hết sức vô lý và có thể thay đổi yêu cầu với
phần mềm nhiều lần thậm chí thay đổi ngay trong giai đoạn cuối. Điều này gây rất nhiều khó
khăn cho việc phát triển phần mềm.
-
Định nghĩa theo Pressman:
Chất lượng phần mềm là sự phù hợp của các yêu cầu cụ
thể về hiệu năng và chức năng, các tiêu chuẩn phát triển phần mềm được ghi lại rõ dàng bằng
tài liệu với các đặc tính ngầm định của tất cả các phần mềm được phát triển chuyên nghiệp.
·
Định nghĩa của Pressman đề xuất ba yêu cầu với chất lượng phần mềm phải được đáp
ứng khi phát triển phần mềm:
- Các yêu cầu chức năng rõ ràng là nhân tố chính quyết định chất lượng đầu ra của phần mềm.
- Các tiêu chuẩn chất lượng phần mềm sẽ được nói đến trong hợp đồng.
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 2 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Chương 1: Tổng quan về phần mề m
- Các đặc tính ngầm định cần được đáp ứng trong quá trình phát triển cho dù không
được nói đến rõ ràng trong hợp đồng.
1.4.2. Định nghĩa đảm bảo chất lượng phần mề m
-
Định nghĩa theo Daniel Galin:
Đảm bảo chất lượng phần mềm (Soft are Quality
Assure) là một tập hợp các hành động cần thiết đư ợc lên kế hoạch một cách hệ thống để cung
cấp đầy đủ niềm tin rằng quá trình phát triển phần mềm phù hợp để thành lập các yêu cầu
chức năng kỹ thuật cũng như các yêu cầu quản lý theo lịch trình và hoạt động trong giới hạn
ngân sách.
1.5. Lỗi phần mề m
1.5.1. Định nghĩa lỗi phần mềm và phân loại lỗi phần mề m
- Định nghĩa lỗi phần mềm: Có rất nhiều định nghĩa về lỗi phần mềm nhưng có thể hiểu
và phát biểu một cách đơn giản thì "Lỗi phần mềm là sự không khớp giữa chương trình và đặc
tả của nó".
- Dựa vào định nghĩa, ta có thể phân loại lỗi phần mềm thành 3 dạng:
·
Lỗi sai: Sản phẩm phần mềm được xây dựng khác với đặc tả.
·
Lỗi thiếu: Các yêu cầu của sản phẩm phần mềm đã có trong đặc tả nhưng lại không có
trong sản phẩm thực tế.
·
Lỗi thừa: Sản phẩm thực tế có những tính năng không có trong tài liệu đặc tả.
1.5.2. Các nguyên nhân gây lỗi phần mề m
Lỗi phần mềm có thể đến từ nhiều nguyên nhân khác nhau, trong đó có cả các nguyên
nhân chủ quan và các nguyên nhân khách quan. Dưới đây là chín nguyên nhân chủ yếu gây ra
lỗi phần mềm:
-
Định nghĩa các yêu cầu bị lỗi:
Những lỗi trong việc xác định yêu cầu thường nằm ở
phía khách hàng. Một số lỗi thường gặp là: định nghĩa sai yêu cầu, lỗi không hoàn chỉnh,
thiếu các yêu cầu quan trọng hoặc là quá chú trọng các yêu cầu không thật sự cần thiết.
-
Các lỗi trong giao tiếp giữa khách hàng và nhà phát triển:
Hiểu lầm trong giao tiếp
giữa khách hàng và nhà phát triển cũng là nguyên nhân gây lỗi. Những lỗi này thường xuất
hiện trong giai đoạn đầu của dự án. Một số lỗi hay gặp phải: hiểu sai chỉ dẫn trong tài liệu yêu
cầu, hiểu sai thay đổi khi khách hàng trình bày bằng lời nói và tài liệu, hiểu sai về phản hồi và
thiếu quan tâm đến những đề cập của khách hàng.
Giải pháp khắc phục: Cần có ủy ban liên kết giữa khách hàng và nhà cung cấp để
tránh lỗi trong giao tiếp. Ủy ban do quản trị dự án đứng đầu và khách hàng phải giới thiệu
những người hiểu về mặt nghiệp vụ vào ủy ban đó.
-
Sai lệch có chủ ý với các yêu cầu phần mềm:
Trong một số trường hợp các nhà phát
triển cố tình làm sai lệnh các yêu cầu trong tài liệu đặc tả. Nguyên nhân của việc này đến từ
các áp lực thời gian, ngân sách, hay cố tình sử dụng lại các mô-đun từ các dự án trước mà
chưa phân tích đầy đủ những thay đổi để thích nghi với các yêu cầu mới.
Giải pháp khắc phục: Dựa trên những thống kê để quyết định xem giải pháp như thế nào,
sắp xếp ưu tiên xem bỏ được yêu cầu nào hay sử dụng lại được mô-đun nào.
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 3 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Chương 1: Tổng quan về phần mề m
-
Các lỗi thiết kế logic:
Lỗi phần mềm xảy ra trong quá trình các chuyên gia thiết kế hệ
thống, các kiến trúc sư hệ thống, kỹ sư phần mềm, các nhà phân tích xây dựng phần mềm theo
yêu cầu. Các lỗi điển hình bao gồm:
·
·
·
·
Định nghĩa các yêu cầu phần mềm bằng các thuật toán sai
Quy trình định nghĩa có chứa trình tự lỗi
Sai sót trong các định nghĩa biên như > 3 hay ≥ 3
Thiếu sót các trạng thái hệ thống phần mềm được yêu cầu
-
Các lỗi lập trình:
Có rất nhiều lý do dẫn đến việc các lập trình viên gây ra các lỗi lập
trình. Những lý do này bao gồm: sự hiểu sai các tài liệu thiết kế, ngôn ngữ; sai sót trong ngôn ngữ
lập trình; sai sót trong việc áp dụng các công cụ phát triển; sai sót trong lựa chọn dữ liệu...
-
Không tuân thủ theo các tài liệu hướng dẫn và tiêu chuẩn lập trình:
Các lỗi phần
mềm có thể đến từ việc không tuân thủ các tài liệu và tiêu chuẩn lập trình của các tổ chức phát
triển phần mềm.
-
Thiếu sót trong quá trình kiểm thử:
Lỗi phần mềm có thể đến từ chính quá trình
kiểm thử khi mà người kiểm thử để lọt lỗi.
Những lỗi này đến từ các nguyên nhân sau đây:
·
·
Kế hoạch kiểm thử chưa hoàn chỉnh, để sót yêu cầu cần kiểm thử.
Lỗi trong tài liệu và báo cáo kiểm thử.
·
Việc sửa chữa các lỗi được phát hiện không hoàn chỉnh do áp lực thời gian hay do
thiếu cẩn thận.
Giải pháp: Lên kế hoạch kiểm thử cụ thể tại giai đoạn đầu của dự án.
-
Các lỗi thủ tục:
Các thủ tục hướng dẫn cho người sử dụng tại từng bước của tiến
trình. Chúng có tầm quan trọng đặc biệt trong các hệ thống phần mềm phức tạp mà các tiến
trình được thực bằng nhiều bước, mỗi bước có thể có nhiều kiểu dữ liệu và cho phép kiểm tra
các kết quả trung gian. Các lỗi có thể đến từ việc viết các thủ tục.
-
Các lỗi về tài liệu:
Các lỗi về tài liệu là vấn đề của các đội phát triển và bảo trì khi có
những sai sót trong các tài liệu liên quan. Những lỗi này có thể là nguyên nhân gây ra lỗi
trong giai đoạn phát triển kế tiếp và giai đoạn bảo trì.
1.5.3. Chi phí cho việc sửa lỗi phần mề m
Việc kiểm thử và sửa lỗi phần mềm có thể thực hiện trong bất cứ giai đoạn nào của
vòng đời phần mềm. Tuy nhiên công việc này nên được thực hiện càng sớm càng tốt vì càng
về giai đoạn sau của vòng đời phần mềm, chi phí cho việc tìm và sửa lỗi càng tăng, đặc biệt là
đến giai đoạn đã triển khai phần mềm thì chi phí cho sửa lỗi sẽ trở nên rất lớn và ảnh hưởng
trực tiếp đến uy tín của tổ chức phát triển phần mềm.
Theo tài liệu của Boehm, chi phí cho việc tìm và sửa lỗi phần mềm sẽ tăng theo hàm
mũ trong biểu đồ sau:
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 4 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Chương 1: Tổng quan về phần mề m
Sơ đồ 1.1 : Chi phí cho việc sửa lỗi phần mềm
1.6. Qui trình xử lý lỗi phần mề m
Trước khi giới thiệu về qui trình xử lý lỗi phần mềm, đồ án sẽ trình bày về các trạng
thái có thể có của lỗi.
New
Cancelled
Assigned
Next
Resolved
Accepted
Confirmed
Sơ đồ 1.2: Các trạng thái của lỗi
Trong đó:
-
-
-
-
New: Lỗi mới
Assigned: Lỗi đã được gán cho nhân viên phát triển
Resolved: Lỗi đã được xử lý
Confirmed: Lỗi cần được chứng thực, thảo luận lại
Closed
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 5 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
-
-
-
-
Chương 1: Tổng quan về phần mề m
Canceled: Lỗi được xác định là không phải lỗi, lỗi được bỏ qua
Next: Lỗi không thuộc phạm vi của dự án, hoặc sẽ được xử lý trong một giai đoạn khác
của dự án
Accept: Các lỗi có thể chấp nhận được. Ví dụ: Các lỗi do Framework
Closed: Trạng thái đóng. Lỗi đã được sửa thành công.
Mỗi tổ chức phát triển phần mềm sẽ sử dụng một công cụ quản lý lỗi riêng, trong đó
có thể kể đến Mantis là một công cụ được sử dụng khá phổ biến hiện nay. Phần tiếp theo sẽ
trình bày một qui trình xử lý lỗi phần mềm hiện đang được sử dụng trong thực tế ở một số tổ
chức phát triển và gia công phần mềm:
Sơ đồ 1.3: Qui trình xử lý lỗi
Theo đó, qui trình xử lý lỗi có thể bao gồm 6 bước chính:
-
-
-
-
-
-
Bước 0_Bắt đầu: Phát hiện phần mềm có lỗi
Bước 1_Đưa lỗi lên hệ thống quản lý lỗi
Bước 2_Gán lỗi cho nhân viên phát triển
Bước 3_Xử lý lỗi
Bước 4_Kiểm thử lại
Bước 5_Đóng lỗi
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 6 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
1.6.1. Bước 1: Đưa lỗi lên phần mề m quản lý lỗi
-
-
-
Chương 1: Tổng quan về phần mề m
Người thực hiện: tất cả các thành viên trong đội dự án như quản trị dự án, nhóm kiểm thử,
nhóm giải pháp, nhóm lập trình.
Trạng thái của lỗi là NEW.
Một số thông tin cần có về lỗi:
·
Category: Thư mục lỗi dùng để phân loại lỗi, lỗi thuộc phần chức năng nào phải chọn
đúng phần thư mục lỗi tương ứng để thuận tiện cho việc tra cứu, thống kê lỗi của chức
năng.
Severity (trọng số của lỗi): Thông số này biểu hiện độ nghiêm trọng của lỗi, thông
thường lỗi sẽ thuộc một trong ba trọng số dưới đây:
o
Minor: Các lỗi định dạng (font chữ, cỡ chữ, màu sắc của các đối tượng, chiều dài
của các đối tượng), lỗi chính tả, lỗi validate dữ liệu.
o
Major: Các lỗi ràng buộc dữ liệu, lỗi chức năng nghiệp vụ của hệ thống (nhưng
chưa gây ra treo hệ thống hay không làm cho hệ thống không xử lý được tiếp).
o
Crash: Các lỗi chức năng nghiệp vụ của hệ thống gây treo hệ thống, không xử lý
được tiếp.
·
Reproducibility: Khả năng tái tạo lỗi. Khi phát hiện ra lỗi, nhân viên kiểm thử cần
thực hiện lại phần chức năng phát hiện ra lỗi để xét khả năng tái tạo lỗi và lựa chọn
đúng khả năng tái tạo lỗi.
Priority: Mức độ ưu tiên trong việc sửa lỗi.
Summary: Tóm tắt nội dung lỗi, có thể coi là tiêu đề của lỗi.
Description: Đây là phần mô tả lỗi, phải mô tả rõ 3 phần nội dung:
o
Các bước thực hiện
o
Kết quả trả về từ hệ thống
o
Kết quả mong muốn
·
Notes: Dùng để đưa các lưu ý, trao đổi về lỗi của các thành viên trong dự án.
·
·
·
·
1.6.2. Bước 2: Gán lỗi cho nhân viên phát triển
-
-
-
Nhân viên kiểm thử thực hiện gán lỗi cho nhân viên phát triển, người sẽ chịu trách nhiệm
về phần chức năng bị lỗi.
Trạng thái của lỗi là ASSIGNED.
Lưu ý:
·
Trưởng nhóm kiểm thử, quản trị dự án có thể xem xét lại các lỗi có trạng thái NEW và
ASSIGNED trên hệ thống phần mềm quản lý lỗi:
o
Nếu thấy không phải là lỗi thì đưa lỗi về trạng thái CANCELLED và nêu rõ
nguyên nhân đưa lỗi về CANCELLED.
o
Nếu thấy nhân viên kiểm thử mô tả không rõ ràng, thiếu thông tin thì chuyển lỗi
sang trạng thái CONFIRMED và yêu cầu nhân viên kiểm thử bổ sung thêm thông
tin.
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 7 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Chương 1: Tổng quan về phần mề m
o
Nếu thấy lỗi không thuộc phạm vi phát triển của dự án trong giai đoạn hiện tại thì
chuyển lỗi về trạng thái NEXT.
·
Quản trị dự án xem xét lại các lỗi có trạng thái NEW hoặc ASSIGNED, nếu thấy là lỗi
nhưng có thể chấp nhận được thì chuyển lỗi sang trạng thái ACCEPTED và nêu rõ nguyên
nhân đưa lỗi về trạng thái ACCEPTED.
1.6.3. Bước 3: Xử lý lỗi
Nhân viên phát triển xem xét các lỗi được gán cho mình:
- Nếu thấy đúng là lỗi và đã mô tả lỗi rõ ràng, đầy đủ thông tin, nhân viên phát triển
thực hiện sửa lỗi và chuyển lỗi về trạng thái RESOLVED, đồng thời bắt buộc nêu rõ hướng
giải quyết và các chức năng bị ảnh hưởng trong phần NOTES.
- Các trường hợp khác: Nếu thấy không phải là lỗi của hệ thống, nhân viên phát triển sẽ
yêu cầu nhân viên kiểm thử bổ sung thêm thông tin, hoặc thấy là lỗi nhưng có thể chấp nhận
được lỗi thì nhân viên phát triển chuyển lỗi sang trạng thái CONFIRMED và nêu rõ lý do
chuyển lỗi sang trạng thái CONFIRMED trong phần NOTES.
1.6.4. Bước 4: Kiểm thử lại
Theo phân công của trưởng nhóm kiểm thử, nhân viên kiểm thử thực hiện kiểm thử lại
các chức năng có lỗi đang ở trạng thái RESOLVED:
-
Nếu lỗi đã được sửa thì chuyển lỗi về trạng thái CLOSED.
- Nếu lỗi chưa được sửa hoặc mới chỉ sửa một phần thì chuyển lỗi về trạng thái
ASSIGNED và nêu rõ những phần chức năng nào chưa chỉnh sửa để nhân viên phát triển tiến
hành sửa tiếp.
- Nếu thấy có thể chấp nhận lỗi thì chuyển lỗi về trạng thái ACCEPTED. Đồng thời khi
cập nhật kịch bản kiểm thử thì sẽ để kết quả của case đó là fail (vì vẫn là lỗi).
- Lưu ý: Nếu phần chức năng bị ảnh hưởng gây ra lỗi mới thì đưa một lỗi mới lên phần
mềm quản lý lỗi.
1.7. Tổng kết chương 1
Chương 1 của đồ án đã trình bày được những định nghĩa và những vấn đề cơ bản xung
quanh phần mềm, công nghệ phần mềm, lỗi phần mềm và xử lý lỗi phần mềm. Các vấn đề cụ
thể bao gồm:
-
-
Các định nghĩa về phần mềm, công nghệ phần mềm, chất lượng phần mềm, bảo đảm
chất lượng phần mềm, lỗi phần mềm.
Các vấn đề liên quan đến lỗi phần mềm và qui trình xử lý lỗi phần mềm.
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 8 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Chương 2: Tổng quan về kiểm thử phần mề m
CHƯƠNG 2: TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM
2.1. Định nghĩa kiể m thử phần mề m
Kiểm thử phần mềm có nhiều định nghĩa khác nhau đề xuất bởi nhiều tổ chức hay cá
nhân khác nhau. Phần này của đồ án sẽ trình bày một số định nghĩa nổi bật:
Định nghĩa của Myer (1979):
"Kiểm thử là quá trình thực thi một chương trình với mục
đích tìm ra lỗi". Theo như định nghĩa này, quá trình kiểm thử bao gồm tất cả các hoạt
động từ kiểm tra mã nguồn được thực hiện bởi trưởng nhóm phát triển, đến việc chạy thử
chương trình được tiến hành bởi các đồng nghiệp khác. Tất cả các hoạt động trên đều
được coi là các hoạt động kiểm thử.
-
Hai định nghĩa của IEEE (1990):
·
Định nghĩa 1:
Kiểm thử phần mềm là quá trình vận hành một hệ thống hoặc một
thành phần của hệ thống với các điều kiện xác định, nhận xét và ghi lại các kết quả,
tạo ra đánh giá về những khía cạnh của hệ thống hay thành phần hệ thống.
·
Định nghĩa 2:
Kiểm thử phần mềm là quá trình phân tích các yếu tố phần mềm để
phát hiện những khác biệt giữa chương trình với các điều kiện yêu cầu và đánh giá các
đặc điểm của các yếu tố phần mềm.
Theo như định nghĩa 2, việc chạy chương trình như một phần của tiến trình kiểm thử
phần mềm là không cần thiết.
-
Định nghĩa của Daniel Galin:
"Kiểm thử phần mềm là một quá trình được tiến hành bởi
một nhóm chuyên viên kiểm thử, trong đó một đơn vị phần mềm, một nhóm các đơn vị
được tích hợp, hoặc cả gói phần mềm được kiểm tra bằng các chạy các chương trình trên
máy tính. Tất cả các bước kiểm tra liên được tiến hành theo các thủ tục kiểm thử và các
trường hợp kiểm thử đã được thông qua".
Định nghĩa của Daniel Galin là một định nghĩa khá hoàn thiện về kiểm thử phần mềm.
Một số thuật ngữ có trong định nghĩa của Daniel Galin:
·
Nhóm chuyên viên kiểm thử: Một nhóm độc lập hoặc nhóm tư vấn từ bên ngoài,
những người chuyên kiểm thử được chỉ định để thực hiện các nhiệm vụ chủ yếu là để
phát hiện và loại bỏ sai lệch và để đảm bảo kiểm thử hiệu quả bởi các chuyên gia kiểm
thử được đào tạo.
·
Các thủ tục kiểm thử đã được thông qua: Quá trình kiểm thử được thực hiện theo kế
hoạch kiểm thử và các thủ tục kiểm thử được thông qua phù hợp với các thủ tục đảm
bảo chất lượng phần mềm được thông qua bởi tổ chức phát triển phần mềm.
·
Các trường hợp kiểm thử được thông qua: Các trường hợp kiểm thử được định nghĩa
đầy đủ trong kế hoạch kiểm thử. Không có sự thiếu xót hoặc bổ sung nào được mong
đợi xảy ra trong suốt quá trình thực thi kiểm thử.
-
2.2. Mục tiêu của kiể m thử phần mề m
2.2.1. Mục tiêu trực tiếp
-
-
-
Phát hiện và xác định càng nhiều lỗi càng tốt ở các phần mềm được kiểm thử.
Tiến hành sửa lỗi ở các phần mềm được kiểm thử và kiểm thử lại cho đến khi đạt một
mức độ chất lượng phần mềm chấp nhận được.
Thực thi những trường hợp kiểm thử một cách hiệu quả trong một giới hạn ngân sách và
lịch trình cho phép.
Trang - 9 -
SVTH: Nguyễn Huyền Trang – D08CNPM2
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
2.2.2. Mục tiêu gián tiếp
-
Chương 2: Tổng quan về kiểm thử phần mề m
Để biên dịch một tài liệu về các lỗi phần mềm thường gặp nhằm mục đích ngăn ngừa và
sửa chữa lỗi.
Có bảy nguyên tắc cơ bản cần chú ý khi kiểm thử phần mềm, các nguyên tắc đó là:
2.3. Các nguyê n tắc cơ bản của kiể m thử phần mề m
-
Kiểm thử để chứng minh sự có mặt của lỗi và không chứng minh điều ngược lại:
Kiểm thử có thể cho thấy sự có mặt của lỗi nhưng không thể chứng minh điều ngược lại là
chương trình không có lỗi. Việc kiểm thử giảm nguy cơ không tìm thấy lỗi trong phần mềm
nhưng ngay cả khi không tìm thấy lỗi thì cũng không thể chứng minh được sản phẩm phần
mềm được phát triển hoàn toàn chính xác.
-
Không thể kiểm thử vét cạn:
Việc kiểm thử không thể thực hiện được cho tất mọi
trường hợp kiểm thử. Do vậy thay vì kiểm thử mọi khía cạnh, ta phải tập trung vào kiểm thử
những yếu tố quan trọng và nhiều rủi do.
-
Kiểm thử sớm:
Các hoạt động kiểm thử nên bắt đầu càng sớm càng tốt trong vòng đời
phát triển phần mềm, và nên tập trung và những mục tiêu kiểm thử nhất định.
-
Phân cụm lỗi:
Một số lượng nhỏ các mô-đun phần mềm có thể chứa hầu hết các lỗi được
phát hiện ra trong suốt quá trình kiểm thử hoặc tập trung hầu hết các lỗi vận hành.
-
Kiểm thử ngược:
Nếu một phương pháp kiểm thử được lặp đi lặp lại nhiều lần, các
trường hợp kiểm thử giống nhau sẽ không phát hiện được triệt để lỗi mới. Để khắc phục điều
này ta có thể sử dụng nguyên tắc "kiểm thử ngược", các trường hợp kiểm thử cần phải được
xem xét và duyệt lại một cách đều đặn, và việc kiểm thử mới cần phải được viết lại để thực thi
những phần khác của phần mềm hay hệ thống để tìm ra những lỗi tiềm ẩn.
-
Kiểm thử phụ thuộc vào ngữ cảnh:
Việc kiểm thử được thực hiện trong những hoàn
cảnh khác nhau thì khác nhau.
-
Sai lầm về việc không có lỗi:
Tìm kiếm và sửa lỗi không thể giúp được gì nếu hệ thống
không dùng được hoặc không đáp ứng được yêu cầu và sự mong đợi của khách hàng.
2.4. Qui trình kiểm thử phần mề m
Tùy vào từng tổ chức, hệ thống, ngữ cảnh, mức độ rủi do của phần mềm mà qui trình
kiểm thử phần mềm có thể gồm nhiều bước khác nhau. Nhưng nhìn chung mọi qui trình kiểm
thử đều có những bước cơ bản như qui trình dưới đây:
Sơ đồ 2.1: Qui trình kiểm thử phần mềm
Theo đó một qui trình kiểm thử phần mềm cơ bản gồm 4 giai đoạn:
-
Lập kế hoạch kiểm thử:
Nhiệm vụ quan trọng trong phần lập kế hoạch kiểm thử là xác
định được các yếu tố sau:
Trang - 10 -
SVTH: Nguyễn Huyền Trang – D08CNPM2
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
·
·
Chương 2: Tổng quan về kiểm thử phần mề m
Các giai đoạn kiểm thử áp dụng cho dự án
Các phương pháp kiểm thử
-
-
-
·
Các công cụ kiểm thử
·
Nguồn lực kiểm thử
·
Tài nguyên môi trường kiểm thử, bao gồm các tài nguyên phần cứng và phần mềm
·
Mốc bàn giao các tài liệu kiểm thử
Chuẩn bị kiểm thử:
Nhiệm vụ chiến lược của giai đoạn này là:
·
Tìm hiểu nghiệp vụ của hệ thống phải kiểm thử
·
Xây dựng kịch bản kiểm thử, phát triển các thủ tục và các kịch bản kiểm thử tự động
(trong trường hợp kiểm thử tự động)
·
Chuẩn bị dữ liệu kiểm thử
·
Xem xét phê duyệt các tài liệu kiểm thử
Thực thi kiể m thử:
·
Thực hiện kiểm thử dựa trên các kịch bản kiểm thử,test script, thủ tục, dữ liệu có sẵn
từ bước chuẩn bị kiểm thử
·
Tham gia quá trình quản lý lỗi: báo lỗi, sửa lỗi
Báo cáo và phân tích dữ liệu kiể m thử:
·
Báo cáo kiểm thử
·
Phân tích nguyên nhân và đề xuất các hành động khắc phục
Có 3 kỹ thuật kiểm thử phần mềm chính là:
2.5. Các kỹ thuật kiể m thử phần mề m
-
-
-
Kiểm thử hộp đen
Kiểm thử hộp trắng
Kiểm thử hộp xám
2.5.1. Kiểm thử hộp đen
- Kỹ thuật kiểm thử hộp đen xem chương trình như là một “hộp đen”, trong đó người
kiểm thử không quan tâm đến cấu trúc bên trong của chương trình mà chỉ quan tâm tới dữ liệu
đầu vào và đầu ra sau khi được xử lý.
- Mục đích của chiến lược này là tìm kiếm các trường hợp mà chương trình không thực
hiện theo các đặc tả của nó.
- Ưu, nhược điểm: Kiểm thử hộp đen có ưu điểm là có thể đánh giá phần mềm một cách
khách quan, người kiểm thử có thể không hiểu biết về mã lệnh và có thể tìm ra các lỗi mà
nhân viên phát triển không tìm ra. Song kiểm thử hộp đen lại có nhược điểm là thăm dò mù,
do nhân viên kiểm thử không biết các chương trình thực sự được xây dựng như thế nào, dẫn
đến trường hợp nếu kiểm thử hộp đen phải viết rất nhiều trường hợp kiểm thử trong khi chỉ
cần viết một ca kiểm thử duy nhất để có thể kiểm tra được.
2.5.2. Kiểm thử hộp trắng
- Kỹ thuật kiểm thử hộp trắng hay còn gọi là “kiểm thử cấu trúc” là kỹ thuật kiểm thử
cho phép khảo sát kiến trúc bên trong của chương trình. Kiểm thử hộp trắng là chiến lược
được thực hiện trên ba trong sáu loại kiểm thử cơ bản trong các giai đoạn kiểm thử phần mềm
là: kiểm thử đơn vị, kiểm thử tích hợp và kiểm thử hồi quy. Mục tiêu của kiểm thử hộp trắng
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 11 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Chương 2: Tổng quan về kiểm thử phần mề m
là kiểm thử bao phủ nhiều nhất các câu lệnh, điểm quyết định và các rẽ nhánh trong mã nguồn
nếu có thể.
2.5.3. Kiểm thử hộp xám
Kiểm thử hộp xám là kỹ thuật kiểm thử có sự kết hợp giữa kiểm thử hộp đen và kiểm
thử hộp trắng. Trong đó ta cũng quan tâm đến dữ liệu đầu vào và đầu ra giống như trong kiểm
thử hộp đen, song lại đòi hỏi có sự truy cập đến cấu trúc dữ liệu và giải thuật để thiết kế các
trường hợp kiểm thử.
2.6. Các giai đoạn kiểm thử phần mề m
-
Kiểm thử phần mềm gồm 4 giai đoạn chính:
·
Kiểm thử đơn vị
·
Kiểm thử tích hợp
·
Kiểm thử hệ thống
·
Kiểm thử nghiệm thu
Sơ đồ 2.2: Các giai đoạn kiểm thử phần mềm
2.6.1. Kiểm thử đơn vị
-
Đơn vị: Là thành phần nhỏ nhất của phần mềm có thể kiểm thử được. Ví dụ: Các hàm,
lớp, thủ tục, phương thức. Đơn vị thường có kích thước nhỏ, chức năng hoạt động đơn
giản, không gây nhiều khó khăn trong việc kiểm thử, ghi nhận và phân tích kết quả do đó
nếu phát hiện lỗi việc tìm kiếm nguyên nhân và sửa lỗi cũng đơn giản và tốn ít chi phí
hơn. Một nguyên lý đúc kết từ thực tiễn là thời gian dành cho kiểm thử đơn vị sẽ được đền
bù bằng việc tiết kiệm được khá nhiều thời gian và chi phí cho việc kiểm thử và sửa lỗi ở
các mức độ kiểm thử sau đó.
Mục đích: Đảm bảo thông tin được xử lý đúng và có đầu ra chính xác trong mối tương
quan giữa dữ liệu nhập và chức năng của đơn vị.
Người thực hiện: Do việc kiểm thử đơn vị đòi hỏi phải kiểm tra từng nhánh lệnh, nên đòi
hỏi người kiểm thử có kiến thức về lập trình cũng như về thiết kế của hệ thống nên người
thực hiện thường là lập trình viên.
-
-
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 12 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
2.6.2. Kiểm thử tích hợp
-
-
Chương 2: Tổng quan về kiểm thử phần mề m
Kiểm thử tích hợp là kiểm thử sự kết hợp và giao tiếp giữa các đơn vị của một chương
trình và kiểm thử như một chương trình đã hoàn thành.
Mục đích:
·
Phát hiện lỗi giao tiếp xảy ra giữa các đơn vị cũng như lỗi của bản thân từng đơn vị
(nếu có).
·
Tích hợp các đơn vị đơn lẻ thành các hệ thống nhỏ (subsystem) và cuối cùng là tích
hợp các hệ thống nhỏ thành một hệ thống hoàn chỉnh (system) để chuẩn bị cho kiểm
thử hệ thống.
- Người thực hiện: Thường là lập trình viên.
- Lưu ý:
·
Kiểm thử tích hợp chỉ nên thực hiện trên từng đơn vị đã được kiểm tra cẩn thận trước
đó bằng kiểm thử đơn vị, và tất cả các lỗi mức đơn vị đã được sửa chữa.
·
Nên tích hợp dần từng đơn vị: Một đơn vị nên được tích hợp vào một nhóm các đơn vị
khác đã được tích hợp và hoàn thành kiểm thử tích hợp trước đó vì khi đó chỉ cần
kiếm tra giao tiếp giữa đơn vị mới được thêm vào với nhóm các đơn vị đã được tích
hợp trước đó.
Kiểm thử hệ thống bắt đầu khi tất cả các đơn vị của hệ thống được tích hợp thành công.
Đây là công đoạn kiểm thử tốn nhiều công sức và thời gian hơn cả. Và đặc biệt, công đoạn
này thường đòi hỏi được thực hiện bởi một nhóm nhân viên tách biệt với nhóm phát triển,
có chuyên môn và kinh nghiệm kiểm thử.
Kiểm thử hệ thống gồm nhiều loại kiểm thử khác nhau, trong số đó, các mục tiêu kiểm thử
quan trọng nhất là:
·
Kiểm thử chức năng
·
Kiểm thử hiệu năng
·
Kiểm thử an toàn thông tin
Mục đích: kiểm tra xem hệ thống được làm ra có thỏa mãn yêu cầu hay không về nhiều
khía cạnh: hoạt động, độ tin cậy, hiệu năng của hệ thống.
Người thực hiện: Nhóm nhân viên kiểm thử.
Lưu ý:
·
Việc lập kế hoạch cho kiểm thử hệ thống nên bắt đầu từ giai đoạn bắt đầu dự án.
2.6.3. Kiểm thử hệ thống
-
-
-
-
-
Phần tiếp theo sẽ đi sâu vào phân tích các bước kiểm thử quan trọng nhất, được coi là
không thể bỏ qua khi tiến hành kiểm thử bất cứ hệ thống nào.
2.6.3.1. Kiểm thử chức năng
Việc kiểm thử chức năng chú trọng đến 2 phần chính là kiểm thử giao diện người
dùng (User interface) và kiểm thử luồng nghiệp vụ (Bussiness Flow Testing).
a) Kiểm thử giao diện người sử dụng
Kiểm thử giao diện người sử dụng gọi tắt kiểm thử giao diện là việc kiểm tra các
tương tác của người dùng với phần mềm. Mục tiêu của kiểm thử giao diện là để đảm bảo rằng
giao diện người dùng cung cấp cho người sử dụng cách truy cập và sử dụng các chức năng
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 13 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Chương 2: Tổng quan về kiểm thử phần mề m
của hệ thống một cách thích hợp. Ngoài ra, kiểm thử giao diện còn để đảm bảo rằng các đối
tượng trên giao diện giống như thiết kế và phù hợp với tổ chức hoặc chuyên ngành.
Mục đích
kiểm thử:
-
Kiểm tra:
Việc sử dụng thông qua mục tiêu kiểm thử phản ánh đúng
các chức năng và yêu cầu nghiệp vụ, bao gồm màn hình
đến màn hình, trường đến trường và sử dụng các phương
pháp truy cập (phím tabs, di chuột, tổ hợp phím)
Các đối tượng và thuộc tính màn hình như menus, size,
position, state.
Tạo ra và chỉnh sửa kịch bản kiểm thử cho mỗi màn hình
để kiểm tra việc sử dụng đúng cách và tình trạng các đối
tượng cho mỗi màn hình và đối tượng của ứng dụng
Mỗi màn hình được kiểm tra thành công đúng với phiên
bản kiểm tra hoặc phạm vi chấp nhận được
Không phải toàn bộ các thuộc tính của các đối tượng đều
truy cập được
-
Cách thực
hiện:
Điều kiện
hoàn thành:
Các vấn đề
đặc biệt:
-
-
-
Bảng 2.1 : Kiểm thử giao diện người sử dụng
b) Kiểm thử luồng nghiệp vụ
Mục đích của kiểm thử luồng nghiệp vụ là kiểm tra các yêu cầu chức năng và nghiệp
vụ của hệ thống bao gồm các hoạt động để kiểm tra tính đúng đắn của dữ liệu, qui trình, báo
cáo và việc thực hiện đúng những qui tắc nghiệp vụ. Kiểu kiểm thử này dựa vào kỹ thuật
kiểm thử hộp đen, tức là kiểm tra ứng dụng và các xử lý bên trong ứng dụng bằng cách tương
tác với ứng dụng thông qua giao diện người sử dụng và phân tích các kết quả hoặc đầu ra.
Bảng sau liệt kê một số gợi ý đối với mỗi ứng dụng:
Mục đích
kiểm thử:
-
-
-
-
Cách thực
hiện:
-
-
-
-
-
-
Đảm bảo mục tiêu kiểm thử đúng đắn của chức năng, bao gồm
dữ liệu đầu vào, xử lý dữ liệu và dữ liệu nhận được. Kiểm thử
chức năng đảm bảo các yêu cầu sau:
Nhập dữ liệu hợp lệ thì chương trình phải cho nhập
Luồng nghiệp vụ đúng
Quá trình xử lý dữ liệu và kết quả đầu ra phải đúng
Phục hồi được dữ liệu
Thực hiện các chức năng, sử dụng các dữ liệu hợp lệ và không
hợp lệ để kiểm tra. Cụ thể như sau:
Kết quả mong đợi với dữ liệu hợp lệ.
Lỗi thích hợp hoặc thông báo hiển thị khi dữ liệu không hợp lệ.
Mỗi qui tắc nghiệp vụ đều được áp dụng đúng
Toàn bộ kế hoạch kiểm thử đã được thực hiện.
Toàn bộ các lỗi phát hiện ra đã được ghi nhận.
Xác định hoặc mô tả các vấn đề (nội bộ hoặc bên ngoài) ảnh
hưởng đến việc kiểm thử chức năng
Bảng 2.2 : Kiểm thử luồng nghiệp vụ
Điều kiện
hoàn thành:
Các vấn đề
đặc biệt:
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 14 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
2.6.3.2. Kiểm thử hiệu năng
Chương 2: Tổng quan về kiểm thử phần mề m
Mục đích của kiểm thử hiệu năng là kiểm tra các yêu cầu về hiệu năng có đạt được
hay không.
Mục đích
kiểm thử:
-
-
Cách thực
hiện:
-
-
-
Kiểm tra các biểu hiện về hiệu năng cho các giao dịch hoặc
chức năng nghiệp vụ theo những điều kiện sau:
Khối lượng công việc bình thường đã biết trước
Khối lượng công việc xấu đã biết trước
Sử dụng các thủ tục cho kiểm thử luồng nghiệp vụ
Chỉnh sửa file dữ liệu để tăng số lượng các giao dịch hoặc
scripts để tăng số tương tác xảy ra trong mỗi giao dịch
Scripts phải được chạy trên một máy (trường hợp tốt nhất
để đánh giá người dùng đơn lẻ, giao dịch đơn lẻ) và phải
lặp lại trên nhiều máy trạm.
Giao dịch đơn lẻ hoặc người dùng đơn lẻ: Thực hiện thành
công test script không có lỗi và trong phạm vi mong đợi
hoặc thời gian phản hồi cho mỗi giao dịch
Nhiều giao dịch hoặc nhiều người dùng: Thực hiện
thành công test script không có lỗi và trong thời gian
chấp nhận được
Điều kiện
hoàn thành:
-
-
Các vấn đề
đặc biệt:
Bảng 2.3: Kiểm thử hiệu năng
2.6.3.3. Kiểm thử an toàn thông tin
Kiểm thử an toàn thông tin tập trung vào hai lĩnh vực bảo mật chính:
-
-
Bảo mật ở mức ứng dụng: bao gồm truy cập dữ liệu và các chức năng nghiệp vụ.
Bảo mật ở mức hệ thống: bao gồm truy cập vào hệ thống hoặc truy cập từ xa.
Bảo mật mức ứng dụng đảm bảo rằng, dựa trên bảo mật đã yêu cầu, người dùng bị hạn
chế sử dụng một số chức năng hoặc tình huống sử dụng, hoặc bị hạn chế trong giới hạn dữ
liệu phù hợp với họ. Ví dụ, người dùng có thể được phép nhập dữ liệu để tạo account nhưng
chỉ có người quản lý có thể xóa chúng. Nếu là bảo mật ở mức dữ liệu, việc kiểm thử đảm bảo
rằng “người dùng nhóm 1” có thể nhìn thấy các thông tin khách hàng, bao gồm dữ liệu tài
chính, tuy nhiên “người dùng nhóm 2” chỉ nhìn thấy các thông tin chung chung cho cùng một
khách hàng.
Bảo mật mức hệ thống đảm bảo rằng chỉ những người dùng được cho quyền truy cập
vào hệ thống mới có khả năng truy cập vào ứng dụng và chỉ bằng các cổng thích hợp.
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 15 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Mục đích kiểm thử:
-
Chương 2: Tổng quan về kiểm thử phần mề m
Bảo mật mức ứng dụng: Đảm bảo rằng một người
dùng chỉ có thể truy cập vào những chức năng
hoặc dữ liệu mà nhóm người dùng đó được phép.
Bảo mật mức hệ thống: Đảm bảo rằng chỉ những
người được phép truy cập hệ thống và ứng dụng
được phép truy cập chúng.
Bảo mật ứng dụng: Xác định và liệt kê từng nhóm
người dùng và các chức năng hoặc dữ liệu mà họ
được phép truy cập
Tạo kịch bản kiểm thử cho mỗi nhóm người dùng
và kiểm tra từng quyền bằng cách tạo các giao
dịch xác định cho mỗi nhóm
Sửa lại nhóm người dùng và chạy lại tình huống
kiểm thử cho cùng những người dùng. Với mỗi
trường hợp, kiểm tra các chức năng thêm vào hoặc
dữ liệu có đúng không hay bị từ chối.
Truy cập mức hệ thống: tham khảo các điều kiện
đặc biệt dưới đây
Với mỗi nhóm người dùng đều có các chức năng
hoặc dữ liệu thích hợp, và toàn bộ các chức năng
giao dịch đều như dự kiến và chạy trong các kiểm
thử chức năng ứng dụng trước đó
Truy cập vào hệ thống phải được xem xét hoặc
thảo luận với quản trị hệ thống hoặc quản trị
mạng, có thể không cần nếu nó là chức năng của
quản trị mạng hoặc quản trị hệ thống
-
-
-
Cách thực hiện:
-
-
Điều kiện hoàn thành:
-
Các vấn đề đặc biệt:
-
Bảng 2.4: Kiểm thử an toàn thông tin
Đồ án sẽ trình bày một số lỗi an toàn thông tin quan trọng và thường gặp trong quá
trình kiểm thử và cách kiểm tra các lỗi an toàn thông tin đó:
-
Kiểm tra lỗi SQL Injection
·
Mô tả: Lỗi SQL Injection xảy ra khi các biến do người dùng truyền lên (GET, POST)
được đưa thẳng vào các câu truy vấn cơ sở dữ liệu mà không qua xử lý, khi đó kẻ tấn công có
thể truyền các kí tự đặc biệt mang ngữ nghĩa SQL truyền vào câu truy vấn để thực hiện các
thao tác độc hại như thêm, xóa hay sửa các dữ liệu trên cơ sở dữ liệu và thực hiện các biện
pháp tấn công leo thang khác.
·
Hướng dẫn kiểm tra lỗi: Các lỗi SQL Injection thường xuất hiện tại các chức năng của
ứng dụng có tương tác với cơ sở dữ liệu, trong đó có một số biến được truyền vào ứng dụng
từ trình duyệt. Các biến GET thường tồn tại dưới dạng các ký tự mang ngữ nghĩa SQL, để
kiểm tra lỗi SQL Injection, ta thử bằng cách:
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 16 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Chương 2: Tổng quan về kiểm thử phần mề m
o
Truyền các kí tự đặc biệt mang ngữ nghĩa SQL như ' vào các biến dạng số trên URL
hoặc chuỗi tổ hợp các ký tự đặc biệt vào các form. Nếu ứng dụng xuất lỗi 500, hoặc trên trình
duyệt in ra câu truy vấn SQL lỗi hay đăng nhập thành công, khi đó có thể xác định ứng dụng
đã bị mắc lỗi SQL Injection.
·
Ví dụ: Truyền vào form đăng nhập chuỗi ký tự đặc biệt: test' or '1'='1
Hình 2.1: Kiểm tra lỗi SQL Injection
Nếu hệ thống cho phép đăng nhập thành công thì hệ thống đã bị lỗi SQL Injection:
Hình 2.2: Lỗi SQL Injection
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 17 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
-
Kiểm tra lỗi XSS
·
Mô tả:
Chương 2: Tổng quan về kiểm thử phần mề m
o
Lỗi XSS trên ứng dụng là lỗi mà kẻ tấn công có thể truyền các biến độc hại vào ứng
dụng để tấn công người dùng.
o
Lỗ hổng XSS thường xuất hiện ở các chức năng cho phép người dùng nhập dữ liệu
vào hệ thống, sau đó các dữ liệu này được lưu vào cơ sở dữ liệu hoặc đưa ra hiển thị trực tiếp
mà không qua xử lý, khi đó kẻ tấn công có thể truyền vào các kí tự HTML hoặc Javascript.
Khi người dùng khác truy cập vào các trang có hiển thị các dữ liệu này (có thể do chủ động
hoặc bị dẫn dụ) thì các script sẽ được thực thi, kẻ tấn công có thể chiếm đoạt phiên của người
dùng hợp lệ.
·
Cách kiểm tra: Nhập vào chuỗi kí tự <script>alert(“XSS”)</script> vào các form hay
trên URL, nếu ứng dụng lưu lại và cho phép thực thi script thì trên trình duyệt sẽ xuất hiện
cửa sổ có dòng chữ “XSS”, khi đó ứng dụng bị mắc lỗi XSS.
·
Ví dụ 1: Truyền ký chuỗi ký tự <script>alert(“XSS”)</script> vào biến user của
trang
http://192.168.174.96:9999/index.php?user=<script>alert(“XSS”)</script>
Ứng dụng sẽ trả về lỗi như hình dưới, như vậy ứng dụng đã bị lỗi XSS
Hình 2.3: Lỗi XSS_1
·
Ví dụ 2: Nhập chuỗi ký tự <script>alert(“XSS”)</script> vào form:
Hình 2.4: Kiểm tra Lỗi XSS_2
Ứng dụng trả về như hình:
Hình 2.5: Lỗi XSS_2
Kiểm tra lỗ hổng CSRF (Cross-site request forgery)
·
Mô tả: Khi gặp lỗi này kẻ tấn công có thể thực hiện mượn tay của người có quyền
trên hệ thống thực thi tác vụ mà kẻ tấn công mong muốn mà không người thực hiện không hề
-
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 18 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Chương 2: Tổng quan về kiểm thử phần mề m
biết.
·
Hướng dẫn kiểm tra lỗi: Để kiểm tra lỗi này ta thực hiện như sau:
o
Sử dụng một user
o
Trên trình quyệt, mở hai TAB để đăng nhập vào ứng dụng
o
Đăng nhập theo thứ tự: đăng nhập vào ứng dụng trên TAB1 rồi TAB2
o
Quay về TAB1 thực hiện các tác vụ cần thiết như thêm, xóa, sửa.
o
Sang TAB2 mô phỏng tác vụ giống hệt bên TAB1 nếu vẫn thực hiện được thì ứng
dụng bị lỗi CSRF.
o
Ngoài ra, sử dụng thêm FireBug (Add-ons của Firefox) kiểm tra ứng dụng có dùng
biến token hay không.
Hình 2.6: Kiểm tra lỗ hổng CFRS_1
Sau khi Save hoặc Delete, kiển tra ứng dụng có sử dụng biến token hay không?
Hình 2.7: Kiểm tra lỗ hổng CFRS_2
Hình 2.8: Kiểm tra lỗ hổng CFRS_3
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 19 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
-
Kiểm tra lỗi Path Trave rsal
Chương 2: Tổng quan về kiểm thử phần mề m
·
Mô tả: Lỗi Path Traversal xảy ra khi các biến do người dùng truyền lên (GET,
POST) được đưa thẳng vào các hàm mở file, do nload file mà không qua xử lý. Khi đó, kẻ
tấn công có thể truyền vào các kí tự đặc biệt như ../, ..\ để nhảy thư mục, hoặc truyền vào
đường dẫn tuyệt đối của 1 file như /etc/pass d, từ đó có thể truy cập các thông tin nhạy cảm
của ứng dụng và hệ điều hành và tấn công leo thang để chiếm quyền điều khiển ứng dụng và
hệ điều hành.
·
Hướng dẫn kiểm tra lỗi:
o
Lỗi Path Traversal thường xuất hiện ở các chức năng cho phép xem file trên máy chủ
hay chức năng do nload file, nếu các biến GET, POST có kiểu giá trị như tên file, tên thư
mục thì nhiều khả năng chức năng này bị mắc lỗi Path Traversal.
o
Có thể kiểm tra bằng cách truyền vào chuỗi kí tự /, \ hoặc đường dẫn tuyệt đối của 1
file thuộc hệ điều hành như /etc/pass d, và theo dõi hồi đáp từ phía server, trong trường hợp
tấn công thành công có thể lấy được nội dung file.
o
Ví dụ minh họa
http://some_site.com.br/get- files?file=../../../../some dir/some file
Hoặc
http://some_site.com.br/../../../../etc/shadow
http://some_site.com.br/get- files?file=/etc/passwd
Hình 2.9: Kiểm tra lỗi Path Traversal_1
Trong ứng dụng trên, chức năng get-files sử dụng 1 biến GET có dạng đường dẫn đến file,
ta có thể thử bằng cách truyền vào các giá trị đường dẫn đến các file của hệ điều hành và ứng
dụng, nếu có thể get được các file đó thì ứng dụng bị mắc lỗi Path Traversal.
·
Ví dụ:
Hình 2.10: Kiểm tra lỗi Path Traversal_2
·
Kẻ tấn công lấy file omcat- users.xml để có thông tin về user/pass của tomcat.
http://192.168.174.96:9999/RDWF_3/download!actionDownload.do?filename=/../../../
../conf/tomcat-users.xml
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 20 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Chương 2: Tổng quan về kiểm thử phần mề m
Hình 2.11: Kiểm tra lỗi Path Traversal_3
Thông tin user/pass tomcat
Hình 2.12: Kiểm tra lỗi Path Traversal_4
-
Kiểm tra lỗi xác thực/phân quyền
·
Mô tả: Trong ứng dụng, đôi khi việc thực hiện xác thực và phân quyền không đầy
đủ, có khi chỉ dựa trên việc che dấu các link hay không hiển thị các nút chức năng đối với
người dùng thông thường. Tuy nhiên, nếu người dùng thông thường biết được các link, nút đó
thì có thể tạo các request trực tiếp tới server mà không cần click vào link, nút, để thực hiện
thao tác. Khi đó, cơ chế xác thực/phân quyền của ứng dụng hoàn toàn bị phá vỡ.
·
Hướng dẫn kiểm tra lỗi: Để kiểm tra lỗi này có thể sử dụng hai account, trong đó có
một account có quyền thấp và một account có quyền cao hơn. Khi sử dụng account có quyền
cao truy cập vào các chức năng dành riêng ta ghi lại các đường dẫn trên URL, sau đó đăng
nhập vào bằng account quyền thấp và thử truy cập vào link đó. Nếu ứng dụng cho phép
account truy cập thì cơ chế xác thực phân quyền của ứng dụng không có tác dụng.
·
Ví dụ:
Hình 2.13: Kiểm tra lỗi xác thực phân quyền
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 21 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Chương 2: Tổng quan về kiểm thử phần mề m
Trong ví dụ trên, ta dùng account viettel_cp1 để truy cập vào chức năng thống kê
doanh thu của dịch vụ. Thông thường, khi truy cập vào account Admin trên bảng điều khiển
có 1 nút “Thống kê” để thống kê doanh thu, còn khi truy cập bằng account viettel_cp1 thì
không có nút này. Tuy nhiên, nhìn trên thanh URL ta có thể thấy đường dẫn để truy cập vào
chức năng này, ta sao chép lại, sau đó đăng nhập bằng account viettel_cp và thử truy cập thì
thấy thành công. Từ đó có thể kết luận chức năng xác thực, phân quyền của ứng dụng không
có tác dụng.
-
Kiểm tra lỗi User enumeration
Đăng nhập vào ứng dụng (cố tình nhập tên đăng nhập hoặc mật khẩu sai). Nếu ứng
dụng trả về câu thông báo cụ thể là “sai mật khẩu” hoặc “sai tên đăng nhập” thì ứng dụng mắc
lỗi. Còn nếu trả về câu thông báo chung ví dụ “Tên đăng nhập hoặc mật khẩu không đúng” thì
không bắt lỗi.
-
Kiểm tra lỗi Session fixation
·
Mô tả: Lỗi này xảy ra khi session- id trước và sau khi đăng nhập vào ứng dụng không
thay đổi. Kẻ tấn công có thể lợi dụng lỗ hổng này để đăng nhập mà không cần user/pass.
·
Hướng dẫn kiểm tra lỗi:
o
Cài và bật Add-ons FireBug cho trình duyệt Firefox
o
Đăng nhập vào ứng dụng, và kiểm tra Cookie trước và sau khi đăngnhập
o
So sánh Cookie trước và sau đăng nhập. Nếu giống nhau thì bị lỗi.
o
Ví dụ:
Hình 2.14: Kiểm tra lỗi Session fixation
-
Lỗi HTTP Only Cookie
·
Cài và chạy Add-ons Firecookie và FireBug cho FireFox
·
·
Đăng nhập vào ứng dụng đồng thời kiểm tra HTTP Only trong FireBug.
Ví dụ:
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 22 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Chương 2: Tổng quan về kiểm thử phần mề m
Hình 2.15: Lỗi HTTP Only Cookie
-
Kiểm tra lỗi lỗ hổng cho phép dò đoán mật khẩu để thu thập danh sách, thông tin
người dùng
·
Mô tả: 1 số ứng dụng không có cơ chế bảo vệ đăng nhập như đăng nhập sai quá số
lần quy định cần yêu cầu người dùng nhập các kí tự từ 1 bức ảnh (captcha), hoặc tạm thời
khóa account trong 1 khoảng thời gian nhất định. Khi đó, kẻ tấn công có thể tiến hành tấn
công bằng cách thử các mật khẩu có trong 1 từ điển (tấn công dạng từ điển), hoặc thử tất cả
các khả năng của mật khẩu (bruteforce), với các mật khẩu đơn giản có thể dễ dàng bị tìm ra.
Ngoài ra, với các ứng dụng có cung cấp các tính năng tìm kiếm, tra cứu thông tin người dùng
mà không có biện pháp kiểm soát thì kẻ tấn công có thể sử dụng các script để tự động hóa quá
trình truy vấn và thu thập được thông tin của người dùng hoặc ứng dụng.
·
Hướng dẫn kiểm tra lỗi: Các ứng dụng không có cơ chế bảo vệ sử dụng captcha, lock
account khi đăng nhập sai quá số lần quy định đều bị mắc lỗi này.
2.6.4. Kiểm thử chấp nhận
-
Mục đích: Kiểm thử chấp nhận còn gọi là kiểm thử nghiệm thu nhằm mục đích chứng
minh phần mềm thỏa mãn tất cả yêu cầu của khách hàng và khách hàng đã chấp nhận sản
phẩm.
Người thực hiện: Khách hàng.
Có 2 phương pháp kiểm thử chấp nhận: Kiểm thử alpha và kiểm thử bêta.
Người dùng kiểm thử phần mềm ngay tại nơi phát triển phần mềm dưới sự hỗ trợ của
nhân viên kiểm thử, nhân viên kiểm thử sẽ ghi nhận các lỗi hoặc phản hồi của khách hàng
và báo lại với đơn vị phát triển phần mềm để lên kế hoạch sửa chữa.
-
-
-
2.6.4.1. Kiểm thử alpha
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 23 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
2.6.4.2. Kiểm thử Bêta
-
Chương 2: Tổng quan về kiểm thử phần mề m
Phần mềm sẽ được gửi tới cho người dùng để kiểm thử trong môi trường thực, lỗi hoặc
phản hồi cũng sẽ gửi lại cho đơn vị phát triển phần mềm để lên kế hoạch sửa chữa.
2.6.5. Kiểm thử hồi qui
Kiểm thử hồi qui là một hoạt động cấn thiết để chỉ ra rằng việc thay đổi mã nguồn
không gây ra những ảnh hưởng bất lợi đến hệ thống nói chung.
Mục đích kiểm thử:
-
Kiểm thử hồi qui dùng để kiểm tra các phần được sửa
chữa và các phần liên quan đến các phần sửa chữa
trong phần mềm, để đảm bảo rằng những sự thay đổi
đó không gây ra lỗi trong những phần khác
Tái sử dụng các kịch bản kiểm thử từ những phần
kiểm thử trước để kiểm thử các mô-đun đã được sửa
chữa.
Sử dụng công cụ kiểm thử tự động: Tạo một số test
script về chức năng.
Xây dựng một chương trình phân tích sơ sở hạ tầng.
Chúng ta dựng một cơ sở hạ tầng có thể mở rộng được
để thực hiện và đánh giá chương trình phân tích. Dựa
vào kết quả phân tích chúng ta xác định phạm vi cần
kiểm thử hồi qui.
Toàn bộ các trường hợp kiểm thử đã chọn được thực
hiện và đạt yêu cầu.
Bảng 2.5: Kiểm thử hồi qui
2.7. Kiểm thử tự động
2.7.1. Kiểm thử tự động là gì? Qui trình kiểm thử tự động
-
-
Kiểm thử tự động là quá trình xử lý một cách tự động các bước thực hiện các test case.
Kiểm thử tự động bằng một công cụ nhằm rút ngắn thời gian kiểm thử.
Qui trình kiểm thử tự động gồm 4 bước:
·
·
·
·
Bước 1: Viết kịch bản kiểm thử, dùng công cụ kiểm thử để ghi lại các thao tác lên
phần mềm cần kiểm tra và tự động sinh ra test script.
Bước 2: Chỉnh sửa để kịch bản kiểm thử thực hiện kiểm tra theo đúng yêu cầu đặt ra,
làm theo trường hợp kiểm thử cần thực hiện.
Bước 3: Chạy kịch bản kiểm thử, giám sát hoạt động kiểm tra phần mềm của kịch bản
kiểm thử.
Bước 4: Kiểm tra kết quả thông báo sau khi thực hiện kiểm thử tự động. Sau đó bổ
sung, chỉnh sửa những sai sót.
Cách thực hiện:
-
-
-
Điều kiện hoàn
thành:
-
2.7.2. Ưu điểm và nhược điể m của kiểm thử tự động
-
Các ưu điểm có thể kể đến của kiểm thử tự động là:
·
Kiểm thử chính xác và có thể bao quát thông tin
Trang - 24 -
SVTH: Nguyễn Huyền Trang – D08CNPM2
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
·
·
Chương 2: Tổng quan về kiểm thử phần mề m
Theo dõi được chính xác kết quả từng giai đoạn và các báo cáo tổng hợp
Cần ít nhân lực trong quá trình kiểm thử
-
·
Chu kỳ kiểm thử diễn ra trong thời gian ngắn
·
Hiệu năng của kiểm thử các lớp vượt xa tầm với của kiểm thử thủ công
Tuy nhiên không thể không kể đến các nhược điểm của kiểm thử tự động:
·
Chi phí cao cho việc chuyển giao công nghệ và đào tạo nhân viên
·
Tốn chi phí đầu tư lớn cho việc phát triển công cụ kiểm thử tự động
·
·
·
Tốn chi phí và thời gian cho việc tạo các kịch bản kiểm thử và bảo trì các kịch bản
kiểm thử
Giai đoạn chuẩn bị kiểm thử yêu cầu nhiều nhân lực
Khu vực kiểm thử tự động có thể không bao quát đầy đủ, không áp dụng được trong
việc tìm lỗi mới của phần mềm.
2.7.3. Các trường hợp nên áp dụng kiể m thử tự động
Không phải lúc nào cũng nên áp dụng kiểm thử tự động trong việc kiểm thử phần
mềm, vì nhiều khi chi phí và thời gian cho việc kiểm thử tự động còn lớn hơn nhiều so với
kiểm thử thủ công. Dưới đây là một số trường hợp nên áp dụng phương pháp kiểm thử tự
động để đạt được hiệu quả cao về thời gian, chi phí cũng như chất lượng.
-
Trường hợp không đủ tài nguyên:
Là khi số lượng trường hợp kiểm thử lặp lại quá
nhiều trên nhiều môi trường kiểm thử khác nhau, không có đủ nguồn nhân lực để kiểm
thử thủ công trong một giới hạn thời gian nào đó.
Trường hợp kiể m thử hồi qui:
Trong quá trình phát triển phần mềm, nhóm lập trình
thường đưa ra nhiều phiên bản phần mềm liên tiếp để kiểm thử. Thực tế cho thấy việc đưa
ra các phiên bản phần mềm có thể là hàng ngày, mỗi phiên bản bao gồm những tính năng
mới, hoặc tính năng cũ được sửa lỗi hay nâng cấp. Việc bổ sung hoặc sửa lỗi mã chương
trình cho những tính năng ở phiên bản mới có thể làm cho những tính năng khác đã kiểm
tra tốt chạy sai mặc dù phần mã chương trình của nó không hề chỉnh sửa. Để khắc phục
điều này, đối với từng phiên bản, kiểm thử viên không chỉ kiểm tra chức năng mới hoặc
được sửa, mà phải kiểm tra lại tất cả những tính năng đã kiểm tra tốt trước đó. Điều này
khó khả thi về mặt thời gian nếu kiểm thử thủ công.
Trường hợp kiểm thử khả năng vận hành phần mề m trong môi trường đặc biệt:
Đây
là kiểm thử nhằm đánh giá xem vận hành của phần mềm có thỏa mãn yêu cầu đặt ra hay
không. Thông qua đó kiểm thử viên có thể xác định được các yếu tố về phần cứng, phần
mềm ảnh hưởng đến khả năng vận hành của hệ thống. Có thể liệt kê một số tình huống kiểm
tra tiêu biểu thuộc loại này như sau:
·
·
·
Đo tốc độ trung bình xử lý một yêu cầu của eb server.
Thiết lập 1000 yêu cầu, đồng thời gửi đến
người dùng truy xuất eb cùng lúc.
eb server để kiểm tra tình huống 1000
-
-
Xác định số yêu cầu tối đa được xử lý bởi eb server hoặc xác định cấu hình máy thấp
nhất mà tốc độ xử lý của phần mềm vẫn có thể hoạt động ở mức cho phép.
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 25 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
2.8. Tổng kết chương 2
Chương 2: Tổng quan về kiểm thử phần mề m
Chương 2 của đồ án đã trình bày được các vấn đề cơ bản về kiểm thử phần mềm. Các
vấn đề chính được trình bày bao gồm:
-
-
-
-
-
-
-
Một số định nghĩa của kiểm thử phần mềm
Mục tiêu của kiểm thử phần mềm
Các nguyên tắc cơ bản của kiểm thử phần mềm
Các bước cơ bản của một qui trình kiểm thử phần mềm
Các kỹ thuật kiểm thử phần mềm cơ bản
Các giai đoạn thực hiện kiểm thử phần mềm
Giới thiệu sơ lược về kiểm thử tự động
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 26 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Chương 3: Công cụ kiểm thử tự động Selenium
CHƯƠNG 3: CÔNG CỤ KIỂM THỬ TỰ ĐỘNG SELENIUM
3.1. Tổng quan về Selenium
3.1.1. Selenium là gì?
Selenium (thường được viết tắt là SE) là một phần mềm mã nguồn mở, được phát triển
bởi Jason Huggins, sau đó được tiếp tục phát triển bởi nhóm ThoughtWorks vào năm 2004.
Selenium là một bộ các công cụ hỗ trợ kiểm thử tự động các tính năng của ứng dụng
web, bao gồm 4 phần: Selenium IDE, Selenium Remote Control (RC), Selenium Core và
Selenium Grid.
Selenium hỗ trợ kiểm thử trên hầu hết các trình duyệt web phổ biến hiện nay như
Firefox, Internet Explorer, Googlechrome và hỗ trợ trên rất nhiều ngôn ngữ lập trình phổ biến
như C#, Java, Python, PHP. Không những vậy, Selenium còn có thể kết hợp với một số công
cụ kiểm thử khác như Junit, Bromien, Nunit.
3.1.2. Các thành phần của Selenium
Selenium gồm 4 thành phần chính, mỗi thành phần đều đóng một vai trò cụ thể trong
việc hỗ trợ kiểm thử các ứng dụng Web. Các thành phần đó là:
-
Selenium IDE:
là môi trường phát triển tích hợp cho việc xây dựng trường hợp kiểm thử
Selenium. Nó hoạt động như một add-on của Firefox và cung cấp một giao diện dễ sử
dụng để phát triển và chạy trường hợp kiểm thử. Selenium- IDE có tính năng thu lại kịch
bản kiểm thử để tái sử dụng. Nó cũng có một menu ngữ cảnh tích hợp với trình duyệt
Firefox, cho phép người dùng chọn từ một danh sách xác minh (verify) và khẳng định
(assert) cho các yếu tố giao diện đã chọn. Selenium- IDE cũng cung cấp các chức năng
chỉnh sửa các trường hợp kiểm thử chính xác và dễ kiểm soát hơn.
Mặc dù Selenium-IDE chỉ là một Firefox add-on, nhưng các test case tạo ra bằng
Selenium-IDE vẫn có thể chạy trên các trình duyệt khác bằng cách sử dụng Selenium- RC.
-
Selenium Core:
Công cụ này đã được tích hợp trong Selenium IDE. Selenium Core là
một công cụ chạy các test script viết bằng Selenese. Thế mạnh của công cụ này là có thể
chạy test script trên hần hết các trình duyệt, nhưng lại yêu cầu được cài đặt trên máy chủ
của ứng dụng web cần kiểm tra. Điều này là không thể khi nhân viên kiểm thử không có
quyền truy cập đến máy chủ.
-
Selenium RC
(Remote Control): Selenium- RC cho phép các nhà phát triển tự động hóa
kiểm thử sử dụng một ngôn ngữ lập trình cho tính linh hoạt tối đa và mở rộng trong việc
phát triển logic thử nghiệm. Ví dụ, nếu trình ứng dụng trả về một tập kết quả của việc
kiểm thử, và nếu chương trình thử nghiệm tự động cần chạy thử nghiệm trên mỗi phần tử
trong tập hợp kết quả, hỗ trợ lặp đi lặp lại các ngôn ngữ lập trình có thể được sử dụng để
chuyển đổi thông qua việc tập hợp kết quả, kêu gọi lệnh Selenium chạy thử nghiệm trên
mỗi mục.
Selenium-RC cung cấp một API (Application Programming Interface) và thư viện cho
mỗi ngôn ngữ được hỗ trợ: HTML, Java, C #, Perl, PHP, Python, và Ruby. Khả năng sử
dụng Selenium- RC với một ngôn ngữ lập trình bậc cao để phát triển các trường hợp thử
nghiệm cũng cho phép thử nghiệm tự động được tích hợp với một dự án xây dựng môi
trường tự động.
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 27 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
-
Chương 3: Công cụ kiểm thử tự động Selenium
Selenium Grid:
Thực hiện phương pháp kiểm tra phân bố, phối hợp nhiều kết quả của
Selenium RC để có thể thực thi trên nhiều trình duyệt web khác nhau trong cùng một lúc.
Cũng cho phép lưu lại kết quả kiểm tra.
Đồ án trình bày cụ thể về hai thành phần của bộ công cụ Selenium là Selenium IDE và
Selenium RC. Các hướng dẫn cụ thể về Selenium IDE và Selenium RC sẽ được trình bày
chi tiết ở phần sau của đồ án.
3.2. Selenium IDE
Selenium IDE là một add-on của Mozilla Firefox phiên bản 2.0 trở lên, ban đầu được
phát triển bởi Shinya Kasatani theo hướng sử dụng Selenium Core mà không cần cài đặt
Selenium vào máy chủ ứng dụng. Nó được xây dựng sử dụng JavaScript do vậy mà nó có thể
tương tác với DOM (Document Object Model), sử dụng được những cách gọi JavaScript.
Selenium cho phép ghi lại những hành động trong luồng công việc cần kiểm tra bằng
các chức năng Record và Playback.
Selenium IDE cũng chứa một menu ngữ cảnh cho phép lựa chọn yếu tố giao diện người
dùng từ các trình duyệt đang hiển thị trang và sau đó chọn từ một danh sách các lệnh Selenium và
các thông số được xác định theo ngữ cảnh của phần giao diện người dùng lựa chọn.
3.2.1. Cài đặt Selenium IDE
-
-
Bước 1: Vào trang http://seleniumhq.org/download để download Selenium IDE
Bước 2: Click vào link download cho Selenium IDE. Bạn sẽ nhận được tin nhắn " Firefox
prevented this site (seleniumhq.org) from asking you to install software on your
computer" (Firefox đã chặn phần mềm từ trang web (seleniumhq.org), bạn có chắc chắn
muốn cài đặt trên máy tính của bạn không). Nếu thực hiện, click nút Allow.
Bước 3: Một pop up xuất hiện như hình:
-
Hình 3.1: Pop up cài đặt Selenium
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 28 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
-
Chương 3: Công cụ kiểm thử tự động Selenium
-
-
Bước 4: Firefox thực hiện đếm ngược, nút Cài đặt chuyển sang trạng thái active, có thế
click được. Selenium sẽ bắt đầu được cài đặt trong máy tính giống như 1 add-on của
firefox.
Bước 5: Tiến trình cài đặt hoàn thành, hệ thống hỏi bạn có muốn khởi động lại firefox
không. Click vào nút Restart. Firefox sẽ đóng và mở lại.
Bước 6: Kiểm tra lại phần add-on của firefox xem đã có Selenium chưa. Hiển thị như hình
thì việc cài Selenium đã thành công.
Hình 3.2: Kiểm tra cài đặt Selenium thành công
3.2.2. Các icon của Selenium IDE
Phần này giải thích một số ký hiệu và thành phần của Selenium IDE.
Hình 3.3: Các icon của Selenium IDE
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 29 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Giải thích một số ký hiệu:
-
-
Chương 3: Công cụ kiểm thử tự động Selenium
Base URL: Đây là nơi điền URL của ứng dụng eb được tiến hành kiểm thử.
Thanh trượt: Đây là thanh trượt nằm dưới nhãn trên màn hình. Dùng để
điều chỉnh tốc độ nhanh/chậm khi chạy test case.
Nút
Nút
Nút
Nút
: Chạy tất cả các test case.
: Chỉ chạy test case được chọn.
: Tạm dừng một test case đang chạy
: Bỏ qua một test case khi nó đã bị tạm dừng
-
-
-
-
-
-
-
-
Nút : Nút thu được sử dụng để thu các test case qua những thao tác bạn tác động đến
trang web cần kiểm thử.
Textbox Command: Dòng lệnh
Text box Target: Kết quả mong đợi của dòng lệnh
Text box Value: Giá trị đầu vào của dòng lệnh
Bảng Selenium sẽ lưu lại các lệnh, kết quả mong đợi và giá trị đầu vào của các lệnh.
Nếu click vào tab Source, ta có thể thấy Selenium IDE lưu trữ các test case có dạng HTML:
<tr>
<td>open</td>
<td>/chapter1</td>
<td></td>
</tr>
Hình 3.4: Test case Selenium IDE
-
-
Khu vực phía dưới textbox Value sẽ hiển thị các log của Selenium trong khi các test case
chạy. Nếu có một test case bị thất bại Selenium IDE sẽ log một lỗi.
Log: Hiển thị thông báo lỗi và các bước được thực thi trong quá trình chạy một test case
tự động. Ngay cả khi ta không chọn tab log, các thông tin này vẫn hiển thị. Các thông tin
này giúp ích cho nhân viên kiểm thử cũng như nhân viên lập trình trong quá trình tìm ra
nguyên nhân lỗi đã phát hiện trong test case (nếu có).
Reference: Thẻ tham chiếu
UI-Element và Rollup: Tính năng nâng cao của Selenium IDE
Lưu ý:
·
Các test case luôn luôn có điểm bắt đầu. Trong ngữ cảnh của Selenium, điều này có
nghĩa là mở một trang nào đó để bắt đầu luồng công việc.
·
Các test case có thể không cần dựa trên những test case khác để chạy.
·
Một test case chỉ nên dùng để kiểm thử một chức năng nhỏ xác định trong một thời
gian xác định.
-
-
-
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 30 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Chương 3: Công cụ kiểm thử tự động Selenium
3.2.3. Các thao tác thực hiện kiểm thử tự động với Selenium
3.2.3.1. Recording_Thực hiện thu một kịch bản với Selenium IDE
Các bước để bắt đầu thu lại test case:
-
Bước 1:
Vào Firefox/công cụ/chọn Selenium IDE hoặc nhấn tổ hợp phím Ctrl+Alt+s
Hình 3.5: Thực hiện thu các trường hợp kiểm thử_1
-
Bước 2:
Thay đổi mục Based URL thành URL của ứng dụng cần kiểm thử. Lấy ví dụ ứng
dụng web cần kiểm thử có url là: https://mail.viettel.com.vn/
·
Nút thu mặc định ở trạng thái "now recording, click to stop recording".
Hình 3.6: Thực hiện thu các trường hợp kiểm thử_2
-
Bước 3:
Tiến hành các thao tác cần kiểm thử trên link
·
Ví dụ: Ta thực hiện kiểm thử tự động trường hợp đăng nhập vào trang web thành công
với username/password hợp lệ.
Trang - 31 -
SVTH: Nguyễn Huyền Trang – D08CNPM2
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
·
Chương 3: Công cụ kiểm thử tự động Selenium
-
-
-
Trong quá trình thu, Selenium IDE sẽ tự động chèn thêm các lệnh vào test case dựa
trên hành động của người thực hiện. Các command được tự động thêm phổ biến:
o
Click a link-
click
or
clickAndWait
commands
o
Nhập các giá trị- type command
o
Chọn các giá trị từ một select box - select command
o
Click vào các checkboxe hoặc các radio button - click command
Bước 4:
Click vào nút thu. Nút thu ở trạng thái "Click to record".
Bước 5:
Save as test case
Một số lưu ý:
Sau một liên kết thường ghi lại một lệnh nhấp chuột, phải thay đổi tốc độ
chạy của test case để đảm bảo test case tạm dừng cho đến khi trang mới được tải xong.
Nếu không, test case sẽ tiếp tục chạy trước khi các trang đã được nạp tất cả các yếu tố của
nó. Điều này sẽ gây ra test case bị thất bại.
3.2.3.2. Thêm các lệnh khẳng định và xác nhận với menu ngữ cảnh
Các trường hợp kiểm kiểm thử các thuộc tính của một trang web sẽ đòi hỏi các lệnh
xác minh (verify) và khẳng định (assert) các yếu tố trên giao diện. Phần dưới đây sẽ trình bày
cách thêm các lệnh này vào test case của chúng ta.
Khi thu một test case với Selenium IDE, vào trình duyệt hiển thị website ta muốn thực
hiện kiểm thử, trỏ truột phải vào bất cứ vị trí nào trên trang, ta sẽ thấy các lệnh xác minh và
khẳng định như hình dưới. Để sử dụng các lệnh này ta chỉ việc chọn lệnh xác minh hoặc
khẳng định mong muốn. Các lệnh này sẽ tự động hiển thị trong test case. Selenium sẽ dự đoán
các lệnh, các thông số cần có trên giao diện để bổ xung các lệnh xác minh. Khi chọn thông
báo Show All Avaiable Commands, sẽ có nhiều lệnh xác minh được gợi ý hơn.
Hình 3.7: Lệnh xác minh (verify) một yếu tố trên trang web
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 32 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
3.2.3.3. Các thao tác chỉnh sửa
-
Chương 3: Công cụ kiểm thử tự động Selenium
-
-
Chèn lệnh:
·
Chèn vào bảng: Trong ô test case, click chuột trái tại vị trí muốn chèn lệnh. Chuột phải và
chọn Insert command. Selenium IDE sẽ thêm một dòng trắng phía trước dòng được chọn.
Nhập lệnh vào ô command, kết quả mong muốn vào ô target, giá trị đầu vào vào ô value.
·
Chèn vào mã nguồn: Chọn vị trí trong test case mà bạn muốn chèn lệnh. Trong ô test
case, chuột trái vào vị trí muốn chèn lệnh. Vào tag HTML, cần tạo 3 dòng chứa lệnh
bao gồm tham số đầu tiên (nếu lệnh yêu cầu có tham số), tham số thứ hai (nếu có).
Lưu test case trước khi chọn lại table view.
Chèn comme nt:
Các comment có thể được thêm vào cho test case dễ hiểu hơn. Những
comment được bỏ qua khi chạy test case. Comment có thể được sử dụng để thêm vào các
khoảng trống dọc (một hoặc nhiều dòng trắng) vào các test case của chúng ta, khi chúng ta
tạo ra các comment trắng. Một lệnh trắng sẽ tạo ra 1 lỗi khi thực thi còn một comment
trắng thì không tạo ra lỗi khi thực thi.
·
Chèn vào bảng: Chọn vị trí trong test case muốn comment. Click chuột phải và chọn
Insert Comment. Sử dụng trường Command để nhập comment.
·
Chèn vào mã nguồn: Chọn vị trí trong test case muốn chèn comment. Thêm một
comment có dạng HTML. Ví dụ: <!-- Enter your comment here -->
Chỉnh sửa comment hay lệnh:
·
Chỉnh sửa qua giao diện: Chọn dòng cần chỉnh sửa và chỉnh sửa nó bằng các trường
Command, Target, và Value.
·
Chỉnh sửa qua mã nguồn: Vào mã nguồn, chỉnh sửa trực tiếp vào dòng comment hay
lệnh muốn chỉnh sửa.
Chọn tập tin/ Open hoặc Save. Tuy nhiên Selenium có sự khác biệt giữa các test case và
test suite. Để lưu lại các bước kiểm thử trên Selenium- IDE sau khi sử dụng, bạn có thể lưu
lại một test case riêng lẻ, hay lưu nhiều test case dưới dạng một test suite. Nếu các test
case của test suite không được lưu. Chương trình sẽ nhắc nhở ta lưu chúng trước khi lưu
một test suite. Khi mở một test case hoặc một test suite đã có, Selenium-IDE hiển thị các
câu lệnh trong ô test case.
3.2.3.4. Mở và lưu lại một test case
-
3.2.3.5. Chạy các test case
Selenium IDE có nhiều lựa chọn để chạy test case. Bạn có thể chạy một test case,
dừng và chạy tiếp, chạy một dòng lệnh riêng lẻ, hay chạy một test suite.
-
-
-
Chạy một test case: Chọn một test case sau đó click vào nút Run để chạy một test case.
Stop and Start: Nút Pause được dùng để tạm dừng một test case khi nó đang chạy. Để tiếp
tục chạy test case bị tạm dừng, click nút Resume.
Tạm dừng ở giữa: Bạn có thể chọn một điểm ở giữa test case để tạm dừng nó tại một câu
lệnh đặc biệt. Điều này có ích trong việc gỡ lỗi trong test case. Để chọn một điểm dừng
cho test case, chọn câu lệnh, chuột phải, chọn Set/Clear Start Point.
Bắt đầu từ giữa: Chúng ta cũng có thể bắt đầu chạy một test case từ một điểm xác định ở
giữa test case, thao tác này cũng được sử dụng trong gỡ lỗi. Để gán điểm bắt đầu, ta chọn
câu lệnh làm điểm bắt đầu, chuột phải, chọn Set/Clear Start Point.
Trang - 33 -
-
SVTH: Nguyễn Huyền Trang – D08CNPM2
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
-
Chương 3: Công cụ kiểm thử tự động Selenium
Chạy một câu lệnh đơn lẻ bất kỳ: Double-Click câu lệnh muốn chạy. Việc này có ích khi
viết một câu lệnh đơn lẻ.
3.2.4. Selenese
Tập lệnh Selenium gọi là Selenese là một tập các lệnh để chạy kịch bản kiểm thử. Một
chuỗi các lệnh được gọi là một kịch bản kiểm thử. Phần dưới của đồ án sẽ trình bày chi tiết
các lệnh thường được sử dụng trong Selenium.
Selenium cung cấp một tập đầy đủ các lệnh để kiểm thử các ứng dụng web. Trong
selenese có thể kiểm thử tình trạng của các yếu tố giao diện người dùng dựa trên các thẻ
HTML, kiểm thử nội dung xác định, kiểm thử các link hỏng, lỗi, các trường đầu vào, lựa chọn
danh sách.
Một lệnh mô tả thao tác phải làm. Lệnh Selenium bao gồm ba yếu tố: Actions,
accessors, assertion.
-
Action: là các thao tác chung trên ứng dụng, ví dụ: “Click this link”, “Select that option”.
Nếu như thao tác thất bại sẽ có 1 lỗi, việc thực thi kiểm thử sẽ bị tạm dừng. Một vài hành
động sử dụng hậu tố “AndWait”, ví dụ: “ClickAndWait”. Selenium sử dụng hậu tố này
trong trường hợp chờ một trang eb được tải.
Accessor: Kiểm tra trạng thái của ứng dụng và lưu trữ kết quả vào các biến. Ví dụ:
“storeTitle”. Chúng có thể được sử dụng để sinh tự động các Assertion.
Assertion: Giống như những Accessor, nhưng nó xác định trạng thái của ứng dụng thích
nghi với kết quả mong đợi.
-
-
Assertion của Selenium có thể được chia thành 3 dạng: “assert”, ”verify”, ” aitFor”.
Ví dụ: “assertText”, “verifyText”, “ aitForText”. Khi “assert” thất bại, việc kiểm thử sẽ dừng
lại. Khi “verify” thất bại, việc kiểm thử vẫn tiếp tục nhưng sẽ hiển thị một lỗi. Lệnh “ aitFor”
chờ một vài điều kiện được thực thi (có ích khi kiểm thử các ứng dụng Ajax), nó sẽ thành
công nếu điều kiện đúng nhưng sẽ thất bại và tạm dừng việc kiểm thử nếu các điều kiện
không đúng.
3.2.4.1. Cú pháp Script
Các lệnh Selenium rất đơn giản, nó bao gồm lệnh và 2 tham số.
Các tham số không nhất thiết phải có trong mọi trường hợp, nó phụ thuộc vào câu
lệnh, trong một số trường hợp câu lệnh yêu cầu cả hai tham số, một số chỉ yêu cầu một tham
số, và cũng có những câu lệnh không cần có tham số.
Ví dụ:
Câu lệnh
goBackAndWait
VerifyTextPresent
Type
Type
Id=name
Id= password
Bảng 3.1: Cú pháp câu lệnh Selenese
Wellcome!
Trangnh7
meo@Dien07
Tham số thứ nhất
Tham số thứ hai
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 34 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Phân loại tham số:
-
-
-
-
-
-
-
-
-
-
-
-
Chương 3: Công cụ kiểm thử tự động Selenium
Locator: Tham số xác minh các yếu tố trên giao diện người dùng.
Text pattern: Tham số xác minh nội dung mong đợi của ứng dụng web.
Selenium variable: Nhập văn bản trong một trường đầu vào để lựa chọn từ danh sách lựa chọn.
Open: Mở một ứng dụng web sử dụng URL.
Click/clickAndWait: Thực thi click và đợi tải 1 trang web mới.
VerifyTitle/assertTitle: xác nhận một tiêu đề trang được mong đợi.
VerifyTextPresent: Xác nhận văn bản được mong đợi tại một vị trí nào đó trên trang.
VerifyElementPresent: Xác nhận một yếu tố được mong đợi trên giao diện người sử dụng,
được định nghĩa bởi thẻ HTML.
VerifyText: Xác nhận văn bản được mong đợi và và các thẻ HTML tương ứng.
VerifyTable: Xác nhận các nội dung được mong đợi của 1 bảng.
waitForPageToLoad: Tạm dừng thực thi lệnh cho đến khi trang eb mong đợi được tải
thành công, được gọi tự động khi sử dụng lệnh clickAndWait.
waitForElementPresent: Tạm dừng thực thi lệnh cho tới khi một yếu tố giao diện người
dùng xuất hiện trên trang eb (được đinh nghĩa bởi các thẻ HTML).
3.2.4.2. Một số lệnh thường sử dụng trong Selenium
3.3. Selenium Remote Control (Selenium RC)
Selenium RC ban đầu được phát triển bởi Patrick Lightbody theo hướng kiểm tra các
ứng dụng web trên các trình duyệt khác nhau mà không cần cài đặt Selenium Core trên
Server. Nó được phát triển để tương tác như một giao tiếp giữa ứng dụng cần kiểm tra và kịch
bản bản kiểm thử. Selenium Core được tích hợp với Selenium RC thay cho việc cài đặt trên
máy chủ.
Hình 3.8: Vai trò của Remote Control Server
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 35 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Chương 3: Công cụ kiểm thử tự động Selenium
Selenium RC là công cụ phục vụ cho các công việc kiểm thử đòi hỏi nhiều hơn việc
thao tác với website trên giao diện. Selenium RC sử dụng ngôn ngữ lập trình để kiểm thử các
trường hợp phức tạp hơn mà Selenium IDE không hỗ trợ.
3.3.1. Các thành phần của Selenium Remote Control
2 thành phần chính của Selenium RC là:
-
Máy chủ Selenium:
Thực hiện phân tích và chạy các lệnh được gửi đến từ ứng dụng cần
kiểm thử và các thao tác như HTTP proxy, phân tích và xác minh các thông điệp HTTP
giữa trình duyệt và ứng dụng cần kiểm tra.
Các thư viện máy khách:
Cung cấp giao tiếp giữa ngôn ngữ lập trình và máy chủ
Selenium RC.
-
3.3.1.1. Máy chủ Selenium
Máy chủ Selenium nhận lệnh từ chương trình kiểm thử Selenium, thực hiện biên dịch
nó và gửi lại thông báo kết quả của việc chạy các test case.
Máy chủ Selenium được tích hợp Selenium Core và tự động đưa nó vào trình duyệt.
Điều này xảy ra khi chương trình được kiểm thử mở trên trình duyệt (sử dụng một chức năng
thư viện máy khách API). Selenium-Core là một chương trình JavaScript, thực tế là một tập
các chức năng JavaScript dùng để biên dịch và thực thi các lệnh Selenese sử dụng trình duyệt
trong thông dịch JavaScript.
Máy chủ nhận các lệnh Selenese từ chương trình được kiểm thử sử dụng các đề nghị
HTTP GET/POST đơn giản. Điều này có nghĩa là chúng ta có thể sử dụng mọi ngôn ngữ lập
trình có khả năng gửi yêu cầu HTTP tới các kịch bản kiểm thử tự động trên trình duyệt.
3.3.1.2. Các thư viện máy khách
Các thư viện máy khách cung cấp giao diện hỗ trợ lập trình, cho phép chạy lệnh
Selenium từ chương trình của chúng ta. Các thư viện máy khách hỗ trợ cho các ngôn ngữ lập
trình khác nhau thì khác nhau. Giao diện lập trình (API) là một tập các chức năng chạy lệnh
Selenium từ chương trình của chúng ta, trong mỗi giao diện có một chức năng lập trình hỗ trợ
lệnh Selenium.
Thư viện máy khách sử dụng lệnh Selenese và chuyển tới máy chủ Selenium để xử lý
các hoạt động cụ thể và kiểm tra ngược lại với các ứng dụng cần kiểm tra. Thư viện máy
khách cũng nhận kết quả của lệnh và chuyển trở lại chương trình của chúng ta. Chương trình
có thể nhận kết quả và lưu nó vào một biến chương trình và thông báo trở lại thành công hay
thất bại hoặc có thể thực thi các hành động trực tiếp nếu nó là các lỗi không được mong đợi.
Để thực hiện kiểm thử một chương trình, ta cần viết một chương trình chạy một tập
lệnh Selenese sử dụng thư viện khách API và nếu đã có một kịch bản kiểm thử được tạo bởi
Selenium IDE, ta có thể sử dụng chức năng “Export the Selenium RC Code”. Selenium- IDE
có thể biên dịch các lệnh Selenium của nó một các hàm gọi API của Drive khách.
3.3.2. Cài đặt Selenium Remote Control
Download Selenium Remote Control từ link: http://seleniumhq.org/download/
Sau khi download file zip Selenium RC từ trang download và giải nén ta sẽ thấy có
một vài thư mục con. Những thư mục này có tất cả các thành phần cần sử dụng Selenium RC
với ngôn ngữ lập trình ta chọn.
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 36 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Chương 3: Công cụ kiểm thử tự động Selenium
Khi đã chọn ngôn ngữ lập trình ta thực hiện:
- Cài đặt máy chủ Selenium RC
- Thiết lập một dự án sử dụng một ngôn ngữ cụ thể với driver máy khách cụ thể
3.3.2.1. Cài đặt máy chủ Selenium
Máy chủ Selenium RC đơn giản là một file Jar của Java (Selenium-server-standalone-
2.0.25.jar), nó không yêu cầu việc cài đặt đặc biệt nào. Ta chỉ cần tải về file zip và giải nén
phần server trong thư mục mong muốn.
3.3.2.2. Chạy Selenium Server
Trước khi bắt đầu kiểm thử, ta phải khởi động Server bằng cách đi đến thư mục chứa
máy chủ Selenium RC, chạy file từ bảng điều khiển dòng lệnh (Command- line console): Java-
jar selenium-server-standalone-2.0.25.jar.
Để server có thể chạy, máy tính cần cài Java và biến môi trường PATH được cấu hình
đúng để chạy từ bảng điều khiển. Chúng ta có thể check xem đã cài Java đúng các hay chưa
bằng cách chạy lệnh java-version trên bảng điều khiển. Nếu nhận được một số phiên bản tức
là đã cài java đúng cách.
Nếu chạy máy chủ Selenium thành công, Command Prompt sẽ như hình dưới:
Hình 3.9: Chạy máy chủ Selenium thành công
3.3.2.3. Sử dụng Java Client Driver
-
-
-
-
-
-
-
Download Selenium RC từ trang http://seleniumhq.org/download/
Giải nén file selenium- java-client-driver.jar
Mở Java IDE (Eclipse, NetBeans, IntelliJ, Netweaver, v.v..)
Tạo một project mới
Thêm file selenium-java-client-driver.jar vào project
Thêm file selenium-java-client-driver.jar vào classpath của project
Từ Selenium- IDE xuất ra một kịch bản cho một file Java và đặt nó trong project Java,
hoặc viết kịch bản kiểm thử Selenium bằng Java sử dụng API selenium- java-client. API sẽ
được nói rõ ở phần sau của đồ án. Ta có thể dùng JUnit, hoặc TestNg để chạy kịch bản
kiểm thử, hoặc cũng có thể viết thành một hàm main().
Chạy Selenium sever từ bảng điều khiển
Thực hiện việc kiểm thử từ Java IDE hoặc từ dòng lệnh
-
-
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 37 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
3.3.2.4. Sử dụng Python Client Driver
-
-
-
-
-
-
-
-
-
Chương 3: Công cụ kiểm thử tự động Selenium
Download Selenium RC từ trang http://seleniumhq.org/download/
Giải nén file selenium.py
Viết test case Selenium trong Python hoặc xuất một test case từ Selenium-IDE thành một
file python (chức năng có trong Selenium IDE)
Thêm file selenium.py vào đường dẫn của kịch bản kiểm thử
Chạy Selenium server từ bảng điều khiển
Thực thi kịch bản kiểm thử từ một bảng điều khiển hoặc từ Python IDE
Download Selenium RC từ trang http://seleniumhq.org/download/
Giải nén thư mục
Tải và cài đặt NUnit (ta có thể sử dụng NUnit như một phương tiện kiểm thử. Nếu chưa
quen với NUnit, ta có thể viết một hàm main() đơn giản để chạy các kịch bản kiểm thử, dù
vậy NUnit thực sự rất có ích trong vai trò một phương tiện kiểm thử)
Mở .NET IDE (Visual Studio, SharpDevelop, MonoDevelop)
Tạo một thư viện class (.dll)
Add các truy vấn vào các DLL sau: nmock.dll, nunit.core.dll, nunit. framework.dll,
ThoughtWorks.Selenium.Core.dll,ThoughtWorks.Selenium.IntegrationTests.dllvà
Thought-Works.Selenium.UnitTests.dll
Viết kịch bản kiểm thử Selenium bằng một ngôn ngữ .NET (C# hoặc VB.Net), hoặt xuất
một kịch bản từ Selenium-IDE thành một file C# và chép mã nguồn vào lớp vừa tạo
Viết hàm main() hoặc có thể bao gồm NUnit trong project để chạy kịch bản kiểm thử
Chạy máy chủ Senelium từ bảng điều khiển
Chạy kịch bản kiểm thử từ IDE hoặc NUnit GUI hoặc từ dòng lệnh
Nếu chưa có RubyGems thì phải thực hiện cài đặt từ RubyForge
Chạy cài đặt gem từ selenium-client
Thêm “selenium/client” vào phần trên cùng của kịch bản kiểm thử
Viết kịch bản kiểm thử sử dụng bất kỳ dụng cụ kiểm thử Ruby nào (Ví dụ: Tes::Unit,
Mini::Test hoặc RSpec)
Chạy Selenium server từ bảng điều khiển
Thực thi kịch bản kiểm thử giống như chạy bất kì kịch bản Ruby nào khác
3.3.2.5. Sử dụng .NET Client Driver
-
-
-
-
-
-
-
-
-
-
-
-
-
3.3.2.6. Sử cụng Ruby Client Driver
3.3.3. Các thao tác với Selenium RC
3.3.3.1. Chạy các kịch bản kiểm thử Selenium IDE với Selenium Remote Control
Để chạy các kịch bản kiểm thử Selenium trên Selenium RC chúng ta phải sử dụng
biến –htmlsuite. Biến này gọi Selenium để mở Test Suite mà chúng ta đã tạo ra. Sau đó chúng
ta cần xác định vị trí của Test Suite và vị trí lưu kết quả. Các lệnh chạy trong Command
Prompt sẽ tương tự như dưới:
Java –jar selenium- server-standalone.jar –htmlsuite “*firefox”
http://mail.viettel.com.vn
“E:\Testcase_SEIDE\testdangnhap1.html” “E:\Testcase_SEIDE\result.html”
Hình 3.10: Câu lệnh chạy testcase Selenium IDE bằng Selenium RC
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 38 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Các bước thực hiện:
-
-
Bước 1: Mở Command Prompt.
Bước 2: Chạy câu lệnh sau:
Chương 3: Công cụ kiểm thử tự động Selenium
Hình 3.11: Chạy kịch bản kiểm thử Selenium IDE trên Selenium RC
Trong ví dụ, chúng ta đặt test case tại thư mục E:\Testcase_SEIDE.
Lưu ý :
-
-
Khi chạy câu lệnh chúng ta nên gõ trực tiếp câu lệnh vào command prompt mà không nên gõ ra
ord và copy paste vì đôi khi làm như vậy sẽ xảy ra lỗi vì các bộ gõ không giống nhau.
Khi chạy lệnh trên không cần phải chạy Selenium-server trước đó, vì lệnh này chứa cả
phần khởi động Selenium-server.
Khi việc kiểm thử bắt đầu tiến hành, nó sẽ đưa đến hai cửa sổ trình duyệt. Cửa sổ đầu
tiên giữ Selenium Core Framework với Test Suite ở bên phía tay trái, các bước kiểm thử ở
phía trung tâm, và kết quả ở bên tay phải, tương tự như hình dưới:
Hình 3.12: Chạy kịch bản kiểm thử Selenium IDE trên Selenium RC
Sử dụng biến –htmlsuite, chúng ta điều khiển chạy các kịch bản kiểm thử Selenium
IDE bằng Selenium Remote Control. Trong trường hợp này, chúng ta sử dụng Firefox để chạy
các kịch bản kiểm thử Selenium IDE. Lệnh đã khởi động Firefox và tải URL của ứng dụng
cần kiểm tra. Nó sẽ tải Test Suite của chúng ta và biết được nơi để lưu kết quả khi việc kiểm
thử kết thúc.
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 39 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
-
Chương 3: Công cụ kiểm thử tự động Selenium
Lưu ý: Để chạy các kịch bản kiểm thử Selenium IDE trên các trình duyệt khác, chúng ta
chỉ cần chỉnh sửa câu lệnh trên bằng việc thay *firefox bằng mã của trình duyệt mà chúng
ta muốn thực thi kiểm thử trên đó và thực hiện các bước giống như trong Mozilla Firefox.
Một số trình duyệt phổ biến:
·
*chrome
·
*iexploreproxy
·
*iexplore
·
*firefox3
·
*safariproxy
·
·
·
·
·
·
·
·
·
*googlechrome
*konqueror
*firefox2
*safari
*piiexplorep
*firefoxchrome
*opera
*iehta
*custom
3.3.3.2. Tạo một kịch bản kiểm thử mới với ngôn ngữ lập trình Java và Eclipse
Phần này của đồ án trình bày các bước để tạo một kịch bản kiểm thử Selenium RC
chạy bằng hàm main với ngôn ngữ lập trình Java và bằng IDE Eclipse:
-
Bước 1: Khởi động Eclipse và tạo một project mới. Việc này được thực hiện bằng cách
vào File -> New -> Project -> Java -> Java Project -> Next -> Điền Project name -> Finish
Hình 3.13: Tạo project Java
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 40 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Ta đặt tên project mới là First.
-
Chương 3: Công cụ kiểm thử tự động Selenium
Bước 2: Nhập các thư viện Selenium vào Project, nhờ đó chúng ta có thể thực thi các lệnh
Selenium trên Eclipse. Các bư ớc để làm việc này:
·
·
·
·
·
·
Click chuột phải vào folder “First”, chọn Properties
Click vào mục Java Build Path
Chọn tab Libraries
Chọn Add External JARs
Tìm và chọn file selenium- server-standalone-2.25.0.jar và selenium-java.jar
Click Open-> OK
Hình 3.14 : Thêm các file jar vào thư viện
-
Bước 3: Tạo một lớp mới trong Project. Các bước thực hiện bước này: Chọn First -> New
-> Class -> OK
Đặt tên lớp của là MySelenium.
Ví dụ với test case kiểm thử việc đăng nhập vào trang email của Viettel, có url là
https://mail.viettel.com.vn, bằng trình duyệt firefox, dữ liệu đầu vào username
trangnh7, pass ord meo@Dien07, test case Selenium RC được viết bằng ngôn ngữ
Java sẽ như sau:
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 41 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Chương 3: Công cụ kiểm thử tự động Selenium
import
com.thoughtworks.selenium.Selenium;
import
com.thoughtworks.selenium.DefaultSelenium;
// Import Selenium
public class
MySelenium {
static
Selenium
browser;
public static void
main(String agr[])
{ // Khai báo một biến Selenium có tên Browser
browser=ne
w
DefaultSelenium("localhost",4444,"*iexplore","http://mail.viettel.com.vn");
browser.start();
// Lệnh bắt đầu Selenium
// Các lệnh Selenese
browser.open("/");
browser.type("user","trangnh7");
browser.type("password",
"meo@Dien07");
browser.click("button");
browser.waitForPageToLoad("30000");
browser.close();
// Lệnh đóng
}
}
Hình 3.15: Mẫu test case Selenium RC
Các tham số được yêu cầu với một biến có dạng DefaultSelenium bao gồm:
·
Host: Thông thường giống với máy tính chạy máy khách, trong trường hợp đó
localhost được thông qua. Với một số máy khách thì đây là một tham số tùy chọn.
·
Port: Xác định socket TCP/IP tại điểm máy chủ nghe và đợi máy khách thiết lập kết
nối. Tham số này cũng tùy chọn với một số driver của máy khách.
·
Browser: Trình duyệt được sử dụng để chạy kịch bản kiểm thử.
·
url: URL của ứng dụng được kiểm thử.
Bước 4: Chạy kịch bản kiểm thử vừa tạo.
·
Để chạy kịch bản kiểm thử vừa tạo, trước tiên ta phải chạy Server của Selenium như
đã nói ở phần trên.
·
Sau khi chạy Server, ta tiến hành chạy file kịch bản kiểm thử vừa tạo bằng cách chuột
phải vào lớp -> Run As ->Java Application.
Bước 5: Xem kết quả. Sau khi chạy kịch bản kiểm thử. Trang web sẽ được tải và thực thi
các bước như trong kịch bản kiểm thử.
-
-
3.3.3.3. Dịch một kịch bản kiểm thử Selenium IDE thành kịch bản kiểm thử Selenium RC
Phần này của đồ án trình bày cách dịch một test case Selenium IDE sang một test case
Selenium RC dưới dạng một lớp Java và dựa trên JUnit framework.
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 42 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Chương 3: Công cụ kiểm thử tự động Selenium
Trong phạm vi đồ án, chúng ta sẽ không đi sâu vào Junit mà chỉ giới thiệu sơ qua về
công cụ này. JUnit là một framework dùng cho kiểm thử đơn vị tự động trong Java, được phát
triển bởi Erich Gamma và Kent Beck. Việc cài đặt Junit cũng hết sức đơn giản. Chúng ta chỉ
cần download Junit từ trang http://www.junit.org , trong đồ án này chúng ta sẽ sử dụng JUnit
4. Sau khi download file jar về, ta add nó vào project của chúng ta giống như phần hướng dẫn
add Selenium đã nêu chi tiết ở phần 3.2.
Để dịch một kịch bản kiểm thử Selenium IDE thành một kịch bản kiểm thử Selenium
RC ta cần thực hiện một số bước như sau:
-
Bước 1: Mở test case Selenium IDE muốn dịch. Ví dụ ta muốn dịch test case có tên
testdangnhap1.html đã được tạo trước đó sang testcase Selenium RC.
Bật trình duyệt firefox -> Mở Selenium IDE -> Chọn Tập tin -> Open -> Chọn tập tin
muốn dịch sang Selenium RC-> Open
Bước 2: Export test case Selenium IDE sang test case Selenium RC dưới dạng ngôn ngữ
lập trình Java và dựa trên framework Junit 4
Chọn Tập tin -> Export Test Case As -> Java/JUnit 4/ Remote Control - >Save As lưu tên
tập tin là dangnhapJUnit4.java
-
Hình 3.16: Export Test Case Selenium IDE sang Test Case Selenium Remote Control
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 43 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Chương 3: Công cụ kiểm thử tự động Selenium
Test Case được dịch có dạng như mã nguồn dưới đây:
import
com.thoughtworks.selenium.*;
import
org.junit.After;
import
org.junit.Before;
import
org.junit.Test;
import
java.util.regex.Pattern;
public class
dangnhapJunit4 {
public
Selenium selenium;
@Before
public void
setUp()
throws
Exception {
selenium =
ne w
DefaultSelenium("localhost",
"*googlechrome", "https://mail.viettel.com.vn/");
selenium.start();
}
@Test
public void
testDangnhapjunit4()
throws
Exception {
selenium.open("/");
selenium.type("name=user", "trangnh7");
selenium.type("name=password", "meo@Dien07");
selenium.click("id=button");
selenium.waitForPageToLoad("30000");
}
@After
public void
tearDown()
throws
Exception {
selenium.stop();
}
}
Hình 3.17: Test Case Selenium Remote Control được export từ test case Selenium
IDE
-
-
Bước 3: Thêm tập tin vào Project
Bước 4: Chạy test case.
·
Chuột phải -> Run As -> JUnit Test
·
Test case sẽ được chạy vào kết quả chạy được hiển thị trên Junit:
4444,
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 44 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Chương 3: Công cụ kiểm thử tự động Selenium
Hình 3.18 : Kết quả chạy test case trên Junit 4
3.3.3.4. Báo cáo kết quả kiểm thử
Selenium RC không có cơ chế tự báo cáo kết quả kiểm thử. Nhưng nó cho phép xây
dựng báo cáo theo các đặc điểm của ngôn ngữ lập trình. Chúng ta có thể sử dụng các
framework kiểm thử của các ngôn ngữ lập trình để xuất báo cáo. Trong Java có hai
frame ork thường được sử dụng là Junit và TestNG.
Phần này của đồ án trình bày các bước để xuất một báo kiểm thử trong Eclipse dựa
trên framework Junit. Dưới đây là các bước cần thực hiện:
-
-
Bước 1: Chuột phải vào Project -> Click Export -> Chọn folder General -> Chọn Ant
Buildfiles.
Bước 2: Chọn Project, điền thông tin thư mục lưu báo cáo vào textfield JUnit output
directory -> Finish
Hình 3.19: Tạo file build.xml
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 45 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Chương 3: Công cụ kiểm thử tự động Selenium
Sau khi click finish, file build.xml sẽ được tạo trong Project First.
-
Bước 3: Thêm file junit.jar vào Global Entries của Ant:
Click Window -> Chọn Preferences -> Expand Ant -> Click Runtime -> Chọn tab
Classpath -> Expand Global Entries -> Click Add External JARs -> Vào thư mục cài đặt
Eclipse E:\eclipse\eclipse\plugins\org.junit_3.8.2.v3_8_2_v20100427-1100 chọn junit.jar
-> Open
Hình 3.20: Thêm file junit.jar vào Global Entries của Ant
-
Bước 4: Chuột phải vào file build.html -> Chọn Run As -> Ant Build… -> Hiển thị cửa sổ
Edit Configuration and launch -> Check vào các checkbox build, các testcase muốn chạy
và junitreport -> Click nút Run.
Hình 3.21: Lựa chọn các mục tiêu để thực thi file build.xml
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 46 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Chương 3: Công cụ kiểm thử tự động Selenium
Ở bước này, lưu ý việc sắp xếp sao cho Eclipse thực thi junitreport cuối cùng để tránh
báo cáo thiếu trường hợp.
Sau khi click nút Run, chương trình sẽ thực hiện chạy các test case được chọn, và xuất
báo cáo vào thư mục được nhập vào tại bước tạo file build.xml.
- Bước 5: Xem báo cáo kiểm thử. Trước khi xem báo cáo kiểm thử, ta cần refresh lại
project. Vào thư mục được chọn để lưu báo cáo, mở file index. Báo cáo sẽ có dạng như
hình:
Hình 3.22: Mẫu báo cáo kết quả kiểm thử Selenium dựa trên JUnit
Ngoài ra báo cáo còn hỗ trợ tìm ra nguyên nhân test case bị thất bại bằng cách click
vào lớp của test case.
3.4. Tổng kết chương 3
Chương 3 của đồ án đã giới thiệu được về công cụ kiểm thử phần mềm Selenium và
đã nêu được những đặc điểm và cách sử dụng của hai bộ công cụ cơ bản và phổ biến là
Selenium IDE và Selenium RC. Các nội dung cụ thể đã được làm rõ trong chương 3 bao gồm:
Tổng quan về Selenium: Giới thiệu những nét chính về nguồn gốc, quá trình phát triển và
các thành phần cơ bản của Selenium.
- Selenium IDE: Trình bày được phạm vi ứng dụng, cách cài đặt, cách sử dụng của
Selenium IDE.
- Selenium Remote Control: Trình bày về các thành phần của Selenium RC, cách cài đặt và
cách sử dụng một số chức năng của Selenium RC.
Từ những kiến thức tìm hiểu được trong nội dung chương, em rút ra được một số đánh
giá với Selenium như sau:
- Những ưu điểm chung Selenium:
·
Selenium là bộ công cụ mã nguồn mở, do vậy mà nó hoàn toàn miễn phí.
·
Selenium hỗ trợ nhiều ngôn ngữ lập trình như Java, C#, Python… và kết hợp được với
nhiều framework kiểm thử như JUnit, NUnit, TestNG…
·
Selenium hỗ trợ kiểm thử trên rất nhiều trình duyệt eb như Firefox, Googlechrome,
Internet Explore…
SVTH: Nguyễn Huyền Trang – D08CNPM2
-
Trang - 47 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Chương 3: Công cụ kiểm thử tự động Selenium
-
·
Hỗ trợ gỡ lỗi
Những nhược điểm chung của Selenium:
·
Nhược điểm lớn nhất của Selenium là nó chỉ tích hợp với các hệ thống phát triển dựa
trên các nền tảng eb, vì lý do đó mà nó không thể sử dụng để kiểm thử các phần
mềm ứng dụng khác.
Selenium không thể thực hiện kiểm thử nếu bản thân nó không nhận biết được đối
tượng.
Những hỗ trợ được cung cấp cho Selenium khá ít như việc Selenium không hỗ trợ việc
xuất báo cáo kiểm thử mà ta phải làm điều đó dựa vào các framework kiểm thử khác.
Khó chuẩn đoán những lỗi mới phát sinh.
Những khó khăn trong việc cài đặt và cấu hình với người mới sử dụng.
·
·
·
·
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 48 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Chương 4: Thử nghiệm
CHƯƠNG 4: THỬ NGHIỆM
4.1. Bài toán thử nghiệ m
-
-
-
-
Vấn đề đặt ra là kiểm thử hai chức năng cơ bản cho ứng dụng web email của tập đoàn
viễn thông quân đội Viettel là chức năng đăng nhập và chức năng soạn thảo và gửi email.
Link ứng dụng: https://mail.viettel.com.vn
Ứng dụng được kiểm thử trên 3 trình duyệt: Mozilla Firefox, Internet Explore,
Googlechrome.
Chức năng đăng nhập: Chức năng này là một chức năng đăng nhập thuần túy vào các ứng
dụng eb thông thường giống như các ứng dụng khác như yahoo, google, các forum. Các
yếu tố cần kiểm tra:
·
Nếu đăng nhập đúng tên và mật khẩu thì tải đến trang chủ của ứng dụng email.
·
Nếu đăng nhập sai tên hoặc mật khẩu thì đưa ra thông báo: “Tên đăng nhập hoặc mật
khẩu đăng nhập không đúng”.
·
Nếu nhập thiếu tên đăng nhập thì đưa ra thông báo: “Bạn phải nhập tên đăng nhập”.
·
Nếu nhập thiếu mật khẩu thì đưa ra thông báo: “Bạn phải nhập mật khẩu”.
Chức năng gửi email: Ứng dụng email của Viettel có hai đặc điểm đặc trưng tạo nên sự
khác biệt khi viết kịch bản kiểm thử chức năng này so với các ứng dụng email khác là:
·
Email Viettel là email nội bộ, chỉ cho phép gửi và nhận email giữa các địa chỉ nội bộ,
nghĩa là các địa chỉ có phần mở rộng là @viettel.com.vn, ví dụ:
[email protected]. Các địa chỉ email có phần mở rộng khác như địa chỉ email
của google hay yahoo thì ứng dụng sẽ không thể gửi email đến cũng như không thể
nhận email từ các địa chỉ đó.
·
Email Viettel cũng cho phép ghi địa chỉ email mà không điền phần mở rộng, ví dụ
muốn gửi thư đến địa chỉ email [email protected] chúng ta cũng có thể cần
điền trangnh7 vào địa chỉ gửi đi, ứng dụng vẫn hiểu được địa chỉ email mà người gửi
muốn gửi email đến là [email protected].
Ứng dụng email của Viettel cũng có những đặc điểm chung giống như các ứng dụng
email khác, và các yếu tố chính cần kiểm tra là:
·
·
·
·
Kiểm tra gửi email tới một hoặc nhiều địa chỉ hợp lệ thành công
Kiểm tra hoạt động của các chức năng gửi Cc/ Bcc
Kiểm tra gửi email báo lỗi khi gửi email đến một địa chỉ không phải địa chỉ email nội
bộ, đồng thời kiểm tra tại địa chỉ email nhận cũng không nhận được email đã gửi
Kiểm tra chức năng attack file
-
4.2. Sự khác nhau giữa kịch bản kiểm thử tự động và kịch bản kiể m thử thủ công
Trước khi thực hiện kiểm thử ứng dụng, cần phải nói thêm về sự khác nhau giữa một
kịch bản kiểm thử thủ công và một kịch bản kiểm thử tự động.
Với kiểm thử thủ công, kịch bản kiểm thử chức năng thông thường được chia thành ba
phần chính:
-
-
-
Phần giao diện
Phần chức năng
Phần an toàn thông tin
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 49 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Chương 4: Thử nghiệm
Với kiểm thử tự động, có hai phần chính mà ta cần quan tâm là test case và dữ liệu
kiểm thử. Trong đó:
-
Test case: Có thể là một lớp hoặc một hàm hoặc một lớp ghi lại một chuỗi sự kiện mà ta
thao tác với ứng dụng cần kiểm thử. Khác với khái niệm test case khi thực hiện kiểm thử
thủ công là cứ mỗi giá trị đầu vào khác nhau thì sẽ tạo thành một testcase.
Dữ liệu kiểm thử: Là dữ liệu nhập vào để kiểm thử.
-
4.3. Kịch bản kiể m thử thủ công
4.3.1. Chức năng đăng nhập
-
Ở chức năng đăng nhập, ba phần chính cần kiểm tra là:
·
Giao diện: Kiểm thử các yếu tố giao diện chung như kiểm tra giao diện theo thiết kế,
kiểm tra khi ấn tab, shift-tab, kiểm tra việc bị vỡ giao diện hay không, các giá trị mặc
định của textbox.
·
Chức năng: Có bốn trường hợp chức năng cần chính cần kiểm thử:
o
Kiểm tra đăng nhập thành công với Tên đăng nhập/ Mật khẩu hợp lệ
o
Kiểm tra đăng nhập không thành công khi sử dụng sai Tên đăng nhập/ Mật khẩu
o
Kiểm tra thông báo khi không nhập Tên đăng nhập
o
Kiểm tra thông báo khi không nhập mật khẩu
·
Kiểm thử an toàn bảo mật: Vì chức năng đăng nhập không nhập số liệu vào cơ sở dữ
liệu do vậy ta có thể bỏ qua không kiểm tra một số lỗi an toàn thông tin và chỉ cần
kiểm tra một số lỗi sau:
o
Lỗi SQL Injection
o
Lỗi User Enumeration
o
Kiểm tra lỗ hổng cho phép dò đoán mật khẩu
Kịch bản kiểm thử cụ thể được trình bày ở định dạng excel được đính kèm trong phụ lục
của đồ án.
-
4.2.2. Chức năng soạn thảo và gửi e mail
Trong luồng công việc diễn ra từ khi bắt đầu soạn thảo đến lúc thực hiện gửi email
thành công, chúng ta có thể phải thực hiện thao tác đính kèm file (attack file), do vậy attack
file được coi là một chức năng nhỏ trong chức năng soạn thảo và gửi email và chúng ta cũng
phải tiến hành kiểm thử chức năng này.
-
Chức năng Attack file:
·
Giao diện: Kiểm tra giao diện chung
·
Chức năng: Chúng ta phải kiểm tra được các trường hợp chính:
o
Attack file có dung lượng hợp lệ < 10240 kb thành công
o
Kiểm tra thông báo lỗi khi Attack file có dung lượng > 10240 kb
o
Kiểm tra thực hiện chức năng của button Chọn file, Add, Cancel, Attack, Help
Chức năng chính soạn thảo và gửi email:
·
Giao diện: Kiểm tra giao diện chung, kiểm tra các combo-box
·
Chức năng: Kịch bản kiểm thử phải đáp ứng bao quát được một số chức năng:
o
Kiểm tra soạn thảo và gửi email thành công không có file attack
o
Kiểm tra soạn thảo và gửi email thành công khi có file attack
o
Kiểm tra lựa chọn receipt request (Thông báo nhận tin, đọc tin)
Trang - 50 -
-
SVTH: Nguyễn Huyền Trang – D08CNPM2
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Chương 4: Thử nghiệm
-
o
Kiểm tra việc gửi email cho nhiều người một lúc
o
Kiểm tra lựa chọn gửi Cc/Bcc
o
Kiểm tra được điều kiện chỉ cho phép gửi email nội bộ (các địa chỉ email của
Viettel)
o
Kiểm tra nhận email thông báo không gửi được email khi gửi email đến các địa chỉ
email không phải email của Viettel
o
Kiểm tra cảnh báo khi nhập vào địa chỉ email Viettel không có thật
·
An toàn thông tin:
o
Việc kiểm tra an toàn thông tin tương tự như với chức năng đăng nhập, bổ xung
thêm việc kiểm tra lỗi Session fixation và lỗi xác thực phân quyền.
Kịch bản kiểm thử cụ thể được trình bày ở định dạng excel được đính kèm trong phụ lục
của đồ án.
4.4. Kịch bản kiể m thử tự động
Do những hạn chế về kinh nghiệm và thời gian tìm hiểu tool và sự phức tạp của ứng dụng
email, đồ án trình bày demo một số case cơ bản của chức năng đăng nhập bằng hai công cụ là
Selenium IDE và Selenium RC và thực hiện báo cáo kết quả dựa trên framework kiểm thử JUnit.
-
Đăng nhập thành công bằng firefox.
import
com.thoughtworks.selenium.*;
import
org.junit.After;
import
org.junit.Before;
import
org.junit.Test;
public class
DangNhapFirefox {
public
Selenium selenium;
@Before
public void
setUp()
throws
Exception {
selenium =
ne w
DefaultSelenium("localhost", 4444,
"*firefox", "https://mail.viettel.com.vn/");
selenium.start();
}
@Test
public void
testDangnhapjunit4()
throws
Exception {
selenium.open("/");
selenium.type("name=user", "trangnh7");
selenium.type("name=password", "meo@Dien07");
selenium.click("id=button");
selenium.waitForPageToLoad("30000");
}
@After
public void
tearDown()
throws
Exception {
selenium.stop();
}
}
Hình 4.1: Test case đăng nhập bằng Firefox
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 51 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
-
Đăng nhập thành công bằng Internet Explore:
import
com.thoughtworks.selenium.*;
import
org.junit.After;
import
org.junit.Before;
import
org.junit.Test;
public class
DangNhapIE {
public
Selenium selenium;
@Before
public void
setUp()
throws
Exception {
Chương 4: Thử nghiệm
selenium =
ne w
DefaultSelenium("localhost", 4444,
"*iexplore", "https://mail.viettel.com.vn/");
selenium.start();
}
@Test
public void
testDangnhapjunit4()
throws
Exception {
selenium.open("/");
selenium.type("name=user", "trangnh7");
selenium.type("name=password", "meo@Dien07");
selenium.click("id=button");
selenium.waitForPageToLoad("30000");
}
@After
public void
tearDown()
throws
Exception {
selenium.stop();
}
}
Hình 4.2: Test case đăng nhập bằng Internet Explore
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 52 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
-
Đăng nhập thành công Googlechrome:
import
com.thoughtworks.selenium.*;
import
org.junit.After;
import
org.junit.Before;
import
org.junit.Test;
public class
DangNhapGC {
public
Selenium selenium;
@Before
public void
setUp()
throws
Exception {
Chương 4: Thử nghiệm
selenium =
ne w
DefaultSelenium("localhost", 4444,
"*googlechrome", "https://mail.viettel.com.vn/");
selenium.start();
}
@Test
public void
testDangnhapjunit4()
throws
Exception {
selenium.open("/");
selenium.type("name=user", "trangnh7");
selenium.type("name=password", "meo@Dien07");
selenium.click("id=button");
selenium.waitForPageToLoad("30000");
}
@After
public void
tearDown()
throws
Exception {
selenium.stop();
}
}
Hình 4.3: Test case đăng nhập bằng Googlechrome
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 53 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
-
Báo cáo kiểm thử:
Mã nguồn sinh báo cáo:
Chương 4: Thử nghiệm
<?xml?>
<!-- WARNING: Eclipse auto-generated file.
Any modifications will be overwritten.
To include a user specific buildfile here, simply create one in the
same
directory with the processing instruction <?eclipse.ant.import?>
as the first entry and export the buildfile again. -->
<project>
<property/>
<property/>
<property
value="E:\eclipse\Testemail\report"/>
<property/>
<property/>
<path>
<pathelement/>
<pathelement
java-2.25.0.jar"/>
2.25.0.jar"/>
<pathelement
20090527-0039.jar"/>
<pathelement
java-2.25.0-srcs.jar"/>
</path>
<target>
<mkdir/>
<copy>
<fileset>
<exclude/>
</fileset>
</copy>
</target>
<target>
location="../../Selenium/junit-4.7-SNAPSHOT-
location="../../Selenium/selenium-2.25.0/selenium-
location="../../Selenium/selenium-2.25.0/selenium-
name="junit.output.dir"
<property/>
<pathelement334">
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 54 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
<delete/>
</target>
<target/>
Chương 4: Thử nghiệm
<target/>
<target/>
<target>
<echo/>
<javac
includeantruntime="false">
<src/>
<classpath/>
</javac>
</target>
<targetMsoNormal">
Useful to propagate changes."/>
<target
name="init-eclipse-compiler">
<copy>
<fileset
includes="org.eclipse.jdt.core_*.jar"/>
</copy>
<unzip>
<patternset/>
<fileset
includes="org.eclipse.jdt.core_*.jar"/>
</unzip>
</target>
<targetMsoNormal">
name="build-eclipse-compiler">
project
with
Eclipse
compiler"
dir="${ECLIPSE_HOME}/plugins"
dir="${ECLIPSE_HOME}/plugins"
<property
value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
<antcall/>
</target>
<target>
<mkdir/>
name="build.compiler"
<junit>
<formatter/>
<test/>
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 55 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
<classpath/>
</junit>
</target>
<target>
<mkdir/>
Chương 4: Thử nghiệm
<junit>
<formatter/>
<test/>
<classpath/>
</junit>
</target>
<target>
<mkdir/>
<junit>
<formatter/>
<test/>
<classpath/>
</junit>
</target>
<target>
<junitreport>
<fileset>
<include/>
</fileset>
<report/>
</junitreport>
</target>
</project>
Hình 4.4: File build.xml
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 56 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Chương 4: Thử nghiệm
Hình 4.5: Báo cáo kết quả kiểm thử
4.5. Kết quả thử nghiệm
Sau khi thực thi kiểm thử với kịch bản kiểm thử đã được lập phía trên, tác giả xin trình
bày một số nhận định về kết quả thử nghiệm với 2 chức năng bao gồm chức năng đăng nhập
và chức năng gửi email của ứng dụng web https://mail.viettel.com.vn.
4.5.1. Chức năng đăng nhập
-
-
-
-
Tổng số trường hợp kiểm thử: 12
Số trường hợp kiểm thử thành công: 10
Số trường hợp kiểm thử không thành công: 2
Nhận xét:
Xét về tổng thể giao diện:
·
Giao diện dễ hiểu, dễ sử dụng, các chức năng của phím tab, shift+tab, enter hoạt động
tốt.
·
Khi phóng to, thu nhỏ không bị vỡ giao diện.
·
Tuy nhiên vẫn có lỗi câu thông báo khi thực hiện chức năng ở các trường hợp:
Đăng nhập không nhập tên đăng nhập: Chương trình không đưa ra câu cảnh báo mà reset
hai trường tên đăng nhập và mật khẩu đăng nhập về null gây khó khăn cho người sử dụng
mới. Trường hợp kiểm thử này đề xuất đưa ra câu cảnh báo:”Bạn chưa nhập Tên đăng
nhập”.
Đăng nhập không nhập mật khẩu đăng nhập: Chương trình không đưa ra câu cảnh báo mà
reset hai trường tên đăng nhập và mật khẩu đăng nhập về null gây khó khăn cho người sử
dụng mới. Trường hợp này đề xuất đưa ra câu cảnh báo:”Bạn chưa nhập mật khẩu”.
Giao diện đăng nhập bằng tiếng Việt nhưng giao diện chính của chương trình cũng như
các cảnh báo đều bằng tiếng Anh, gây ra sự không nhất quán cũng như ảnh hưởng tới
thẩm mỹ của chương trình. Do vậy đề xuất sửa chương trình thống nhất về ngôn ngữ.
Về chức năng: Chức năng này thực hiện đúng và đủ các trường hợp đăng nhập.
Về an toàn thông tin: Chức năng này đảm bảo về an toàn thông tin.
-
-
-
-
-
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 57 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
4.5.2. Chức năng gửi e mail
-
-
-
-
Tổng số trường hợp kiểm thử: 52
Số trường hợp kiểm thử thành công: 47
Số trường hợp kiểm thử không thành công: 5
Nhận xét:
Chương 4: Thử nghiệm
Xét về tổng thể giao diện:
·
Giao diện dễ hiểu, dễ sử dụng, các chức năng của phím tab, shift+tab, enter hoạt động tốt.
·
Khi phóng to, thu nhỏ không bị vỡ giao diện.
·
·
Giao diện đáp ứng được thiết kế.
Tuy nhiên vẫn có nhược điểm là không nhất quán về ngôn ngữ, trên giao diện có cả
tiếng Anh và Tiếng Việt.
Về chức năng: Chức năng này chứa một chức năng con là chức năng attack file.
·
Chức năng attack file:
o
Các nút add, chọn tập tin, attack, cancel, help hoạt động tốt.
o
Nút remove không hoạt động do vậy đề xuất là chỉnh sửa hoạt động của nút
remove
·
Chức năng soạn thảo và gửi email:
o
Các yếu tố trên màn hình hoạt động tốt.
o
Gửi email đến các địa chỉ hợp lệ thành công.
o
Các chế độ gửi email: To, Cc, Bcc hoạt động tốt.
o
Thiếu xót là không chặn việc gửi email đến các địa chỉ mail không phải là mail nội
bộ. Đây là một lỗi lớn cần được khắc phục.
Về an toàn thông tin: Hệ thống đáp ứng được vấn đề an toàn thông tin.
-
-
4.6. Tổng kết chương 4
Chương 4 của đồ án đã hoàn thành nhiệm vụ ứng dụng các kiến thức đã nghiên cứu về
kiểm thử và công cụ kiểm thử tự động Selenium để kiểm thử cho hai chức năng của ứng dụng
web https://mail.viettel.com.vn là: chức năng đăng nhập và chức năng soạn thảo và gửi email.
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 58 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Kết luận
KẾT LUẬN
Kiểm thử phần mềm hiện nay vẫn là vấn đề hết sức quan trọng với các tổ chức phát
triển phần mềm. Trong khuôn khổ đồ án của mình do thời gian và kinh nghiệm còn hạn chế
nên có những phần của đồ án chưa được đào sâu nghiên cứu.
Sau một thời gian thực hiện đồ án dưới sự hướng dẫn của Thạc sĩ Đỗ Mạnh Hùng, đồ
án của em đã thực hiện tốt được các mục tiêu đề ra và đạt được những kết quả như sau:
Kết quả đạt được:
Trình bày đầy đủ và chính xác các vấn đề tổng quan về phần mềm, công nghệ phần
mềm, lỗi phần mềm, và các vấn đề liên quan đến kiểm thử phần mềm.
·
Giới thiệu công cụ kiểm thử phần mềm Selenium
·
Giới thiệu Selenium IDE và Selenium Remote Control, các thao tác cơ bản để sử dụng
hai công cụ này.
-
Áp dụng các kiến thức đã nghiên cứu thực hiện kiểm thử hai chức năng của ứng dụng
web https://mail.viettel.com.vn là chức năng đăng nhập và chức năng soạn thảo và gửi
mail.
·
Đồ án là một tài liệu xúc tích tổng hợp được các vấn đề chính của kiểm thử phần mềm,
và có thể được coi là một tài liệu hướng dẫn sử dụng Selenium IDE và Selenium RC
ngắn gọn rõ ràng bằng tiếng Việt để tham khảo.
-
Hạn chế:
Mặc dù đã cố gắng hết sức trong thời gian thực hiện đề tài nhưng với kinh nghiệm còn
hạn chế nên đồ án không tránh khỏi những thiếu sót:
·
Chỉ đi vào nghiên cứu 2 trong 4 công cụ của bộ Selenium. Còn 2 bộ công cụ là
Selenium Core và Selenium Grid chỉ giới thiệu sơ qua.
·
Chưa nghiên cứu phần lập trình nâng cao với Selenium.
·
Chỉ áp dụng kiểm thử được hai chức năng của ứng dụng email của tập đoàn viễn thông
quân đội Viettel.
Hướng phát triển đề tài:
Trong thời gian tới em sẽ tiếp tục nghiên cứu sâu hơn về các vấn đề của kiểm thử
phần mềm, và đặc biệt là bộ công cụ kiểm thử ứng dụng eb Selenium, để có thể vận
dụng vào kiểm thử các ứng dụng lớn hơn trong thực tế công việc trong tương lai nhằm
góp một phần nhỏ bé vào công cuộc chuyên nghiệp hóa kiểm thử phần mềm ở Việt Nam.
·
-
SVTH: Nguyễn Huyền Trang – D08CNPM2
Trang - 59 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
DANH MỤC TÀI LIỆU THAM KHẢO
Tiếng Anh:
[1]
D. Burns, Selenium 1.0 Testing Tools Beginner's Guide, Birmingham-Mumbai:
[PACKT] publishing.
D. Galin, Software Quality Assurance_From theory to implementation, PEARSON
Education, 2004.
D. Graham, E. v. Veenendaal, R. Black and I. Evans, Foundations of software testing.
SeleniumHQ.org, "Selenium Documentation".
[2]
[3]
[4]
Website
:
[1]
[2]
"http://www.testingvn.com," [Online].
http://www.vietnamesetestingboard.org. [Online].
SVTH: Nguyễn Huyền Trang – D08CNPM2
Page - 60 -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
PHỤ LỤC: KỊCH BẢN KIỂM THỬ THỦ CÔNG
CHO ỨNG DỤNG THỬ NGHIỆM
Giao diện attack file
Giao diện soạn thảo email
SVTH: Nguyễn Huyền Trang – D08CNPM2
Page - 61 -
Bạn đang đọc truyện trên: Truyen247.Pro