§¹i häc Quèc gia Hμ néi - §¹i häc c«ng nghÖ Bé m«n C«ng nghÖ phÇn mÒm

BÀI GiẢNG

ĐẢM BẢO CHẤT LƯỢNG PHẦN MỀM

VÀ KiỂM THỦ

NguyÔn V¨n Vy Email: vynv@vnu.edu.vn, mobile: 0912.505.291

Hà nội - 2005

Phần II

NguyÔn V¨n Vþ

KIỂM THỬ PHẦN MỀM

2005 Bộ môn CNFM – Đại học Công nghệ 2

Nội dung – Tài liệu

NguyÔn V¨n Vþ

(cid:132) Khái niệm kiểm thử

(cid:132) Các loại kiểm thử

(cid:132) Thẩm định và xác minh

(cid:153) Roger S. Pressman. Software Engineering, a Practitioner’s

Approach. 3th Edition, McGraw-Hill, 1992, Bản dich của Ngô Trung vIệt, Phần 4, tập 4 (Chương 17, 18, 23 –bản 2001) (cid:153) Ian Sommerville. Software Engineering, Sixth Edition, Addion

Wesley, 2001, Phần 5 và 6. chương 20

(cid:153) E.M.Bennatan, Software Project Management : a practitioner’s

approach, McGRAW-HILL Book Company, 2001

2005 Bộ môn CNFM – Đại học Công nghệ 3

A.Khái niệm về kiểm thử phần mềm NguyÔn V¨n Vþ

(cid:134) Kiểm thử FM là yếu tố quyết định của SQA và

khâu điển hình của rà soát đặc tả thiết kế & lập mã.

(cid:134) Lý do kiểm thử:

(cid:131) Muốn nhìn thấy phần mềm như là một phần tử của

hệ thống hoạt động

(cid:131) Hạn chế chi phí phải trả cho các thất bại do lỗi gây ra

sau này

(cid:131) Để có kế hoạch tốt cho suốt quá trình phát triển.

2005 Bộ môn CNFM – Đại học Công nghệ 4

a.Lý do cần kiểm thử phần mềm

NguyÔn V¨n Vþ

(cid:134) Tầm quan trọng. Kiểm thử chiếm:

(cid:132) 40% tổng công sức phát triển

(cid:132) ≥ 30% tổng thời gian phát triển

(cid:132) Với các phần mềm có ảnh hưởng tới sinh mạng, chi phí có thể gấp từ 3 đến 5 lần tổng các chi phí khác cộng lại.

2005 Bộ môn CNFM – Đại học Công nghệ 5

b.Quan niệm về kiểm thử phần mềm NguyÔn V¨n Vþ

(cid:134) Mục tiêu trước mắt: cố gắng tạo ra các ca kiểm thử để chỉ ra lỗi của phần mềm (tức là “đánh đổ” phần mềm) được xây dựng (cid:132) Vì thể, trước mắt kiểm thử mang tính “phá hoại”, không phải là xây dựng (cid:206) dễ gây ra những vấn đề về tâm lý. (cid:134) Mục đích cuối cùng của kiểm thử vẫn là có một

chương trình tốt, chi phí ít (cid:206) xây dựng

2005 Bộ môn CNFM – Đại học Công nghệ 6

c.Mục tiêu kiểm thử phần mềm

NguyÔn V¨n Vþ

(cid:134) Mục tiêu của kiểm thử (Glen Myers):

(cid:131) Là quá trình vận hành chương trình để tìm ra lỗi. Nên: (cid:206) 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.

(cid:206) 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 được phát hiện.

(cid:134) Điều này có vẻ trái với suy nghĩ thông thường về

xây dựng phần mềm.

2005 Bộ môn CNFM – Đại học Công nghệ 7

c.Mục tiêu kiểm thử phần mềm

NguyÔn V¨n Vþ

(cid:134) Một ca kiểm thử thắng lợi làm lộ ra khiếm khuyết, đồng thời mang lại các lợi ích phụ:

(cid:131)

Thuyết minh rằng các chức năng phần mềm tương ứng với đặc tả,

(cid:131) Yêu cầu thực thi là phù hợp, (cid:131) Cung cấp thêm các chỉ số độ tin cậy và chỉ số chất

lượng phần mềm nói chung.

(cid:134) Tuy nhiên, kiểm thử không thể khẳng định rằng

phần mềm không có khiếm khuyết

2005 Bộ môn CNFM – Đại học Công nghệ 8

c.Các loại hình và kỹ thuật kiểm thử NguyÔn V¨n Vþ

(cid:134) Kiểm thử đơn vị

(cid:131) Kiểm thử hộp trắng (white box) (cid:131) Kiểm thử hộp đen (black box)

(cid:134) Kiểm thử tích hợp (cid:134) Kiểm thử hệ thống

(cid:131) Kiểm thử phục hồi (cid:131) Kiểm thử áp lực (cid:131) Kiểm thử thi hành (cid:131) Kiểm thử an ninh

(cid:134) Kiểm thử chấp nhận (alpha, beta)

2005 Bộ môn CNFM – Đại học Công nghệ 9

d.Biểu đồ dòng thông tin kiểm thử

NguyÔn V¨n Vþ

(cid:137) Sơ đồ dòng thông tin trong tiến trình kiểm thử

Gỡ lỗi

Kiểm thử

Phần mềm chỉnh sửa

Cấu hình phần mềm

Đánh giá

Độ tin cậy dự đoán

Cấu hình kiểm thử

Mô hình đô tin cậy

2005 Bộ môn CNFM – Đại học Công nghệ 10

e. Khái niệm thiết kế ca kiểm thử

NguyÔn V¨n Vþ

(cid:134) Thiết kế ca kiểm thử nhằm: (cid:131) tìm ra nhiều sai nhất (cid:131) với nỗ lực & thời gian nhỏ nhất.

(cid:134) Trong các thập kỷ 80-90 đã nghiên cứu nhiều

loại phương pháp thiết kế ca kiểm thử. (cid:134) Các phương pháp tốt phải cho một cơ chế: (cid:131) bảo đảm tính đầy đủ (không sót phần nào) và (cid:131) cung cấp khả năng thật sự phát hiện được các sai

trong phần mềm.

2005 Bộ môn CNFM – Đại học Công nghệ 11

f.Phương pháp thiết kế ca kiểm thử NguyÔn V¨n Vþ

(cid:134) Có thể kiểm thử theo một trong 2 kỹ thuật sau:

(cid:131) Kiểm thử hộp đen (cid:131) Kiểm thử hộp trắng

(cid:134) kiểm thử hộp đen

Thực hiện các phép thử qua giao diện

(cid:131) (cid:131) Để thuyết minh các chức năng phần mềm đủ &

(cid:131)

vận hành đúng Ít chú ý tới cấu trúc logic nội tại của nó

2005 Bộ môn CNFM – Đại học Công nghệ 12

f.Phương pháp thiết kế ca kiểm thử(t) NguyÔn V¨n Vþ

(cid:134) Kiểm thử hộp trắng

(cid:132) Thực hiện trực tiếp trên mã nguồn (cid:132) Khám xét các chi tiết thủ tục; các con đường logic, các

trạng thái của chương trình.

(cid:206) Số con đương lôgíc là lớn. một chương trình nhỏ:

với 100 dòng PASCAL với một vòng lặp

(cid:131) (cid:131) (cid:206) thì số con đường có thể lên đến 1014. Giả sử 1 kiểm thử hết 1ms thì cần 3170 năm để kiểm thử tất cả các con đường cùng ràng buộc lôgic trên nó!

2005 Bộ môn CNFM – Đại học Công nghệ 13

B. Kiểm thử hộp trắng

NguyÔn V¨n Vþ

(cid:132) Sử dụng cấu trúc điều khiển của thiết kế thủ tục

để hình thành các ca kiểm thử

(cid:132) Đảm bảo:

• Mọi con đường độc lập trong một môđun cần

được thực hiện ít nhất một lần.

• Mọi ràng buộc logic được thực hiện cả hai

phía đúng (true) & phía sai (false).

2005 Bộ môn CNFM – Đại học Công nghệ 14

a. Khái niệm kiểm thử hộp trắng

NguyÔn V¨n Vþ

(cid:132) Đảm bảo (t):

• Thực hiện tất cả các vòng lặp ở biên của

nó & cả với các biên vận hành.

• Thực hiện các cấu trúc dữ liệu nội tại để

bảo đảm tính hiệu lực của nó

2005 Bộ môn CNFM – Đại học Công nghệ 15

b. Lý do kiểm thử hộp trắng

NguyÔn V¨n Vþ

(cid:132) Vì sao cần tốn tiền cho kiểm thử hộp

trắng?

• Các sai logic & giả thiết không đúng đắn tỷ lệ nghịch với xác suất để một con đường logic được thi hành. • Thực tế: mọi con đường lôgic đều có thể được thi hành trên 1 cơ sở nhất định (ta cho rằng 1con đường logic nào đó là không thể được thi hành). • Có những sai chính tả có thể là ngẫu nhiên trên

đường ta không kiểm tra.

2005 Bộ môn CNFM – Đại học Công nghệ 16

c. Các con đường cơ bản-đồ thị dòng NguyÔn V¨n Vþ

(cid:132) Đồ thị dòng là một kỹ thuật kiểm thử hộp trắng,

được Tom McCabe đưa ra đầu tiên.

(cid:132) Đồ thị dòng (của chương trình) gần giống đồ thị

dòng điều khiển.

(cid:132) Cấu trúc một đồ thị dòng gồm:

• mỗi nút (hình tròn) biểu thị một số (hoặc 0) câu lệnh thủ

tục,

• mỗi cạnh nối hai nút biểu diễn dòng điều khiển,

2005 Bộ môn CNFM – Đại học Công nghệ 17

c. Các con đường cơ bản-đồ thị dòng(t) NguyÔn V¨n Vþ

(cid:132) Cấu trúc(t) :

• Chia mặt phẳng thành nhiều miền. • Mội nút là vị từ nếu nó biểu thị sự phân nhánh

hoặc hội nhập của các cung.

2005 Bộ môn CNFM – Đại học Công nghệ 18

c. Ví dụ: khái niệm đồ thị dòng(t)

NguyÔn V¨n Vþ

(cid:132) Các loại cấu trúc cơ bản:

case

until

while

if

2005 Bộ môn CNFM – Đại học Công nghệ 19

c. Ví dụ: khái niệm đồ thị dòng(t)

NguyÔn V¨n Vþ

0

(cid:132) xét biểu đồ một chương trình

1

2

3

6

4

8

7

5

9

10

11

2005 Bộ môn CNFM – Đại học Công nghệ 20

c. Ví dụ: khái niệm đồ thị dòng(t)

NguyÔn V¨n Vþ

(cid:132) luồng điều khiển

(cid:132) đồ thị dòng

1

0

1

2

2,3

6

3

4,5

6

4

8

7

7

8

5

9

11

10

11

10

9

21 2005 Bộ môn CNFM – Đại học Công nghệ

c. Ví dụ: khái niệm đồ thị dòng(t)

NguyÔn V¨n Vþ

(cid:132) Đồ thị dòng trên gồm:

• 9 nút, trong đó: • 5 nút là vị tự (mầu sẫm) • 11 cung • Chia mặt phẳng thành 4 miền

2005 Bộ môn CNFM – Đại học Công nghệ 22

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

NguyÔn V¨n Vþ

(cid:134) Để đảm tất cả các câu lệnh đều được kiểm thử

ít nhất một lần, ta cần tìm được tất cả các đường điều khiển độc lập trong chương trình, tức là mỗi đường khác với các đường khác ít nhất một lệnh.

(cid:134) Số các đường độc lập của 1 chương trình là

giới hạn trên của số các kiểm thử cần phải tiến hành. Nó được gọi là độ phức tạp chu trình của chương trình

2005 Bộ môn CNFM – Đại học Công nghệ 23

d. Độ phức tạp của chu trình(t)

NguyÔn V¨n Vþ

(cid:134) Tập cơ bản các con đường độc lập là tập:

(cid:131) Mọi cung của đồ thị dòng đều có mặt trong 1 con

đường của tập này.

(cid:131) Mỗi con đường của tập đều chứa ít nhất một cung

không có trong mọi con đường khác của nó.

(cid:134) Số lượng các con đường của tập này cho ta số đo

độ phức tạp chu trình của 1 chương trình

2005 Bộ môn CNFM – Đại học Công nghệ 24

e. Tính toán độ phức tạp chu trình

NguyÔn V¨n Vþ

(cid:134) Độ phức tạp chu trình V(G) của đồ thị G được tính

theo các cách sau:

(cid:131) V(G) = E - N + 2

(cid:131) V(G) = số miền phẳng

(cid:131) V(G) = P – 1

Trong đó: E = số cung; N = số nút; P= số nút vị từ

Với ví dụ về đồ thị dòng ở trên ta có: V(G) = 4

2005 Bộ môn CNFM – Đại học Công nghệ 25

f. Xác định các ca thử nghiệm

NguyÔn V¨n Vþ

(cid:134) Từ một thiết kế hoăc một mã nguồn vẽ đồ thị dòng G

tương ứng.

(cid:134) Tính độ phức tạp chu trình V(G) tương ứng của đồ thị

đó.

(cid:134) Xác định tập cơ bản các con đường độc lập. (cid:134) Chuẩn bị các ca kiểm thử cho mỗi con đường trong

tập các con đường đó.

2005 Bộ môn CNFM – Đại học Công nghệ 26

g. Các ma trận kiểm thử

NguyÔn V¨n Vþ

(cid:134) Ma trân kiểm thử là một ma trận vuông có kich

thước bằng số các nút trong đồ thị dòng:

(cid:132) Mỗi dòng/cột ứng với tên một nút (cid:132) Mỗi ô: là tên một cung nối nút dòng đến nút cột.

(cid:134) Nhân liên tiếp k ma trận này được ma trận chỉ các con đường k cung từ nút dòng tới nút cột.

(cid:134) Ma trận kiểm thử được sử dụng như 1 dữ liệu có

cấu trúc để kiểm tra các con đường cơ bản.

2005 Bộ môn CNFM – Đại học Công nghệ 27

g. Các ma trận kiểm thử có trọng số

NguyÔn V¨n Vþ

(cid:134) Để ma trận kiểm thử - một công cụ mạnh - trong việc đánh giá cấu trúc điều khiển chương trình khi kiểm thử, ta thêm trọng số cho các cung của ma trận kiểm thử như sau:

(cid:131) Xác suất cung đó được thực thi. (cid:131) Thời gian xử lý của tiến trình đi qua cung đó (cid:131) Bộ nhớ đòi hỏi của tiến trình đi qua cung đó. (cid:131) Nguồn lực đòi hỏi của tiến trình đi qua cung đó.

2005 Bộ môn CNFM – Đại học Công nghệ 28

g. Điều kiện kiểm thử cấu trúc đ/khiển NguyÔn V¨n Vþ

(cid:134) Điều kiện đơn: là 1 biến Bool hoặc 1 biểu thức quan hệ (có thể có toán tử phủ định đứng đầu).

(cid:134) Biểu thức quan hệ là 1 biểu thức Bool xác định quan hệ giữa 2 biểu thức số học bằng 1 phép so sánh trong số: <, ≤, =, >, ≥ hay ≠ .

(cid:134) Điều kiện kết hợp là điều kiện cấu thành từ hơn một điều kiện đơn nhờ các toán tử Bool: hoặc (∪), và(∩), phủ định(⎯)

2005 Bộ môn CNFM – Đại học Công nghệ 29

h. Kiểu sai trong điều kiện kiểm thử

NguyÔn V¨n Vþ

(cid:132) Sai biến Bool. (cid:132) Sai toán tử Bool. (cid:132) Sai số hạng trong biểu thức toán tử Bool (cid:132) Sai toán tử quan hệ. (cid:132) Sai biểu thức số học.

2005 Bộ môn CNFM – Đại học Công nghệ 30

i. Chiến lược kiểm thử phân nhánh

NguyÔn V¨n Vþ

(cid:134) kiểm thử từng điều kiện trong chương trình. (cid:134) Mục tiêu của kiểm thử điều kiện không chỉ là

phát hiện sai trong điều kiện đó mà còn là phát hiện sai khác của chương trình. (cid:134) Đã có một số chiến lược kiểm thử . (cid:134) kiểm thử nhánh: với mỗi điều kiện kết hợp C, thì các nhánh “true” và “false” của C và mỗi điều kiện đơn trong C phải được kiểm thử ít nhất một lần.

2005 Bộ môn CNFM – Đại học Công nghệ 31

k. Chiến lược kiểm thử miền

NguyÔn V¨n Vþ

(cid:134) Chiến lược kiểm thử miền đòi hỏi 3 hoặc 4

kiểm thử cho một biểu thức quan hệ: gồm các trường hợp <, >, = và có thể ≠ nữa.

(cid:134) Nếu biểu thức Bool có n biến, mà n nhỏ thì thuận lợi, song nếu n lớn thì khó thực hiện!

(cid:134) Người ta đưa ra chiến lược cho các phép thử nhạy cảm sai kiểm thử nhánh và toán tử quan hệ

2005 Bộ môn CNFM – Đại học Công nghệ 32

k. Chiến lược kiểm thử BRO

NguyÔn V¨n Vþ

(cid:134) BRO = kiểm thử nhánh & toán tử quan hệ.

(cid:131) BRO dùng “ràng buộc điều kiện cho điều kiện cần

thử”.

(cid:131) Giả sử trong điều kiện C cần thử n-1 điều kiện

đơn, các ràng buộc của C (có n điều kiện đơn) là (D1, D2,…, Dn), trong đó Di là một đặc tả ràng buộc đầu ra của điều kiện đơn tương ứng của C.

2005 Bộ môn CNFM – Đại học Công nghệ 33

k. Chiến lược kiểm thử BRO

NguyÔn V¨n Vþ

(cid:134) BRO = kiểm thử nhánh & toán tử quan hệ.

(cid:131) Ta nói rằng ràng buộc D của điều kiện C là được phủ bởi một thi hành của C nếu như trong quá trình thi hành đó ,đầu ra (“outcome”) của mỗi điều kiện đơn trong C thoả mãn các ràng buộc tương ứng.

2005 Bộ môn CNFM – Đại học Công nghệ 34

k1. Chiến lược BRO – tạo ràng buộc

NguyÔn V¨n Vþ

(cid:134) Với một biến Bool B, thì ràng buộc đầu ra của

B là t (true) hoặc f (false).

(cid:134) Với một biểu thức quan hệ B thì ràng buộc đầu ra của B là: >, <, = (lớn hơn, nhỏ hơn & bằng hoặc khác).

(cid:134) Xét điều kiện C là hội của hai biến Bool A và B (C = A ∩ B). Khi đó ràng buộc đầu ra của C là một cặp giá trị t hoặc f.

2005 Bộ môn CNFM – Đại học Công nghệ 35

k1. Chiến lược BRO – tạo ràng buộc1 NguyÔn V¨n Vþ

(cid:134) thí dụ xét điều kiện (C = A ∩ B) (cid:134) Chiến lược kiểm thử BRO đòi hỏi rằng tập

ba ràng buộc (t,t), (t,f) và (f,t) đều được phủ bởi các thi hành của C. Nếu C không đúng đắn do “ít nhất một phép toán Bool sai” thì trong 3 cặp trên có ít nhất một cặp làm C thất bại.

2005 Bộ môn CNFM – Đại học Công nghệ 36

k2. Chiến lược BRO – tạo ràng buộc2 NguyÔn V¨n Vþ

(cid:134) Xét điều kiện C là đơn: (B = E). Khi đó ràng buộc của C là một trong ba phép so sánh: < , > , =. (cid:134) Xét điều kiện C là hội hai biến Bool: A và B = E.

Khi đó các ràng buộc của C là các cặp (t,t), (t,f) và (f,t); với (B = E) có giá trị t tương ứng với “=“, và giá trị f tương ứng với “<“ hoặc “>”; Bởi vậy tập các ràng buộc của C phải gồm 4 phần tử: (t,=), (t,<), (t,>) và (f,=).

(cid:134) Phủ của ràng buộc này bảo đảm đã phát hiện

được sai biên Bool hoặc toán tử quan hệ trong C.

2005 Bộ môn CNFM – Đại học Công nghệ 37

k3. Chiến lược BRO – tạo ràng buộc 3 NguyÔn V¨n Vþ

(cid:134) Xét điều kiện C là hội của hai biểu thức quan hệ

(A>B) và (E=F)

(cid:134) Tập ràng buộc sẽ (t,t), (t,f) và (f,t) và tương ứng

sẽ là: (>,=); (>,<); (>,>); (=,=) và (<,=).

(cid:134) Phủ của ràng buộc này bảo đảm rằng đã phát hiện được sai các toán tử quan hệ trong C.

2005 Bộ môn CNFM – Đại học Công nghệ 38

l. Kiểm thử điều khiển - dòng dữ liệu NguyÔn V¨n Vþ

(cid:134) Phương pháp kiểm thử dòng dữ liệu tuyển chọn các đường của chương trình tương ứng với việc định vị các xác định biến và sử dụng biến trong chương trình. Đã có một số chiến lược kiểm thử dòng dữ liệu và so sánh chúng.

(cid:134) Giả sử rằng mỗi câu lệnh của chương trình được gán với số câu lệnh duy nhất và mỗi hàm không được cải biên các tham số của nó và các biến toàn cục.

2005 Bộ môn CNFM – Đại học Công nghệ 39

l. Kiểm thử điều khiển: dòng dữ liệu

NguyÔn V¨n Vþ

(cid:134) Với mỗi câu lệnh S ta định nghĩa:

(cid:132) DEF(S) = { X / câu lệnh S chứa định nghĩa X}

(cid:132) USE(S) = { X / câu lệnh S chứa 1sử dụng X}

(cid:132) Nếu S là câu lệnh if hoặc câu lệnh vòng lặp thì DEF(S) là rỗng, còn USE(S) của nó được xác định tùy theo điều kiện trong S.

2005 Bộ môn CNFM – Đại học Công nghệ 40

l. Kiểm thử điều khiển: dòng dữ liệu

NguyÔn V¨n Vþ

(cid:134) Giả thiết: định nghĩa biến X ở câu lệnh S vẫn còn

sống tại câu lệnh S’ nếu có một con đường từ S tới S’ mà trên đó không chứa một định nghĩa nào khác của X.

(cid:134) Một dây truyền DU sử dụng X ký hiệu là DU =

[X,S,S’] với X trong DEF(S) và trong USE(S’), và định nghĩa X trong S vẫn còn sống trong S’.

(cid:134) Chiến lược kiểm thử dòng dữ liệu đòi hỏi rằng: mọi

DU đều phải được phủ ít nhất một lần.

2005 Bộ môn CNFM – Đại học Công nghệ 41

l. Kiểm thử điều khiển: dòng dữ liệu

NguyÔn V¨n Vþ

(cid:134) kiểm thử DU không bảo đảm phủ tất cả các nhánh của chương trình; tuy nhiên 1 nhánh không được phủ bởi DU kiểm thử là rất hiếm.

(cid:134) kiểm thử dòng dữ liệu là hữu ích để chọn các

đường của chương trình có chứa các câu lệnh if hoặc vòng lặp.

2005 Bộ môn CNFM – Đại học Công nghệ 42

m. Kiểm thử điều khiển: vòng lặp

NguyÔn V¨n Vþ

(cid:134) Có bốn loại vòng lặp: mỗi loại dùng một tập

các phép thử khác nhau (cid:132) Vòng lặp đơn.

2005 Bộ môn CNFM – Đại học Công nghệ 43

m. Kiểm thử điều khiển: vòng lặp

NguyÔn V¨n Vþ

■ Vòng lặp lồng.

2005 Bộ môn CNFM – Đại học Công nghệ 44

m. Kiểm thử điều khiển: vòng lặp

NguyÔn V¨n Vþ

(cid:132) Vòng lặp nối tiếp.

2005 Bộ môn CNFM – Đại học Công nghệ 45

m. Kiểm thử điều khiển: vòng lặp

NguyÔn V¨n Vþ

(cid:132) Vòng lặp phi cấu trúc (ít dùng).

2005 Bộ môn CNFM – Đại học Công nghệ 46