KỸ THUẬT KIỂM THỬ HỘP ĐEN
Kiểm thử hộp đen là phương pháp kiểm thử phần mềm mà không cần xem xét cấu trúc bên trong hay cách hoạt động của mã nguồn. Phương pháp này kiểm tra hoạt động của hệ thống từ bên ngoài bằng cách cung cấp các đầu vào cho ứng dụng hoặc hệ thống và xác minh xem đầu ra có đúng như mong đợi hay không. Chủ yếu dựa trên tài liệu yêu cầu hoặc thiết kế, với mục tiêu đảm bảo rằng hệ thống đáp ứng đầy đủ các yêu cầu đã được đưa ra.
Ưu điểm lớn của phương pháp này là không cần phải biết cấu trúc bên trong của phần mềm. Vì vậy, người thực hiện kiểm thử không cần phải là nhà phát triển, miễn là họ hiểu được tài liệu yêu cầu. Tuy nhiên, nhược điểm là khó phát hiện được các vấn đề liên quan đến logic bên trong. Hơn nữa, việc kiểm tra toàn bộ các trường hợp đầu vào là không thể, do đó thường chỉ kiểm tra được trong một số trường hợp giới hạn.
Dưới đây là các kỹ thuật của kiểm thử hộp đen.
① Phương pháp Phân vùng tương đương
Phương pháp phân vùng tương đương là kỹ thuật chia dữ liệu đầu vào của hệ thống hoặc phần mềm thành các phân vùng mà trong đó kỳ vọng rằng cùng một xử lý sẽ được thực hiện. Dữ liệu trong mỗi phân vùng được xử lý giống nhau bởi hệ thống, do đó chúng được coi là tương đương.
Với phương pháp này, một dữ liệu đại diện trong mỗi phân vùng được chọn để tiến hành kiểm thử. Kết quả kiểm thử của dữ liệu đại diện này được coi là kết quả của tất cả các dữ liệu khác trong cùng một phân vùng, giúp kiểm thử được thực hiện một cách hiệu quả.
Phân vùng tương đương
Trong phương pháp phân vùng tương đương, khi phân loại dữ liệu, tất cả các dữ liệu đều phải thuộc về một phân vùng đồng giá trị nhất định. Phân vùng này bao gồm “phân vùng tương đương hợp lệ” chứa dữ liệu hợp lệ mà hệ thống có thể chấp nhận, và “phân vùng tương đương không hợp lệ” chứa dữ liệu bị hệ thống từ chối.
Phân vùng đồng giá trị không chỉ áp dụng cho dữ liệu đầu vào mà còn áp dụng cho dữ liệu đầu ra. Ví dụ, khi bạn tìm kiếm từ khóa “kiểm thử phần mềm” trên một trang tìm kiếm internet, nếu có nhiều kết quả, các kết quả tìm kiếm sẽ được chia thành nhiều trang. Ngược lại, nếu số lượng kết quả ít hoặc không có kết quả, liên kết “Tiếp theo” sẽ không hiển thị. Dữ liệu đầu ra trong trường hợp này có thể được phân chia thành các phân vùng như: “không có kết quả”, “kết quả nằm trong một trang”, và “kết quả trải dài trên nhiều trang”.
Ngoài ra, phân vùng tương đương cũng tồn tại trong các dữ liệu phụ thuộc vào biến nội bộ hoặc thời gian. Chẳng hạn, dựa trên các sự kiện như trước và sau khi lưu tài liệu, ta có thể xem xét các phân vùng khác nhau.
Phân vùng đồng giá trị có thể được chia nhỏ hơn nữa khi cần thiết.
Phương pháp phân vùng tương đương có thể được sử dụng để đạt được mục tiêu bao phủ (coverage) cho đầu vào và đầu ra. Trong trường hợp này, bao phủ được xác định dựa trên các phân vùng tương đương. Để đạt được 100% bao phủ, cần thiết kế các trường hợp kiểm thử để bao quát tất cả các phân vùng đã được phân loại. Cụ thể, mỗi phân vùng đồng giá trị hợp lệ và không hợp lệ cần ít nhất một dữ liệu được chọn để thực hiện kiểm thử.
② Phương pháp Phân tích giá trị biên
Trong các phân vùng tương đương giá trị dựa trên số liệu hoặc giá trị được sắp xếp theo thứ tự, việc kiểm thử với các giá trị nằm tại ranh giới có thể giúp phát hiện dễ dàng các lỗi trong hệ thống hoặc phần mềm. Điều này là do các lỗi thường xuất hiện ở gần các ranh giới. Hiện tượng này khá phổ biến và cho đến nay, việc kiểm thử nhắm vào các giá trị biên vẫn được sử dụng như một phương pháp hiệu quả để thực hiện kiểm thử.
Giá trị biên
Giá trị biên là các giá trị nằm ở ranh giới của phân vùng tương đương. Chúng ta cùng xem xét một ví dụ về việc phân tích giá trị biên và thiết kế các trường hợp kiểm thử dựa trên đặc tả sau đây:
Đặc tả: Nhập tuổi, nếu là nữ và tuổi từ 20 đến 34 (bao gồm cả 20 và 34), thì hiển thị “Tầng F1”.
Trong trường hợp này, chúng ta thực hiện phân tích giá trị biên và giả định rằng chỉ có thể nhập giá trị tuổi, các đầu vào không phải số sẽ không được chấp nhận.
Thoạt nhìn, phạm vi số tuổi từ 20 đến 34 dường như không có vấn đề gì khi kiểm tra trên số tuyến tính. Tuy nhiên, cần lưu ý trong cách hiểu của dải giá trị này. Nếu chỉ sử dụng trực tiếp các giá trị 20 và 34 như đã nêu trong đặc tả, có khả năng chúng ta chưa hoàn toàn nhận thức được khái niệm “giá trị biên” là các giá trị nằm ở ranh giới của phân vùng đồng giá trị.
Các trường hợp kiểm thử phân tích giá trị biên
Phân tích giá trị biên được sử dụng như một sự mở rộng của phương pháp phân vùng tương đương. Khi thiết kế các trường hợp kiểm thử bằng phương pháp phân tích giá trị biên, có thể có nhiều cách tiếp cận khác nhau, tùy thuộc vào cách giải thích “giá trị biên là giá trị nằm ở ranh giới của phân vùng tương đương”.
▫ Phương pháp phân tích giá trị biên với 2 điểm
Phương pháp phân tích giá trị biên chú trọng vào các phân vùng hợp lệ. Ví dụ, nếu đặc tả là “từ 20 tuổi trở lên đến 34 tuổi trở xuống”, các giá trị cần kiểm thử sẽ là 4 giá trị sau:
・Giá trị tối thiểu trong phạm vi hợp lệ: 20 tuổi
・Giá trị tối đa trong phạm vi hợp lệ: 34 tuổi
・Giá trị nhỏ hơn phạm vi hợp lệ (giá trị tối thiểu – 1): 19 tuổi
・Giá trị lớn hơn phạm vi hợp lệ (giá trị tối đa + 1): 35 tuổi
Ngoài ra, khi chú ý đến phân vùng không hợp lệ, phạm vi là “từ 0 tuổi trở lên đến dưới 20 tuổi”. Các giá trị cần kiểm thử sẽ như sau:
・Giá trị nhỏ hơn phạm vi không hợp lệ (giá trị tối thiểu – 1): -1 tuổi (dữ liệu không hợp lệ)
・Giá trị tối thiểu trong phạm vi hợp lệ: 0 tuổi
・Giá trị lớn hơn phạm vi không hợp lệ (giá trị tối đa + 1): 20 tuổi
Do sự trùng lặp giữa các ranh giới của giá trị hợp lệ và không hợp lệ, số lượng trường hợp kiểm thử thực tế sẽ ít hơn. Vì vậy, khi tính toán số trường hợp kiểm thử, cần xem xét sự trùng lặp của các ranh giới của các phân vùng đồng giá trị liên tiếp.
▫ Phương pháp phân tích giá trị biên với 3 điểm
Phương pháp phân tích giá trị biên với 3 điểm mở rộng thêm các giá trị trước và sau các giá trị biên. Ví dụ, đối với phạm vi hợp lệ từ 20 tuổi trở lên đến 34 tuổi trở xuống, chúng ta sẽ chọn 6 giá trị sau làm các trường hợp kiểm thử:
・19 tuổi (giá trị nhỏ hơn 1 so với giá trị biên)
・20 tuổi (giá trị biên)
・21 tuổi (giá trị lớn hơn 1 so với giá trị biên)
・33 tuổi (giá trị nhỏ hơn 1 so với giá trị biên)
・34 tuổi (giá trị biên)
・35 tuổi (giá trị lớn hơn 1 so với giá trị biên)
Cũng đối với phân vùng không hợp lệ, chúng ta thực hiện phân tích giá trị biên 3 điểm. Ví dụ, đối với phạm vi “từ 0 tuổi trở lên đến dưới 20 tuổi”, chúng ta sẽ chọn 5 giá trị sau làm các trường hợp kiểm thử:
・-1 tuổi (không hợp lệ)
・0 tuổi (giá trị tối thiểu trong phạm vi hợp lệ)
・1 tuổi (trong phạm vi hợp lệ)
・19 tuổi (giá trị trước biên giới)
・20 tuổi (giá trị tối đa trong phạm vi hợp lệ)
Trong trường hợp này, do có sự trùng lặp giữa các giá trị biên, số lượng trường hợp kiểm thử sẽ giảm nhẹ. Mặc dù sử dụng phương pháp phân tích giá trị biên với 3 điểm, nhưng không thể tránh được sự trùng lặp giữa các giá trị biên liền kề, do đó số lượng trường hợp kiểm thử cuối cùng vẫn sẽ ít hơn.
Như vậy, trong phân tích giá trị biên, khi thiết kế các trường hợp kiểm thử, việc lựa chọn các giá trị biên và các giá trị liền kề cùng với việc xem xét sự trùng lặp sẽ giúp kiểm thử được thực hiện hiệu quả hơn.
③ Kiểm thử bảng quyết định (Decision Table Test)
Bảng quyết định là bảng tóm tắt các hành động và kết quả đầu ra tương ứng với các kết hợp dữ liệu đầu vào và điều kiện đầu vào. Bảng này rất hữu ích trong việc tổ chức và làm rõ các nghiệp vụ kinh doanh hoặc logic phức tạp. Kiểm thử bảng quyết định là phương pháp thiết kế kiểm thử sử dụng bảng quyết định.
Khi có nhiều điều kiện chồng chéo nhau, việc hiểu được kết hợp các điều kiện nào tương ứng với hành động hoặc kết quả nào sẽ trở nên khó khăn. Để giúp tổ chức và trình bày những kết hợp này một cách rõ ràng, bảng quyết định được sử dụng.
Bảng quyết định ghi lại các điều kiện và hành động, hai mục khác nhau, trong cùng một bảng, vì vậy bảng có cấu trúc như sau.
– Danh sách điều kiện (Phần mô tả điều kiện)
Phần này ghi lại các điều kiện đầu vào hoặc dữ liệu đầu vào. Ví dụ như “Từ 20 tuổi trở lên” hoặc “Tên khách hàng”.
– Danh sách kết quả (Phần mô tả hành động)
Phần này ghi lại các hành động hoặc kết quả xử lý thực thi dựa trên điều kiện. Ví dụ như “Hiển thị “Tầng F1””.
– Kết hợp các điều kiện (Phần chỉ định điều kiện)
Phần này ghi lại các kết hợp kết quả đánh giá của điều kiện. Thường thì kết quả đánh giá được biểu thị bằng “Đúng” (True) hoặc “Sai” (False). Các cách mô tả có thể bao gồm:
・Đúng, Sai
・Y, N
・T, F
・1, 0
Nếu giá trị của điều kiện không ảnh hưởng đến việc đánh giá, có thể được biểu thị bằng “-” hoặc “N/A”. Trong một số điều kiện cụ thể, có thể sử dụng giá trị cụ thể thay vì giá trị boolean.
– Kết quả tương ứng với các kết hợp (Phần chỉ định hành động)
Phần này ghi lại kết quả hành động tương ứng với các kết hợp điều kiện. Các cách biểu diễn kết quả hành động có thể bao gồm:
・Biểu thị bằng đúng và sai
・Biểu thị bằng “X” và để trống
Nếu không có hành động xảy ra, có thể được biểu thị bằng một ô trống. Tùy thuộc vào hành động, có thể không sử dụng giá trị boolean hay “X”, mà thay vào đó là giá trị cụ thể riêng biệt.
– Quy tắc
Các cột trong bảng quyết định được biểu thị là “Quy tắc”. Đây là sự kết hợp giữa các điều kiện và kết quả hành động tương ứng.
Bảng quyết định thường được cho là chỉ sử dụng trong các hệ thống xử lý nghiệp vụ (hệ thống doanh nghiệp), nhưng thực tế, nó có thể được áp dụng rộng rãi trong tất cả các hệ thống, không phân biệt giữa hệ thống doanh nghiệp hay hệ thống nhúng, nếu logic của hệ thống phức tạp.
④ Kiểm thử chuyển trạng thái (State Transition Test)
Trong kiểm thử phần mềm thông thường, các trường hợp kiểm thử được tạo ra với giả định rằng đầu vào giống nhau sẽ cho ra kết quả đầu ra giống nhau. Tuy nhiên, trong một số trường hợp, hành vi của hệ thống có thể thay đổi tùy thuộc vào trạng thái hiện tại hoặc lịch sử trước đó, và kết quả có thể khác nhau mặc dù dữ liệu đầu vào giống nhau.
Hơn nữa, việc thay đổi trạng thái có nghĩa là một hành động nào đó đã được thực hiện trong hệ thống. Khi hệ thống có hành vi khác nhau tùy thuộc vào trạng thái, cần phải tạo ra các trường hợp kiểm thử xem xét trạng thái đó. Phương pháp kiểm thử được sử dụng trong các trường hợp như vậy là “Kiểm thử chuyển trạng thái”.
Sơ đồ chuyển trạng thái
Hệ thống có nhiều trạng thái khác nhau, và sơ đồ chuyển trạng thái là một biểu đồ thể hiện sự chuyển đổi giữa các trạng thái này. Sơ đồ này biểu diễn trực quan các chuyển trạng thái hợp lệ.
Bảng chuyển trạng thái
Bảng chuyển trạng thái là một bảng ma trận thể hiện mối quan hệ giữa các trạng thái và các sự kiện. Trong các ô giao nhau của bảng, trạng thái sau khi sự kiện xảy ra được ghi rõ. Các đặc điểm của bảng chuyển trạng thái bao gồm:
・Có thể tổ chức tất cả các kết hợp giữa trạng thái và sự kiện mà không bỏ sót.
・Có thể làm rõ các kết hợp không hợp lệ.
Việc tạo bảng chuyển trạng thái giúp xác định các mâu thuẫn và thiếu sót trong yêu cầu hệ thống.
Điểm khác biệt với sơ đồ chuyển trạng thái là bảng chuyển trạng thái sẽ xem xét cả chuyển trạng thái hợp lệ và không hợp lệ.
Kiểm thử chuyển trạng thái
Trong kiểm thử chuyển trạng thái, các trường hợp kiểm thử được thiết kế dựa trên sơ đồ chuyển trạng thái hoặc bảng chuyển trạng thái. Các trường hợp kiểm thử được thiết kế sẽ khác nhau tùy theo tiêu chuẩn bao phủ. Các phương pháp thiết kế phổ biến bao gồm:
・Bao phủ các luồng chuyển trạng thái đại diện.
・Bao phủ tất cả các trạng thái.
・Kiểm tra tất cả các chuyển trạng thái.
・Tạo trường hợp kiểm thử với chuyển trạng thái xảy ra theo một thứ tự cụ thể.
・Tạo trường hợp kiểm thử để kiểm tra các chuyển trạng thái không hợp lệ.
Phương pháp này không chỉ hữu ích cho phần mềm hệ thống nhúng mà còn áp dụng cho phần mềm doanh nghiệp. Cụ thể, nó được sử dụng trong các trường hợp sau:
・Kiểm thử quy trình công việc (ví dụ: quy trình kinh doanh có các trạng thái như “Đang chờ duyệt”, “Đang xử lý” v.v.).
・Kiểm thử các thao tác có sự chuyển đổi màn hình.
⑤ Kiểm thử Use Case
Kiểm thử Use Case là phương pháp thiết kế các trường hợp kiểm thử dựa trên các kịch bản sử dụng hệ thống hoặc quy trình kinh doanh.
Use Case là sự mô tả tương tác giữa hệ thống hoặc phần mềm (chủ thể) và các tác nhân bên ngoài (người dùng, hệ thống khác, thiết bị bên ngoài, v.v.). Việc làm rõ các tương tác này giúp hiểu được cách thức hệ thống cần hoạt động. Use Case không bao gồm tất cả các tương tác mà chỉ tập trung vào các tương tác mang lại kết quả có giá trị đối với người dùng hoặc khách hàng. Ngoài ra, kiểm thử này cũng mô tả sự thay đổi trạng thái của hệ thống từ các tương tác đó.
Có hai loại Use Case: Use Case kinh doanh và Use Case hệ thống. Use Case kinh doanh mô tả sự tương tác với khách hàng ở mức độ trừu tượng, xem toàn bộ công ty như một hệ thống, trong khi Use Case hệ thống mô tả các tương tác chi tiết giữa người dùng và hệ thống mục tiêu. Cả hai loại Use Case đều được sử dụng để thiết kế kiểm thử.
Use Case có thể được biểu diễn dưới dạng sơ đồ hoặc văn bản. Sơ đồ Use Case là hình ảnh hóa sự tương tác giữa các tác nhân và hệ thống, trong khi văn bản Use Case là sự diễn giải chi tiết các nội dung này dưới dạng văn bản. Mô tả bao gồm tên Use Case, mục đích, các tác nhân, điều kiện tiên quyết và điều kiện hậu quả, cũng như các quy trình như luồng cơ bản, luồng thay thế, luồng ngoại lệ. Điều kiện tiên quyết là các điều kiện cần được thỏa mãn trước khi thực hiện Use Case, trong khi điều kiện hậu quả là trạng thái cần đạt được sau khi thực hiện. Luồng cơ bản là luồng thường xảy ra nhất, còn luồng thay thế là các luồng phân nhánh từ luồng cơ bản nhưng vẫn đáp ứng điều kiện hậu quả tương tự. Luồng ngoại lệ là xử lý trong các trường hợp bất thường và có điều kiện hậu quả khác với luồng cơ bản.
Quy trình của Use Case có thể được mô tả bằng ngôn ngữ tự nhiên, hoặc có thể được thể hiện dưới các hình thức trực quan như sơ đồ hoạt động, sơ đồ quy trình công việc, sơ đồ luồng. Những biểu diễn này giúp tổ chức các hoạt động của hệ thống hoặc quy trình kinh doanh một cách dễ hiểu và làm nền tảng cho việc thiết kế kiểm thử.
※Bài tập luyện tập: