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

(Luận văn thạc sĩ) kỹ thuật ma trận đồ thị trong phương pháp kiểm thử hộp trắng

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.49 MB, 80 trang )

ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG

–––––––––––––––––––––––––

NGUYỄN THỊ HỒNG THUỶ

KỸ THUẬT MA TRẬN ĐỒ THỊ TRONG PHƯƠNG PHÁP
KIỂM THỬ HỘP TRẮNG

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

Thái nguyên – 2020


ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG
–––––––––––––––––––––––––

NGUYỄN THỊ HỒNG THUỶ

KỸ THUẬT MA TRẬN ĐỒ THỊ
TRONG PHƯƠNG PHÁP KIỂM THỬ HỘP TRẮNG

Chuyên ngành: Khoa học máy tính
Mã số

: 848 01 01

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


Người hướng dẫn khoa học: TS. Lê Văn Phùng

Thái nguyên – 2020


i

LỜI CAM ĐOAN
Tơi xin cam đoan tồn bộ nội dung luận văn này là do tôi tự sưu
tầm, tra cứu thông tin trên mạng Internet, trong một số sách tham khảo
để sắp xếp, hoàn thiện cho phù hợp với nội dung yêu cầu của đề tài.
Đến nay, nội dung luận văn của tôi chưa từng được công bố hay xuất
bản dưới bất kỳ hình thức nào. Nếu sai tơi xin chịu hoàn toàn trách nhiệm.
Ngày ... tháng ... năm 2020
Tác giả

Nguyễn Thị Hồng Thuỷ


ii
LỜI CẢM ƠN
Trong suốt quá trình học tập và thực hiện đề tài, em đã nhận được
sự giúp đỡ tận tình và những chỉ bảo ân cần của các Thầy cô trong viện
Công nghệ thông tin – Viện khoa học và công nghệ Việt nam, các Thầy
cô trong trường đại học Công nghệ Thông tin và Truyền thông, cùng các
bạn bè đồng nghiệp. Đặc biệt là sự giúp đỡ của TS Lê Văn Phùng,
người thầy trực tiếp hướng dẫn, định hướng, chỉnh sửa các kiến thức
chun mơn và tận tình giúp đỡ em trong suốt quá trình nghiên cứu và
thực hiện luận văn.
Qua đây cho phép em được bày tỏ lời cảm ơn tới tất cả các thầy cô

giáo ở Viện Công nghệ thông tin và Trường Đại học Công nghệ Thông
tin và Truyền thông, đã giảng dạy và tạo mọi điều kiện thuận lợi giúp đỡ
chúng em trong quá trình học tập, nghiên cứu.
Cuối cùng, tơi xin cảm ơn đến gia đình, các bạn bè đồng nghiệp đã
chia sẻ động viên giúp đỡ tôi về chuyên môn cũng như về mọi mặt trong
cuộc sống, đó là nguồn động viên khích lệ giúp tơi có nghị lực hơn để
hồn thành khoá học.
Học viên

Nguyễn Thị Hồng Thuỷ


iii
MỤC LỤC

Trang

LỜI CAM ĐOAN .................................................................................... i
LỜI CẢM ƠN ......................................................................................... ii
MỤC LỤC .............................................................................................. iii
DANH MỤC CÁC KÝ HIỆU/VIẾT TẮT ............................................ vi
DANH MỤC CÁC HÌNH ..................................................................... vii
DANH MỤC CÁC BẢNG................................................................... viii
PHẦN MỞ ĐẦU ..................................................................................... 1
1. Lý do chọn đề tài ................................................................................. 1
2. Đối tượng và phạm vi nghiên cứu ....................................................... 1
3. Mục tiêu và nhiệm vụ nghiên cứu ....................................................... 2
4. Phương pháp nghiên cứu ..................................................................... 2
5. Ý nghĩa khoa học của đề tài ................................................................ 2
6. Bố cục của luận văn: ........................................................................... 2

CHƯƠNG 1 TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM VÀ KIỂM
THỬ HỘP TRẮNG .................................................................................. 3
1.1. Kiểm thử phần mềm ......................................................................... 3
1.1.1. Quan niệm về kiểm thử phần mềm ............................................. 3
1.1.2. Chiến lược kiểm thử phần mềm .................................................. 3
1.1.3. Các mức kiểm thử [9].................................................................. 4
1.1.4. Sơ lược về các phương pháp kiểm thử........................................ 5


iv
1.2.1. Ý tưởng của kiểm thử hộp trắng ................................................. 6
1.2.2. Mô tả một số cấu trúc theo lược đồ............................................. 7
1.2.3. Một số hướng chính về kiểm thử hộp trắng ................................ 8
CHƯƠNG 2 MỘT SỐ

KỸ THUẬT HIỆU QUẢ TRONG

PHƯƠNG PHÁP KIỂM THỬ HỘP TRẮNG VÀ CA KIỂM THỬ16
2.1. Một số kỹ thuật chính trong phương pháp kiểm thử hộp trắng ..... 16
Có thể tổng hợp một số kỹ thuật hiệu quả trong phương pháp kiểm thử
hộp trắng như sau: ................................................................................. 16
2.1.1. Kỹ thuật kiểm thử dòng điều khiển............................................. 16
2.1.2. Kỹ thuật kiểm thử dòng dữ liệu .................................................. 18
2.1.3. Kỹ thuật kiểm thử BRO .............................................................. 19
2.1.4. Kỹ thuật kiểm thử đột biến.......................................................... 20
2.2. Ca kiểm thử .................................................................................... 22
2.2.1.Một số quan niệm về ca kiểm thử ................................................ 22
2.2.2.Nội dung thiết kế ca kiểm thử ...................................................... 22
2.2.3. Một số phương pháp chính để thiết kế ca kiểm thử .................... 23
2.3. Kỹ thuật ma trận đồ thị cho thiết kế ca kiểm thử ........................... 27

2.3.1. Ý tưởng và nội dung kỹ thuật ma trận đồ thị [8] ........................ 27
2.3.2. Quy trình kiểm thử phần mềm bằng kỹ thuật ma trận đồ thị ...... 36
CHƯƠNG 3 CHƯƠNG TRÌNH THỬ NGHIỆM KIỂM THỬ
PHẦN MỀM BẰNG KỸ THUẬT MA TRẬN ĐỒ THỊ .................. 38
3.1. Chọn mô-đun phần mềm thử nghiệm ............................................ 38
3.2. Thiết kế ca kiểm thử và kiểm thử mô-đun phần mềm .................. 39


v
3.2.1. Quy trình thiết kế ........................................................................ 39
3.2.2. Nội dung thiết kế ......................................................................... 39
3.3 Một số giao diện chính của chương trình........................................ 49
3.3.1. Giao diện thiết kế ca kiểm thử theo kỹ thuật ma trận đồ thị ....... 49
3.3.2. Quá trình test với Mơ-đun 1 ........................................................ 54
3.3.3. Q trình test với Mơ-đun 2 ........................................................ 57
3.3.4. Q trình test với Mơ-đun 3 ........................................................ 60
3.3.5. Q trình test với Mơ-đun 4 ........................................................ 62
3.3.6. Kiểm thử vòng lặp While ............................................................ 63
3.4. Đánh giá và so sánh kỹ thuật ma trận đồ thị với một số kỹ thuật thiết
kế ca kiểm thử khác ............................................................................... 64
3.5. Đánh giá kết quả thử nghiệm và hướng mở rộng .......................... 66
KẾT LUẬN VÀ KIẾN NGHỊ............................................................... 67
1.Kết luận .............................................................................................. 67
2. Kiến nghị ........................................................................................... 68
TÀI LIỆU THAM KHẢO ..................................................................... 69


iv
vi


DANH MỤC CÁC KÝ HIỆU/VIẾT TẮT

BRO:

Kiểm thử nhánh và toán tử quan hệ

CNTT:

Công nghệ thông tin

CSDL:

Cơ sở dữ liệu

E:

Số cạnh của đồ thị

N:

Số đỉnh của đồ thị

P:

Số đỉnh điều kiện có trong đồ thị

V(G):

Độ phức tạp của chu trình



v
vii
DANH MỤC CÁC HÌNH
Hình 1.1. Mơ hình chiến lược kiểm thử tổng thể ...................................... 5
Hình 1.2. Một số cấu trúc lập trình ........................................................... 8
Hình 1.3. Sơ đồ điều khiển chương trình .................................................. 9
Hình 1.4. Đồ thị của chương trình .......................................................... 10
Hình 1.5. Minh hoạ về độ phức tạp của câu lệnh.................................... 10
Hình 1.6. Minh hoạ về các bước kiểm tra ............................................... 11
Hình1.7. Lược đồ kiểm thử theo đường dẫn ........................................... 12
Hình1.8. Lược đồ kiểm thử đường dẫn theo biểu thức điều kiện ........... 13
Hình 1.9.Các kiểu vịng lặp ..................................................................... 14
Hình 2.1: Các thành phần cơ bản của đồ thị chương trình. .................... 17
Hình 2.2: Các cấu trúc điều khiển phổ biến của chương trình................ 17
Hình 2.3: Mã nguồn của hàm foo và đồ thị dịng điều khiển của nó. ..... 18
Hình 2.4: Sơ đồ điều khiển của chương trình ......................................... 30
Hình 2.5: Sơ đồ luồng điều khiển .......................................................... 30
Hình 2.6 : Đồ thị dòng dùng để xác định ma trận kiểm thử ................... 31
Hình 2.7: Độ phức tạp chu trình được xác định từ số miền phẳng trong
đồ thị dòng ............................................................................................... 32
Hình 2.8 : Đồ thị dịng dùng để xác định ma trận kiểm thử ................... 33
Hình 3.1. Sơ đồ điều khiển của chương trình ......................................... 40
Hình 3.2. Sơ đồ luồng điều khiển ........................................................... 41
Hình 3.3. Đồ thị dịng .............................................................................. 42
Hình 3.4. Độ phức tạp của chu trình ....................................................... 43
Hình 3.5. Đồ thị dịng .............................................................................. 44
Hình 3.6 Giao diện trang chủ .................................................................. 49
Hình 3.7 Giao diện hướng dẫn sử dụng của chương trình ...................... 50
Hình 3.8 Giao diện chính chạy chương trình .......................................... 50

Hình 3.9: Hộp thoại Open để tìm đường dẫn .......................................... 51
Hình 3.10: Form hiển thị mơ-đun cần kiểm thử ..................................... 51
Hình 3.11. Giao diện xác định tập đường cơ bản ................................... 52
Hình 3.12: Giao diện thơng báo lỗi khi nhập dữ liệu khơng hợp lệ ....... 53
Hình 3.13: Giao diện test đơn vị chương trình code_1 ........................... 53
Hình 3.14: Form xử lý với đơn vị chương trình code_2 ......................... 59
Hình 3.15: Lỗi tìm thấy trong mơ-đun code_2 ....................................... 60
Hình 3.16: Form kiểm thử ứng với code_3 ............................................. 61
Hình 3.17: Form kiểm thử ứng với code_4............................................. 63


viiivi
DANH MỤC CÁC BẢNG
Bảng 2.1. Ví dụ minh họa các đột biến ................................................... 21
Bảng 2.2 : Những chiến lược kết hợp ..................................................... 23
Bảng 2.3. Tập đường cơ bản ................................................................... 32
Bảng 2.4 : Ma trận kiểm thử A và cách tính độ phức tạp V(G).............. 34
Bảng 2.5 Bảng ma trận kiểm thử A= (aij) với i,j=1,2,3,4,...,9 được xác
định như sau: ........................................................................................... 34
Bảng 2.6 : Ví dụ ma trận kiểm thử tích A2= ........................................... 36
Bảng 3.1-Bảng tính độ phức tạp của đồ thị dòng V(G): ......................... 45
Bảng 3.2: Bảng ma trận kiểm thử A= (aij) với i,j=1,2,3,4,...,14............. 45
Bảng 3.3: Các Test path .......................................................................... 48
Bảng 3.4: Bảng các ca kiểm thử vòng lặp while .................................... 49
Bảng 3.5: Bảng TestData1 ...................................................................... 55
Bảng 3.6: Bảng TestData2 ...................................................................... 55
Bảng 3.7: Bảng TestData3 ...................................................................... 55
Bảng 3.8: Bảng TestData4 ...................................................................... 56
Bảng 3.9: Bảng TestData5 ...................................................................... 56
Bảng 3.10: Bảng TestData6 .................................................................... 56

Bảng 3.11: Bảng TestData7 .................................................................... 57
Bảng 3.12: Bảng TestData với code_2 ................................................... 58
Bảng 3.13: Kết quả bảng TestData với code_2 ...................................... 59
Bảng 3.14: Bảng TestData với code_3 ................................................... 61
Bảng 3.15: Bảng TestData với code_4 ................................................... 62


1

PHẦN MỞ ĐẦU
1. Lý do chọn đề tài
Quy trình phát triển phần mềm thường trải qua nhiều giai đoạn, trong
đó kiểm thử phần mềm là một trong các hoạt động chủ chốt nhằm phát hiện
lỗi và đảm bảo chất lượng phần mềm. Trước khi sản phẩm được phát hành, tất
cả các chức năng cũng như giao diện, ứng dụng của sản phẩm đó đều cần qua
kiểm thử. Kiểm thử hiệu quả sẽ phát hiện ra được các sai sót, tránh các lỗi
trước khi phát hành sản phẩm.
Để kiểm thử đạt hiệu quả cao, người kiểm thử cần vạch ra chiến lược
kiểm thử, đó là sự tích hợp các kỹ thuật thiết kế ca kiểm thử. Một trong các kỹ
thuật đó, khơng thể khơng nhắc đến đó là kỹ thuật ma trận đồ thị. Kỹ thuật ma
trận đồ thị là một trong những kỹ thuật của phương pháp kiểm thử hộp trắng.
Ma trận kiểm thử được sử dụng như một dữ liệu có cấu trúc để kiểm tra các
con đường cơ bản. Ma trận kiểm thử là một công cụ mạnh trong việc đánh giá
cấu trúc điều khiển chương trình.
Qua luận văn này, tơi mong muốn mọi người có những kiến thức cơ
bản về kiểm thử phần mềm nói chung, kiểm thử hộp trắng nói riêng. Đặc biệt,
tơi mong có thể đóng góp vào việc xây dựng quy trình thiết kế ca kiểm thử
bằng kỹ thuật ma trận đồ thị.
Trên đây là những lí do mà tơi chọn đề tài: “Kỹ thuật ma trận đồ thị
trong phương pháp kiểm thử hộp trắng” làm luận văn thạc sĩ của mình.

2. Đối tượng và phạm vi nghiên cứu
- Kiểm thử phần mềm nói chung và kiểm thử hộp trắng nói riêng.
- Một số kỹ thuật chính về thiết kế ca kiểm thử
- Kỹ thuật ma trận đồ thị để thiết kế ca kiểm thử
- Xây dựng phần mềm thử nghiệm kiểm thử bằng kỹ thuật ma trận đồ thị


2

- Áp dụng kỹ thuật ma trận đồ thị để kiểm thử phần mềm và so sánh với một
số kỹ thuật thiết kế ca kiểm thử khác.
3. Mục tiêu và nhiệm vụ nghiên cứu
- Luận văn tập trung nghiên cứu, tìm hiểu về kiểm thử phần mềm, phương
pháp kiểm thử hộp trắng, ca kiểm thử, đặc biệt là kiểm thử phần mềm bằng
kỹ thuật ma trận đồ thị
- Thiết kế chương trình kiểm thử để kiểm thử một số đơn vị chương trình.
4. Phương pháp nghiên cứu
- Phương pháp nghiên cứu lý thuyết: Sưu tập tài liệu, tổng hợp các phương
pháp kiểm thử phầm mềm, tập trung vào phương pháp kiểm thử hộp trắng,
nghiên cứu chi tiết quy trình thực hiện kỹ thuật ma trận đồ thị.
- Phương pháp nghiên cứu thực nghiệm: Cài đặt thử nghiệm chương trình
kiểm thử phần mềm bằng kỹ thuật ma trận đồ thị
- Phương pháp trao đổi khoa học: Trao đổi nội dung nghiên cứu với người
hướng dẫn, các đồng nghiệp để đề xuất và giải quyết các nội dung luận văn đề
ra.
5. Ý nghĩa khoa học của đề tài
Kết quả thử nghiệm của đề tài một mặt thể hiện tính đúng về mặt lý
thuyết, một mặt vừa mang tính minh hoạ vừa thể hiện khả năng ứng dụng
hiệu quả.
6. Bố cục của luận văn:

Toàn bộ nội dung của luận văn được chia thành ba chương như sau:
Chương 1: Tổng quan về kiểm thử phần mềm và kiểm thử hộp trắng
Chương 2: Một số kỹ thuật hiệu quả trong phương pháp kiểm thử hộp
trắng và ca kiểm thử
Chương 3: Chương trình thử nghiệm kiểm thử phần mềm bằng kỹ thuật
ma trận đồ thị.


3

CHƯƠNG 1
TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM VÀ KIỂM THỬ HỘP TRẮNG
1.1. Kiểm thử phần mềm
1.1.1. Quan niệm về kiểm thử phần mềm
Kiểm thử phần mềm (Software Testing) là một yếu tố quan trọng trong vấn
đề xác minh và thẩm định. Việc kiểm thử cung cấp một thành luỹ cuối cùng để
có thể thẩm định về mặt chất lượng, chứng thực hơn, phát hiện ra lỗi [7].
Theo Glen Myers, 1979, kiểm thử phần mềm là quá trình vận hành
chương trình để tìm ra lỗi. Một ca kiểm thử tốt là ca kiểm thử có xác suất cao
tìm ra một lỗi chưa được phát hiện. Một ca kiểm thử thắng lợi là ca kiểm thử
làm lộ ra được ít nhất một lỗi cịn chưa phát hiện. Với cách nhìn này, mục tiêu
của chúng ta là thiết kế các ca kiểm thử để có thể phát hiện một cách hệ thống
các loại lỗi khác nhau với chi phí thời gian và cơng sức ít nhất có thể.
Phát hiện lỗi là cơng việc của kiểm thử. Nhưng kiểm thử phần mềm
không phải là gỡ lỗi.
Kiểm thử phần mềm là một trong những yếu tố góp phần bảo đảm chất
lượng phần mềm, là khâu điển hình kiểm sốt đặc tả, thiết kế, lập mã.
Kiểm thử phần mềm là quá trình thực thi một chương trình với mục đích
tìm ra lỗi, đảm bảo sản phẩm phần mềm đáp ứng chính xác, đầy đủ và đúng
theo yêu cầu của khách hàng. Kiểm thử phần mềm cũng cung cấp mục tiêu,

cái nhìn độc lập về phần mềm, điều này cho phép việc đánh giá và hiểu rõ các
rủi ro khi thực thi phần mềm. Kiểm thử phần mềm tạo điều kiện tận dụng tối
đa tư duy đánh giá và sáng tạo để có thể phát hiện ra những điểm mà người
khác chưa nhìn thấy.
1.1.2. Chiến lược kiểm thử phần mềm
Chiến lược kiểm thử là sự tích hợp các kỹ thuật thiết kế “ca kiểm thử”
tạo thành một dãy các bước nhằm hướng dẫn quá trình kiểm thử phần mềm
thành công [9].


4

Ca kiểm thử (test case) là một tình huống kiểm thử tương ứng với một
mạch hoạt động của chương trình. Nó bao gồm một tập các giá trị đầu vào và
một danh sách các kết quả đầu ra mong muốn và thực tế.
Chiến lược kiểm thử được đặt ra với các mục tiêu nhằm phác thảo lộ
trình để:
- Nhà phát triển tổ chức việc bảo đảm chất lượng bằng kiểm thử;
- Khách hàng hiểu được công sức, thời gian và nguồn lực cần cho kiểm
thử
Chiến lược kiểm thử cần đạt các yêu cầu sau:
- Tích hợp các khâu như lập kế hoạch, thiết kế ca kiểm thử, tiến hành
kiểm thử, thu thập và đánh giá các thông tin kết quả;
- Đủ mềm dẻo để cổ vũ óc sáng tạo, đáp ứng được yêu cầu khách hàng;
- Thích ứng với mức kiểm thử cụ thể;
- Đáp ứng các đối tượng quan tâm khác;
1.1.3. Các mức kiểm thử [9]
Trong tiến trình kiểm thử, người ta chia ra thành nhiều mức kiểm thử. Về
phương diện thực hành người ta thường chia thành 4 mức cơ bản:
Mức 1. Kiểm thử đơn vị (Unit testing);

Mức 2. Kiểm thử tích hợp (Integration testing);
Mức 3. Kiểm thử hệ thống (System testing), bao gồm:
- Kiểm thử chức năng (functional test: system and interface)
- Kiểm thử phục hồi (recovery test)
- Kiểm thử chịu tải (extra: stress and load test)
- Kiểm thử thi hành (performance test)
- Kiểm thử an ninh (security test)
Mức 4. Kiểm thử chấp nhận (acceptance testing)/thẩm định
Có 2 tiến trình thực hiện kiểm thử:


5

Tiến trình 1. Tiến trình thực hiện kiểm thử tương ứng với tiến trình phát
triển (theo từng mơ hình).
Tiến trình 2. Tiến trình kiểm thử thường theo mơ hình chiến lược kiểm
thử tổng thể:
Kiểm thử
đơn vị

Kiểm thử
tích hợp

Mơđun
đơn vị

Mơđun
chức năng,
hệ con


Kiểm thử
hệ thống
Cả phần cứng,
phần mềm

Kiểm thử
thẩm định
Hệ thống
thực

Hình 1.1. Mơ hình chiến lược kiểm thử tổng thể
1.1.4. Sơ lược về các phương pháp kiểm thử
Bất kỳ sản phẩm kỹ nghệ nào đều có thể được kiểm thử theo một trong
hai cách [1,2,5,6,15]:
Cách 1. Kiểm thử chức năng/hộp đen: cho dữ liệu đầu vào đúng/sai,
kiểm tra đầu ra đúng/sai, tức là kiểm thử xem từng chức năng có vận hành
đúng không, không quan tâm đến cấu trúc bên trong của chức năng đó.
Cách 2. Kiểm thử cấu trúc/hộp trắng: khơng những quan tâm đến mối
quan hệ giữa đầu vào và đầu ra của chức năng đó mà cịn quan tâm, đến cấu
trúc bên trong, quan tâm chi tiết đến từng đầu vào, đầu ra của các thành phần
cấu thành trong đó và cả sự ăn khớp giữa chúng nữa, tức là bảo đảm rằng sự
vận hành bên trong thực hiện đúng theo đặc tả và tất cả các thành phần bên
trong đều được quan tâm và được kiểm tra một cách chi tiết.
Đối với phần mềm máy tính, kiểm thử hộp đen biểu thị việc kiểm thử
được tiến hành tại giao diện phần mềm. Mặc dù chúng được thiết kế để phát
hiện ra lỗi, kiểm thử hộp đen được dùng để thể hiện rằng các chức năng phần
mềm đã vận hành, cái vào được chấp nhận đúng, và cái ra được tạo ta đúng,
tính tồn vẹn của thơng tin ngồi (như tệp dữ liệu) là được duy trì. Phép kiểm



6

thử hộp đen xem xét một số khía cạnh của hệ thống ít để ý tới cấu trúc logic
bên trong của phần mềm.
1.2. Kiểm thử hộp trắng
1.2.1. Ý tưởng của kiểm thử hộp trắng
Kiểm thử hộp trắng (white-box test) không những quan tâm đến mối
quan hệ giữa đầu vào và đầu ra của chức năng đó mà cịn quan tâm đến cấu
trúc bên trong, quan tâm chi tiết đến từng đầu vào đầu ra của các thành phần
cấu thành trong đó và cả sự ăn khớp giữa chúng nữa, tức là bảo đảm rằng sự
vận hành bên trong thực hiện đúng theo đặc tả và tất cả các thành phần bên
trong đều được quan tâm và được kiểm tra một cách chi tiết [9].
Kiểm thử hộp trắng được hướng tới việc xem xét kỹ về chi tiết thủ tục.
Các đường logic đi qua phần mềm được kiểm thử bằng cách đưa ra các
trường hợp kiểm thử, vốn thực hiện trên một tập xác định các điều kiện và
/hoặc chu trình. “Trạng thái của chương trình” có thể được xem xét tại nhiều
điểm khác nhau để xác định liệu trạng thái dự kiến hay khẳng định có tương
ứng với trạng thái thực tại không [9].
Bản chất của khiếm khuyết phần mềm chính là lý do đầu tiên phải kiểm
thử hộp trắng. Hơn nữa, việc kiểm thử hộp đen, dù làm kỹ lưỡng đến đâu vẫn
có thể sót nhiều loại lỗi. Theo Beizer: “Lỗi ẩn nấp trong các ngóc ngách và
tập hợp tại biên giới”. Việc kiểm thử hộp trắng có nhiều khả năng phát hiện ra
chúng hơn,...
Kiểm thử hộp trắng (white box) là việc kiểm tra các đoạn mã chương
trình xem nó có vận hành đúng như thiết kế hay khơng. Kiểm thử hộp trắng
dựa trên việc xem xét cấu trúc bên trong của chương trình theo cấu trúc điều
khiển và sự hoạt động của chúng. Nó có nhiều tên gọi khác như glass testing,
structure testing, open box testing, clear box testing [Beizer 1995]. Đối tượng
của kiểm thử hộp trắng là các mã nguồn ở các mô-đun đơn vị [7,8].



7

Kiểm thử hộp trắng sử dụng các chiến lược cụ thể và sử dụng mã nguồn
của chương trình/đơn vị phần mềm cần kiểm thử nhằm kiểm tra xem chương
trình/đơn vị phần mềm có thực hiện đúng so với thiết kế và đặc tả hay không.
Trong khi các phương pháp kiểm thử hộp đen chỉ cho phép phát hiện các
lỗi/khiếm khuyết có thể quan sát được, kiểm thử hộp trắng cho phép phát hiện
các lỗi/khiếm khuyết tiềm ẩn bên trong chương trình/đơn vị phần mềm, các
lỗi này thường khó phát hiện bởi các phương pháp kiểm thử hộp đen.
Kiểm thử hộp đen và kiểm thử hộp trắng không thể thay thế cho nhau mà
chúng cần được sử dụng kết hợp với nhau trong một quy trình kiểm thử thống
nhất nhằm đảm bảo chất lượng phần mềm. Tuy nhiên, để áp dụng các phương
pháp kiểm thử hộp trắng, người kiểm thử không chỉ cần hiểu rõ giải thuật mà
cịn cần có các kỹ năng và kiến thức tốt về ngôn ngữ lập trình được dùng để
phát triển phần mềm, nhằm hiểu rõ mã nguồn của chương trình/đơn vị phần
mềm cần kiểm thử. Do vậy, việc áp dụng phương pháp kiểm thử hộp trắng
thường tốn thời gian và công sức nhất là khi chương trình/đơn vị phần mềm
có kích thước lớn. Vì lý do này, phương pháp kiểm thử hộp trắng chủ yếu
được sử dụng cho kiểm thử đơn vị.
1.2.2. Mô tả một số cấu trúc theo lược đồ
Trong các phương pháp kiểm tra tính đúng đắn của chương trình, lược
đồ được dùng để:
- Trừu tượng hóa cú pháp của mã lệnh;
- Làm khuôn mẫu cơ bản cho các nguyên tắc kiểm tra theo trường hợp.
- Kiểm tra tính đúng đắn trên tồn bộ lược đồ.


8


UNTIL

SEQUENCE
IF

WHILE

CASE

Hình 1.2. Một số cấu trúc lập trình
1.2.3. Một số hướng chính về kiểm thử hộp trắng
1.2.3.1. Kiểm thử theo câu lệnh (Statement Testing)
Thiết kế quá trình kiểm thử sao cho mỗi câu lệnh của chương trình được
thực hiện ít nhất một lần. Phương pháp kiểm thử này xuất phát từ ý tưởng [1]:
- Trừ phi một câu lệnh được thực hiện, nếu khơng ta khơng thể biết được
có lỗi xảy ra trong câu lệnh đó hay khơng.
- Việc kiểm thử với một giá trị đầu vào không đảm bảo là sẽ đúng cho
mọi trường hợp.
Ví dụ: Đoạn chương trình thực hiện tính:
result = 0+1+...+|valuel|,
nếu result <= maxint, báo lỗi trong trường hợp ngược lại.
1. PROGRAM maxsum ( maxint, value : INT)
2. INT result :=0;i := 0 ;
3. IF value < 0
4. THEN value := - value;
5. WHILE ( i < value ) AND ( result <= maxint)
6. DO BEGIN
7. i:=i+1; result := result + i;
8. END;
9. IF result <= maxint



9

10. THEN OUTPUT ( result )
11. ELSE OUTPUT (“too large”)
12. END.

1

2

3

4

5

6,7

8

9
11

10
12

Hình 1.3. Sơ đồ điều khiển chương trình



10

Start
Value<0

Yes

Value:=Value

No
i:=i+1
result:=result + i
(i(result<=maxint
)

Yes

No
Yes

result< =maxint

No

output (“too large”);

output (result);


End.
Hình 1.4. Đồ thị của chương trình
Ví dụ: Với các bộ giá trị đầu vào (input): maxint = 10, value = -1 hay:
maxint = 0, value = -1 sẽ kiểm tra được toàn bộ các câu lệnh trong đoạn
chương trình trên.
Để đánh giá phương pháp này ta xem qua ví dụ sau:

A

B

Hình 1.5. Minh hoạ về độ phức tạp của câu lệnh


11

Với câu hỏi đầu tiên “Lược đồ nào phức tạp hơn”, ta có câu trả lời là B.
Với câu hỏi tiếp theo “Lược đồ nào cần các bước kiểm tra nhiều hơn?”
Ta cũng trả lời là B.

Số kiểm tra: 2

Số kiểm tra: 2

Hình 1.6. Minh hoạ về các bước kiểm tra
Tuy nhiên, ta thấy số lần kiểm tra tối thiểu để có thể kiểm tra tồn bộ các
câu lệnh như trên cho cả hai hàm đều là 2. Vì vậy, phương pháp này không
tương ứng với sự phức tạp của mã lệnh.
1.2.3.2. Kiểm thử theo đường dẫn (Path Testing)
Kiểm thử theo đường dẫn là phương pháp kiểm thử bao trùm mọi đường

dẫn của chương trình và cần kết hợp với lược đồ tiến trình.


12

Hình dưới đây giải thích đường dẫn của chương trình [1]
If (A>B)
S1;
S2;
else
S3;

A>B

S1;S2;

While (A{
S1;
S2;
}
S3;
S4

S3;

ATrue

False


S1; S2;
S3;

A
If (AS1;
else
S2;
S3;

True

False

CTrue

False

S1;

Nhận xét:

S2;

S3;

Hình1.7. Lược đồ kiểm thử theo đường dẫn


Phương pháp kiểm thử theo đường dẫn phụ thuộc nhiều vào các biểu
thức điều kiện (Xem hình 1.8). Tuy nhiên, có những trường hợp số lượng
đường dẫn q lớn (trường hợp vịng lặp). Vì vậy chương trình này thường
khơng phải là lựa chọn thực tế để tiến hành việc kiểm tra tính đúng đắn của
chương trình.


13

Có khoảng 520= 95.367.431.640.625 đường dẫn

Loop < 20

Hình1.8. Lược đồ kiểm thử đường dẫn theo biểu thức điều kiện
1.2.3.3. Kiểm thử theo điều kiện (Condition Testing)
Kiểm thử theo điều kiện là phương pháp kiểm thử các biểu thức điều
kiện trên hai giá trị true và false [1].
Ta xét các ví dụ sau:
if (x > 0 &&y>0) x= 1;
else
x=2;
Các bộ kiểm tra { (x>0, y>0), (x <=0, y>0) } sẽ kiểm thử tồn bộ các
điều kiện.
Tuy nhiên, khơng thỏa mãn với mọi giá trị đầu vào, cần kết hợp cả x và y
để thực hiện bước kiểm thử.


14


1.2.3.4 Kiểm thử theo vòng lặp (Loop Testing)
Kiểm thử theo vịng lặp là phương pháp tập trung vào tính hợp lệ của
các cấu trúc vòng lặp. Các loại vòng lặp được thể hiện như sau [1,8]:

Vòng lặp đơn giản

Vòng lặp lồng
nhau

Vịng lặp nối tiếp nhau

Vịng lặp khơng cấu trúc

Hình 1.9.Các kiểu vòng lặp

- Các bước cần kiểm thử cho vòng lặp đơn
+ Bỏ qua vòng lặp.
+ Lặp một lần.
+ Lặp hai lần.
+ Lặp m lần (men).
+ Lặp (n-1), n, (n+1) lần.
Trong đó n là số lần lặp tối đa của vòng lặp.
- Các bước cần kiểm thử cho vòng lặp dạng lồng nhau
+ Khởi đầu với vòng lặp nằm bên trong nhất. Thiết lập các tham số lặp
cho các vòng lặp bên ngoài về giá trị nhỏ nhất.
+ Kiểm tra với tham số min+1, một giá trị tiêu biểu, max-1 và max cho
vòng lặp bên trong nhất trong khi các tham số lặp của các vịng lặp bên ngồi
là nhỏ nhất.



15

+ Tiếp tục tương tự với các vòng lặp liền ngồi tiếp theo cho đến khi tất
cả vịng lặp bên ngoài được kiểm tra.
- Các bước cần kiểm thử cho vòng lặp nối tiếp
+ Nếu các vòng lặp là độc lập với nhau thì kiểm tra như trường hợp các
vịng lặp dạng đơn, nếu khơng thì kiểm thử như trường hợp các vịng lặp lồng
nhau.
Ví dụ: // LOOP TESTING EXAMPLE PROGRAM
import java.io.*;
class LoopTestExampleApp {
//---------------------------- FIELDS -----------------------public static BufferedReader keyboardinput =
new BufferedReader(new InputStreamReader(System.in));
private static final int MINIMUM = 1;
private static final int MAXIMUM = 10;
I I --------------------------- METHODS ----------------------/* Main method */
public static void main(String[] args) throws lOException {
System.out.println("Input an integer value:”);
int input = new Integer(keyboardInput.readLine()).intValue();
int numberOflterations = 0;