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

Xây dựng quy trình kiểm thử website và áp dụng kiểm thử hệ thống quản lý các đề tài nghiên cứu khoa học viện khoa học giáo dục việt nam

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

VIỆN ĐẠI HỌC MỞ HÀ NỘI

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

KHOA CÔNG NGHỆ THÔNG TIN

Độc lập – Tự do – Hạnh phúc
Hà Nội, ngày

tháng năm 2016

NHIỆM VỤ CỦA ĐỒ ÁN TỐT NGHIỆP
Họ và tên: Nguyễn Thị Thủy

Giới tính: Nữ

Ngày sinh: 26/08/1994

Nơi sinh: Thái Bình

Chuyên ngành: Tin học ứng dụng

Mã số: 12A10010267

1. TÊN ĐỀ TÀI
Xây dựng quy trình kiểm thử Website và áp dụng kiểm thử hệ thống
Quản lý các đề tài nghiên cứu Khoa học Viện Khoa học giáo dục Việt Nam
NHIỆM VỤ VÀ NỘI DUNG
- Nghiên cứu các vấn đề kiểm thử phần mềm , kiểm thử
trênWebsite
- Xây dựng quy trình kiểm thử Website


- Kiểm thử hệ thống Quản lý các đề tài nghiên cứu Khoa học Viện
Khoa học giáo dục Việt Nam
2. NGÀY GIAO NHIỆM VỤ:

25/12/2015

3. NGÀY HOÀN THÀNH NHIỆM VỤ:
4. GIẢNG VIÊN HƯỚNG DẪN :

Thạc Bình Cường

Nội dung và đề cương Đồ án đã được Hội đồng chuyên ngành thông qua.
Ngày tháng năm 2016
GIẢNG VIÊN HƯỚNG DẪN

KHOA CÔNG NGHỆ THÔNG TIN


LỜI NÓI ĐẦU
Đồ án tốt nghiệp là kết quả của quá trình tìm hiểu, học tập và trau dồi kinh
nghiệm tại Khoa Cơng Nghệ Thơng Tin của em. Để có thể thực hiện và hoàn
thành đồ án này em đã nhận được sự hướng dẫn và giúp đỡ rất nhiệt tình của
các thầy cơ và các bạn trong Khoa Cơng Nghệ Thông Tin – Viện Đại học Mở
Hà Nội. Chúng em xin gửi lời cảm ơn chân thành và sâu sắc tới các thầy, các
cô trong khoa, cảm ơn các thầy, các cơ những người đã tận tình giảng dạy và
truyền đạt những kiến thức cần thiết, những kinh nghiệm quý báu cho chúng
em trong suốt bốn năm học tại Viện Đại học Mở Hà Nội để em có thể tự tin
khi thực hiện đồ án này.
Đặc biệt em xin cám ơn thầy Thạc Bình Cường người đã tận tình hướng
dẫn chỉ bảo động viên và hộ trợ em trong suốt quá trình thực hiện đề tài này.

Trong thời gian làm đồ án cùng thầy, em không những học hỏi được những
kiến thức mà còn học được khả năng làm việc nghiêm túc, độc lập và có trách
nhiệm với cơng việc của mình.
Mặc dù em đã cố gắng hồn thiện đồ án trong phạm vi và khả năng cho
phép nhưng chắc chắn khơng tránh khỏi những thiếu sót. Em xin kính mong
nhận được sự thơng cảm và góp ý của các thầy cơ và các bạn.
Em xin kính chúc các thầy cô mạnh khỏe, luôn luôn là những người lái đị
ân cần dìu dắt các thế hệ tiếp theo của FITHOU trưởng thành.
Hà Nội, tháng 12 năm 2016
Sinh viên thực hiện
Nguyễn Thị Thủy


MỤC LỤC
GIỚI THIỆU ĐỀ TÀI .....................................................................................................................10
1.1. Lý do chọn đề tài ................................................................................................................... 10
1.2. Mục đích nghiên cứu. ............................................................................................................ 11
1.3. Bố cục của nội dung đồ án .................................................................................................... 12
CHƯƠNG 1
TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM
1.1 Khái niệm .............................................................................................................................. 1
1.1.1

Khái niệm phần mềm(software) .................................................................................... 1

1.1.2

Khái niệm kiểm thử phần mềm ..................................................................................... 1

1.2 Các kĩ thuật kiểm thử phần mềm........................................................................................... 4

1.2.1

Kiểm thử tĩnh – Static testing ........................................................................................ 4

1.2.2

Kiểm thử động – Dynamic testing ................................................................................. 5

1.3 Phương pháp kiểm thử phần mềm ......................................................................................... 5
1.3.1

Kiểm thử hộp đen – Black box testing .......................................................................... 6

1.3.2

Kiểm thử hộp trắng – White box testing ....................................................................... 8

1.3.3

Kiểm thử hộp xám – Gray box testing........................................................................... 9

1.4 Mục tiêu kiểm thử ............................................................................................................... 10
1.5 Vòng đời kiểm thử .............................................................................................................. 10
1.6 Tiến trình kiểm thử .............................................................................................................. 11
1.7 Nguyên tắc cơ bản của kiểm thử phần mềm ....................................................................... 11
1.8 Vai trò kiểm thử .................................................................................................................. 12
1.9 Các ý tưởng không đúng về kiểm thử ................................................................................. 12
1.10 Các hạn chế của việc kiểm thử ............................................................................................ 13
CHƯƠNG 2
TỔNG QUAN VỀ CÁC CẤP ĐỘ KIỂM THỬ

2.1 Mô hình phát triển chữ V .................................................................................................... 14
2.2 Các mức độ kiểm thử ........................................................................................................... 15
2.2.1 Kiểm thử đơn vị - Unit testing ....................................................................................... 15
2.2.2 Kiểm thử tích hợp – Integration testing ......................................................................... 16
2.2.3 Kiểm thử hệ thống – System testing ............................................................................... 18
2.2.4

Kiểm thử chấp nhận hệ thống – Acceptance testing .................................................... 20

2.3 Lỗi dữ liệu .............................................................................................................................. 20
2.3.1 Vòng đời của lỗi .............................................................................................................. 21


2.3.2 Dạng của lỗi ................................................................................................................... 23
2.3.3

Trạng thái của lỗi ......................................................................................................... 24

2.4 Các loại test ......................................................................................................................... 25
2.4.1 Kiểm tra cài đặt – Installation testing.............................................................................. 25
2.4.2 Kiểm tra Smoke – Smoke testing .................................................................................... 25
2.4.3

Kiểm tra chức năng – Functional testing ..................................................................... 25

2.4.4

Kiểm tra hồi quy - Regression testing ......................................................................... 25

2.4.5 Kiểm tra chấp nhận – Acceptance testing ....................................................................... 26

2.4.6 Kiểm tra Alpha ................................................................................................................ 26
2.4.7 Kiểm tra Beta .................................................................................................................. 26
2.4.8 Kiểm tra hiệu năng .......................................................................................................... 27
2.4.9 Kiểm tra bảo mật ............................................................................................................. 27
2.4.10 Kiểm tra tính khả dụng .................................................................................................. 28
CHƯƠNG 3
XÂY DỰNG QUY TRÌNH KIỂM THỬ WEBSITE
3.1 Kiểm thử ứng dụng website ................................................................................................... 29
3.1.1 Khái quát ......................................................................................................................... 29
3.1.2 Những công việc khi kiểm thử một ứng dụng Web ........................................................ 29
3.1.3 Các tiêu chí để kiểm thử ứng dụng Web ......................................................................... 31
3.1.4Giới thiệu một số công cụ hỗ trợ kiểm thử ứng dụng Web .............................................. 32
3.1.5 Những loại kiểm thử trong kiểm thử ứng dụng Web ...................................................... 33
3.2 Quy trình kiểm thử website .................................................................................................... 36
3.2.1 Quy trình kiểm thử mơ hình thác đổ ............................................................................... 36
3.2.2 Quy trình kiểm thử phần mềm STLC[7] ......................................................................... 37
3.2.3 Xây dựng quy trình kiểm thử Web ...................................................................................... 38
CHƯƠNG 4
KIỂM THỬ HỆ THỐNG QUẢN LÝ CÁC ĐỀ TÀI NGHIÊN CỨU KHOA HỌC VIỆN
KHOA HỌC GIÁO DỤC VIỆT NAM
4.1 Giới thiệu hệ thống................................................................................................................. 45
4.2 Phương pháp kiểm thử áp dụng cho đồ án Kiểm thử hệ thống quản lý các đề tài nghiên cứu
khoa học Viện khoa học giáo dục Việt Nam................................................................................ 48
4.3 Công cụ kiểm thử ................................................................................................................... 48
4.4 Kế hoạch triển khai ................................................................................................................ 51
4.4.1 Kế hoạch tổng thể............................................................................................................ 51
4.4.2 Các kiểu kiểm thử ........................................................................................................... 52


4.4.3 Điều kiện thực hiện test/ kết thúc test ............................................................................. 60

4.4.4 Đánh giá rủi ro ................................................................................................................ 61
4.5 Thực hiện test ......................................................................................................................... 61
4.5.1 Module quản lý danh mục chung chuyên ngành ............................................................. 61
4.5.2 Module quản lý danh mục chung học hàm ..................................................................... 63
4.5.3 Module quản lý danh mục chung học vị ......................................................................... 65
4.5.4 Test chức năng ................................................................................................................ 67
4.5.5 Test phi chức năng .......................................................................................................... 71
4.5.6 Kiểm thử bảo mật hệ thống quản lý các đề tài nghiên cứu khoa học Viện khoa học giáo
dục Việt Nam ........................................................................................................................... 79
TÀI LIỆU THAM KHẢO ..............................................................................................................83


DANH MỤC THUẬT NGỮ VÀ TỪ VIẾT TẮT
Thuật ngữ/Từ viết tắt
IEEE

Ý nghĩa
Institute

of

Electrical

Ghi chú
and

Electronic Engineers
Test case

Trường hợp kiểm thử


CSS

Cascading Style Sheets

CSDL

Cơ sở dữ liệu

Test

Kiểm thử

DMS

Database Management System

STLC

Software Test Life Cycle

CAPTCHA

Completely Automated Public
Turing test to tell Computers and
Humans Apart

W3C

World Wide Web Consutirum



DANH MỤC HÌNH VẼ
Hình 1.1.Phân loại theo kĩ thuật kiểm thử....................................................... 6
Hình 2.1.Mơ hình phát triển chữ V ............................................................... 14
Hình 4.1. Hình ảnh lỗi chức năng của quản lý danh mục chuyên ngành ....... 63
Hình 4.2. Hình ảnh lỗi chức năng của quản lý danh mục học hàm................ 65
Hình 4.3. Hình ảnh lỗi chức năng của quản lý danh mục học vị ................... 66
Hình 4.4. Hình ảnh test chức năng đăng kí đề tài nghiên cứu ....................... 67
Hình 4.5. Hình ảnh test chức năng đăng nhập............................................... 67
Hình 4.6. Hình ảnh test chức năng cập nhật thông tin cá nhân: Thông tin cá
nhân ............................................................................................................. 68
Hình 4.7. Hình ảnh test chức năng cập nhật thông tin cá nhân: Năng lực thành
tựu, lý lịch khoa học ..................................................................................... 68
Hình 4.8. Hình ảnh test chức năng thẩm định ............................................... 69
Hình 4.9. Hình ảnh test chức năng quản lý danh mục ................................... 69
Hình 4.10. Hình ảnh test chức năng dowload biểu mẫu ................................ 70
Hình 4.11. Quy trình nghiệp vụ tổng thể hoạt động quản lý nghiên cứu khoa
học tại Viện khoa học giáo dục Việt Nam .................................................... 70
Hình 4.12. Test quy trình nghiệp vụ nghiệm thu đề tài nghiên cứu khoa học 71
Hình 4.13. Kết quả thực thi test 10 user trên trang chủ ................................. 74
Hình 4.14. Kết quả thực thi test 1000 user trên trang chủ ............................. 75
Hình 4.15. Kết quả thực thi test 2000 user trên trang chủ ............................. 75
Hình 4.16. Kết quả thực thi test 50 user trên quản lý cán bộ ......................... 76
Hình 4.17. Kết quả thực thi test 1000 user trên quản lý cán bộ ..................... 77
Hình 4.18. Kết quả thực thi test 2000 user trên quản lý cán bộ ..................... 77
Hình 4.19.Hình ảnh đưa url website vào cơng cụ test bảo mật ...................... 79
Hình 4.20. Hình ảnh kết quả test bảo mật ..................................................... 80
Hình 4.21. Hình ảnh các lỗi bảo mật ............................................................ 80



DANH MỤC BẢNG
Bảng 2.1. Dạng chung của lỗi[3] .................................................................. 23
Bảng 2.2. Dạng lỗi nguy hại[3] .................................................................... 24
Bảng 2.3. Trạng thái của lỗi ......................................................................... 24
Bảng 4.1. Phương pháp kiểm thử ................................................................. 48
Bảng 4.2. Kế hoạch tổng thể......................................................................... 51
Bảng 4.3. Phân công nhân lực ...................................................................... 52
Bảng 4.4. Kiểm thử cấu trúc ......................................................................... 53
Bảng 4.5. Kiểm thử chức năng thông qua giao diện ..................................... 53
Bảng 4.6. Kiểm thử giao diện người dùng .................................................... 54
Bảng 4.7. Kiểm thử chu trình nghiệp vụ ....................................................... 56
Bảng 4.8. Kiểm thử bảo mật và kiểm soát sự truy cập .................................. 57
Bảng 4.9. Kiểm thử hiệu năng ...................................................................... 59
Bảng 4.10. Kiểm thử hồi quy........................................................................ 60
Bảng 4.11.Một số test case thêm chuyên ngành ở mức kiểm thử thành phần 62
Bảng 4.12. Một số test case sửa chuyên ngành ở mức kiểm thử thành phần . 62
Bảng 4.13. Một số test case xóa chuyên ngành ở mức kiểm thử thành phần . 63
Bảng 4.15. Một số test case sửa học hàm ở mức kiểm thử thành phần.......... 64
Bảng 4.16. Một số test case xóa học hàm ở mức kiểm thử thành phần ......... 64
Bảng 4.17. Một số test case thêm học vị ở mức kiểm thử thành phần ........... 65
Bảng 4.18. Một số test case sửa học vị ở mức kiểm thử thành phần ............. 66
Bảng 4.19. Một số test case xóa học vị ở mức kiểm thử thành phần ............. 66
Bảng 4.20. Test case của bài toán ................................................................. 73


DANH MỤC SƠ ĐỒ
Sơ đồ 2.1.Các giai đoạn kiểm thử phần mềm................................................ 15
Sơ đồ 2.2. Quá trình bắt lỗi[3] ...................................................................... 22
Sơ đồ 3.1. Cấu trúc của kiểm định chất lượng phần mềm[3] ........................ 30

Sơ đồ 3.2. Quy trình mơ hình thác đổ[5] ...................................................... 36
Sơ đồ 3.3. Quy trình kiểm thử Website......................................................... 39


GIỚI THIỆU ĐỀ TÀI
1.1. Lý do chọn đề tài
Trong thế giới điện toán ngày nay, các ứng dụng Web đã thực sự phát triển
rất mạnh, nhanh. Hàng loạt công nghệ mới ra đời để đáp ứng những đòi hỏi
của những người sử dụng muốn có mỗi khi họ bật trình duyệt Web của mình
lên. Gần như những gì mà phần mềm truyền thống có thể làm được thì Web
cũng làm được. Từ nghe nhạc, xem phim, đọc báo, cả những cơng việc mà
trước đây chỉ có phần mềm truyền thống mới có thể thực hiện được như soạn
thảo văn bản, các sản phầm chế bản văn phòng, chuyển đổi định dạng các file,
hay thậm chí cả những bài tốn quản lý phức tạp của các doanh nghiệp cũng
có thể triển khai trên Web. Rõ ràng, Web là tương lai của điện toán hiện
đại.Thế nhưng để tạo được ra những ứng dụng Web tuyệt vời như vậy thì
đằng sau đó là một loạt những cơng đoạn, thao tác từ phân tích thiết kế, lập
trình, kiểm thử, định giá.
Ở Việt Nam khái niệm về phần mềm kiểm thử tuy không mới mẻ nhưng cũng
chưa hoàn toàn quen thuộc. Thực tế cho thấy số lượng đơn vị chuyên sâu về
các tester chuyên nghiệp và phần mềm kiểm thử khơng nhiều, chưa có thể đáp
ứng đủ cho các dự án doanh nghiệp. Dù biết cơng tác kiểm thử đảm bảo chất
lượng giữ vai trị quan trọng mang lại thành công của các dự án phần mềm
song không phải công ty nào cũng đủ chuyên mơn và điều kiện cho phép để
thực hiện quy trình. Tuy nhiên về lợi thế cạnh tranh như: nguồn nhân lực rẻ
có sẵn trình độ kỹ thuật, đầu tư phát triển cơ sở hạ tầng nhanh, môi trường
đầu tư an toàn, chất lượng dịch vụ nổi trội và tỉ lệ thay đổi nhân sự thấp. Việt
nam có thể hy vọng và tin tưởng vào khả năng trở thành đối tác kinh doanh
đầy tiềm năng và hấp dẫn trong nghành kiểm thử phần mềm.
Kiểm thử phần mềm là một thành phần quan trọng trong qui trình phát triển

phần mềm. Nó đóng một vai trò quan trọng trong việc kiểm định chất lượng
của phần mềm, đảm bảo rằng phần mềm tạo ra có chạy đúng với yêu cầu của


khách hàng hay khơng, có xảy ra những sai sót mà nó khác với bảng phân tích
thiết kế ban đầu khơng.
Bất kỳ một tổ chức nào cũng có một sự tin cậy của riêng mình vào
việc phát triển của những trình ứng dụng để phục vụ cho những việc cần
thiết như đáp ứng được những chức năng của khách hàng đưa ra, để cho
khách hàng tỏ ra hài lòng về chất lượng của những trình ứng dụng và những
địi hỏi về những chức năng, điều kiện được đáp ứng đầy đủ, và không xảy
ra sự tuỳ tiện trong sản phẩm. Một thành phần chủ yếu cho sự thành công
này là tính hiệu quả, quy trình kiểm tra phải có tính kỷ luật tiến tới sự xác
minh của những trình ứng dụng đã hồn thành, q trình kiểm tra phải có
tính kỷ kuật để xem xét những trình ứng dụng đã hồn thành đến mức độ
nào, đó là sự phù hợp thích đáng hay là vượt ra khỏi những mong đợi trong
đề án. Lịch trình làm việc khơng đúng, thường xun thay đổi những vấn đề
chung của trình ứng dụng. Đó là những yếu tố trong quá trình kiểm thử.
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 để 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 “Xây dựng
quy trình kiểm thử website và áp dụng kiểm thử hệ thống Quản lý đề tài
nghiên cứu Khoa học Viện Khoa học giáo dục Việt Nam “ làm đề tài cho đồ
án tốt nghiệp đại học của mình.
1.2. Mục đích nghiên cứu.
 Giúp cho người sử dụng 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.
 Tìm hiểu đánh giá các nguyên lý phương pháp tiếp cận kiểm thử
ứng dụng web.

Đối tượng phạm vi nghiên cứu
 Đặc tảquy trình kiểm thử ứng dụng web.


 Kiểm thử được hệ thống Quản lý các đề tài nghiên cứu Khoa học
Viện Khoa học giáo dục Việt Nam.
1.3. Bố cục của nội dung đồ án
Đồ án được chia thành các chương với nội dung như sau:
 Giới thiệu đề tài: Phần này trình bày về lý do chọn đề tài, mục đích
nghiên cứu, đối tượng phạm vi nghiên cứu và bố cục nội dung của đồ án.
 Chương 1: 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 kỹ thuật kiểm thử,
các phương pháp kiểm thử, các mục tiêu kiểm thử phần mềm, giai đoạn,
vòng đời kiểm thử…
 Chương 2: Tổng quan về các cấp độ kiểm thử: Chương này trình bày
các mức độ của kiểm thử, lỗi dữ liệu, mơ hình chữ V và các loại test.
 Chương 3: Xây dựng quy trình kiểm thử Website: Chương này trình
bày khái quát kiểm thử ứng dụng Web, những công việc của kiểm thử ứng
dụng Web và xây dựng quy trình kiểm thử Website.
 Chương 4: Kiểm thử hệ thống quản lý các đề tài nghiên cứu khoa học
Viện khoa học giáo dục Việt Nam


1

CHƯƠNG 1
TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM
1.1Khái niệm
1.1.1 Khái niệm phần mềm(software)
Phần mềm theo nghĩa thông thường là những chương trình, ứng dụng,

website được viết, cài đặt và thực thi trên mơi trường điện tốn
(computing) như: máy tính (computer), điện thoại di động (mobile phone),
các hệ thống nhúng (firmware, …). Ngoài những điểm trên, khái niệm
software trong Kiểm thử phần mềm còn mở rộng ra bao gồm cả các tài
liệu (documentation), dữ liệu (data) phù hợp và liên quan đến hoạt động
của hệ thống điện tốn. Ở đây, có nhiều người hiểu chưa đầy đủ rằng
Kiểm thử phần mềm chỉ là kiểm tra các chức năng của phần mềm đó.
Phần mềm là một (bộ) chương trình được cài đặt trên máy tính nhằm thực
hiện một nhiệm vụ tương đối độc lập, phục vụ cho việc ứng dụng cụ thể
việc quản lý hoạt động của máy tính hoặc áp dụng máy tính trong các hoạt
động kinh tế, quốc phịng, văn hóa, giáo dục, giải trí,..
Những phần mềm này được gọi chung là “Phần mềm được kiểm thử”
(software under test).
Ví dụ: Khi kiểm thử (test) một phần mềm kế tốn thì Kiểm thử viên
(tester) phải kiểm tra các chức năng có hoạt động đúng với thiết kế khơng,
dữ liệu có đúng và đảm bảo không, các tài liệu hướng dẫn kèm theo có
chính xác và đúng chuẩn khơng, …
1.1.2 Khái niệm kiểm thử phần mềm
Kiểm thử là việc kiểm tra kết quả thực hiện của chương trình máy tính
xem có đúng với các mục tiêu đã đặt ra với nó khơng thông qua việc thực
hiện ở một số mẫu thử.


2
Kiểm thử là việc tìm ra những lỗi trong bản thân phần mềm, việc kiểm thử
này trong phần mềm sẽ biểu thị ra những thiếu sót mà ta có thể nhận thấy
trong hành vi của phần mềm, và tìm ra những phần không tuân theo quy
định và đi lệch ra khỏi những yêu cầu của phần mềm.
Theo một số nhà nghiên cứu thì kiểm thử phần mềm được định nghĩa như
sau:

• Dijkstra: Kiểm thử sẽ hiện thị những lỗi hiện có, nhưng khơng
hiển thị lỗi chưa thấy.
• Beizer:
Định luật 1: Mọi phương pháp bạn sử dụng để ngăn ngừa hoặc tìm thấy
lỗi bỏ đi một phần lỗi rắc rối, cái mà những phương thức cần.
Định luật 2: Phần mềm phức tạp lớn hơn những giới hạn khả năng quản
lý. Những người kiểm thử không tốt hơn trong thiết kế lỗiso với những lập
trình viên kiểm thử trong thiết kế mã.
• IEEE: Kiểm thử là tiến trình vận hành hệ thống hoặc thành
phần dưới những điều kiện xác định, quan sát hoặc ghi nhận
kết quả và đưa ra đánh giá về hệ thống hoặc thành phần đó.
• Myers: Kiểm thử là tiến trình thực thi chương trình với mục
đích tìm thấy lỗi.(The art of software testing)
Giữa kiểm thử và gỡ rối có sự khác biệt: Kiểm thử nhằm phát hiện ra
lỗi trong khi đó gỡ rối là việc xác định bản chất lỗi và định lỗi trong chương
trình, sau đó tiến hành sữa lỗi.
Kiểm thử phần mềm (software testing) là hoạt động nhằm tìm kiếm,
phát hiện các lỗi của phần mềm được được kiểm thử về thiết kế, mã
nguồn, chức năng, dữ liệu, bảo mật, thân thiện với người dùng, tài liệu
kèm theo, môt trường hoạt động, tốc độ hoạt động, khả năng tải của hệ
thống, … Thường được chia thành các nhóm là Nhóm thuộc về chức


3
năng

(Functionality),

Nhóm khơng


thuộc

chức

năng

(Non-

Functionality), Nhóm thuộc về cấu trúc (Structural) và Nhóm liên quan
đến các thay đổi (Change Related). (Tham khảo thêm ISO9126
Kiểm thử phần mềm còn hướng đến mục tiêu xa hơn mà tơi gọi nơm na
là “phịng bệnh hơn chữa bệnh”. Tức là nâng cao khả năng kiểm soát và
hạn chế các lỗi xảy ra khi phát triển phần mềm ngay từ ban đầu, chứ
không đơn thuần chỉ là việc tìm những lỗi sẵn có khi nhóm phát triển
đã đưa ra những phiên bản cụ thể của phần mềm.
Kiểm thử phần mềm là một ngành không quá mới tại Việt Nam. Tuy
nhiên, hình thức tồn tại chủ yếu của Kiểm thử phần mềm tại Việt Nam
là nằm phụ thuộc trong một nhóm phát triển phần mềm (vừa lập trình,
vừa kiểm thử bởi một nhóm phát triển). Vấn đề đảm bảo chất lượng
phần mềm cũng chưa được các công ty phát triển phần mềm trong nước
coi trọng đúng mức. Do đó, mặc dù đã có ở Việt Nam từ lâu, nhưng chỉ
một vài năm gần đây, Kiểm thử phần mềm chuyên nghiệp mới được
biết đến như một ngành riêng biệt với tiềm năng phát triển lớn. Công ty
LogiGear Việt Nam hiện là công ty hàng đầu Việt Nam trong lĩnh vực
kiểm thử phần mềm chuyên nghiệp.
Kiểm thử phần mềm là quá trình khảo sát một hệ thống hay thành phần
dưới những điều kiện xác định, quan sát và ghi lại các kết quả, và đánh
giá một khía cạnh nào đó của hệ thống hay thành phần đó. (Theo Bảng
chú giải thuật ngữ chuẩn IEEE của Thuật ngữ kỹ nghệ phần mềmIEEE Standard Glossary of Software Engineering Terminology).
Kiểm thử phần mềm là q trình thực thi một chương trình với mục

đích tìm lỗi. (Theo “The Art of Software Testing” – Nghệ thuật kiểm
thử phần mềm).
Kiểm thử phần mềm là hoạt động khảo sát thực tiễn sản phẩm hay dịch
vụ phần mềm trong đúng môi trường chúng dự định sẽ được triển khai


4
nhằm cung cấp cho người có lợi ích liên quan những thông tin về chất
lượng của sản phẩm hay dịch vụ phần mềm ấy. Mục đích của kiểm thử
phần mềm là tìm ra các lỗi hay khiếm khuyết phần mềm nhằm đảm bảo
hiệu quả hoạt động tối ưu của phần mềm trong nhiều ngành khác nhau.
(Theo Bách khoa toàn thư mở Wikipedia).
Có thể định nghĩa một cách dễ hiểu như sau: Kiểm thử phần mềm là
một tiến trình hay một tập hợp các tiến trình được thiết kế để đảm bảo
mã hóa máy tính thực hiện theo cái mà chúng đã được thiết kế để làm,
và không thực hiện bất cứ thứ gì khơng mong muốn. Đây là một pha
quan trọng trong quá trình phát triển hệ thống, giúp cho người xây
dựng hệ thống và khách hàng thấy được hệ thống mới đã đáp ứng yêu
cầu đặt ra hay chưa?
Kiểm thử được xem là quy trình cố gắng tìm kiếm các lỗi của phần
mềm theo tinh thần hủy diệt.
1.2Các kĩ thuật kiểm thử phần mềm
Có 2 kĩ thuật kiểm thử chính là: Kiểm thử tĩnh và Kiểm thử động.
1.2.1 Kiểm thử tĩnh – Static testing
Là phương pháp thử phần mềm đòi hỏi phải duyệt lại các yêu cầu và
các đặc tả bằng tay, thông qua việc sử dụng giấy, bút để kiểm tra logic,
lần từng chi tiết mà không cần chạy chương trình. Kiểu kiểm thử này
thường được sử dụng bởi chuyên viên thiết kế người mà viết mã lệnh
một mình.
Kiểm thử tĩnh cũng có thể được tự động hóa. Nó sẽ thực hiện kiểm tra

tồn bộ bao gồm các chương trình được phân tích bởi một trình thơng
dịch hoặc biên dịch mà xác nhận tính hợp lệ về cú pháp của chương
trình.


5
1.2.2 Kiểm thử động – Dynamic testing
Là phương pháp thử phần mềm thơng qua việc dùng máy chạy chương
trình để điều tra trạng thái tác động của chương trình. Đó là kiểm thử
dựa trên các ca kiểm thử xác định bằng sự thực hiện của đối tượng
kiểm thử hay chạy các chương trình.
Kiểm thử động kiểm tra cách thức hoạt động động của mã lệnh, tức là
kiểm tra sự phản ứng vật lý từ hệ thống tới các biến luôn thay đổi theo
thời gian. Trong kiểm thử động, phần mềm phải thực sự được biên dịch
và chạy. Kiểm thử động thực sự bao gồm làm việc với phần mềm, nhập
các giá trị đầu vào và kiểm tra xem liệu đầu ra có như mong muốn hay
khơng. Các phương pháp kiểm thử động gồm có kiểm thử Unit – Unit
Tests, Kiểm thử tích hợp – Intergration Tests, Kiểm thử hệ thống –
System Tests, và Kiểm thử chấp nhận sản phẩm – Acceptance Tests.
1.3Phương pháp kiểm thử phần mềm
Phương pháp kiểm thử là các cách thức cụ thể để thực hiện công việc
kiểm thử phần mềm. Tùy theo mục đích kiểm thử, chức năng được
kiểm thử mà có các phương pháp khác nhau. Các phương pháp này
được áp dụng vào các mức độ kiểm thử (test level) dựa trên mục đích
kiểm thử, phần mềm được kiểm thử, thời gian dành cho việc kiểm thử,
yêu cầu của dự án, khả năng tài chính của cơng ty cũng như năng lực
chun mơn của nhóm kiểm thử.
Có nhiều phương pháp khác nhau. Ở đây xin giới thiệu một số phương
pháp phổ biến và thường được áp dụng. Ba trong số những phương
pháp kiểm thử thông dụng nhất bao gồm: Kiểm thử hộp đen, Kiểm thử

hộp trắng, và Kiểm thử hộp xám.


6

Hình 1.1.Phân loại theo kĩ thuật kiểm thử
1.3.1 Kiểm thử hộp đen – Black box testing
Một trong những chiến lược kiểm thử quan trọng là kiểm thử hộp đen,
hướng dữ liệu, hay hướng vào/ra. Kiểm thử hộp đen xem chương trình
như là một “hộp đen”. Mục đích của bạn là hồn tồn khơng quan tâm
về cách cư xử và cấu trúc bên trong của chương trình. Thay vào đó, tập
trung vào tì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ó.
Theo hướng tiếp cận này, dữ liệu kiểm tra được lấy chỉ từ các đặc tả.
 Các lỗi thường gặp trong kiểm thử hộp đen:
-

Lỗi chức năng thiếu hoặc không đúng,

-

Lỗi giao diện

-

Lỗi cấu trúc dữ liệu trong truy cập cơ sở dữ liệu bên ngoài

-

Lỗi khởi tạo hoặc kết thúc


-

Và nhiều lỗi khác

-

Kiểm thử hộp đen áp dụng cho các giai đoạn sau của kiểm thử

 Các phương pháp kiểm thử hộp đen
- Phân lớp tương đương – Equivalence partitioning.
- Phân tích giá trị biên – Boundary value analysis.


7
- Kiểm thử mọi cặp – All-pairs testing.
- Kiểm thử fuzz – Fuzz testing.
- Kiểm thử dựa trên mơ hình – Model-based testing.
- Ma trận dấu vết – Traceability matrix.
- Kiểm thử thăm dò – Exploratory testing.
- Kiểm thử dựa trên đặc tả – Specification-base testing.
Kiểm thử dựa trên đặc tả tập trung vào kiểm tra tính thiết thực của phần
mềm theo những u cầu thích hợp. Do đó, kiểm thử viên nhập dữ liệu
vào, và chỉ thấy dữ liệu ra từ đối tượng kiểm thử. Mức kiểm thử này
thường yêu cầu các ca kiểm thử triệt để được cung cấp cho kiểm thử
viên mà khi đó có thể xác minh là đối với dữ liệu đầu vào đã cho, giá trị
đầu ra (hay cách thức hoạt động) có giống với giá trị mong muốn đã
được xác định trong ca kiểm thử đó hay khơng. Kiểm thử dựa trên đặc
tả là cần thiết, nhưng không đủ để để ngăn chặn những rủi ro chắc chắn.
Ưu, nhược điểm: Kiểm thử hộp đen khơng có mối liên quan nào tới mã

lệnh, và kiểm thử viên chỉ rất đơn giản tâm niệm là: một mã lệnh phải
có lỗi. Sử dụng nguyên tắc “ Hãy đòi hỏi và bạn sẽ được nhận”, những
kiểm thử viên hộp đen tìm ra lỗi mà những lập trình viên đã khơng tìm
ra. Nhưng, mặt khác, người ta cũng nói kiểm thử hộp đen “giống như là
đi trong bóng tối mà khơng có đèn vậy”, bởi vì kiểm thử viên không
biết các phần mềm được kiểm tra thực sự được xây dựng như thế nào.
Đó là lý do mà có nhiều trường hợp mà một kiểm thử viên hộp đen viết
rất nhiều ca kiểm thử để kiểm tra một thứ gì đó mà đáng lẽ có thể chỉ
cần kiểm tra bằng 1 ca kiểm thử duy nhất, và/hoặc một số phần của
chương trình khơng được kiểm tra chút nào. Do vậy, kiểm thử hộp đen
có ưu điểm của “một sự đánh giá khách quan”, mặt khác nó lại có
nhược điểm của “thăm dò mù”.


8
1.3.2 Kiểm thử hộp trắng – White box testing
Là một chiến lược kiểm thử khác, trái ngược hoàn toàn với kiểm thử
hộp đen, kiểm thử hộp trắng hay kiểm thử hướng logic cho phép bạn
khảo sát cấu trúc bên trong của chương trình. Chiến lược này xuất phát
từ dữ liệu kiểm thử bằng sự kiểm thử tính logic của chương trình. Kiểm
thử viên sẽ truy cập vào cấu trúc dữ liệu và giải thuật bên trong chương
trình (và cả mã lệnh thực hiện chúng).

 Các phương pháp kiểm thử hộp trắng:
- Kiểm thử giao diện lập trình ứng dụng - API testing (application
programming interface): là phương pháp kiểm thử của ứng dụng
sử dụng các API công khai và riêng tư.
- Bao phủ mã lệnh – Code coverage: tạo các kiểm tra để đáp ứng
một số tiêu chuẩn về bao phủ mã lệnh.
- Các phương pháp gán lỗi – Fault injection.

- Các phương pháp kiểm thử hoán chuyển – Mutation testing
methods.
- Kiểm thử tĩnh – Static testing: kiểm thử hộp trắng bao gồm mọi
kiểm thử tĩnh.
Phương pháp kiểm thử hộp trắng cũng có thể được sử dụng để đánh giá
sự hồn thành của một bộ kiểm thử mà được tạo cùng với các phương
pháp kiểm thử hộp đen. Điều này cho phép các nhóm phần mềm khảo
sát các phần của 1 hệ thống ít khi được kiểm tra và đảm bảo rằng
những điểm chức năng quan trọng nhất đã được kiểm tra.
Ưu điểm nhược điểm:
- Ưu điểm là đảm bảo tất cả câu lệnh trong chương trình đều được thực
thi ít nhất một lần giúp tránh lỗi tiềm ẩn, tối ưu hóa mã nguồn. Ngồi ra
do người thực hiện việc kiểm thử hiểu về mã nguồn, cấu trúc thuật


9
tốn, kiến trúc của chương trình nên có thể kiểm thử một cách kỹ lưỡng
chương trình.
- Tuy nhiên phương pháp cũng có nhược điểm như địi hỏi người thực
hiện phải hiểu về mã nguồn, cấu trúc thuật toán, kiến trúc của chương
trình. Áp dụng phương pháp khiến tốn kém chi phí, nhân lực và thời
gian khi thực hiện do yêu cầu kỹ thuật khá phức tạp. Ngoài ra để kiểm
thử tất cả các đường dẫn trong chương trình là việc khơng khả thi và
nếu thay đổi cài đặt thuật tốn trong mã nguồn thì phải thiết kế lại ca
kiểm thử. Một nhược điểm nữa của phương pháp là khi thực hiện
khơng đảm bảo các chức năng của chương trình hoạt động đúng với tài
liệu đặc tả.
1.3.3 Kiểm thử hộp xám – Gray box testing
Kiểm thử hộp xám là hình thức “lai” giữa Kiểm thử hộp đen và Kiểm
thử hộp trắng. Trong kiểm thử hộp đen, người kiểm thử kiểm thử các

hạng mục mà không cần biết cấu trúc bên trong của nó, cịn trong kiểm
thử hộp trắng thì Tester biết được cấu trúc bên trong của chương trình.
Kiểm thử hộp xám địi hỏi phải có sự truy cập tới cấu trúc dữ liệu và
giải thuật bên trong cho những mục đích thiết kế các ca kiểm thử,
nhưng là kiểm thử ở mức người sử dụng hay mức hộp đen. Việc thao
tác tới dữ liệu đầu vào và định dạng dữ liệu đầu ra là không rõ ràng,
giống như một chiếc “hộp xám”, bởi vì đầu vào và đầu ra rõ ràng là ở

bên ngoài “hộp đen” mà chúng ta vẫn gọi về hệ thống được kiểm tra.
Sự khác biệt này đặc biệt quan trọng khi quản lý kiểm thử tích hợp –
Intergartion testing giữa 2 modun mã lệnh được viết bởi hai chuyên
viên thiết kế khác nhau, trong đó chỉ giao diện là được đưa ra để kiểm
thử. Kiểm thử hộp xám có thể cũng bao gồm cả thiết kế đối chiếu để
quyết định, ví dụ, giá trị biên hay thông báo lỗi.


10
Được gọi là kiểm thử hộp xám vì trong chương trình phần mềm, mắt
của người kiểm thử giống như hộp xám/bán trong suốt - nhìn qua hộp
này ta chỉ có thể thấy được một phần.
Ưu nhược điểm: Ưu điểm và nhược điểm của Kiểm thử Hộp xám được
quyết định dựa vào sự kết hợp các ưu điểm của kiểm thử hộp đen và
kiểm thử hộp trắng.
1.4Mục tiêu kiểm thử
Bằng việc kiểm thử sẽ tìm ra được những lỗi trong phần mềm
(Myers,1979)và thiết lập chất lượng của phần mềm(Hetzel,1988)
Một trường hợp kiểm thử tốt là một trường hợp có khả năng lớn trong
việc tìm ra những lỗi chưa được phát hiện.
Một trường hợp kiểm thử không tốt ( không thành công) là một trường
hợp mà khả năng tìm thấy những lỗi chưa biết đến là rất ít.

Mục tiêu của kiểm thử phần mềm là thiết kế những trường hợp kiểm
thử để có thể phát hiện một cách có hệ thống những loại lỗi khác nhau
và thực hiện việc đó với lượng thời gian và tài ngun ít nhất có thể.
Việc kiểm thử thành cơng khi bạn tìm được ít nhất một lỗi, và đưa ra sự
đánh giá với độ tin cậy lớn.
Phát hiện càng nhiều lỗi càng tốt trong thời gian kiểm thử xác định
trước.
Chứng minh rằng sản phẩm phần mềm phù hợp với các đặc tả yêu cầu
của nó.
Tạo các testcase chất lượng cao, thực hiện kiểm thử hiệu quả và tạo ra
các báo cáo vấn đề đúng và hữu dụng.
1.5Vòng đời kiểm thử
Vòng đời của kiểm thử bắt đầu từ việc lập kế hoạch kiểm thử. Sau đó là
ghi ra các ý tưởng các trường hợp kiểm thử. Từ các trường hợp kiểm thử
này đưa ra tất cả các trường hợp kiểm thử và các kịch bản kiểm thử. Sử


11
dụng các thủ tục hay kịch bản kiểm thử này, người kiểm thử có thể phát
họa tồn bộ kiểm thử hệ thống hay kiểm thử tích hợp. Kết quả kiểm thử sẽ
được đánh giá bởi các tiêu chí kiểm thử đặt ra ban đầu. Mơ hình kiểm thử
là một dãy các kế hoạch, các trường hợp kiểm thử và các thủ tục kiểm thử.
Trong tiến trình bảo trì và nâng cấp dự án, thì kiểm thử đóng vai trị quan
trọng.
1.6Tiến trình kiểm thử
Tiến trình kiểm thử thơng thường bao gồm những bước sau:
 Thiết kế các ca kiểm thử
 Tạo dữ liệu kiểm thử: trong bước này chúng ta kiểm thử tất cả các
dữ liệu vào là cần thiết mà không thể thực hiện kiểm thử”vét cạn”
và chọn tập các dữ liệu thử đại diện từ miền dữ liệu vào dựa trên các

tiêu chuẩn chọn dữ liệu thử.
 Thực thi chương trình trên dữ liệu thử:
o Cung cấp dữ liệu thử
o Thực thi
o Ghi nhận kết quả
 Quan sát kết quả kiểm thử: Bước này ta thực hiện trong hoặc sau khi
kiểm thử và sau đó ta so sánh kết quả kiểm thử với kết quả mong
đợi
1.7Nguyên tắc cơ bản của kiểm thử phần mềm
Để kiểm thử đạt hiệu quả thì khi tiến hành kiểm thử phần mềm cần phải tuân
thủ một số quy tắc sau:
Quy tắc 1: Một phần quan trọng của 1 ca kiểm thử là định nghĩa của đầu ra
hay kết quả mong muốn.
Quy tắc 2: Lập trình viên nên tránh tự kiểm tra chương trình của mình.
Quy tắc 3: Nhóm lập trình khơng nên kiểm thử chương trình của chính họ.
Quy tắc 4: Kiểm tra thấu đáo mọi kết quả của mỗi kiểm thử.


12
Quy tắc 5: Các ca kiểm thử phải được viết cho các trạng thái đầu vào không
hợp lệ và không mong muốn, cũng như cho các đầu vào hợp lệ và mong
muốn.
Quy tắc 6: Khảo sát 1 chương trình để xem liệu chương trình có thực hiện
cái mà nó cần thực hiện chỉ là 1 phần, phần còn lại là xem liệu chương trình
có thực hiện cái mà nó khơng cần phải thực hiện hay không.
Quy tắc 7: Tránh các ca kiểm thử “throwaway” trừ khi chương trình thực sự
là 1 chương trình “throwaway”.
Quy tắc 8: Khơng dự kiến kết quả của kiểm thử theo giả thiết ngầm là khơng
tìm thấy lỗi.
Quy tắc 9: Xác suất tồn tại lỗi trong 1 đoạn chương trình là tương ứng với số

lỗi đã tìm thấy trong đoạn đó.
Quy tắc 10: Kiểm thử là 1 nhiệm vụ cực kỳ sáng tạo và có tính thử thách trí
tuệ.
1.8Vai trị kiểm thử


Testing để tìm ra lỗi, ghi nhận các thơng tin về lỗi, nhưng khơng sữa

lỗi.


Testing giúp kiểm định phần mềm, đảm bảo rằng phần mềm “đủ tốt”

với độ rủi ro “thấp nhất” có thể.
1.9Các ý tưởng khơng đúng về kiểm thử
Ta có thể kiểm thử phần mềm đầy đủ, nghĩa là vét cạn mọi hoạt động kiểm
thử cần thiết
Ta có thể tìm tất cả lỗi nếu kỹ sư kiểm thử làm tốt công việc của mình.
Tạo các testcase tốt phải chứa rất nhiều các testcase để bao phủ rất nhiều
tình huống.
Testcase tốt ln là testcase có độ phức tạp cao.
Tự động kiểm thử có thể thay thế kỹ sư kiểm thử để kiểm thử phần mềm một
cách tốt đẹp.


13
Kiểm thử phần mềm thì đơn giản và dễ dàng. Ai cũng có thể làm, khơng cần
phải qua huấn luyện.
1.10


Các hạn chế của việc kiểm thử

Ta không thể chắc là các đặc tả phần mềm đều đúng 100%.
Ta không thể chắc rằng hệ thống hay tool kiểm thử là đúng.
Không có tool kiểm thử nào thích hợp cho mọi phần mềm.
Kỹ sư kiểm thử không chắc rằng họ hiểu đầy đủ về sản phẩm phần mềm.
Ta khơng bao giờ có đủ tài nguyên để thực hiện kiểm thử đầy đủ phần mềm.
Ta không bao giờ chắc rằng ta đạt đủ 100% hoạt động kiểm thử phần mềm.


×