Kiểm thử phạm vi dựa trên trạng thái

Một phần của tài liệu Nghiên cứu kiểm thử bao phủ phần mềm và ứng dụng (Trang 45)

4. Ý nghĩa lý luận và thực tiễn của đề tài

3.3.3. Kiểm thử phạm vi dựa trên trạng thái

Phần lớn các hệ thống hướng đối tượng có tồn tại một số các lớp mà có thể được mô tả như là “máy trạng thái”. Các đối tượng của các lớp này có thể tồn tại như một số các trạng thái khác nhau, và hành vi của mỗi lớp có chất lượng khác nhau trong mỗi trạng thái có thể – Hành vi của lớp là các trạng thái phụ thuộc.

Kiểm thử phạm vi dựa vào trạng thái được thiết kế để làm thế nào đo được các hành vi này đã được kiểm thử đầy đủ. Xem xét một lớp cụ thể với trạng thái phụ thuộc hành vi như: Một ngăn xếp bị chặn (hình 3.4) có thể có ba trạng thái: „rỗng‟, „không đầy‟ hoặc „đầy‟. Hành vi của trạng thái có chất lượng khác nhau trong mỗi trạng thái. Ví dụ, pop() thực hiện thao tác di chuyển và trở về phần tử đầu đến ngăn xếp trong trạng thái „không đầy‟ hoặc „đầy‟. Giao diện lớp cho lớp ngăn xếp bị chặn được chỉ ra dưới đây:

Class BoundedStack { Public:

Void push ( int ); Int Pop ( );

Struct underflow: std::exception { }; Struct overflow: std::exception { }; };

Chúng ta có thể sử dụng bao phủ điểm để chắc chắn rằng các ca kiểm thử thực hiện trong mỗi phương thức của lớp. Các ca kiểm thử đạt được 100% bao phủ điểm.

Hình 3.4: Lược đồ chuyển trạng thái chongăn xếp bị chặn”

3.3.3.1. Sử dụng các độ đo bao phủ hộp trắng

Nếu bao phủ điểm vào (entry-point) không đảm bảo kiểm thử kỹ lưỡng, có thể chúng ta nên sử dụng một yêu cầu bao phủ mạnh hơn, là 100% bao phủ quyết định. Thật không may là có các bất lợi khi thông qua các yêu cầu như vậy. Một nhân tố mà có thể được quyết định trong mã mà không tương ứng với các tính năng của giao diện chung. Ví dụ điển hình bao gồm mã điều khiển lỗi

phủ quyết định có thể là khó đạt được.

Một vấn đề quan trọng hơn là sự bất lực của các độ đo bao phủ cấu trúc truyền thống để xác định bao phủ mã khi chúng hoàn toàn vắng mặt. Ví dụ, hãy xem xét những gì sẽ xảy ra nếu ngăn xếp bị chặn quên kiểm tra điều kiện ngăn xếp rỗng trong pop (). Yêu cầu bao phủ quyết định 100% sẽ không giúp tìm lỗi này – các điều kiện thiếu là không có để được bao phủ.

3.3.3.2. Những cách có thể làm tốt hơn

Trên thực tế, chúng ta có thể viết một tập các ca tekiểm thử tốt hơn so với bất kỳ độ đo bao phủ cấu trúc truyền thống nào và không có bất kỳ kiến thức của các chi tiết bên trong lớp. Sơ đồ chuyển trạng thái UML chỉ ra rằng hành vi của lớp thay đổi phụ thuộc vào trạng thái hiện thời. Loại lược đồ này thông thường sử dụng để mô tả trạng thái phụ thuộc hành vi của các lớp

Chúng ta có thể sử dụng thêm thông tin bổ sung của sơ đồ chuyển trạng thái (hình 3.4) để thiết kế một tập các kiểm thử được thực hiện cho các lớp ngăn xếp bị chặn hoàn toàn .

3.3.3.3. Bao phủ nội dung dựa vào trạng thái

Bao phủ phạm vi dựa vào trạng thái là tương tự với bao phủ phạm vi kế thừa: nó cung cấp các định nghĩa khác nhau của các độ đo bao phủ cấu trúc truyền thống. Với bao phủ phạm vi kế thừa các phạm vi phụ thuộc cấu trúc kế thừa của phần mềm được kiểm thử. Tương tự, với bao phủ phạm vi dựa vào trạng thái, phạm vi tương ứng với các trạng thái tiềm năng của đối tượng của lớp kiểm thử. Do đó, các độ đo bao phủ phạm vi dựa vào trạng thái thực hiện một chương trình trong phạm vi của một trạng thái như cách thực hiện của chương trình tương tự trong trạng thái khác

Bao phủ phạm vi dựa vào trạng thái là biến thể của bao phủ điểm cho một lớp (tại phạm vi tương ứng với một trạng thái cụ thể) được cho bởi số lượng các phương thức được gọi vào các đối tượng trong trạng thái chia cho tổng số các phương thức trong lớp.

bình của bao phủ điểm phạm vi dựa vào trạng thái trong mỗi trạng thái phù hợp với lớp.

Một phần của tài liệu Nghiên cứu kiểm thử bao phủ phần mềm và ứng dụng (Trang 45)

Tải bản đầy đủ (PDF)

(74 trang)