ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƢỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
DƢƠNG THỊ PHƢỢNG CƠ SỞ TOÁN HỌC CHO CÁC KỸ THUẬT
KIỂM THỬ PHẦN MỀM
LUẬN VĂN THẠC SĨ KHOA HỌC
Hà Nội - Năm 2012
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƢỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
DƢƠNG THỊ PHƢỢNG CƠ SỞ TOÁN HỌC CHO CÁC KỸ THUẬT
KIỂM THỬ PHẦN MỀM
Chuyên ngành: BẢO ĐẢM TOÁN CHO MÁY TÍNH
Chƣơng 2: Phƣơng pháp phân hoạch (quy hoạch) toán học trong kiểm thử hộp
đen 12
2.1. Phƣơng pháp kiểm thử dựa trên phân hoạch tƣơng đƣơng 12
2.1.1. Phân lớp tƣơng đƣơng mạnh 17
2.1.2. Phân lớp tƣơng đƣơng yếu 18
2.1.3. Phân lớp tƣơng đƣơng truyền thống 19
2.2 Ứng dụng 21
2.2.1 Kiểm thử chƣơng trình nhập điểm thi cao học 21
2.2.2 Kiểm thử chƣơng trình sau khi lập trình viên đã sửa lỗi 26
Chƣơng 3: Cơ sở toán học trong kiểm thử hộp trắng 27
3.1. Ứng dụng đồ thị lƣu trình trong lý thuyết đồ thị vào kiểm thử luồng điều khiển
(Basic Path Testing). 27
3.2 Áp dụng vào kiểm thử đoạn mã chƣơng trình trong ví dụ "Nhập điểm thi cao
học" 33
3.2.1 Trƣờng hợp 1: Đoạn mã chƣơng trình A 34
3.2.2 Trƣờng hợp 2: Đoạn mã chƣơng trình B (đã chỉnh sửa). 39
Chƣơng 4: Kết luận 44
Luận văn cao học Dương Thị Phượng
- 2 -
DANH MỤC CÁC BẢNG VÀ HÌNH VẼ
Hình 1.1 - Giai đoạn kiểm thử trong xử lý phần mềm 9
Hình 1.2 - Tiến trình kiểm thử phần mềm 10
Bảng 2.1 - Mẫu bảng liệt kê các lớp tƣơng đƣơng 13
Hình 2.1 - Nguyên tắc phân hoạch tập hợp. 14
Hình 2.2 - Phân lớp tƣơng đƣơng cho bài toán điểm thi cao học 16
Bảng 2.2. Bảng liệt kê các lớp tƣơng đƣơng cho bài toán điểm thi cao học 16
Hình 2.3 - Chọn giá trị tại mỗi lớp tƣơng đƣơng cho bài toán điểm thi cao học 16
Bảng 2.3 - Danh sách các ca kiểm thử sinh ra theo phân lớp tƣơng đƣơng mạnh
Bảng 2.4 - Danh sách các ca kiểm thử sinh ra theo phân lớp tƣơng đƣơng yếu 18
Bảng 2.5 - Danh sách các ca kiểm thử sinh ra theo phân lớp tƣơng đƣơng truyền
gồm các khâu sau: Phân tích yêu cầu, phân tích hệ thống, thiết kế phần mềm,
lập trình, kiểm thử phần mềm, triển khai phần mềm và bảo trì phần mềm [2,
6, 13]. Trong quy trình này, kiểm thử phần mềm đóng vai trò hết sức quan
trọng nhằm đảm bảo chất lƣợng của sản phẩm. Nó 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. Tuy nhiên, kiểm thử phần mềm đang đƣợc xem là một khâu yếu
nhất trong quy trình phát triển phần mềm. Mỗi dự án gia công phần mềm cho
Công ty nƣớc ngoài, trên thực tế 50% dùng để chi phí cho lập trình, còn lại
50% dùng chi phí cho việc kiểm thử [13]. Hiện tại các Công ty phần mềm làm
công tác kiểm thử chƣa tốt và là công việc khó khăn trong Công ty phần mềm,
nên công tác đào tạo về kiểm thử cần đƣợc coi trọng.
Quy trình kiểm thử phần mềm gồm bai giai đoạn chính: sinh các ca kiểm
thử và chạy các ca kiểm thử này nhằm phát hiện các lỗi/khiếm khuyết của hệ
thống [5]. Nếu sản phẩm chạy qua tất cả các ca kiểm thử với kết quả thu đƣợc
Luận văn cao học Dương Thị Phượng
- 4 -
giống với kết quả mong muốn thì ta có thể tin tƣởng vào chất lƣợn của sản
phẩm. Ngƣợc lại, một kết quả không đúng giúp ta tìm và sửa các lỗi và kết
quả là ta phải chạy lại toàn bộ các ca kiểm thử. Trong hai giai đoạn này, việc
sinh các ca kiểm thử có vai trò quyết định đến khả năng phát hiện lỗi/khiếm
khuyết của quá trình kiểm thử. Làm thế nào để sinh đƣợc bộ kiểm thử tốt
(gồm các ca kiểm thử) là bài toán khó trong kiểm thử phần mềm. Việc sinh bộ
kiểm thử tốt phụ thuộc vào phƣơng pháp chúng ta sử dụng. Có nhiều phƣơng
pháp sinh ra bộ kiểm thử [10], mỗi phƣơng pháp đều có ƣu và nhƣợc điểm
riêng. Vì vậy, ngƣời sinh ra bộ kiểm thử phải bơi trong biển các phƣơng pháp
kiểm thử. Trong nhiều trƣờng hợp, có thể họ sử dụng một phƣơng pháp kiểm
thử nào đó nhƣng không nắm đƣợc bản chất toán học của phƣơng pháp này
nên sinh ra các ca kiểm thử không tốt. Điều này giống nhƣ việc khi mua m ột
chiếc máy tính mới cấu hình mạnh, tính năng sử dụng nhiều nhƣng ngƣời sử
dụng lại không biết khai thác điểm mạnh của nó mà chỉ sử dụng thƣờng
Luận văn cao học Dương Thị Phượng
- 6 -
CHƯƠNG 1
TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM
1.1. Các khái niệm cơ bản về kiểm thử phần mềm
Kiểm thử phần mềm
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 đó [5].
Kiểm thử phần mềm thƣờng đồng nghĩa với việc tìm ra lỗi chƣa đƣợc
phát hiện. Tuy nhiên, có nhiều bối cảnh kiểm thử không bộc lộ ra lỗi. Kiểm
chấp nhận sản phẩm (acceptance test). Nguyên nhân một phần lớn là do kiểm
thử viên chƣa làm đúng quy trình trong quá trình xây dựng các ca kiểm thử.
Vì vậy chúng ta cần hiểu rõ lý do của việc kiểm thử để từ đó thấy đƣợc ý
nghĩa của việc xây dựng ca kiểm thử hiệu quả. Có một số lý do chính của hoạt
động kiểm thử phần mềm nhƣ sau. Lý do thứ nhất, về khía cạnh xem xét sản
phẩm, ngƣời phát triển muốn kiểm tra phần mềm nhƣ một phần tử của hệ
thống hoạt động thì cần phải thực hiện thông qua hoạt động kiểm thử phẩn
mềm. Lý do quan trọng thứ hai là khi thực hiện tốt hoạt động kiểm thử, chúng
ta sẽ hạn chế đƣợc chi phí cho các thất bại do lỗi gây ra sau này. Đây chính là
hiệu quả của hoạt động kiểm thử mang lại và cũng chính là mục tiêu của
ngƣời phát triển hệ thống khi thực hiện hoạt động kiểm thử phần mềm. Ngoài
ra còn có một lý do liên quan đến giải pháp phát triển, khi thực hiện hoạt động
kiểm thử, đội phát triển sẽ có kế hoạch tốt nâng cao chất lƣợng suốt quá trình
phát triển phần mềm [4].
Luận văn cao học Dương Thị Phượng
- 8 -
Chất lƣợng phần mềm là một khái niệm đa chiều, không dễ định nghĩa
đơn giản theo cách chung cho các sản phẩm là: “Sản phẩm đƣợc phát triển
phù hợp với đặc tả của nó.” (Ian Somerville [6] trích dẫn định nghĩa của
Crosby). Có một số vấn đề khó trong hệ thống phần mềm, đó là: Đặc tả phải
định hƣớng theo những đòi hỏi về chất lƣợng của khách hàng (nhƣ tính hiệu
quả, độ tin cậy, tính dễ hiểu, tính bảo mật,…) và những yêu cầu của chính tổ
chức phát triển phần mềm vốn không có trong đặc tả (nhƣ các yêu cầu về khả
năng bảo trì, tính sử dụng lại, )
Một số yêu cầu về chất lƣợng cũng rất khó chỉ ra một cách rõ ràng (nhƣ
tính bảo trì). Những đặc tả phần mềm thƣờng không đầy đủ và hay mâu
thuẫn. Vì thế phải có sự thỏa hiệp về chất lƣợng: Chúng ta không thể đợi các
đặc tả hoàn thiện trƣớc khi chú ý đến quản lý chất lƣợng, chúng ta phải sắp
xếp các thủ tục để hoàn thiện chất lƣợng mặc dù đặc tả chƣa hoàn thiện.
Quản lý chất lƣợng không chỉ quan tâm đến việc làm hạn chế tối thiểu
1.1 mô tả vị trí của kiểm thử phần mềm trong quy trình phát triển phần mềm.
Trong quy trình này, kiểm thử phần mềm đƣợc tiến hành sau khi cài đặt xong
các đơn vị (unit) hoặc tiến hành tích hợp hệ thống và kiểm thử chấp nhận. Hình 1.1. Giai đoạn kiểm thử trong quy trình phát triển phần mềm
Phân tích
Thiết kế
Mã hóa
KIỂM
THỬ
Bàn giao
SP
Kế hoạch kiểm thử
Các trƣờng hợp kiểm thử
Dữ liệu kiểm thử
Các báo cáo
kiểm thử
Luận văn cao học Dương Thị Phượng
- 10 -
1.2. Quy trình kiểm thử phần mềm
Hình 1.2. Quy trình kiểm thử phần mềm
Qui trình kiểm thử phần mềm chứa các bƣớc cơ bản nhƣ mô tả trong
hình 1.2. Dƣới đây là mô tả chi tiết nội dung của các bƣớc trên.
kiểm thử
Báo cáo
kiểm thử
Lập kế
hoạch kiểm
thử
Kế hoạch
kiểm thử
Yêu cầu, mã
nguồn
Nhật ký
Luận văn cao học Dương Thị Phượng
- 11 -
+ Phƣơng pháp kiểm thử hộp trắng để kiểm thử cấu trúc bên trong
của chƣơng trình. Phƣơng pháp này cho phép phát hiện các lỗi
tiềm năng mà rất khó phát hiện bởi phƣơng pháp kiểm thử hộp
đen.
+ Giống nhƣ nguyên lý tảng băng trôi, phƣơng pháp kiểm thử hộp
đen chỉ phát hiện ra đƣợc các lỗi ứng với phần nổi của tảng băng
trong khi phƣơng pháp kiểm thử hộp trắng cho phép phát hiện các
lỗi ứng với phần chìm của nó.
- Xử lý đo lƣờng kiểm thử bằng cách thu thập dữ liệu. Ở đây, ngƣời kiểm
thử không thể trực tiếp cải tiến chƣơng trình mà họ chỉ có thể đánh giá
nó.
- Đánh giá sản phẩm phần mềm để xác nhận sản phẩm có thể sẵn sàng
phát hành đƣợc chƣa? Đƣa ra báo cáo kiểm thử để hoàn thành quá trình
kiểm thử.
Quan hệ trên tập A gọi là đối xứng nếu a b b a với a, bA
Quan hệ trên tập A gọi là bắc cầu nếu a b và b c a c với
a,b,c A
Một quan hệ có tính phản xạ, đối xứng và bắc cầu gọi là quan hệ
tƣơng đƣơng. Chẳng hạn quan hệ “=” trên tập N (số nguyên) là quan
hệ tƣơng đƣơng nhƣng quan hệ “>” trên tập N thì không phải.
Một quan hệ tƣơng đƣơng phân hoạch tập hợp thành các lớp tƣơng
đƣơng rời rạc. Chẳng hạn quan hệ =(a,b): a, b N, a+b là số chẵn
có hai phân hoạch {0, 2, 4, …} và {1, 3, 5, …}.
Nhƣ vậy dựa vào bản chất của toán học nói trên, trong kiểm thử phần
mềm ngƣời ta đã áp dụng để đƣa ra phƣơng pháp "Phân hoạch tƣơng đƣơng".
Phƣơng pháp phân hoạch tƣơng đƣơng trong kiểm thử phần mềm đƣợc thực
hiện nhƣ sau: Các lớp tƣơng đƣơng đƣợc nhận dạng bằng cách lấy mỗi điều
kiện đầu vào (thông thƣờng là một câu lệnh hoặc một cụm từ trong đặc tả) và
Luận văn cao học Dương Thị Phượng
- 13 -
phân hoạch nó thành hai hoặc nhiều nhóm. Các lớp tƣơng đƣơng biểu diễn
một tập các trạng thái hợp lệ hoặc không hợp lệ cho điều kiện đầu vào. Điều
kiện đầu vào là giá trị số xác định, hoặc miền giá trị, tập giá trị có liên quan,
hoặc điều kiện logic. Để làm điều này, chúng ta sử dụng bảng liệt kê các lớp
tƣơng đƣơng.
Bảng 2.1 - Mẫu bảng liệt kê các lớp tƣơng đƣơng
Điều kiện vào/ra
Các lớp tƣơng đƣơng
hợp lệ
Các lớp tƣơng đƣơng
không hợp lệ
, A
2
, A
3
… của tập X tạo nên một phân hoạch của
X, nếu:
)(
1
XA
i
n
i
và
)(
ji
AA
= và (A
i
)
Hình 2.1 - Nguyên tắc phân hoạch tập hợp.
Công thức mô tả trong hình 2.1 cho chúng ta thấy rằng, để tránh việc đƣa
ra các lớp tƣơng đƣơng không hợp lệ tức là thực hiện phân hoạch tƣơng
đƣơng không chính xác, cần chú ý một số nguyên tắc sau: Các lớp phân hoạch
con là những lớp hoàn toàn độc lập tức là hai lớp tƣơng đƣơng bất kì không
đƣợc có phần tử chung giao nhau. Khi chúng ta thực hiện phân lớp tƣơng
đƣơng thì không để tồn tại một lớp con là tập rỗng. Hợp của các lớp con phải
chứa toàn bộ các phần tử của tập ban đầu để đảm bảo tính đầy đủ của dữ liệu
"Trƣợt" nếu: D1, D2 [0, 5); D3 [0, 50)
Áp dụng “Phân hoạch tƣơng đƣơng” theo lý thuyết tập hợp trong toán
học ta chia điểm của mỗi môn thành từng phân hoạch nhƣ hình 2.2:
Luận văn cao học Dương Thị Phượng
- 16 -
Hình 2.2 - Phân lớp tƣơng đƣơng cho bài toán điểm thi cao học
Bảng 2.2. Bảng liệt kê các lớp tƣơng đƣơng cho bài toán điểm thi cao học
Điều kiện vào/ra
Các lớp tƣơng đƣơng hợp lệ
Các lớp tƣơng đƣơng không
hợp lệ
Điểm môn 1 (D1)
0 ≤ D1< 5 ; 5≤ D1≤ 10
D1 < 0 ; D1 >10
Điểm môn 2 (D2)
0 ≤ D2< 5 ; 5≤ D2≤ 10
D1 < 0 ; D1 >10
Điểm môn 3 (D3)
0 ≤ D1< 50 ; 50≤ D1≤ 100
D1 < 0 ; D1 >100
Giả sử mỗi phân hoạch (lớp tƣơng đƣơng hợp lệ và không hợp lệ) ta lấy
10
5
D1
D2
-10
3
7
12
-11
4
8
15
0
100
50
D3
-7
20
85
140
Luận văn cao học Dương Thị Phượng
- 17 -
2.1.1 Phân lớp tƣơng đƣơng mạnh
Với phƣơng pháp này, sau khi phân hoạch miền giá trị của các biến đầu
vào thành các lớp tƣơng đƣơng thì việc sinh các trƣờng hợp kiểm thử thực
hiện theo nguyên tắc mỗi ca kiểm thử là một phần tử của tích đề các của các
phân hoạch con đó. Do đó số lƣợng ca kiểm thử sinh ra chính là số phần tử
của tích đề các này vậy số ca kiểm thử đƣợc sinh ra trong ví dụ là:
4 x 4 x 4 = 64 ca kiểm thử
Bảng 2.3. Danh sách ca kiểm thử đƣợc sinh theo phân lớp tƣơng đƣơng mạnh
-7
Dữ liệu sai
TC_06
-10
4
20
Dữ liệu sai
TC_07
-10
4
85
Dữ liệu sai
TC_17
3
-11
-7
Dữ liệu sai
TC_18
3
-11
20
Dữ liệu sai
TC_19
3
-11
85
Dữ liệu sai
TC_20
3
-11
…
…
TC_59
12
8
85
Dữ liệu sai
TC_60
12
8
140
Dữ liệu sai
TC_62
12
15
20
Dữ liệu sai
TC_63
12
15
85
Dữ liệu sai
TC_64
12
15
140
Dữ liệu sai
Luận văn cao học Dương Thị Phượng
- 18 -
3
4
20
Trƣợt
TC_03
7
8
85
Đỗ
TC_04
12
15
140
Dữ liệu sai
Ở trƣờng hợp phân lớp tƣơng đƣơng yếu bắt đƣợc các lỗi của chƣơng
trình và trả về đầu ra đúng nhƣ đầu ra mong muốn, số lƣợt các ca kiểm thử ít,
tuy nhiên chúng ta không thể khẳng định rằng đã bắt hầu hết các lỗi chƣa.
Chính vì vậy phƣơng pháp này gần nhƣ không dùng.
Luận văn cao học Dương Thị Phượng
- 19 -
2.1.3 Phân lớp tƣơng đƣơng truyền thống
Phân lớp tƣơng đƣơng truyền thống là phƣơng pháp đơn giản nhất trong
các kỹ thuật kiểm thử theo phân lớp tƣơng đƣơng. Với phƣơng pháp này thì
việc phân lớp tƣơng đƣơng cho miền giá trị của các biến đầu vào chỉ cần quan
tâm 02 lớp sau: Lớp tƣơng đƣơng hợp lệ (chứa dữ liệu của biến đầu vào nằm
trong miền hợp lệ) và lớp tƣơng đƣơng không hợp lệ (chứa dữ liệu của biến
đầu vào nằm trong miền không hợp lệ). Ý tƣởng của việc sinh ca kiểm thử
cho phƣơng pháp này thực hiện theo nguyên tắc: Khi chúng ta xây dựng ca
kiểm thử cho trƣờng hợp đúng thì chỉ cần lấy các giá trị biến đầu vào nằm
trong miền hợp lệ. Tức là ca kiểm thử sinh ra với điều kiện giá trị đầu vào của
8
20
Dữ liệu sai
Luận văn cao học Dương Thị Phượng
- 20 -
TC_ID
Đầu vào (Input)
Đầu ra mong muốn
D1
D2
D3
TC_04
-10
8
85
Dữ liệu sai
TC_05
3
-11
20
Dữ liệu sai
TC_06
3
-11
85
Dữ liệu sai
TC_07
3
4
-7
Dữ liệu sai
TC_14
7
-11
20
Dữ liệu sai
TC_15
7
-11
85
Dữ liệu sai
TC_16
7
4
-7
Dữ liệu sai
TC_17
7
4
85
Trƣợt
TC_18
7
4
140
Dữ liệu sai
TC_19
7
8
-7
Dữ liệu sai
TC_26
12
4
85
Dữ liệu sai
TC_27
12
8
20
Dữ liệu sai
TC_28
12
8
85
Dữ liệu sai
Đối với phân lớp tƣơng đƣơng truyền thống khả năng phát hiện lỗi tƣơng
đƣơng với phân lớp tƣơng đƣơng mạnh, song số lƣợng các ca kiểm thử trong
phân lớp tƣơng đƣơng truyền thống ít hơn rất nhiều so với số lƣợng các ca
kiểm thử trong phân lớp tƣơng đƣơng mạnh. Ngƣời kiểm thử nên chọn
phƣơng pháp này.
Luận văn cao học Dương Thị Phượng
- 21 -
2.2 Ứng dụng
Với ví dụ 1 nhƣ đã nêu ở mục 2.1, tôi xây dựng một chƣơng trình thực tế
chạy thử qua tất cả các ca kiểm thử đã đƣợc sinh ra ở cả ba phƣơng pháp:
phƣơng pháp phân lớp tƣơng đƣơng mạnh, phƣơng pháp phân lớp tƣơng
đƣơng yếu, phƣơng pháp phân lớp tƣơng đƣơng truyền thống đã trình bày ở
trên nhằm kiểm tra việc bắt lỗi chƣơng trình.
-10
-11
20
Dữ liệu sai
Dữ liệu sai
Ok
TC_03
-10
-11
85
Dữ liệu sai
Dữ liệu sai
Ok
TC_04
-10
-11
140
Dữ liệu sai
Dữ liệu sai
Ok
TC_05
-10
4
-7
Dữ liệu sai
Dữ liệu sai
Ok
TC_06
-10
4
Dữ liệu sai
Ok
TC_11
-10
8
85
Dữ liệu sai
Dữ liệu sai
Ok
TC_12
-10
8
140
Dữ liệu sai
Dữ liệu sai
Ok
TC_13
-10
15
-7
Dữ liệu sai
Dữ liệu sai
Ok
TC_14
-10
15
20
Dữ liệu sai
Dữ liệu sai
Ok
-11
85
Dữ liệu sai
Dữ liệu sai
Ok
TC_20
3
-11
140
Dữ liệu sai
Dữ liệu sai
Ok
TC_21
3
4
-7
Trƣợt
Dữ liệu sai
Not ok
TC_22
3
4
20
Trƣợt
Trƣợt
Ok
TC_23
3
4
85
Ok
TC_28
3
8
140
Dữ liệu sai
Dữ liệu sai
Ok
Luận văn cao học Dương Thị Phượng
- 23 -
TC_ID
Dữ liệu vào
Đầu ra thực tế
Đầu ra mong
muốn
Kết quả
D1
D2
D3
TC_29
3
15
-7
Dữ liệu sai
Dữ liệu sai
Ok
TC_30
3
15
20
Ok
TC_35
7
-11
85
Dữ liệu sai
Dữ liệu sai
Ok
TC_36
7
-11
140
Dữ liệu sai
Dữ liệu sai
Ok
TC_37
7
4
-7
Trƣợt
Dữ liệu sai
Not ok
TC_38
7
4
20
Trƣợt
Trƣợt
Ok
TC_39
85
Đỗ
Đỗ
Ok
TC_44
7
8
140
Dữ liệu sai
Dữ liệu sai
Ok
TC_45
7
15
-7
Dữ liệu sai
Dữ liệu sai
Ok
TC_46
7
15
20
Dữ liệu sai
Dữ liệu sai
Ok
TC_47
7
15
85
Dữ liệu sai
TC_52
12
-11
140
Dữ liệu sai
Dữ liệu sai
Ok
TC_53
12
4
-7
Dữ liệu sai
Dữ liệu sai
Ok
TC_54
12
4
20
Dữ liệu sai
Dữ liệu sai
Ok
TC_55
12
4
85
Dữ liệu sai
Dữ liệu sai
Ok
TC_56
12
Dữ liệu sai
Dữ liệu sai
Ok
TC_61
12
15
-7
Dữ liệu sai
Dữ liệu sai
Ok
TC_62
12
15
20
Dữ liệu sai
Dữ liệu sai
Ok
TC_63
12
15
85
Dữ liệu sai
Dữ liệu sai
Ok
TC_64
12
15
140
Dữ liệu sai
Dữ liệu sai