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

(Luận văn thạc sĩ) các phương pháp đánh giá chất lượng phần mềm

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 (1.11 MB, 72 trang )

i

Số hóa bởi Trung tâm Học liệu – ĐHTN


ii

ĐẠI HỌC THÁI NGUYÊN
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THƠNG

NGUYỄN THỊ TÍNH

CÁC PHƢƠNG PHÁP
ĐÁNH GIÁ CHẤT LƢỢNG PHẦN MỀM

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

Thái Nguyên- 2016

Số hóa bởi Trung tâm Học liệu – ĐHTN


iii

LỜI CAM ĐOAN
Tơi xin cam đoan đây là cơng trình nghiên cứu của riêng tôi, số liệu và kết
quả nghiên cứu trong luận văn này là trung thực và không trùng lặp với các đề tài
khác. Tôi cũng xin cam đoan rằng mọi sự giúp đỡ cho việc thực hiện luận văn này
đã đƣợc cảm ơn và các thông tin trích dẫn trong luận văn đã đƣợc chỉ rõ nguồn gốc.
Học viên


Nguyễn Thị Tính

Số hóa bởi Trung tâm Học liệu – ĐHTN


iv

MỤC LỤC
LỜI CAM ĐOAN ....................................................................................................ii
MỤC LỤC ............................................................................................................. iv
MỤC LỤC HÌNH ẢNH ......................................................................................... vi
DANH MỤC BẢNG BIỂU ................................................................................... vii
ĐẶT VẤN ĐỀ...................................................................................................... viii
I.TÍNH CẤP THIẾT CỦA ĐỀ TÀI ...................................................................viii
II.MỤC TIÊU CỦA ĐỀ TÀI LUẬN VĂN .......................................................... ix
III.ĐỐI TƢỢNG VÀ PHẠM VI NGHIÊN CỨU ................................................ ix
IV.PHƢƠNG PHÁP NGHIÊN CỨU .................................................................. ix
V.KẾT QUẢ DỰ KIẾN ĐẠT ĐƢỢC ................................................................. ix
VI.CẤU TRÚC LUẬN VĂN ............................................................................... x
CHƢƠNG 1 QUI TRÌNH VÀ CHẤT LƢỢNG PHẦN MỀM ................................. 1
1.1 SẢN PHẨM VÀ CHẤT LƢỢNG PHẦN MỀM............................................. 1
1.1.1 Khái niệm về sản phẩm phần mềm ........................................................... 1
1.1.2 Khái niệm lỗi phần mềm .......................................................................... 3
1.1.3 Chi phí sửa lỗi .......................................................................................... 5
1.1.4 Khái niệm kiểm thử phần mềm................................................................. 6
1.1.5 Những khó khăn của kiểm thử phần mềm ................................................ 7
1.1.6 Kiểm thử trong quy trình phát triển phần mềm ......................................... 7
1.2 CHẤT LƢỢNG VÀ CÁC TIÊU CHÍ ĐÁNH GIÁ PHẦN MỀM ................. 11
1.2.1 Chất lƣợng phần mềm ............................................................................ 11
1.2.2 Các tiêu chí đánh giá .............................................................................. 12

1.3 QUY TRÌNH KIỂM THỬ PHẦN MỀM ...................................................... 13
1.4 TỰ ĐỘNG HÓA KIỂM THỬ ...................................................................... 14
CHƢƠNG 2 CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀM ................................... 16
2.1.NGUYÊN TẮC CƠ BẢN CỦA KIỂM THỬ PHẦN MỀM.......................... 16
2.1.1.Các nguyên tắc kiểm thử phần mềm ....................................................... 16
2.1.2. Luồng thông tin kiểm thử ...................................................................... 19

Số hóa bởi Trung tâm Học liệu – ĐHTN


v

2.1.3. Thiết kế trƣờng hợp kiểm thử ................................................................ 20
2.2.KIỂM THỬ HỘP ĐEN ................................................................................ 20
2.2.1. Phân hoạch tƣơng đƣơng ....................................................................... 21
2.2.2. Phân tích giá trị biên ............................................................................. 26
2.2.3. Kiểm thử giá trị đặc biệt ........................................................................ 28
2.2.4. Kỹ thuật đồ thị nhân quả ....................................................................... 29
2.3.KIỂM THỬ HỘP TRẮNG ........................................................................... 33
2.3.1. Kiểm thử dựa trên đồ thị luồng điều khiển............................................. 33
2.3.2.Kiểm thử dựa trên đồ thị luồng dữ liệu ................................................... 41
2.3.3.Kiểm thử điều kiện ................................................................................. 43
2.4.SO SÁNH KIỂM THỬ HỘP ĐEN VÀ KIỂM THỬ HỘP TRẮNG ............. 44
CHƢƠNG 3MỘT SỐ ỨNG DỤNG CỦA QUY TRÌNH KIỂM THỬ ................... 45
3.1. BÀI TỐN NAME CORRECTING ........................................................... 46
3.1.1 Giới thiệu bài toán.................................................................................. 46
3.1.2 Phạm vi giải quyết.................................................................................. 49
3.1.3 Thiết kế trƣờng hợp kiểm thử ................................................................. 49
3.2. BÀI TỐN SORT ...................................................................................... 52
3.2.1 Phát biểu bài tốn ...................................................................................... 52

3.2.2 Phạm vi giải quyết.................................................................................. 52
3.2.3 Thiết kế trƣờng hợp kiểm thử. ................................................................ 52
3.2.4 Kết quả kiểm thử .................................................................................... 60
KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN .............................................................. 61
TÀI LIỆU THAM KHẢO ..................................................................................... 62

Số hóa bởi Trung tâm Học liệu – ĐHTN


vi

MỤC LỤC HÌNH ẢNH
Hình 1. 1 - Sản phẩm phần mềm. Nguồn: [13] ......................................................... 3
Hình 1. 2 – Các nguyên nhân gây ra lỗi phần mềm [5] ............................................ 4
Hình 1. 3 - Chi phí cho việc sửa lỗi. Nguồn: [6], [8] ................................................ 6
Hình 1. 4 - Các giai đoạn kiểm thử ........................................................................ 13
Hình 1. 5 -Quy trình chi tiết quá trình kiểm thử ..................................................... 14
Hình 2. 1 - Mơ hình luồng thơng tin kiểm thử ........................................................ 19
Hình 2. 2 - Ví dụ đồ thị nhân quả........................................................................... 32
Hình 2. 3 – Quy trình tạo ca kiểm thử dựa trên đồ thị luồng điều khiển ................. 34
Hình 2. 4 – Đồ thị luồng điều khiển biểu diễn chƣơng trình sum ........................... 35
Hình 2. 5 - Ví dụ tiêu chí bao phủ cung ................................................................. 35
Hình 2. 6 - Đồ thị biểu diễn chƣơng trình tính tổng nghịch đảo ............................. 37
Hình 2. 7 - Đồ thị luồng điều khiển biểu diễn hàm abc .......................................... 39
Hình 2. 8 - Đồ thị luồng điều khiển biểu diễn hàm foo .......................................... 42
Hình 3. 1 - Giao diện kiểm thử bài tốn NC ........................................................... 51
Hình 3. 2 - Minh họa thuật tốn sắp xếp MergeSort ............................................... 53
Hình 3. 3 - Đồ thị lƣu trình cho hàm Merge ........................................................... 54
Hình 3. 4 - Kết quả đƣợc ghi ra file log ................................................................. 60
Hình 3. 5 - Giao diện điều khiển kiểm thử các thuật tốn sắp xếp .......................... 60


Số hóa bởi Trung tâm Học liệu – ĐHTN


vii

DANH MỤC BẢNG BIỂU
Bảng 1. 1 - Tỷ lệ công việc của các giai đoạn phát triển phần mềm ......................... 1
Bảng 2. 1 - Bảng liệt kê các lớp tƣơng đƣơng ........................................................ 22
Bảng 2. 3 – Các lớp tƣơng đƣơng cho chƣơng trình tính hoa hồng ........................ 24
Bảng 2. 4 – Các ca kiểm thử lớp tƣơng đƣơng yếu ................................................ 24
cho chƣơng trình tính hoa hồng ............................................................................. 24
Bảng 2. 5 – Kiểm thử lớp tƣơng đƣơng cho chƣơng trình tính hoa hồng ................ 25
Bảng 2. 6 – Các lớp tƣơng đƣơng cho chƣơng trình tam giác dựa vào dữ liệu vào...... 25
Bảng 2. 7 – Các ca kiểm thử cho chƣơng trình tam giác dựa trên dữ liệu vào ........ 26
Bảng 2. 8 – Các ký hiệu trong đồ thị nhân quả....................................................... 30
Bảng 2. 9 - Bảng quyết định tính thuế thu nhập ..................................................... 32
Bảng 3. 1 - Minh họa các testcase chƣơng trình NC............................................... 50
Bảng 3. 2 - Bảng các trƣờng hợp kiểm thử cho module Merge .............................. 56
Bảng 3. 3 - Các trƣờng hợp kiểm thử cho module Split ......................................... 57

Số hóa bởi Trung tâm Học liệu – ĐHTN


viii

ĐẶT VẤN ĐỀ
I. TÍNH CẤP THIẾT CỦA ĐỀ TÀI
Với sự phát triển ngày càng mạnh mẽ của công nghiệp công nghệ thơng tin
nói chung và cơng nghệ phần mềm nói riêng, việc xây dựng và phát triển phần mềm

đã thực ngày càng tỏ ra hiệu quả hơn nhờ sự hỗ trợ của nhiều cơng cụ tiện ích và
tiên tiến. Cùng với đà phát triển đó, hoạt động quản lí chất lƣợng phần mềm ngày
càng gánh trách nhiệm thêm nặng nề và chuyên nghiệp. Tuy nhiên thực tế đã cho
thấy rằng, các vấn đề về quản lý chất lƣợng phần mềm vẫn chƣa thực sự đáp ứng
đƣợc những đòi hỏi khắt khe của phần mềm về chất lƣợng cũng nhƣ tốc độ triển
khai ứng dụng. Các hoạt động đánh giá chất lƣợng phần mềm vẫn không đảm bảo
đƣợc các sản phẩm phần mềm là khơng có lỗi.
Quản lý chất lƣợng phần mềm là một lĩnh vực của công nghệ phần mềm, có
nhiệm vụ kiểm tra và xác minh các tiêu chí phần mềm: tính đúng, tính khoa học,
tính tin cậy, tính vững vàng, tính dễ chuyển mang, tính dễ sử dụng, dễ phát triển và
hồn thiện. Đây là một q trình liên tục, xuyên suốt mọi giai đoạn phát triển phần
mềm nhằm đảm bảo phần mềm đáp ứng các yêu cầu thiết kế và nhu cầu của ngƣời
dùng. Các kỹ thuật đánh giá chất lƣợng phần mềm đã và đang đƣợc nghiên cứu cả
về chiều rộng lẫn chiều sâu, và việc đánh giá này đã trở thành quy trình bắt buộc
trong các dự án phát triển phần mềm [1]. Trong qui trình này, kiểm thử phần mềm
là giai đoạn quan trọng nhằm đảm bảo chất lƣợng phần mềm, là quá trình chạy thử
một ứng dụng để phát hiện lỗi và xem nó đã thỏa mãn yêu cầu đặt ra trong giai đoạn
phát triển phần mềm [3]. Một sản phẩm phần mềm đƣợc phân phối phải có đầy đủ
các chức năng yêu cầu và tƣơng thích với phần cứng của khách hàng [4], [2].
Quy trình phát triển phần mềm bao gồm nhiều giai đoạn và nhiều hoạt động
nhằm tạo ra sản phẩm phần mềm. Trong đó, kiểm thử là một trong những hoạt động
đóng vai trị quan trọng nhằm phát hiện lỗi của phần mềm [5]. Đánh giá chất lƣợng
phần mềm ngày càng khó khăn hơn, bởi vì các ngơn ngữ lập trình, các hệ điều hành
và các phƣơng pháp, cơng cụ phát triển phần mềm cũng nhƣ các thiết bị phần cứng

Số hóa bởi Trung tâm Học liệu – ĐHTN


ix


ngày càng phong phú và đa dạng.Vì vậy, học viên chọn đề tài “Các phương pháp
đánh giá chất lượng phần mềm” làm hƣớng nghiên cứu cho luận văn.
II. MỤC TIÊU CỦA ĐỀ TÀI LUẬN VĂN
Mục đích chính của luận văn là:
 Nghiên cứu, tìm hiểu về nguyên lý, phƣơng pháp và các kỹ thuật quản lý
và đánh giá chất lƣợng phần mềm.
 Thiết kế các trƣờng hợp kiểm thử và xây dựng vài kịch bản kiểm thử cụ
thể.
III. ĐỐI TƢỢNG VÀ PHẠM VI NGHIÊN CỨU
 Luận tập trung tìm hiểu, phân tích và khảo sát các đổi tượng sau đây:
 Quy trình và bản chất của các kỹ thuật đánh giá chất lƣợng phần mềm.
 Tìm hiểu và phát triển các kĩ thuật kiểm thửhộp đen và kiểm thử hộp trắng.
 Thiết kế các trƣờng hợp kiểm thử với bộ dữ liệu lớn.
IV.PHƢƠNG PHÁP NGHIÊN CỨU
Phƣơng pháp nghiên cứu đƣợc sử dụng trong luận văn chủ yếu bao gồm:
 Phƣơng pháp luận: Nghiên cứu, tìm hiểu các khái niệm, chiến lƣợc và kỹ
thuật đánh giá chất lƣợng phần mềm.
 Phƣơng pháp thực nghiệm: thiết kế các trƣờng hợp kiểm thử áp dụng cho
kịch bản kiểm thử cụ thể.
V. KẾT QUẢ DỰ KIẾN ĐẠT ĐƢỢC
Luận văn tập trung chủ yếu vào các kĩ thuật kiểm thử phần mềm là khâu
quan trọng trong quản lí chất lƣợng phần mềm.
 Thiết kế các trƣờng hợp kiểm thử cho một số kịch bản kiểm thử cụ thể.
 Đặc tả trƣờng hợp kiểm thử và kết quả kiểm thử.
 Xây dựng kịch bản kiểm thử.
Các kịch bản kiểm thử đƣợc chia làm hai loại chính: kiểm thử chức năng và
kiểm thử phi chức năng.Hai bài toán 3.1 và 3.2 đƣợc đề xuất trong chƣơng 3 nhằm
minh họa cho các kĩ thuật đƣợc vận dụng trong hai loại kiểm thử nói trên.

Số hóa bởi Trung tâm Học liệu – ĐHTN



x

VI.CẤU TRÚC LUẬN VĂN
Luận văn gồm Phần mở đầu, ba chƣơng nội dung, Phần kết luận và Tài liệu
tham khảo.
Chƣơng 1: Tổng quan về qui trình quản lí chất lƣợng phần mềm
Tìm hiểu khái niệm chung về sản phẩm phần mềm, vấn đề chất lƣợng phần
mềm, tầm quan trọng, khó khăn của việc kiểm thử phần mềm và các hoạt động đánh
giá chất lƣợng trong quy trình phát triển phần mềm.
Chƣơng 2: Các kỹ thuật kiểm thử phần mềm.
Nội dung của chƣơng này phân tích các kỹ thuật cơ bản trong kiểm thử
phần mềm:
 Kiểm thử hộp đen: xây dựng lớp phân hoạch tƣơng đƣơng, phân tích giá
trị biên, kỹ thuật đồ thị nhân quả, kiểm thử giá trị đặc biệt.
 Kiểm thử hộp trắng: kiểm thử dựa trên đồ thị luồng điều khiển, kiểm thử
dựa trên luồng dữ liệu, kiểm thử điều kiện.
Trên cơ sở các nội dung nói trên, luận văn phân tích, làm nổi bật những yếu
tố quan trọng trong đảm bảo chất lƣợng phần mềm.
Chƣơng 3: Một số ứng dụng cụ thể của quy trình kiểm thử.
Để minh hoạ cho phần lý thuyết ở trên, chƣơng 3 sẽ trình bày một vài kịch
bản kiểm thử áp dụng kỹ thuật hộp đen và kỹ thuật hộp trắng để kiểm thử.
Xây dựng các trƣờng hợp kiểm thử (test cases) cho từng kịch bản kiểm thử.
Xây dựng chƣơng trình và giao diện: thực hiện với các trƣờng hợp kiểm thử
đã đề xuất, đối sánh kết quả của chƣơng trình và kết quả dự kiến của các trƣờng hợp
kiểm thử.
Kết luận và hƣớng phát triển
Tài liệu tham khảo


Số hóa bởi Trung tâm Học liệu – ĐHTN


1

CHƢƠNG 1
QUI TRÌNH VÀ CHẤT LƢỢNG PHẦN MỀM
1.1 SẢN PHẨM VÀ CHẤT LƢỢNG PHẦN MỀM
1.1.1 Khái niệm về sản phẩm 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 thực hiện một
nhiệm vụ tƣơng đối độc lập nhằm phục vụ cho một hoặc nhiều ứng dụng cụ thể:
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í…[4], [5]
Ví dụ:
S1. Hệ điều hành Ubutu;
S2. Mơi trƣờng lập trình C++ Devcpp;
S3. Hệ thống quản lý: CN2;
S4. Game: Lines…

Việc tạo ra một sản phẩm phải trải qua nhiều giai đoạn, ngƣời ta gọi là quy
trình phát triển phần mềm. Quy trình này đƣợc khởi động từ khi bắt đầu có ý tƣởng
cho đến khi đƣa ra sản phẩm phần mềm thực thi. Khối lƣợng cơng việc trong từng
giai đoạn của q trình sản xuất phần mềm cũng thay đổi theo thời gian. Bảng 1.1
minh họa cụ thể hơn về tỷ lệ công việc của các giai đoạn phát triển phần mềm [9]
Bảng 1. 1 - Tỷ lệ công việc của các giai đoạn phát triển phần mềm
Giai đoạn

Phân

Thiết


tích u

kế sơ

cầu

bộ

Thiết kế
chi tiết

Lập trình

Tích hợp và

Kiểm

và kiểm

kiểm thử

thử hệ

thử đơn vị

tích hợp

thống


Thập kỉ 19601970

10%

Thập kỉ 1980

20%

Thập kỉ 1990

40%

80%
60%
30%

10%
20%

30%

Số hóa bởi Trung tâm Học liệu – ĐHTN


2

Theo một tài liệu khác [7], chi phí liên quan từng giai đoạn của vòng đời
phần mềm đƣợc thể hiện trong biểu đồ hình quạt nhƣ đƣới đây:

Nguồn [7]

Nhƣ vậy, một sản phẩm phần mềm đƣợc xem là một hệ thống bao gồm một
hoặc nhiều phân hệ. Mỗi phân hệ lại đƣợc xây dựng từ những cấu phần. Mỗi cấu
phần bao gồm các đơn vị nhỏ. Các thành phần của phần mềm đƣợc liên kết với
nhau thông qua các mối quan hệ và các tƣơng tác [8]. Vì vậy, việc mắc lỗi khơng
chỉ xảy ra trong khi lập trình mà cịn xảy ra cao hơn trong các cơng đoạn khác của
quy trình phát triển một sản phẩm phần mềm. Việc kiểm thử cũng vì thế phải đƣợc
tiến hành trong tất cả các phần tạo nên một sản phẩm phần mềm.

Số hóa bởi Trung tâm Học liệu – ĐHTN


3

Hình 1. 1 - Sản phẩm phần mềm. Nguồn: [13]
1.1.2 Khái niệm lỗi phần mềm
Chúng ta đã thấy khi phần mềm hoạt động khơng nhƣ mong muốn thì ta nói
rằng phần mềm đó có lỗi. Tuy nhiên, cũng có thể dùng nhiều thuật ngữ khác để mô
tả hiện tƣợng này nhƣ: thất bại, sai sót, có vấn đề, bất thường khơng hợp lý, khơng
tương thích,…
Định nghĩa lỗi phần mềm dƣới đây dựa trên khái niệm đặc tả: một đặc tảlà
một sự thống nhất về đặc tính, quan hệ, chức năng và hành vi của sản phẩm giữa
những ngƣời phát triển phần mềm hoặc giữa ngƣời phát triển phần mềm và ngƣời
đặt hàng hoặc sử dụng phần mềmthông qua một ngôn ngữ nào đó [5], [8], [10].
Lỗi phần mềm xuất hiện khi xảy ra một hay nhiều điều kiện sau [13], [14], [15]:
 Phần mềm khơng thực hiện đúng những gì mà đặc tả định nghĩa.
 Phần mềm thực hiện những gì mà đặc tả khuyến cáo khơng nên thực hiện.
 Phần mềm thực hiện những gì mà đặc tả khơng đề cập đến.

Số hóa bởi Trung tâm Học liệu – ĐHTN



4

 Phần mềm khơng thực hiện những gì mà đặc tả không đề cập đến nhƣng lẽ
ra nên thực hiện.
 Phần mềm là khó hiểu hay khó sử dụng.
Theo các kết quả nghiên cứu đƣợc thực hiện trong các dự án khác nhau, số
lỗi do đặc tả gây ra là nhiều nhất, chiếm khoảng 80% [12].
Các nguyên nhân sinh lỗi tại pha đặc tả:
 Đặc tả khơng hình thức: Ngơn ngữ tự nhiên dễ hiểu nhƣng rƣờm rà,
nhập nhằng.
 Đặc tả hình thức (ngơn ngữ tốn học và logic): đơn giản, chính xác nhƣng
khó hiểu, khó cài đặt.
 Qn đặc tả một u cầu nào đó.
 Đặc tả khơng hết.
 Yêu cầu đã thay đổi nhƣng đặc tả không thay đổi.
 Đặc tả khác nhau cho cùng một yêu cầu xuất hiện trong các cấu phần khác
nhau của hệ thống.

Hình 1. 2– Các nguyên nhân gây ra lỗi phần mềm [5]
Nguồn gây ra lỗi lớn thứ hai là thiết kế. Đó là nền tảng mà lập trình viên dựa
vào để nỗ lực thực hiện kế hoạch cho phần mềm.
Thời kỳ đầu, phát triển phần mềm thƣờng đồng nhất với lập trình, cơng việc
lập trình thì nặng nhọc, do đó lỗi do lập trình gây ra là chủ yếu [4]. Ngày nay, cơng
việc lập trình chỉ là một phần việc của qúa trình lao động chất xám, việc lập trình
trở nên nhẹ nhàng hơn, mặc dù độ phức tạp phần mềm lớn hơn rất nhiều. Do đó, lỗi
do lập trình gây ra cũng ít hơn. Tuy nhiên, nguyên nhân để lập trình tạo ra lỗi lại
Số hóa bởi Trung tâm Học liệu – ĐHTN



5

nhiều hơn. Đó là do độ phức tạp của phần mềm, do tài liệu nghèo nàn, do sức ép
thời gian hoặc chỉ đơn giản là những lỗi “khơng nói lên đƣợc” [11]. Một điều cũng
khá hiển nhiên là nhiều lỗi xuất hiện trên văn bản chƣơng trình, nhƣng khi tìm hiểu
kỹ thì thực ra lại do lỗi của đặc tả hoặc thiết kế [10].
Một nguyên nhân khác tạo ra lỗi là do bản thân của công cụ phát triển phần
mềm cũng có lỗi nhƣ cơng cụ trực quan, thƣ viện lớp, bộ biên dịch, các mẫu thƣờng
đƣợc thiết kế theo xu hƣớng tổng qt hóa q cao …
1.1.3 Chi phí sửa lỗi
Ngƣời ta ƣớc tính, bảo trì là phần chi phí chính của phần mềm và kiểm thử là
hoạt động có chi phí đắt thứ hai, ƣớc tính khoảng 40% của chi phí trong q trình
phát triển ban đầu của sản phẩm phần mềm. Kiểm thử cũng là phần chi phí chính
của giai đoạn bảo trì do phải tiến hành kiểm thử lại những thay đổi trong quá trình
sửa lỗi và đáp ứng yêu cầu của ngƣời dùng [1], [6]
Kiểm thử và sửa lỗi có thể đƣợc thực hiện tại bất kỳ giai đoạn nào của vòng
đời phần mềm. Tuy nhiên, chi phí cho việc tìm và sửa lỗi sẽ tăng đáng kể theo thời
gian trong quá trình phát triển [8].
Sự thay đổi một tài liệu hoặc yêu cầu (thí dụ, của khách hàng) khi đang
trong pha thiết kế là khơng đắt nếu khơng nói là khơng đáng kể. Chi phí sẽ tăng lên
nhiều hơn nếu các yêu cầu thay đổi đƣợc đƣa ra sau khi đã lập trình. Thay đổi lúc
này đồng nghĩa với việc phải viết lại chƣơng trình [9].
Việc sửa lỗi sẽ khơng đáng kể nếu ngƣời lập trình tự phát hiện lỗi của mình,
và khơng có sự liên quan đến chi phí khác. Họ khơng phải giải thích lỗi cho bất kỳ
ngƣời nào trong nhóm. Họ cũng khơng phải nhập lại lỗi đó vào cơ sở dữ liệu lỗi và
lƣu vết lỗi. Ngƣời kiểm thử và ngƣời quản lý khơng phải duyệt lại tình trạng lỗi. Và
lỗi đó khơng ảnh hƣởng đến cơng việc của ngƣời khác trong nhóm dự án.
Nói chung, sửa một lỗi trƣớc khi phát hành một phần mềm rẻ hơn rất nhiều
so với việc khắc phục nó sau khi đã phát hành [14], [15].


Số hóa bởi Trung tâm Học liệu – ĐHTN


6

Theo các nghiên cứu của IBM, GTE cho biết, lỗi đƣợc phát hiện càng muộn
thì chi phí cho việc sửa lỗi càng lớn. Chi phí tăng theo hàm mũ nhƣ sau:

Hình 1. 3 - Chi phí cho việc sửa lỗi. Nguồn: [6], [8]
Chúng ta từng chứng kiến sự cố máy tính Y2K năm 2000. Nguyên nhân là
do việc tiết kiệm bộ nhớ bằng cách biểu diễn năm có 4 chữ số bằng 2 chữ số cuối
của năm mà không dự tính đƣợc lỗi tiềm ẩn có thể xảy ra mà mấy chục năm sau, thế
giới đã phải lo sợ và tốn nhiều tỉ đô la để khắc phục do dữ liệu ngày tháng có thể bị
thay đổi khi máy tính coi năm 1900 nhƣ năm 2000 [1], [5].
1.1.4 Khái niệm kiểm thử phần mềm
Kiểm thử phần mềm là một quá trình liên tục, xuyên suốt mọi giai đoạn phát
triển phần mềm để đảm bảo rằng phần mềm thỏa mãn các yêu cầu thiết kế và các
yêu cầu đó đáp ứng các nhu cầu của ngƣời dùng. Các kỹ thuật kiểm thử phần mềm
đã, đang đƣợc nghiên cứu, và việc kiểm thử phần mềm đã trở thành quy trình bắt
buộc trong các dự án phát triển phần mềm trên thế giới.
Kiểm thử phần mềm là khâu mấu chốt để đảm bảo chất lƣợng phần mềm, là
đánh giá cuối cùng về đặc tả thiết kế và mã hóa [7].
Mục đích của kiểm thử phần mềm là tìm ra lỗi chƣa đƣợc phát hiện ở thời
điểm sớm nhất có thể và đảm bảo rằng lỗi đó đã đƣợc sửa. Những ngƣời phát triển
phần mềm và các kỹ sƣ kiểm thử cùng làm việc để phát hiện lỗi và đảm bảo chất

Số hóa bởi Trung tâm Học liệu – ĐHTN


7


lƣợng sản phẩm. Một sản phẩm phần mềm đƣợc phân phối phải có đầy đủ các chức
năng yêu cầu và tƣơng thích với phần cứng của khách hàng.
1.1.5 Những khó khăn của kiểm thử phần mềm
Để kiểm thử tốt hơn, cần phải quan tâm đến các yếu tố làm cho việc kiểm
thử khó khăn hơn.
 Khó khăn liên quan đến quy trình phát triển phần mềm
Quá trình phát triển phần mềm là một tập hợp các hoạt động từ giai đoạn tìm
hiểu, khảo sát, phân tích, thiết kế và cài đặt cho đến sử dụng và bảo trì. Mỗi giai
đoạn này thực ra là một sự chuyển đổi một tập hợp thông tin này sang một tập hợp
thông tin khác. Quá trình chuyển đổi này sẽ dẫn đến sự mất mát thơng tin khó tránh
khỏi, nghĩa là các lỗi sẽ xuất hiện. Hơn nữa, các giai đoạn chuyển đổi có thể tạo nên
một thất bại ở giai đoạn cuối cùng mà khi phát hiện lập trình viên khó có thể biết
đƣợc nguyên nhân do giai đoạn nào trƣớc đó [10].
 Khó khăn về nhân sự
Thơng thƣờng, kiểm thử thƣờng chỉ đƣợc coi là giai đoạn đơn giản cuối cùng
đƣợc dùng để hợp thức hóa sản phẩm. Vì thế, nhiều lỗi nghiêm trọng mắc phải ngay
từ các giai đoạn đầu của quy trình phát triển (đặc tả và thiết kế). Trong khi đó, nhiều
thống kê cho thấy: các lỗi mắc phải càng sớm trong quy trình phát triển, thì các lỗi
đó càng khó phát hiện và khó khắc phục. Vì vậy, việc nghiên cứu các phƣơng pháp
và công cụ phát triển thích ứng sẽ góp phần rất lớn vào việc giảm bớt các lỗi ngay
từ các giai đoạn đầu của quy trình phát triển [9].
1.1.6 Kiểm thử trong quy trình phát triển phần mềm
Để kiểm thử một sản phẩm phần mềm, chúng ta khơng chỉ kiểm thử một lần,
khi mà nó đã đƣợc hoàn thành. Các thành phần của phần mềm đều phải đƣợc kiểm
thử trƣớc, sau đó trong suốt quá trình tích hợp các thành phần cũng phải đƣợc kiểm
thử cho đến khi đạt đƣợc sản phẩm cuối cùng.
Có nhiều quy trình phát triển phần mềm đƣợc sử dụng. Chúng khác nhau về
bản chất, cách tiến hành, số giai đoạn phát triển, tuy nhiên chúng có những điểm
chung sau trong hoạt động kiểm thử.

Số hóa bởi Trung tâm Học liệu – ĐHTN


8

 Kiểm thử đơn vị: tập trung trên mỗi module riêng biệt, đảm bảo rằng các
chức năng của nó tƣơng ứng với một đơn vị.
 Kiểm thử tích hợp: tập trung vào việc thiết kế và xây dựng kiến trúc
phần mềm.
 Kiểm thử hệ thống: hợp thức hóa yêu cầu của ngƣời sử dụng sau khi tất cả
các module đã đƣợc tích hợp.
 Kiểm thử hồi quy: đảm bảo các sửa đổi khơng ảnh hƣởng đến các phần
cịn lại của phần mềm.
 Kiểm thử chấp nhận: đánh giá phần mềm so với mong đợi và mục tiêu của
ngƣời sử dụng.
 Kiểm thử đơn vị
Kiểm thử đơn vị tập trung vào việc xác minh trên đơn vị nhỏ nhất của thiết
kế phần mềm. Sử dụng các mô tả thiết kế thủ tục để hƣớng dẫn, theo dõi các đuờng
dẫn điều khiển quan trọng và kiểm thử để phát hiện lỗi trong phạm vi module. Độ
phức tạp liên quan của các ca kiểm thử và lỗi đã phát hiện đƣợc giới hạn bởi ràng
buộc phạm vi thiết lập cho kiểm thử đơn vị. Kiểm thử đơn vị thƣờng hƣớng hộp
trắng và các bƣớc có thể đƣợc thực hiện song song trên nhiều module.
Các kiểm thử nhằm phát hiện các lỗi trong các phạm vi của module bao gồm:
 Giao diện module.
 Cấu trúc dữ liệu cục bộ.
 Điều kiện biên.
 Đƣờng dẫn độc lập.
 Đƣờng dẫn xử lý lỗi.
Kiểm thử đơn vị thƣờng đƣợc xem nhƣ một phần phụ cho bƣớc mã hóa sau
khi mã nguồn phát triển, đƣợc duyệt lại và đƣợc kiểm tra đúng cú pháp, thì bắt đầu

thiết kế các trƣờng hợp kiểm thử đơn vị.
Kiểm thử đơn vị đƣợc đơn giản hóa khi module có sự liên kết cao đƣợc thiết
kế. Khi chỉ một chức năng đƣợc gọi bởi một module, số các trƣờng hợp kiểm thử
đƣợc giảm xuống và các lỗi có thể dự đốn và phát hiện sớm hơn.
Số hóa bởi Trung tâm Học liệu – ĐHTN


9

Kiểm thử đơn vị thƣờng do lập trình viên thực hiện. Kiểm thử đơn vị địi hỏi
kiểm thử viên có kiến thức về thiết kế và code của chƣơng trình. Mục đích của kiểm
thử đơn vị là đảm bảo thơng tin đƣợc xử lý và xuất là chính xác, trong mối quan hệ
với dữ liệu nhập và chức năng của đơn vị [3], [4].
 Kiểm thử tích hợp
Mục tiêu của kiểm thử tích hợp nhằm thực hiện các lỗi tƣơng tác giữa các
đơn vị, tích hợp các đơn vị thành các hệ thống con vận hành tốt và cuối cùng hệ
thống hoàn toàn sẵn sàng cho kiểm thử hệ thống.
Trong q trình tích hợp, có thể có khả năng khơng chỉ tích hợp các đơn vị
đƣợc phát triển trong dự án phần mềm, mà cịn tích hợp các đơn vị hoặc thành phần
đƣợc cung cấp bởi các thƣ viện hay thậm chí là các thành phần đƣợc cung cấp bởi
hệ điều hành.
Kiểm thử tích hợp nên chỉ thực hiện với các đơn vị đã đƣợc thẩm định và đã
đƣợc kiểm thử đơn vị thành công. Sự tƣơng tác và chức năng của đơn vị mới đƣợc
tích hợp và tập các đơn vị đã đƣợc tích hợp trƣớc đó sẽ đƣợc kiểm thử.
Hai chiến lƣợc kiểm thử tích hợp cơ bản thƣờng đƣợc áp dụng gồm:
 Tích hợp từ trên xuống : thực hiện kiểm thử các module chính trƣớc, sau đó
tích hợp thêm vào các module đƣợc gọi trực tiếp bởi các module vừa đƣợc kiểm thử.
 Tích hợp từ dƣới lên: tích hợp các thành phần cơ sở cung cấp các dịch vụ
chung nhƣ mạng, truy cập cơ sở dữ liệu, sau đó các thành phần chức năng đƣợc
thêm vào.

Trong thực tế, với rất nhiều hệ thống, chiến lƣợc tích hợp là sự pha trộn các
phƣơng pháp trên [11].
 Kiểm thử hệ thống
Kiểm thử hệ thống có thể bắt đầu ngay sau khi kiểm thử tích hợp kết thúc.
Mục tiêu của kiểm thử hệ thống là cần chỉ ra rằng phần mềm thực hiện đúng những
gì mà ngƣời sử dụng mong đợi. Vì thế, ở giai đoạn này, kiểm thử đƣợc thực hiện
dƣới góc nhìn của ngƣời sử dụng, nên chỉ sử dụng các kĩ thuật kiểm thử chức năng.

Số hóa bởi Trung tâm Học liệu – ĐHTN


10

Kiểm thử hệ thống không chỉ nhằm đánh giá chức năng của hệ thống mà cịn
đánh giá các tính chất về chất lƣợng khác, nhƣ khả năng sử dụng, khả năng tin cậy,
hiệu năng hay tính bảo mật…Tùy theo mỗi loại phần mềm và yêu cầu của phần
mềm, các loại kiểm thử hệ thống khác nhau đƣợc áp dụng: kiểm thử giao diện, kiểm
thử hiệu năng, kiểm thử độ tin cậy, kiểm thử cấu hình, kiểm thử bảo mật…
Kiểm thử hệ thống nên đƣợc thực hiện trong môi trƣờng nhƣ là mơi trƣờng
mà phần mềm sẽ hoạt động, vì đây là giai đoạn kiểm thử trƣớc khi chuyển giao
phần mềm cho ngƣời sử dụng để thực hiện kiểm thử chấp nhận. Tuy nhiên điều này
không phải lúc nào cũng thực hiện đƣợc, bởi vì chúng ta khơng thể có đƣợc môi
trƣờng sử dụng thực đối với một số phần mềm nhƣ phần mềm điều khiển hay phần
mềm giao dịch tài chính…Trong trƣờng hợp đó, thơng thƣờng chúng ta cần phải mô
phỏng môi trƣờng thực để thực hiện kiểm thử.
 Kiểm thử hồi quy
Quy trình phát triển phần mềm, mà trong đó bao gồm kiểm thử, khơng dừng
lại một khi phần mềm đƣơc chuyển giao cho ngƣời sử dụng. Bởi vì phần mềm là
một trong những loại sản phẩm thay đổi rất nhanh. Ngƣời sử dụng ln có u cầu
cải tiến phần mềm và bổ sung các chức năng mới hoặc sự khơng tƣơng thích của

phần mềm đƣợc tìm thấy khi đƣa vào sử dụng. Nhƣ thế, sự chỉnh sửa phần mềm sau
khi đƣa vào sử dụng là cần thiết. Bất kì sự sửa đổi nào cũng có thể dẫn đến các lỗi
mới. Phần mềm nhất thiết phải đƣợc kiểm thử lại sau khi sửa đổi, giai đoạn này gọi
là kiểm thử hồi quy.
Sau khi phân tích sự ảnh hƣởng, chúng ta có thể thực hiện lại một số kiểm thử
nhƣ kiểm thử đơn vị các thành phần bị sửa đổi, kiểm thử tích hợp có kích hoạt các
thành phần bị sửa đổi, kiểm thử hệ thống có kích hoạt các chức năng bị sửa đổi…
Nhƣ vậy, kiểm thử hồi quy có thể áp dụng ở kiểm thử đơn vị, kiểm thử tích
hợp và kiểm thử hệ thống. Để dễ dàng kiểm thử hồi quy chúng ta nên lƣu trữ lại
môi trƣờng kiểm thử, các trình điều khiển và các bộ dữ liệu thử…để tái sử dụng.

Số hóa bởi Trung tâm Học liệu – ĐHTN


11

 Kiểm thử chấp nhận
Kiểm thử chấp nhận không nhằm mục đích phát hiện lỗi mà nhằm giúp cho
ngƣời sử dụng đánh giá phần mềm so với mong đợi và mục tiêu của họ.
Khi phát triển phần mềm cho một khách hàng cụ thể, kiểm thử chấp nhận
cần phải đƣợc thực hiện sau kiểm thử hệ thống. Phần mềm phải đƣợc thực thi trong
môi trƣờng thực. Kiểm thử chấp nhận là một mốc quan trọng đối với ngƣời phát
triển. Tại thời điểm này, khách hàng sẽ quyết định phần mềm có đạt u cầu khơng.
Nếu khách hàng hài lịng về phần mềm, họ sẽ chấp nhận sản phẩm và bƣớc tiếp theo
là cài đặt phần mềm tại môi trƣờng của khách hàng.
Nếu phần mềm đƣợc phát triển cho thị trƣờng rộng lớn, thì kiểm thử cho mỗi
khách hàng là khơng thực tế. Trong trƣờng hợp này, kiểm thử chấp nhận thƣờng
đƣợc chia làm hai giai đoạn:
 Kiểm thử alpha
Kiểm thử alphađƣợc thực hiện trong mơi trƣờng phát triển. Một nhóm những

ngƣời sử dụng tiềm năng và thành viên nhóm phát triển đƣợc mời sử dụng phần
mềm. Các lập trình viên sẽ quan sát và ghi nhận các vấn đề xảy ra.
 Kiểm thử beta
Kiểm thử beta gửi phần mềm đến những ngƣời sử dụng, họ cài đặt và sử
dụng phần mềm trong môi trƣờng làm việc thực tế. Ngƣời sử dụng sẽ gửi các vấn
đề cho tổ chức phát triển và nhóm phát triển chịu trách nhiệm sửa các lỗi.
1.2 CHẤT LƢỢNG VÀ CÁC TIÊU CHÍ ĐÁNH GIÁ PHẦN MỀM
1.2.1 Chất lượng phần mềm
Chất lƣợng trong phần mềm máy tính hiện vẫn còn là một vấn đề còn nhiều
tranh luận. Trong một số trƣờng hợp, nói tới chất lƣợng phần mềm là nói tới tính
thực tiễn và tính thẩm mỹ của phần mềm. Ở đây, khái niệm này trả lời cho câu hỏi
một chƣơng trình máy tính thực thi một nhiệm vụ nào đó hiệu quả và có tính thẩm
mỹ tới mức nào. Trong một ngữ cảnh khác, chất lƣợng phần mềm đƣợc hiểu là sự
đáp ứng đến mức tối đa các yêu cầu đặt ra và không chứa lỗi. Trong cả hai trƣờng

Số hóa bởi Trung tâm Học liệu – ĐHTN


12

hợp trên, có một loạt các vấn đề đặt ra cần giải quyết để đi đến một kết quả cuối
cùng là phần mềm có chất lƣợng.
1.2.2 Các tiêu chí đánh giá
Một số tiêu chí xác định chất lƣợng của một sản phẩm phần mềm [5]:
 Tính đúng: sản phẩm phần mềm đó thực thi đầy đủ và chính xác những
u cầu đặc tả trong bản thiết kế.
 Tính khoa học: giao diện đƣợc thiết kế hợp lý, gần với tƣ duy và kỳ vọng
tự nhiên của ngƣời sử dụng; các chức năng đƣợc sắp đặt khoa học, thể hiện logic
của hệ thống; có thể di chuyển vị trí, thay đổi kích thƣớc, màu sắc của các giao
diện, kiểu văn bản, hình vẽ, đồ thị, bảng biểu,…

 Tính dễ sử dụng: Sau một vài lần thực thi phần mềm, ngƣời sử dụng có
thể nhớ đƣợc một cách logic trình tự làm việc. Phần mềm có tính năng trợ giúp
ngƣời sử dụng đúng lúc và đúng chỗ. Các thao tác nhanh chóng, rõ ràng, dễ theo
dõi. Làm việc lâu với phần mềm khơng gây cảm giác khó chịu.
 Tính tƣơng tác: Phần mềm có thể tƣơng tác với các hệ thống khác, ví dụ:
 Có thể đọc các file định dạng khác.
 Có thể chuyển, nhận và hiểu đƣợc các thơng điệp, dữ liệu trao đổi qua lại

với các hệ thống khác hiện đang tồn tại trên thị trƣờng.
 Tính độc lập: Phần mềm có thể làm việc bình thƣờng trong các môi trƣờng
khác nhau, với các hệ điều hành và chủng loại máy khác nhau.
 Tính vững vàng: Khi xảy ra các sự cố khách quan hoặc chủ quan phần
mềm nhận biết và xử lý, không bị treo, bị liệt hoặc gây ra các hiệu quả nghiêm trọng.
 Tính dễ phát triển và hồn thiện: Khi cơng nghệ phát triển, nhiều phần
mềm phải thiết kế lại từ đầu, kể cả việc phải chọn môi trƣờng và công cụ phát triển
mới. Một phần mềm đƣợc coi là dễ phát triển và hoàn thiện nếu nó thích ứng đƣợc
với những thay đổi trong yêu cầu của khách hàng cũng nhƣ nền tảng kĩ thuật.

Số hóa bởi Trung tâm Học liệu – ĐHTN


13

1.3 QUY TRÌNH KIỂM THỬ PHẦN MỀM
Mục đích của cuộc kiểm thử chính là thiết kế đƣợc một chuỗi các trƣờng hợp
kiểm thử mà có khả năng phát hiện lỗi cao. Chuỗi các trƣờng hợp kiểm thử đó sẽ rà
sốt hết tất cả các trƣờng hợp có thể xử lý của chƣơng trình so với đặc tả ban đầu.
Báo cáo kiểm thử sẽ thống kê hết tất cả các trƣờng hợp kiểm thử đã chạy, những lỗi
đã phát hiện trong kiểm thử, chi tiết các dữ liệu đầu vào, các luồng dữ liệu, đầu ra
mong đợi của chƣơng trình (đây chính là kết quả đúng của chƣơng trình), kết quả

thực tế cho ra của chƣơng trình và mục đích kiểm thử…Muốn có đƣợc các dữ liệu
đầu vào hợp lý và có khả năng phát hiện lỗi cao nhƣ vậy thì cần phải thông qua một
kế hoạch và giai đoạn chuẩn bị hợp lý nhằm thiết kế các Testcase, các dữ liệu cho
các trƣờng hợp kiểm thử. Các giai đoạn kiểm thử này có thể đƣợc mơ tả qua hình vẽ sau:
Phân tích

Thiết kế


hóa

Kiểm thử

Kế hoạch
kiểm thử

Bàn giao
SP

Báo cáo
kiểm thử

Hình 1. 4 - Các giai đoạn kiểm thử

Số hóa bởi Trung tâm Học liệu – ĐHTN


14

Nhƣ vậy mơ hình chi tiết q trình kiểm thử nhƣ sau:

Phân tích
Thiết kế
Mã hóa

Kiểmthử
Thiết kế các
trƣờng hợp
kiểm thử

Chuẩn bị dữ
liệu kiểm thử

Các trƣờng
hợp kiểm thử

Chạy chƣơng
trình với dữ
liệu kiểm thử

Dữ liệu kiểm
thử

So sánh các kết
quả với các
trƣờng hợp
kiểm thử

Kết quả kiểm
thử


Báo cáo kết
quả cuối cùng

Bàn giao SP

Hình 1. 5 -Quy trình chi tiết quá trình kiểm thử
1.4 TỰ ĐỘNG HĨA KIỂM THỬ
Kiểm thử phần mềm tốn nhiều chi phí nhân cơng, thời gian. Trong một số dự
án, chi phí kiểm thử phần mềm chiếm 50% tổng giá trị của dự án. Nếu cần ứng
dụng quan trọng hơn, chi phí kiểm thử cịn cao hơn nữa.
Do đó một trong các mục tiêu của kiểm thử là tự động hóa nhiều, nhờ đó mà
giảm thiểu chi phí, giảm lỗi, đặc biệt giúp việc kiểm thử hồi quy dễ dàng và nhanh
chóng hơn.
Tự động hóa việc kiểm thử là dùng phần mềm điều khiển việc thi hành kiểm
thử, so sánh kết quả có đƣợc với kết quả mong muốn, thiết lập các điều kiện đầu
vào, các kiểm sóat kiểm thử và các chức năng báo cáo kết quả…

Số hóa bởi Trung tâm Học liệu – ĐHTN


15

Kiểm thử tự động là quá trình thực hiện một cách tự động các bƣớc trong
một kịch bản kiểm thử. Kiểm thử tự động bằng một công cụ nhằm rút ngắn thời
gian kiểm thử [8].
Để thực hiện kiểm thử tự động, quy trình kiểm thử phải hỗ trợ tốt các hoạt
động kiểm thử tự động và phát triển các giải pháp tự động. Các bƣớc cơ bản của
quy trình kiểm thử tự động đƣợc minh họa trong Hình 1.6.
Lập kế hoạch
kiểm thử tự động

Thiết kế giải pháp
kiểm thử tự động
Phát triển giải
pháp kiểm thử tự
độ
Triển khai giải
pháp kiểm thử tự
độ
Đánh giá kiểm thử
tự động

Số hóa bởi Trung tâm Học liệu – ĐHTN


×