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