Lý thuyết
Kiểm Tra Phần Mềm
       Bài 08:       Kỹ thuật gỡ rối – sửa lỗi

   GV:           Nguyễn Ngọc Tú
   Email:        nntu@hoasen.edu.vn
   Bộ môn:       Kỹ thuật Phần mềm
Nội dung

       Khái niệm
       Kỹ thuật vét cạn
       Phương pháp Qui nạp
       Phương pháp suy diễn
       Phương pháp lần vết
       Phương pháp kiểm tra
       Các nguyên tắc gỡ rối
       Phân tích lỗi

NNTu                 Software Testing S2008   2
Khái niệm

   Gỡ rối là công việc thực hiện sau khi thực
   hiện thành công TC
   TC được gọi là thành công (pass)
       chương trình không làm gì khác với những gì nó
       đã được thiết kế
   Quá trình gỡ rối thực hiện
       Xác định - định vị lỗi
       Sửa lỗi



NNTu                      Software Testing S2008        3
Khái niệm

   Điều kiện cần và đủ
       Đã Kiểm thử
   Các yếu tố ảnh hưởng
       cho thấy rằng người lập trình chưa hoàn hảo, còn
       phạm lỗi
       là hoạt động gây mệt mỏi nhất về mặt tinh thần
       có thể bị mất phương hướng




NNTu                   Software Testing S2008             4
Kỹ thuật vét cạn

   Phổ biến
       ít tư duy, ít gây mệt mỏi về mặt tinh thần
   Không hiệu quả
   Thường không thành công
   Phương pháp Brute Force được phân chia
   thành 3 loại
       không có định hướng.
       theo các dòng báo tiên đoán của chương trình.
       với các công cụ gỡ rối tự động


NNTu                     Software Testing S2008        5
Kỹ thuật vét cạn

   Gỡ rối với thông tin kết xuất
       Hiển thị thô dữ liệu ở các nơi
       Kết xuất bộ nhớ ít khi chính xác để xác định lỗi
       Không có một phương pháp cụ thể phân tích
   Chỉ ra vị trí lỗi khu vực lỗi
   Công cụ gỡ rối tự động
       Chèn thêm vào chương trình các dòng lệnh hỗ trợ
       thực hiện từng bước
       Cho phép đánh dấu các dòng lệnh thi hành

NNTu                    Software Testing S2008            6
Phương pháp Qui nạp

   bắt đầu từ một manh mối và quan sát mối
   quan hệ giữa các manh mối.
       manh mối có thể là một dấu hiệu về lỗi, hoặc là
       kết quả của 1 hay nhiều test case




NNTu                    Software Testing S2008           7
Phương pháp Qui nạp

   Xác định dữ liệu phù hợp
       Bước đầu tiên là liệt kê tất cả những dấu hiệu cho
       là lỗi
       Các lỗi tương tự nhưng khác nhau mà TC không
       phải là nguyên nhân gây lỗi
   Tổ chức các dữ liệu quan tâm để tìm lỗi theo
   các mâu thuẫn




NNTu                    Software Testing S2008          8
Phương pháp Qui nạp

   Đặt ra một giả thuyết

   Chứng minh giả thuyết
       bằng cách so sánh nó với các manh mối gốc hay
       dữ liệu để chắc chắn rằng giả thuyết này hoàn
       toàn làm sáng tỏ tình trạng của các manh mối
   Sửa lỗi




NNTu                   Software Testing S2008          9
Phương pháp Suy diễn

   Đây là quá trình loại trừ và làm rõ dần các
   nguyên nhân
   Ngược với phương pháp quy nạp
   Bắt đầu đi từ các “nghi ngờ” lỗi xảy ra




NNTu                Software Testing S2008       10
Phương pháp Suy diễn

   L iệt kê các nguyên nhân, giả thuyết có thể
   dẫn tới xảy ra lỗi
   Sử dụng dữ liệu chạy thử để loại bỏ dần các
   nguyên nhân
   Làm rõ các giả thuyết còn lại
   Chứng minh các giả thuyết




NNTu               Software Testing S2008        11
Phương pháp lần vết

   Hiệu quả trong định vị lỗi trong các chương
   trình nhỏ
   Quay lui lại quá trình xử lý trong chương trình
   cho đến khi tìm thấy điểm xử lý không đúng
   logic




NNTu                Software Testing S2008       12
Phương pháp kiểm tra

   Kiểu cuối cùng là dùng chính các TC để lần
   bước xác định lỗi của chương trình
   Sử dụng từng điều kiện riêng lẻ để tìm lỗi




NNTu               Software Testing S2008       13
Các nguyên tắc gỡ rối

   Nếu bị bế tắc, hãy gác nó lại
   Nếu bị bế tắc, Hãy mô tả lại vấn đề cho 1
   người khác
   Hãy dùng một công cụ gỡ rối duy nhất như là
   cách viện trợ thứ 2
   Tránh sự thử nghiệm – Sử dụng nó như là kế
   sách cuối cùng



NNTu               Software Testing S2008    14
Phân tích-sửa lỗi

   Chỗ nào đã có 1 lỗi thì có khả năng có một
   lỗi khác
   Tập trung sửa lỗi, nhưng không chỉ tập trung
   vào một dấu hiệu lỗi
   Khả năng sửa chính xác không phải 100%
   Khả năng sửa chính xác giảm khi kích thước
   của chương trình tăng lên
   Khả năng sửa một lỗi có thể tạo ra một lỗi
   mới

NNTu               Software Testing S2008     15
Phân tích-sửa lỗi

   Nơi đâu lỗi phát sinh
   Ai tạo ra lỗi
   Cái gì đã thực thi/kết thúc không đúng
   Có thể ngăn ngừa lỗi này như thế nào
   Tại sao lỗi không được phát hiện sớm
   Lỗi có thể phát hiện sớm bằng cách nào




NNTu               Software Testing S2008   16
Bài tập - đọc hiểu




NNTu        Software Testing S2008   17
Đọc thêm

   [1]. Chapter 07




NNTu                 Software Testing S2008   18
Q/A




NNTu   Software Testing S2008   19

Bai08 ky thuatdebug-k-trpm@softtesting-nntu

  • 1.
    Lý thuyết Kiểm TraPhần Mềm Bài 08: Kỹ thuật gỡ rối – sửa lỗi GV: Nguyễn Ngọc Tú Email: [email protected] Bộ môn: Kỹ thuật Phần mềm
  • 2.
    Nội dung Khái niệm Kỹ thuật vét cạn Phương pháp Qui nạp Phương pháp suy diễn Phương pháp lần vết Phương pháp kiểm tra Các nguyên tắc gỡ rối Phân tích lỗi NNTu Software Testing S2008 2
  • 3.
    Khái niệm Gỡ rối là công việc thực hiện sau khi thực hiện thành công TC TC được gọi là thành công (pass) chương trình không làm gì khác với những gì nó đã được thiết kế Quá trình gỡ rối thực hiện Xác định - định vị lỗi Sửa lỗi NNTu Software Testing S2008 3
  • 4.
    Khái niệm Điều kiện cần và đủ Đã Kiểm thử Các yếu tố ảnh hưởng cho thấy rằng người lập trình chưa hoàn hảo, còn phạm lỗi là hoạt động gây mệt mỏi nhất về mặt tinh thần có thể bị mất phương hướng NNTu Software Testing S2008 4
  • 5.
    Kỹ thuật vétcạn Phổ biến ít tư duy, ít gây mệt mỏi về mặt tinh thần Không hiệu quả Thường không thành công Phương pháp Brute Force được phân chia thành 3 loại không có định hướng. theo các dòng báo tiên đoán của chương trình. với các công cụ gỡ rối tự động NNTu Software Testing S2008 5
  • 6.
    Kỹ thuật vétcạn Gỡ rối với thông tin kết xuất Hiển thị thô dữ liệu ở các nơi Kết xuất bộ nhớ ít khi chính xác để xác định lỗi Không có một phương pháp cụ thể phân tích Chỉ ra vị trí lỗi khu vực lỗi Công cụ gỡ rối tự động Chèn thêm vào chương trình các dòng lệnh hỗ trợ thực hiện từng bước Cho phép đánh dấu các dòng lệnh thi hành NNTu Software Testing S2008 6
  • 7.
    Phương pháp Quinạp bắt đầu từ một manh mối và quan sát mối quan hệ giữa các manh mối. manh mối có thể là một dấu hiệu về lỗi, hoặc là kết quả của 1 hay nhiều test case NNTu Software Testing S2008 7
  • 8.
    Phương pháp Quinạp Xác định dữ liệu phù hợp Bước đầu tiên là liệt kê tất cả những dấu hiệu cho là lỗi Các lỗi tương tự nhưng khác nhau mà TC không phải là nguyên nhân gây lỗi Tổ chức các dữ liệu quan tâm để tìm lỗi theo các mâu thuẫn NNTu Software Testing S2008 8
  • 9.
    Phương pháp Quinạp Đặt ra một giả thuyết Chứng minh giả thuyết bằng cách so sánh nó với các manh mối gốc hay dữ liệu để chắc chắn rằng giả thuyết này hoàn toàn làm sáng tỏ tình trạng của các manh mối Sửa lỗi NNTu Software Testing S2008 9
  • 10.
    Phương pháp Suydiễn Đây là quá trình loại trừ và làm rõ dần các nguyên nhân Ngược với phương pháp quy nạp Bắt đầu đi từ các “nghi ngờ” lỗi xảy ra NNTu Software Testing S2008 10
  • 11.
    Phương pháp Suydiễn L iệt kê các nguyên nhân, giả thuyết có thể dẫn tới xảy ra lỗi Sử dụng dữ liệu chạy thử để loại bỏ dần các nguyên nhân Làm rõ các giả thuyết còn lại Chứng minh các giả thuyết NNTu Software Testing S2008 11
  • 12.
    Phương pháp lầnvết Hiệu quả trong định vị lỗi trong các chương trình nhỏ Quay lui lại quá trình xử lý trong chương trình cho đến khi tìm thấy điểm xử lý không đúng logic NNTu Software Testing S2008 12
  • 13.
    Phương pháp kiểmtra Kiểu cuối cùng là dùng chính các TC để lần bước xác định lỗi của chương trình Sử dụng từng điều kiện riêng lẻ để tìm lỗi NNTu Software Testing S2008 13
  • 14.
    Các nguyên tắcgỡ rối Nếu bị bế tắc, hãy gác nó lại Nếu bị bế tắc, Hãy mô tả lại vấn đề cho 1 người khác Hãy dùng một công cụ gỡ rối duy nhất như là cách viện trợ thứ 2 Tránh sự thử nghiệm – Sử dụng nó như là kế sách cuối cùng NNTu Software Testing S2008 14
  • 15.
    Phân tích-sửa lỗi Chỗ nào đã có 1 lỗi thì có khả năng có một lỗi khác Tập trung sửa lỗi, nhưng không chỉ tập trung vào một dấu hiệu lỗi Khả năng sửa chính xác không phải 100% Khả năng sửa chính xác giảm khi kích thước của chương trình tăng lên Khả năng sửa một lỗi có thể tạo ra một lỗi mới NNTu Software Testing S2008 15
  • 16.
    Phân tích-sửa lỗi Nơi đâu lỗi phát sinh Ai tạo ra lỗi Cái gì đã thực thi/kết thúc không đúng Có thể ngăn ngừa lỗi này như thế nào Tại sao lỗi không được phát hiện sớm Lỗi có thể phát hiện sớm bằng cách nào NNTu Software Testing S2008 16
  • 17.
    Bài tập -đọc hiểu NNTu Software Testing S2008 17
  • 18.
    Đọc thêm [1]. Chapter 07 NNTu Software Testing S2008 18
  • 19.
    Q/A NNTu Software Testing S2008 19