HomeOur Team
Bảng quyết định trong testing (Phần 2)

Bảng quyết định trong testing (Phần 2)

By huong.pham
Published in Testing
December 10, 2022
5 min read

Mở đầu

Tiếp tục với chủ để bảng quyết định trong testing, lần trước mình đã có chia sẻ với mọi người kiểm tra bảng quyết định là gì, cấu trúc bảng quyết định, các bước tạo bảng quyết định với trường hợp đầy đủ. Thì hôm nay mình sẽ giới thiệu với các bạn thu gọn bảng quyết định với phương pháp collapse và đi đến ví dụ để chúng ta có thể hiểu rõ hơn về phương pháp này.

4. Phương pháp thu gọn bảng quyết định collapse

4.1.Tìm hiểu về phương pháp collapse

  • Phương pháp collapse thực chất là phương pháp kết hợp các rules lại với nhau bằng quy tắc, từ đó giảm thiểu số rules ở mức tối đa.
  • Quy tắc kết hợp các rules: Trong bảng quyết định, nếu hai cột thử nghiệm (rules) có các hành động kết quả giống nhau và chỉ có một điều kiện khác nhau thì các cột này có thể được kết hợp với nhau thu gọn thành một cột chung
  • Các bước thực hiện như sau:
    Bước 1: Tìm những rules có cùng hành động kết quả Bước 2: Trong nhóm những rules có cùng hành động kết quả tìm ra những rules khác chỉ 1 điều kiện Bước 3: Thực hiện kết hợp 2 cột có cùng hành động kết quả và khác nhau chỉ 1 điều kiện: Giữ lại cột đầu, xóa cột sau,.Ở cột được giữ lại điều kiện khác nhau được ký hiệu (-) thể hiện cho giá trị không cần thiết . Bước 4: Lập bảng quyết định thu gọn từ những kết hợp trên ( Lưu ý: Với từng lần thu gọn sẽ tạo ra 1 bảng quyết định thu gọn,kiểm tra xem bảng quyết định đó có còn thu gọn được không. Nếu còn có thể kết hợp được thì làm tương tự đến khi nào không kết hợp được nữa thì dừng lại và ra được bảng quyết định thu gọn cuối cùng (Decision collapse table) )

4.2 Những điều cần nhớ khi thực hiện phương pháp collapse

  • Khi thực hiện kết hợp 2 cột (rules) luôn xóa cột bên phải, không xóa cột bên trái
  • Không đổi tên cột sau khi xóa các cột không cần thiết
  • Áp dụng các bước thu gọn cho các bảng quyết định vừa xây dựng trước đó
  • Dừng thu gọn khi các cột không thể kết hợp với nhau được nữa

Hãy chú ý những điều trên nhé ^^

5. Ví dụ

Chúng ta sẽ điều hiểu ví dụ để có thể hiểu hơn về phương pháp này nhé.

Bài toán

Một cửa hàng quần áo áp dụng chiết khấu như sau:

  • Nếu khách hàng mua đúng dịp sinh nhật, sẽ được chiết khấu 20% trên mỗi hóa đơn
  • Nếu khách hàng có thẻ tích điểm, sẽ được chiết khấu 15% trên mỗi hóa đơn
  • Nếu khách hàng có voucher giảm giá chiết khấu 30% trên mỗi hóa đơn
  • Không áp dụng đồng thời nhiều ưu đãi nếu có nhiều ưu đãi thì ưu đãi cao nhất sẽ được áp dụng

Hập lập bảng quyết định thu gọn cho bài toán trên.

Cách giải

Dựa vào dữ liệu đã cho,ta thực hiện giải quyết vấn đề bài toán như sau:

Bước 1: Xác định điều kiện đầu vào, hành động của hệ thống

Điều kiện đầu vào:

  • Khách hàng mua đúng sinh nhật
  • Khách hàng có thẻ tích điểm
  • Khách hàng Có voucher giảm giá

Hành động của hệ thống:

  • Chiết khấu 20% trên mỗi hóa đơn
  • Chiết khấu 15% trên mỗi hóa đơn
  • Chiết khấu 30% trên mỗi hóa đơn
  • Không chiết khấu

Bước 2: Tính tổng số rules Do có 3 điều kiện đầu vào là: khách hàng mua đúng sinh nhật, khách hàng có thẻ tích điểm, khách hàng có mã giảm giá nên ta sẽ có tổng số rules: 2^3= 8 ( theo quy tắc tổng số rules = 2^n trong đó: n là số điều kiện đầu vào)

Bước 3: Lập bảng quyết định đầy đủ

b1.png Bước 4: Rút gọn bảng quyết định để giảm thiểu test case và quyết định số test case

Lần thu gọn đầu tiên

  • Nhóm 1: Những rules có hành động giống nhau đều chiết khấu 30% là rules 1,3,5,7. Trong đó rules 1 và rules 3 có chỉ 1 điều kiện khác nhau là (thẻ tích điểm ) nên thực hiện kết hợp: Xóa rules 3, giữ nguyên rules 1 và tại rules 1 đổi giá trị điều kiện thẻ tích điểm là (-)
  • Nhóm 2 : Những rules có hành động giống nhau đều chiết khấu 20 là rules 2,4. Trong đó rules 2 và rules 4 có chỉ 1 điều kiện khác nhau là (thẻ tích điểm ) nên thực hiện kết hợp: Xóa rules 4, giữ nguyên rules 2 và tại rules 2 đổi giá trị điều kiện thẻ tích điểm là (-) => Sau khi thu gọn lần đầu tiên ta được bảng quyết định : b2.png

Lần thu gọn thứ 2: Nhóm những rules có hành động giống nhau đều chiết khấu 30% là rules 1,5,7. Trong đó rules 1 và rules 5 có chỉ 1 điều kiện khác nhau là mua dịp sinh nhật nên thực hiện kết hợp: Xóa rules 5, giữ nguyên rules 1 và tại rules 1 đổi giá trị điều kiện mua dịp sinh nhật là (-) => Sau khi thu gọn lần thứ 2, ta được bảng quyết định b3.png

Lần thu gọn thứ 3: Nhóm những rules có hành động giống nhau đều chiết khấu 30% là rules 1,7. Trong đó, rules 1 và 7 có tất cả những điều kiện giống nhau nên thực hiện kết hợp. Nên thực hiện giữ nguyên rules 1 và xóa rules 7( Ở lần thu gọn thứ 2 thực chất cũng có thể xóa luôn rules 7, mình so sánh lần lượt 2 rules 1 cho chi tiết ạ) => Sau khi thu gọn lần thứ 3, ta được bảng quyết định b4.png

Nhìn vào bảng quyết định thu gọn ở lần thứ 3, ta đã không thấy những giá trị output giống nhau, nên ta kết thúc thu gọn ở bước này.

Như vậy từ 8 case ban đầu rút gọn tối đa còn 4 test case như vậy phương pháp collapse chúng ta đã giảm được số test case tới mức tối thiểu mà vẫn hoàn toàn cover được toàn bộ function.

Kết Luận

Bảng quyết định là một công cụ rất cần thiết của tester trong quá trình kiểm thử phần mềm nói chung hay thiết kế kịch bản kiểm thử nói riêng. Bảng quyết định là một kỹ thuật tốt để áp dụng cho những trường hợp cần nhiều sự kết hợp. Ngoài ra còn đem lại nhiều lợi ích trong việc nhận biết vấn đề tiềm ẩn và sự không rõ ràng trong đặc tả (specification). Từ những ví dụ trên nhờ có bảng quyết định đã giảm được số test case tới mức tối thiểu mà vẫn cover được các tình huống, không gặp tình trạng test trùng lặp case, thiếu case.. giảm thiểu effort test đến mức tối đa. Cảm ơn các bạn đã đọc bài (:D)


Tags

DecisionTable

Share

huong.pham

huong.pham

Developer

Expertise

Related Posts

Bảng quyết định trong testing (Phần 1)
Testing
Bảng quyết định trong testing (Phần 1)
December 10, 2022
5 min
© 2023, All Rights Reserved.
Powered By

Quick Links

HomeOur Team

Social Media