Bài giảng Kiểm thử phần mềm - Chương 4: Kỹ thuật kiểm thử hộp trắng - Nguyễn Văn Hiệp

4.1 Tổng quát về kiểm thử dòng dữ liệu

Mục tiêu của chương trình là xử lý dữ liệu. Dữ liệu của chương

trình là tập nhiều biến ₫ộc lập. Phương pháp kiểm thử dòng dữ liệu

sẽ kiểm thử ₫ời sống của từng biến dữ liệu có "tốt lành" trong từng

luồng thi hành của chương trình.

Phương pháp kiểm thử dòng dữ liệu là 1 công cụ mạnh ₫ể phát

hiện việc dùng không hợp lý các biến do lỗi coding phần mềm gây

ra :

à Phát biểu gán hay nhập dữ liệu vào biến không ₫úng.

à Thiếu ₫ịnh nghĩa biến trước khi dùng

à Tiên ₫ề sai (do thi hành sai luồng thi hành).

à .

Mỗi biến nên có chu kỳ sống tốt lành thông qua trình tự 3 bước

: ₫ược tạo ra, ₫ược dùng và ₫ược xóa ₫i.

Chỉ có những lệnh nằm trong tầm vực truy xuất biến mới có

thể truy xuất/xử lý ₫ược biến. Tầm vực truy xuất biến là tập các

lệnh ₫ược phép truy xuất biến ₫ó.

Thường các ngôn ngữ lập trình cho phép ₫ịnh nghĩa tầm vực

cho mỗi biến thuộc 1 trong 3 mức chính yếu : toàn cục, cục bộ

trong từng module, cục bộ trong từng hàm chức năng.

int x, y;

void func1() { //thân hàm

int x; // ₫ịnh nghĩa biến x mới cục bộ trong hàm

.; // mỗi lần truy xuất x là x cục bộ trong hàm

{ // khối lệnh bên trong bắt ₫ầu

int y; // ₫ịnh nghĩa biến y mới cục bộ trong lệnh phức hợp.; //mỗi lần truy xuất y là y cục bộ trong lệnh phức hợp

} // y bên trong tự ₫ộng bị xóa

.; //truy xuất y ngoài cùng, x cục bộ trong hàm

} // x cục bộ trong hàm bị xóa tự ₫ộng

Bài giảng Kiểm thử phần mềm - Chương 4: Kỹ thuật kiểm thử hộp trắng - Nguyễn Văn Hiệp trang 1

Trang 1

Bài giảng Kiểm thử phần mềm - Chương 4: Kỹ thuật kiểm thử hộp trắng - Nguyễn Văn Hiệp trang 2

Trang 2

Bài giảng Kiểm thử phần mềm - Chương 4: Kỹ thuật kiểm thử hộp trắng - Nguyễn Văn Hiệp trang 3

Trang 3

Bài giảng Kiểm thử phần mềm - Chương 4: Kỹ thuật kiểm thử hộp trắng - Nguyễn Văn Hiệp trang 4

Trang 4

Bài giảng Kiểm thử phần mềm - Chương 4: Kỹ thuật kiểm thử hộp trắng - Nguyễn Văn Hiệp trang 5

Trang 5

Bài giảng Kiểm thử phần mềm - Chương 4: Kỹ thuật kiểm thử hộp trắng - Nguyễn Văn Hiệp trang 6

Trang 6

Bài giảng Kiểm thử phần mềm - Chương 4: Kỹ thuật kiểm thử hộp trắng - Nguyễn Văn Hiệp trang 7

Trang 7

Bài giảng Kiểm thử phần mềm - Chương 4: Kỹ thuật kiểm thử hộp trắng - Nguyễn Văn Hiệp trang 8

Trang 8

Bài giảng Kiểm thử phần mềm - Chương 4: Kỹ thuật kiểm thử hộp trắng - Nguyễn Văn Hiệp trang 9

Trang 9

Bài giảng Kiểm thử phần mềm - Chương 4: Kỹ thuật kiểm thử hộp trắng - Nguyễn Văn Hiệp trang 10

Trang 10

pdf 10 trang xuanhieu 6220
Bạn đang xem tài liệu "Bài giảng Kiểm thử phần mềm - Chương 4: Kỹ thuật kiểm thử hộp trắng - Nguyễn Văn Hiệp", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Kiểm thử phần mềm - Chương 4: Kỹ thuật kiểm thử hộp trắng - Nguyễn Văn Hiệp

Bài giảng Kiểm thử phần mềm - Chương 4: Kỹ thuật kiểm thử hộp trắng - Nguyễn Văn Hiệp
 Chương 4
 Kỹ thuật kiểm thử hộp trắng (tt)
4.1 Tổng quát về kiểm thử dòng dữ liệu 
 Mục tiêu của chương trình là xử lý dữ liệu. Dữ liệu của chương 
trình là tập nhiều biến ₫ộc lập. Phương pháp kiểm thử dòng dữ liệu 
sẽ kiểm thử ₫ời sống của từng biến dữ liệu có "tốt lành" trong từng 
luồng thi hành của chương trình. 
 Phương pháp kiểm thử dòng dữ liệu là 1 công cụ mạnh ₫ể phát 
hiện việc dùng không hợp lý các biến do lỗi coding phần mềm gây 
ra : 
 à Phát biểu gán hay nhập dữ liệu vào biến không ₫úng. 
 à Thiếu ₫ịnh nghĩa biến trước khi dùng 
 à Tiên ₫ề sai (do thi hành sai luồng thi hành). 
 à ... 
 Mỗi biến nên có chu kỳ sống tốt lành thông qua trình tự 3 bước 
: ₫ược tạo ra, ₫ược dùng và ₫ược xóa ₫i. 
 Chỉ có những lệnh nằm trong tầm vực truy xuất biến mới có 
thể truy xuất/xử lý ₫ược biến. Tầm vực truy xuất biến là tập các 
lệnh ₫ược phép truy xuất biến ₫ó. 
 Thường các ngôn ngữ lập trình cho phép ₫ịnh nghĩa tầm vực 
cho mỗi biến thuộc 1 trong 3 mức chính yếu : toàn cục, cục bộ 
trong từng module, cục bộ trong từng hàm chức năng. 
int x, y; 
void func1() { //thân hàm 
 int x; // ₫ịnh nghĩa biến x mới cục bộ trong hàm 
 ...; // mỗi lần truy xuất x là x cục bộ trong hàm 
 { // khối lệnh bên trong bắt ₫ầu 
 int y; // ₫ịnh nghĩa biến y mới cục bộ trong lệnh phức hợp 
 ...; //mỗi lần truy xuất y là y cục bộ trong lệnh phức hợp 
 } // y bên trong tự ₫ộng bị xóa 
 ...; //truy xuất y ngoài cùng, x cục bộ trong hàm 
} // x cục bộ trong hàm bị xóa tự ₫ộng 
4.2 Phân tích ₫ời sống của 1 biến 
 Các lệnh truy xuất 1 biến thông qua 1 trong 3 hành ₫ộng sau : 
 à d : ₫ịnh nghĩa biến, gán giá trị xác ₫ịnh cho biến (nhập dữ 
 liệu vào biến cũng là hoạt ₫ộng gán trị cho biến). 
 à u : tham khảo trị của biến (thường thông qua biểu thức). 
 à k : hủy (xóa bỏ) biến ₫i. 
 Như vậy nếu ký hiệu ~ là miêu tả trạng thái mà ở ₫ó biến chưa 
tồn tại, ta có 3 khả năng xử lý ₫ầu tiên trên 1 biến : 
 à ~d : biến chưa tồn tại rồi ₫ược ₫ịnh nghĩa với giá trị xác 
 ₫ịnh. 
 à ~u : biến chưa tồn tại rồi ₫ược dùng ngay (trị nào ?) 
 à ~k : biến chưa tồn tại rồi bị hủy (lạ lùng). 
 3 hoạt ₫ộng xử lý biến khác nhau kết hợp lại tạo ra 9 cặp ₫ôi 
hoạt ₫ộng xử lý biến theo thứ tự : 
 à dd : biến ₫ược ₫ịnh nghĩa rồi ₫ịnh nghĩa nữa : hơi lạ, có thể 
 ₫úng và chấp nhận ₫ược, nhưng cũng có thể có lỗi lập 
 trình. 
 à du : biến ₫ược ₫ịnh nghĩa rồi ₫ược dùng : trình tự ₫úng và 
 bình thường. 
 à dk : biến ₫ược ₫ịnh nghĩa rồi bị xóa bỏ : hơi lạ, có thể ₫úng 
 và chấp nhận ₫ược, nhưng cũng có thể có lỗi lập trình. 
 à ud : biến ₫ược dùng rồi ₫ịnh nghĩa giá trị mới : hợp lý. 
 à uu : biến ₫ược dùng rồi dùng tiếp : hợp lý. 
 à uk : biến ₫ược dùng rồi bị hủy : hợp lý. 
 à kd : biến bị xóa bỏ rồi ₫ược ₫ịnh nghĩa lại : chập nhận 
 ₫ược. 
 à ku : biến bị xóa bỏ rồi ₫ược dùng : ₫ây luôn là lỗi. 
 à kk : biến bị xóa bỏ rồi bị xóa nữa : có lẽ là lỗi lập trình. 
4.3 Đồ thị dòng dữ liệu 
 Là một trong nhiều phương pháp miêu tả các kịch bản ₫ời 
sống khác nhau của các biến. 
 Qui trình xây dựng ₫ồ thị dòng dữ liệu dựa trên qui trình xây 
dựng ₫ồ thị dòng ₫iều khiển của TPPM cần kiểm thử. 
 Gồm 2 loại thành phần : các nút và các cung nối kết giữa 
chúng. 
 Các loại nút trong ₫ồ thị dòng ₫iều khiển : 
 ₫iểm nối ₫iểm kết thúc
 ₫iểm xuất phát khối xử lý ₫iểm quyết ₫ịnh 
 Miêu tả các cấu trúc ₫iều khiển phổ dụng : 
 tuần tự If switch 
while c do... do ... while c 
 Thí dụ : 
 s1 
 1. float foo(int a, int b, int c, int d) { 
 2. float e; 
 3. if (a==0) c1 
 4. return 0; 
 s2
 5. int x = 0; 
 6. if ((a==b) || ((c==d) && bug(a))) s3 
 7. x = 1; 
 8. e = 1/x; 
 c2 
 9. return e; 
 10. } 
 s4 
 s5 
Độ phức tạp Cyclomatic C 
 Ta cũng dùng ₫ộ phức tạp Cyclomatic C = V(G) của ₫ồ thị 
dòng ₫iều khiển của TPPM cần kiểm thử ₫ể xác ₫ịnh số ₫ường thi 
hành tuyến tính ₫ộc lập của TPPM cần kiểm thử. 
 Mục tiêu của kiểm thử dòng dữ liệu là chọn lựa ₫ược ₫úng C 
₫ường thi hành tuyến tính ₫ộc lập của TPPM cần kiểm thử rồi kiểm 
thử ₫ời sống của từng biến trên từng ₫ường thi hành này xem có lỗi 
gì không. 
4.4 Qui trình kiểm thử dòng dữ liệu 
 Qui trình kiểm thử dòng dữ liệu của 1 TPPM gồm các bước 
công việc sau : 
 ƒ Từ TPPM cần kiểm thử, xây dựng ₫ồ thị dòng ₫iều khiển 
 tương ứng, rồi chuyển thành ₫ồ thị dòng ₫iều khiển nhị 
 phân, rồi chuyển thành ₫ồ thị dòng dữ liệu. 
 ƒ Tính ₫ộ phức tạp Cyclomatic của ₫ồ thị (C = P +1). 
 ƒ Xác ₫ịnh C ₫ường thi hành tuyến tính ₫ộc lập cơ bản cần 
 kiểm thử (theo thuật giải chi tiết ở chương 3). 
 ƒ Lặp kiểm thử ₫ời sống từng biến dữ liệu : 
 à mỗi biến có thể có tối ₫a C kịch bản ₫ời sống khác 
 nhau. 
 à trong từng kịch bản ₫ời sống của 1 biến, kiểm thử xem 
 có tồn tại cặp ₫ôi hoạt ₫ộng không bình thường nào 
 không ? Nếu có hãy ghi nhận ₫ể lập báo cáo kết quả 
 và phản hồi cho những người có liên quan. 
4.5 Thí dụ 
 d(a),d(b),d(c),d(d)
 1. float foo(int a, int b, int c, int d) { 
 ,d(e) 
 2. float e; 
 3. if (a==0) u(a
 4. return 0; 
 5. int x = 0; 
 6. if ((a==b) || ((c==d) && bug(a))) 
 d(x
 7. x = 1; 
 8. e = 1/x; 
 9. return e; u(a),u(b),u(c),u(d)
 10. } 
 d(x
 d(e),u(x),u(e
 k(all) 
 Đồ thị ở slide trước có 2 nút quyết ₫ịnh nhị phân nên có ₫ộ 
phức tạp C = 2 +1 = 3. 
 Nó có 4 biến ₫ầu vào (tham số) và 2 biến cục bộ. 
 Hãy lặp kiểm thử ₫ời sống từng biến a, b, c, d, e, x. 
Kiểm thử ₫ời sống biến a 
 ƒ Kịch bản 1 : ~duuk 
 d(a) ƒ Kịch bản 2 : ~duuk (giống kịch bản 1). 
 ƒ Kịch bản 3 : ~duk 
 Cả 3 kịch bản trên ₫ều không chứa cặp ₫ôi 
 u(a) 
 hoạt ₫ộng nào bất thuờng cả. 
 u(a) 
 k(all) 
Kiểm thử ₫ời sống biến b 
 ƒ Kịch bản 1 : ~duk 
 ƒ Kịch bản 2 : ~duk (giống kịch bản 1). 
 d(b) 
 ƒ Kịch bản 3 : ~dk 
 Cả 3 kịch bản trên ₫ều không chứa cặp ₫ôi 
 hoạt ₫ộng nào bất thýờng cả. 
 u(b) 
 k(all) 
Kiểm thử ₫ời sống biến c 
 ƒ Kịch bản 1 : ~duk 
 d(c) ƒ Kịch bản 2 : ~duk (giống kịch bản 1). 
 ƒ Kịch bản 3 : ~dk 
 Cả 3 kịch bản trên ₫ều không chứa cặp ₫ôi 
 hoạt ₫ộng nào bất thýờng cả. 
 u(c) 
 k(all) 
Kiểm thử ₫ời sống biến d 
 ƒ Kịch bản 1 : ~duk 
 d(d) ƒ Kịch bản 2 : ~duk (giống kịch bản 1). 
 ƒ Kịch bản 3 : ~dk 
 Cả 3 kịch bản trên ₫ều không chứa cặp ₫ôi 
 hoạt ₫ộng nào bất thýờng cả. 
 u(d) 
 k(all) 
Kiểm thử ₫ời sống biến e 
 ƒ Kịch bản 1 : ~dduk 
 d(e) ƒ Kịch bản 2 : ~dduk (giống kịch bản 1). 
 ƒ Kịch bản 3 : ~dk 
 Trong 3 kịch bản trên, kịch bản 1 & 2 có chứa cặp ₫ôi 
 dd bất thuờng nên cần tập trung chú ý kiểm tra xem 
 có phải là lỗi không. 
 d(e),u(e) 
 k(all) 
Kiểm thử ₫ời sống biến x 
 ƒ Kịch bản 1 : ~dduk 
 ƒ Kịch bản 2 : ~duk 
 ƒ Kịch bản 3 : ~ 
 Trong 3 kịch bản trên, chỉ có kịch bản 1 có chứa 
 cặp ₫ôi dd bất thuờng nên cần tập trung chú ý 
 kiểm tra xem có phải là lỗi không. 
 d(x) 
 d(x) 
 u(x) 
 k(all) 
4.6 Kết chương 
 Chương này ₫ã giới thiệu tiếp 1 kỹ thuật khác ₫ể kiểm thử hộp 
trắng TPPM, ₫ó là kỹ thuật kiểm thử dòng dữ liệu. 
 Chúng ta ₫ã phân tích ₫ời sống của biến dữ liệu, các cặp ₫ôi 
hoạt ₫ộng trên biến ₫ược gọi là hợp lệ hay nghi ngờ có lỗi hay tệ 
hơn là chắn chắn gây lỗi. 
 Chương này cũng ₫ã giới thiệu 1 thí dụ cụ thể về qui trình kiểm 
thử dòng dữ liệu trên 1 TPPM. 

File đính kèm:

  • pdfbai_giang_kiem_thu_phan_mem_chuong_4_ky_thuat_kiem_thu_hop_t.pdf