Chương 4 cung cấp kiến thức về các kỹ thuật kiểm tra tĩnh. Trong chương này người học sẽ tìm hiểu những nội dung cơ bản sau: Các phương pháp Testing (Kiểm thử tĩnh, kiểm thử động), các kiểu rà soát (Review), phân tích tĩnh. Mời các bạn cùng tham khảo.
ĐẢM BẢO VÀ KIỂM SOÁT CHẤT LƯỢNG Chương 4: Các kỹ thuật kiểm tra tĩnh HCM – 10/2012 4/23/2014 Nội dung Các phương pháp Testing Kiểm thử tĩnh Kiểm thử động Các kiểu rà soát (Review) Phân tích tĩnh 4/23/2014 Trang Các phương pháp Testing Dynamic Static etc Reviews Inspection Walkthroughs Structural Desk-checking Symbolic Execution Control Flow Functional etc Performance etc Branch/Decision Branch Condition Equivalence Partitioning Usability Statement Definition -Use 4/23/2014 Non-functional etc Data Flow etc Behavioural Static Analysis Arcs LCSAJ Branch Condition Combination Boundary Value Analysis Cause-Effect Graphing Random State Transition Trang Kiểm thử tĩnh Phân tích tĩnh thực mà khơng cần thực thi hệ thống thực Điều ngược với kiểm thử động Thường khơng kiểm thử chi tiết mà chủ yếu kiểm tra tính đắn code (mã lệnh), thuật tốn hay tài liệu Đây verification mơ hình V&V Những thực hiện: lập trình viên QC 4/23/2014 Trang Lợi ích Bổ sung cho kiểm tra động giai đoạn kiểm chứng chương trình Có thể phát sớm 30%-70% lỗi Chi phí chỉnh sửa khiếm khuyết tăng lên nhanh chóng sau giai đoạn thiết kế tốn phí 1.0, trước kiểm thử: 6.5, kiểm thử:15 sau phân phối từ 60 đến 100 Nhận diện tổng quát, lỗi sớm phát Chi phí thấp lại đạt khả sửa lỗi phù hợp hơn, tốt Chỉ “lơ” lỗi “liên quan” Sửa tồn thể (một loạt) lỗi sau Phát phụ thuộc, thiếu quán Nâng cao khả bảo trì mã/chương trình N „ găn ngừa khiếm khuyết 4/23/2014 Trang Chi phí sửa lỗi q trình phát triển 4/23/2014 Trang Kiểm thử động Kiểm thử động cần thực thi hệ thống thực bao gồm nhập giá trị đầu vào kiểm tra xem liệu đầu có mong muốn hay khơng Đây validation mơ hình V&V Các phương pháp kiểm thử động gồm có kiểm thử Unit – Unit Tests, Kiểm thử tích hợp – Intergration Tests, Kiểm thử hệ thống – System Tests, Kiểm thử chấp nhận sản phẩm – Acceptance Tests 4/23/2014 Trang Kiểm thử Tĩnh vs Kiểm thử Động 4/23/2014 Trang Nội dung Các phương pháp Testing Kiểm thử tĩnh Kiểm thử động Các kiểu rà sốt (Review) Phân tích tĩnh 4/23/2014 Trang Thế rà soát (Review) Review q trình kiểm tra có hệ thống thực hay nhiều người với mục tiêu tìm kiếm loại bỏ khiếm khuyết Mục tiêu rà sốt: Tìm kiếm khiếm khuyết Thu hiểu biết Tạo thảo luận Review giúp xác định lỗi trước chúng trở thành phần code thực thi Làm lỗi rẻ dễ sửa 4/23/2014 Trang 10 Danh mục rà soát kế hoạch kiểm thử Các chức chủ yếu có trình diễn sớm khơng? Kế hoạch kiểm thử có phù hợp với kế hoạch dự án tổng thể hay khơng? Lịch trình kiểm thử có xác định rõ ràng hay không? Nguồn lực công cụ kiểm thử xác định sẵn sàng hay chưa? Đã thiết lập chế lưu trữ báo cáo chưa? 4/23/2014 Trang 29 Danh mục rà soát kế hoạch kiểm thử Các thiết bị tình kiểm thử minh định chưa? Cơng việc phát triển kiểm thử lập lịch chưa? Thử nghiệm áp cho phần mềm đặc tả chưa? Cả hai loại kiểm thử hộp trắng hộp đen đặc tả chưa? 4/23/2014 Trang 30 Danh mục rà soát cho việc tạo test case Có phải tất đường logic độc lập kiểm thử? Có phải tất ca kiểm thử xác định lập danh sách với đủ kết qủa mong đợi? Việc xử lý sai có kiểm thử? Các giá trị biên có kiểm thử? Các yêu cầu thời gian có kiểm thử? Các biến thể chấp nhận kết kiểm thử mong đợi đặc tả chưa? 4/23/2014 Trang 31 Danh mục rà soát cho việc kiểm thử giao diện Màu chung tồn hình Màu chữ, font, font size Canh lề Thông báo hình có viết tả Kiểm tra maxlength Phân biệt chữ hoa / chữ thường Phân biệt 全角/半角 (toàn giác/bán giác: áp dụng với Tiếng Nhật, tồn giác chữ mập, trịn 2-3bytes; bán giác: chữ ốm 1byte) Phân biệt ký tự unicode Cho phép null hay không Cho phép nhập ký tự đặc biệt hay không? Kiểm tra format theo kiểu nào? Kiểm tra trường hợp năm nhuần có tính không? Kiểm tra giá trị 00 13 tháng Kiểm tra giá trị 00 32 ngày Kiểm tra giá trị 28 , 29, 30 -Feb có tính khơng? 4/23/2014 Trang 32 Lỗi tiêu biểu phát Tham chiếu tới biến chưa gán trị Giao tiếp khơng qn chương trình module Biến chưa sử dụng Mã “chết” Vi phạm chuẩn lập trình Yếu điểm bảo mật Vi phạm cú pháp mã mơ hình v v 4/23/2014 Trang 33 Nội dung Các phương pháp Testing Kiểm thử tĩnh Kiểm thử động Các kiểu rà soát (Review) Phân tích tĩnh 4/23/2014 Trang 34 Phân tích tĩnh Phân tích source code để tìm lỗi mà khơng cần thực chúng Phân tích tĩnh thường kèm với cơng cụ hỗ trợ Có nhiều công cụ hỗ trợ tĩnh, phần lớn chúng tập chung vào: Những tiêu chuẩn code (coding standards) Cấu trúc luồng điều khiển (control flow structure) Cấu trúc luồng liệu (data flow structure ) Cấu trúc liệu (data structure) 4/23/2014 Trang 35 Những tiêu chuẩn code (coding standards) Người lập trình viên khơng có nhiệm vụ viết code xác mà cịn phải viết code có chất lượng cao Dễ đọc, dễ hiểu, sử dụng lại, bảo trì… Những tiêu chuẩn code: lập nguyên tắc (rule) lập trình để đảm bảo code đạt mục đích tránh lỗi tiềm ẩn 4/23/2014 Trang 36 Coding standards A set of programming rules e.g 'Always check boundaries on an array when copying to that array' Naming conventions 4/23/2014 Variables, global variables, constants, methods, classes, attributes, Comments brief, explain WHY instead of HOW, placement of comments, Layout specifications indentation, spacing, blank lines, curly braces, Should use support tools Trang 37 Cấu trúc luồng điều khiển Thể source code dạng đồ thị, giúp xác định: Những vịng lặp vơ hạn Những dịng code chết Những điều kiện vào vòng lặp Độ phức tạp chương trình • complexity = number of decisions + 4/23/2014 Trang 38 Cấu trúc luồng điều khiển Hình có độ phức tạp cao hơn? 4/23/2014 Trang 39 Cấu trúc luồng điều khiển 4/23/2014 Trang 40 Cấu trúc luồng liệu Tập trung vào xuất biến liệu từ lúc khai báo đến bị hủy, để xác định: Biến không sử dụng Tham khảo đến biến chưa khai báo Phép gán khơng xác 4/23/2014 Trang 41 Lợi ích phân tích tĩnh Phát lỗi sớm Có cảnh báo lỗi tiềm ẩn Xác định lỗi không dễ dàng phát kiểm tra động Tăng tính bảo trì (maintainability) source code Ngăn ngừa lỗi 4/23/2014 Trang 42 ĐẢM BẢO VÀ KIỂM SOÁT CHẤT LƯỢNG 4/23/2014 43 ... Tăng tính bảo trì (maintainability) source code Ngăn ngừa lỗi 4/ 23/20 14 Trang 42 ĐẢM BẢO VÀ KIỂM SOÁT CHẤT LƯỢNG 4/ 23/20 14 43 ... System Tests, Kiểm thử chấp nhận sản phẩm – Acceptance Tests 4/ 23/20 14 Trang Kiểm thử Tĩnh vs Kiểm thử Động 4/ 23/20 14 Trang Nội dung Các phương pháp Testing Kiểm thử tĩnh Kiểm thử động Các... rà soát làm thư ký 4/ 23/20 14 Trang 14 Cuộc họp rà soát Mọi họp rà soát phải: Gồm từ đến người liên quan Phải chuẩn bị trước (1 người không quá2 giờ) Cuộc họp nên từ 2-3 Mỗi họp rà soát