Để đạt được độ bao phủ chuyển trạng thái ta lựa chọn chuỗi các chuyển trạng thái sao cho mỗi chuyển trạng thái được thăm ít nhất một lần [5]. ài toán này sẽ tương đương với việc tìm đường đi qua tất cả các cạnh của một đồ thị có hướng sao cho mỗi cạnh được qua ít nhất một lần. Vì mỗi cạnh của đồ thị tương đương với một sự chuyển trạng thái mà các trạng thái là hữu hạn nên việc tìm đường đi này là hoàn toàn có thể thực hiện được.
Để tìm độ bao phủ chuyển trạng thái trước tiên ta xây dựng cây kiểm thử từ mô hình FSM. Cây kiểm thử của một FSM là một cây có gốc là trạng thái ban đầu. Từ trạng thái ban đầu, nó chứa ít nhất một đường đi từ trạng thái ban đầu tới các trạng thái còn lại của FSM [2].
Theo [2], phương pháp xây dựng cây kiểm thử như sau:
Bước 1: Gốc của cây kiểm thử là trạng thái ban đầu.
Bước 2: Giả sử rằng cây kiểm thử đã được xây dựng đến mức k, mức thứ
k+1 sẽ được xây dựng như sau: Chọn một nút n tại mức k,
Nếu n xuất hiện ở mức bất kỳ từ 1 đến k thì n là nút lá và không xây dựng thêm nhánh này.
Nếu n không phải là nút lá thì tiếp tục xây dựng nhánh này bằng cách thêm một nhánh từ n tới nút mới m nếu d(n,x) = m. Gán nhãn của nhánh này là x y với y = λ(n,x).
Lặp lại bước này với tất cả các nút ở mức k.
Ví dụ: Xây dựng cây kiểm thử từ mô hình FSM C1 ở Hình 5.1. Theo các bước trên, ta xây dựng cây kiểm thử như sau:
1.Xây dựng gốc của cây:
Trạng thái ban đầu của FSM C1 là q1, là gốc của cây, có mức là 1.
2.Phát triển nhánh của cây:
Mức 2: Từ trạng thái ban đầu của q1 có thể tới trạng thái q1 hoặc q4. Do vậy, từ gốc q1 của cây ta phát triển 2 nhánh tới 2 nút có nhãn là
q1. Ở các mức 1, 2, 3 chưa tồn tại nút nào có nhãn là q5 nên tiếp tục phát triển thêm nhánh cho nút này.
Mức 5: Tại mức 5, q5 là nút lá vì ở các mức trên đã tồn tại nút có nhãn là q5. Ở các mức 1, 2, 3, 4 chưa tồn tại nút nào có nhãn là q2 nên tiếp tục phát triển thêm nhánh cho nút này.
Mức 6: Tại mức 6, cả q1 và q5 đều là nút lá vì ở các mức trên đã tồn tại nút có nhãn là q1 và q5.
Cuối cùng ta được cây kiểm thử như Hình 5.3 dưới đây:
Sau khi xây dựng cây kiểm thử, ta tiếp tục tìm tập bao phủ trạng thái P từ cây kiểm thử. Tập bao phủ trạng thái P = {p1, p2, …pm} là một tập tất cả các chuỗi con pi thể hiện đường dẫn con bắt đầu từ nút gốc trong cây kiểm thử, nối các nhãn theo các cạnh của đường dẫn con ta được một chuỗi thuộc P [2].
Từ cây kiểm thử của FSM C1 trên Hình 5.3, ta tìm được tập bao phủ P như sau:
p1 = a – là nhãn của đường đi q1 → q1 p2 = b – là nhãn của đường đi q1 → q4
p3 = bb – là nhãn của đường đi q1 → q4 → q4 p4 = ba – là nhãn của đường đi q1 → q4 → q3
p5 = bab – là nhãn của đường đi q1 → q4 → q3 → q1
Tiếp tục tìm các đường dẫn con còn lại, cuối cùng ta được tập P: P = {a, b, bb, ba, bab, baa, baab, baaa, baaab, baaaa}