Test  Viewpoint
Menu
  • Home
  • Basic Knowledge
  • Manual Testing
  • Test Automation
  • Blog
  • About Me
  • Contact
Menu
#15 White-box testing.png

White-box Testing: Decision Testing (phần 15)

Posted on January 9, 2024January 15, 2024 by Test Viewpoint

Ở bài viết trước chúng ta đã tìm hiểu về kỹ thuật Kiểm thử bao phủ câu lệnh. Tuy nhiên kỹ thuật này có những hạn chế về rủi ro không kiểm tra hết các trường hợp dòng code có thể xảy ra. Câu hỏi đặt ra là “Có cách nào để khắc phục những hạn chế đó không?”. Hãy cùng mình tìm hiểu câu trả lời trong bài viết hôm nay nhé.

Kiểm Thử Quyết Định – Decision Testing Là Gì?

Kiểm thử quyết định – Decision Testing (hay decision coverage hoặc branch coverage) là một phương pháp trong kiểm thử phần mềm để đảm bảo rằng tất cả các nhánh của source code được thực hiện ít nhất một lần trong quá trình kiểm thử. Kiểm thử quyết định đánh giá mức độ kiểm thử của các điều kiện hoặc câu lệnh điều kiện và đảm bảo rằng chúng không bị bỏ sót trong quá trình kiểm thử. Khi sử dụng kiểm thử quyết định, bạn cố gắng thực hiện các bước kiểm thử sao cho cả hai hướng (true và false) của mỗi điều kiện được thực hiện ít nhất một lần.

Bảng: Các cấu trúc quyết định mà ngôn ngữ C sử dụng

Bảng trên đây cung cấp cho bạn một danh sách ngắn các cấu trúc quyết định mà ngôn ngữ C phổ biến sử dụng. Các ngôn ngữ phổ biến khác sử dụng cấu trúc tương tự. Điểm chung giữa tất cả những cấu trúc này là mỗi cấu trúc đưa ra một quyết định chỉ có thể đi theo hai cách: TRUE hoặc FALSE.

Khả Năng Áp Dụng

Mức độ bao phủ này cần được xem xét khi code đang được kiểm tra là quan trọng hoặc thậm chí vô cùng quan trọng. Bảng yêu cầu mức động bao phủ từ IEC 61508 dưới đây cung cấp các yêu cầu trong các hệ thống liên quan đến an toàn. Kỹ thuật này có thể được sử dụng cho code và cho bất kỳ mô hình nào liên quan đến các điểm quyết định, như mô hình quy trình kinh doanh.

IEC 61508 SIL100% Statement Coverage100% Branch Coverage100% MC/DC
1RecommendedRecommendedRecommended
2Highly recommendedRecommendedRecommended
3Highly recommendedHighly recommendedRecommended
4Highly recommendedHighly recommendedHighly recommended
Bảng: Yêu cầu mức độ bao phủ từ IEC 61508

Hạn Chế/ Khó Khăn

Kiểm thử quyết định không xem xét chi tiết về cách đưa ra quyết định với nhiều điều kiện và có thể không phát hiện được các khiếm khuyết do sự kết hợp của các kết quả điều kiện gây ra.

Ví Dụ Về Kiểm Thử Quyết Định

Hãy cùng xem xét một ví dụ sau đây để hiểu hơn về kiểm thử quyết định.

Bảng: Ví dụ về độ bao phủ câu lệnh

Đối với kiểm thử câu lệnh, chúng ta chỉ cần hai trường hợp thử nghiệm khi n < 0 và n > 0. Nhưng để đạt được bao phủ quyết định, chúng ta cần kiểm tra trường hợp “không” thực hiện vòng lặp for khi n == 0. Xin lưu ý rằng, vòng lặp for đánh giá một biểu thức và quyết định có lặp hay không lặp dựa trên kết quả.

Khi nhập 0, quyết định đầu tiên có giá trị là FALSE, vì vậy chúng ta đi theo con đường khác. Ở dòng 12, vị từ (1 <= 0) có giá trị là FALSE, do đó vòng lặp không được thực hiện. Hãy nhớ lại rằng trước đó chúng ta đã thử nghiệm với giá trị lớn hơn 0, điều này khiến vòng lặp được thực thi. Bây giờ chúng ta đã đạt được phạm vi quyết định; phải mất ba trường hợp kiểm thử.

Trở lại với câu hỏi cũ “Đã thử nghiệm đến mức độ bao phủ quyết định, chúng ta đã thực hiện đủ thử nghiệm chưa?”. Hãy xem xét chính vòng lặp. Nó đã thực thi nó 0 lần khi nhập 0, thực thi với số lần không xác định khi ta một giá trị lớn hơn 0. Thử nghiệm như thế đã đủ chưa? Chà, không có gì ngạc nhiên khi có một mức độ bao phủ khác gọi là phạm vi bao phủ vòng lặp. Cùng mình tiếp tục tìm hiểu về Kiểm thử vòng lặp – Loop Testing trong bài viết tiếp theo nhé.

Happy Testing!

Related

Category: Basic KnowledgeTest Automation

Archives

  • June 2025
  • May 2025
  • April 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • August 2024
  • April 2024
  • March 2024
  • February 2024
  • January 2024
  • December 2023
  • November 2023
  • October 2023
  • September 2023
  • August 2023
  • July 2023
  • June 2023
  • May 2023
  • April 2023
  • March 2023

Categories

  • Basic Knowledge
  • Manual Testing
  • Test Automation

About Me

Xin chào các bạn. Mình là một kỹ sư kiểm thử phần mềm. Ngành công nghệ thông tin nói chung và công việc kiểm thử phần mềm nói riêng luôn luôn đổi mới đòi hỏi phải học hỏi mỗi ngày. Với mình chia sẻ những gì học được là cách tốt nhất để mình học những điều mới. Hãy cùng mình tìm hiểu thông qua blog này nhé!

Newsletter

Nhận thông báo về bài viết mới nhất qua email

Popular Posts

About Me

Xin chào các bạn. Mình là một kỹ sư kiểm thử phần mềm. Ngành công nghệ thông tin nói chung và công việc kiểm thử phần mềm nói riêng luôn luôn đổi mới đòi hỏi phải học hỏi mỗi ngày. Với mình chia sẻ những gì học được là cách tốt nhất để mình học những điều mới. Hãy cùng mình tìm hiểu thông qua blog này nhé!

  • Facebook
  • Instagram
  • YouTube

Recent Posts

Newsletter

Nhận thông báo về bài viết mới nhất qua email

©2025 Test Viewpoint