Tại sao sử dụng bảng quyết định?
Các kỹ thuật phân vùng tương đương và phân tích giá trị biên thường được áp dụng cho các tình huống hoặc đầu vào cụ thể. Tuy nhiên, khi kết hợp các đầu vào khác nhau sẽ dẫn đến các hành động khác nhau được thực hiện có xu hướng tập trung nhiều hơn trên giao diện người dùng (sử dụng phân vùng tương đương và phân tích giá trị biên thường khó để hiển thị cho điều này). Hai kỹ thuật dựa trên đặc tả kỹ thuật khác (bảng quyết định và kiểm thử chuyển đổi trạng thái) tập trung nhiều hơn vào logic nghiệp vụ hoặc quy tắc nghiệp vụ.
Bảng quyết định (decision table) là một cách tốt để xử lý sự kết hợp của nhiều thứ (ví dụ: đầu vào). Kỹ thuật này đôi khi còn được gọi là bảng “nhân quả”. Lý do cho điều này là có một kỹ thuật lập biểu đồ logic liên quan được gọi là “biểu đồ nguyên nhân-kết quả”, đôi khi được sử dụng để giúp suy ra bảng quyết định (Myers mô tả đây là một mạng logic tổ hợp [Myers, 1979]). Tuy nhiên, hầu hết mọi người thấy hữu ích hơn khi chỉ sử dụng bảng được mô tả trong [Copeland, 2003].
Nếu bắt đầu sử dụng bảng quyết định để khám phá những quy tắc nghiệp vụ cần được kiểm thử, bạn có thể thấy rằng BA (người phân tích nghiệp vụ) và người phát triển thấy bảng này rất hữu ích và cũng muốn bắt đầu sử dụng chúng. Hãy khuyến khích điều này, vì nó sẽ giúp công việc của bạn dễ dàng hơn trong tương lai. Các bảng quyết định cung cấp một cách có hệ thống các quy tắc nghiệp vụ phức tạp, hữu ích cho người phát triển cũng như người kiểm thử. Bảng quyết định có thể được sử dụng trong thiết kế kiểm thử cho dù chúng có được sử dụng trong thông số kỹ thuật hay không, vì chúng giúp người kiểm thử khám phá tác động của sự kết hợp của các đầu vào khác nhau và các trạng thái phần mềm khác phải thực hiện chính xác các quy tắc nghiệp vụ. Giúp người phát triển thực hiện công việc tốt hơn cũng có thể dẫn đến mối quan hệ tốt hơn với họ.
Việc kiểm thử các kết hợp có thể là một thách thức, vì số lượng các kết hợp thường có thể rất lớn. Kiểm thử tất cả các kết hợp có thể có là không thực tế nếu không muốn nói là không thể. Chúng ta phải hài lòng với việc kiểm thử chỉ một tập hợp con của các kết hợp nhưng việc lựa chọn kết hợp nào để kiểm thử và loại bỏ kết hợp nào lại không phải là chuyện nhỏ. Nếu bạn không có cách chọn kết hợp một cách có hệ thống, thì một tập hợp con tùy ý sẽ được sử dụng và điều này có thể dẫn đến nỗ lực kiểm thử không hiệu quả.
Bảng quyết định hỗ trợ việc lựa chọn có hệ thống các trường hợp kiểm thử hiệu quả và có thể có tác dụng có lợi trong việc tìm ra các vấn đề và sự mơ hồ trong đặc tả. Đây là một kỹ thuật hoạt động tốt khi kết hợp với phân vùng tương đương. Sự kết hợp của các điều kiện được khám phá có thể là sự kết hợp của các phân vùng tương đương. Ngoài bảng quyết định, còn có các kỹ thuật khác liên quan đến việc kiểm thử các kết hợp của mọi thứ: kiểm thử theo cặp và mảng trực giao. Những điều này được mô tả trong [Copeland, 2003]. Một nguồn kỹ thuật khác là [Pol et al., 2001]. Bảng quyết định và biểu đồ nguyên nhân-kết quả được mô tả trong [BS7925-2], bao gồm thiết kếkiểm thử và đo lường phạm vi.
Sử dụng bảng quyết định để thiết kế kiểm thử
Nhiệm vụ đầu tiên là xác định một chức năng hoặc hệ thống con phù hợp có hành vi phản ứng theo sự kết hợp của các yếu tố đầu vào hoặc sự kiện. Hành vi quan tâm không được quá rộng (tức là không nên chứa quá nhiều đầu vào) nếu không số lượng các kết hợp sẽ trở nên cồng kềnh và khó quản lý. Tốt hơn là xử lý một số lượng lớn các điều kiện bằng cách chia chúng thành các tập con và xử lý từng tập con một.
Khi đã xác định được các khía cạnh cần được kết hợp, thì bạn đặt chúng vào một bảng liệt kê tất cả các kết hợp Đúng và Sai cho từng khía cạnh. Lấy ví dụ về ứng dụng cho vay, trong đó bạn có thể nhập số tiền phải trả hàng tháng hoặc số năm bạn muốn lấy lại số tiền đó (thời hạn của khoản vay). Nếu bạn nhập cả hai, hệ thống sẽ thực hiện việc thỏa hiệp giữa hai bên nếu chúng xung đột. Hai điều kiện là số tiền vay và thời hạn, vì vậy chúng tôi đặt chúng trong một bảng (xem Bảng 4.2).
Tiếp theo, ta sẽ xác định tất cả các kết hợp của Đúng và Sai (xem Bảng 4.3). Với hai điều kiện, mỗi điều kiện có thể là Đúng hoặc Sai, chúng ta sẽ có bốn kết hợp (hai lũy thừa của số điều được kết hợp). Lưu ý rằng nếu có ba thứ để kết hợp, chúng ta sẽ có tám cách kết hợp, với bốn thứ, sẽ có 16…. Đây là lý do tại sao nên giải quyết các nhóm kết hợp nhỏ cùng một lúc. Để theo dõi những kết hợp nào chúng ta có, ta sẽ xen kẽ Đúng và Sai ở hàng dưới cùng, đặt hai Đúng và sau đó là hai Sai ở hàng phía trên hàng dưới cùng…, vì vậy hàng trên cùng sẽ có tất cả các Đúng và sau đó tất cả Sai (và nguyên tắc này áp dụng cho tất cả các bảng như vậy).
Bước tiếp theo (ít nhất là đối với ví dụ này) là xác định kết quả chính xác cho mỗi tổ hợp (xem Bảng 4.4). Trong ví dụ này, chúng ta có thể nhập một hoặc cả hai trường. Mỗi sự kết hợp đôi khi được gọi là một quy tắc.
Tại thời điểm này, có thể nhận ra rằng chúng ta đã không nghĩ về điều gì sẽ xảy ra nếu khách hàng không nhập bất kỳ thông tin nào vào một trong hai trường. Bảng đã làm nổi bật một sự kết hợp không được đề cập trong đặc tả kỹ thuật cho ví dụ này. Chúng ta có thể cho rằng sự kết hợp này sẽ dẫn đến một thông báo lỗi, vì vậy chúng ta cần thêm một hành động khác (xem Bảng 4.5). Điều này làm nổi bật sức mạnh của kỹ thuật này để khám phá những thiếu sót và sự mơ hồ trong đặc tả kỹ thuật. Không có gì lạ khi một số kết hợp bị bỏ qua trong đặc tả kỹ thuật; do đó, đây cũng là một kỹ thuật có giá trị để sử dụng khi rà soát cơ sở kiểm thử.
Giả sử ta thay đổi ví dụ một chút để khách hàng không được phép nhập cả khoản thanh toán và thời hạn. Bây giờ bảng của chúng ta sẽ thay đổi, vì cũng sẽ có thông báo lỗi nếu nhập cả hai, vì vậy nó sẽ giống như Bảng 4.6.
Giờ đây, bạn có thể nhận thấy rằng chỉ có một “Có” trong mỗi cột, tức là các hành động của chúng ta là loại trừ lẫn nhau – chỉ một hành động xảy ra cho mỗi tổ hợp điều kiện. Chúng ta có thể biểu diễn điều này theo một cách khác bằng cách liệt kê các hành động trong ô của một hàng, như trong Bảng 4.7. Lưu ý rằng nếu có nhiều hơn một hành động xuất phát từ bất kỳ kết hợp nào, thì sẽ tốt hơn nếu hiển thị chúng dưới dạng các hàng riêng biệt thay vì kết hợp chúng thành một hàng.
Bước cuối cùng của kỹ thuật này là viết các trường hợp kiểm thử để thực hiện từng quy tắc trong bốn quy tắc trong bảng. Trong ví dụ này, chúng ta bắt đầu bằng cách xác định các điều kiện đầu vào và sau đó xác định các kết quả. Tuy nhiên, trong thực tế, nó có thể hoạt động theo cách khác, chúng ta có thể thấy rằng có một số kết quả khác nhau và phải nghiên cứu lại để hiểu sự kết hợp của các điều kiện đầu vào nào thực sự thúc đẩy những kết quả đó. Kỹ thuật này hoạt động tốt khi thực hiện theo cách này và có thể là một cách tiếp cận lặp đi lặp lại khi khám phá thêm về các quy tắc điều khiển hệ thống.
Bản gốc Tiếng Anh các bạn có thể Tải về Tại đây