Công cụ tạo mô hình (D)
Các công cụ lập mô hình (Modeling tools) giúp xác thực các mô hình của hệ thống hoặc phần mềm. Ví dụ, một công cụ có thể kiểm tra tính nhất quán của các đối tượng dữ liệu trong cơ sở dữ liệu và có thể tìm thấy sự không nhất quán và lỗi. Những điều này có thể khó nhận ra khi kiểm thử (bạn có thể đã kiểm thử với một mục dữ liệu và không nhận ra rằng trong một phần khác của cơ sở dữ liệu có thông tin xung đột liên quan đến mục đó). Công cụ mô hình hóa cũng có thể kiểm thử mô hình trạng thái hoặc mô hình đối tượng.
Các công cụ mô hình hóa thường được các nhà phát triển sử dụng và có thể trợ giúp trong việc thiết kế phần mềm.
Một lợi thế mạnh mẽ của cả công cụ mô hình hóa và công cụ phân tích tĩnh là chúng có thể được sử dụng trước khi chạy các bài kiểm thử động. Điều này cho phép xác định bất kỳ lỗi nào mà các công cụ này có thể tìm thấy càng sớm càng tốt, và việc sửa chữa chúng dễ dàng và rẻ hơn. Cũng có ít lỗi truyền sang các giai đoạn sau hơn, vì vậy quá trình phát triển có thể được đẩy nhanh hơn và ít phải làm lại hơn. (Tất nhiên điều này rất khó để chỉ ra, vì những khiếm khuyết đó hiện không còn nữa!)
Lưu ý rằng “công cụ kiểm thử dựa trên mô hình” thực sự là công cụ tạo đầu vào kiểm thử hoặc trường hợp kiểm thử từ thông tin được lưu trữ về một mô hình cụ thể (ví dụ: sơ đồ trạng thái), do đó được phân loại là công cụ thiết kế kiểm thử (xem Mục “Công cụ hỗ trợ đặc tả kiểm thử“).
Các tính năng hoặc đặc điểm của các công cụ lập mô hình bao gồm hỗ trợ cho:
- Xác định sự không nhất quán và khiếm khuyết trong mô hình
- Giúp xác định và ưu tiên các khu vực của mô hình để kiểm thử
- Dự đoán phản ứng và hành vi của hệ thống trong các tình huống khác nhau, chẳng hạn như mức tải
- Giúp hiểu các chức năng của hệ thống và xác định các điều kiện kiểm thử bằng cách sử dụng ngôn ngữ mô hình hóa chẳng hạn như UML.
6.1.4 Công cụ hỗ trợ đặc tả kiểm thử
Các công cụ được mô tả trong phần này hỗ trợ các hoạt động thử nghiệm được mô tả trong Chương 4.
Công cụ thiết kế kiểm thử
Các công cụ thiết kế kiểm thử (Test design tools) giúp xây dựng các trường hợp kiểm thử hoặc ít nhất là các đầu vào kiểm thử (là một phần của trường hợp kiểm thử). Nếu có sẵn một công cụ dự đoán tự động, thì công cụ này cũng có thể xây dựng kết quả mong đợi, do đó, nó thực sự có thể tạo ra các trường hợp kiểm thử (thay vì chỉ kiểm thử đầu vào).
Ví dụ: nếu các yêu cầu được lưu giữ trong công cụ quản lý kiểm thử hoặc quản lý yêu cầu hoặc trong công cụ Kỹ thuật phần mềm hỗ trợ máy tính (CASE) do nhà phát triển sử dụng, thì có thể xác định các trường đầu vào (bao gồm phạm vi giá trị hợp lệ). Thông tin phạm vi này có thể được sử dụng để xác định các giá trị bị ràng buộc và phân vùng tương đương.
Nếu phạm vi hợp lệ được lưu trữ, công cụ có thể phân biệt giữa các giá trị sẽ được chấp nhận và những giá trị thông báo lỗi. Nếu các thông báo lỗi được lưu trữ thì có thể kiểm thử chi tiết kết quả mong đợi. Nếu đã biết kết quả mong đợi của đầu vào có giá trị hợp lệ, thì kết quả mong đợi đó cũng có thể được đưa vào trường hợp kiểm thử được xây dựng bởi công cụ thiết kế kiểm thử.
Một loại công cụ thiết kế kiểm thử khác là công cụ giúp chọn các tổ hợp các yếu tố có thể được sử dụng trong kiểm thử, để đảm bảo rằng tất cả các cặp kết hợp giữa hệ điều hành và trình duyệt đều được kiểm thử. Một số công cụ này có thể sử dụng mảng trực giao. Xem [Copeland, 2003] để biết mô tả về các kỹ thuật kết hợp này.
Lưu ý rằng công cụ thiết kế kiểm thử có thể chỉ dự đoán một phần (nghĩa là, nó có thể biết giá trị đầu vào nào sẽ được chấp nhận và từ chối, nhưng nó có thể không biết chính xác thông báo lỗi hoặc kết quả tính toán cho kết quả mong đợi của việc kiểm thử). Do đó, công cụ thiết kế kiểm thử có thể giúp chúng ta bắt đầu với thiết kế kiểm thử và sẽ xác định tất cả các trường, nhưng nó sẽ không thực hiện toàn bộ công việc thiết kế kiểm thử cho chúng ta (có thể cần phải thực hiện nhiều xác minh hơn).
Một loại công cụ thiết kế kiểm thử khác đôi khi được gọi là “máy quét màn hình” (screen scraper), mẫu có cấu trúc hoặc khung kiểm thử (test frame). Công cụ này xem xét cửa sổ của giao diện người dùng đồ họa và xác định tất cả các nút, danh sách và trường nhập liệu, đồng thời có thể thiết lập một bài kiểm thử cho từng thứ mà nó tìm thấy. Điều này có nghĩa là mọi nút sẽ được nhấp và mọi danh sách sẽ được chọn.
Đây là một khởi đầu tốt cho một loạt các kiểm thử kỹ lưỡng và nó có thể nhanh chóng và dễ dàng xác định các nút không hoạt động. Tuy nhiên, trừ khi công cụ có quyền truy cập vào một sự kiện oracle (tiên tri), thì nó có thể không biết điều gì sẽ thực sự xảy ra khi nhấp vào nút đó.
Tuy nhiên, một loại công cụ thiết kế kiểm thử khác có thể đi kèm với một công cụ đo độ bao phủ. Ví dụ: nếu một công cụ đo độ bao phủ đã xác định được nhánh nào đã được bao phủ bởi một tập hợp các kiểm thử hiện có, thì nó cũng có thể xác định đường dẫn cần thực hiện để bao gồm các nhánh chưa được kiểm thử. Bằng cách xác định kết quả của quyết định trước đó cần là Đúng hay Sai, công cụ có thể tính toán giá trị đầu vào sẽ khiến quá trình thực thi đi theo một đường dẫn cụ thể để tăng phạm vi bao phủ.
Ở đây, bài kiểm thử đang được thiết kế từ chính mã. Trong trường hợp này, ít có khả năng có sự hiện diện của công cụ dự đoán, do đó, đó chỉ có thể là các đầu vào kiểm thử được xây dựng bởi công cụ thiết kế kiểm thử.
Các tính năng hoặc đặc điểm của các công cụ thiết kế kiểm thử bao gồm hỗ trợ cho:
- Tạo các giá trị đầu vào kiểm thử từ:
- Yêu cầu
- Thiết kế các mô hình (trạng thái, dữ liệu hoặc đối tượng)
- Mã số
- Giao diện người dùng đồ họa
- Điều kiện kiểm thử
- Tạo ra các kết quả mong đợi, nếu công cụ có sẵn phần dự đoán.
Lợi ích của loại công cụ này là nó có thể xác định dễ dàng và nhanh chóng các bài kiểm thử (hoặc đầu vào kiểm thử) sẽ thực hiện tất cả các yếu tố, ví dụ: trường nhập, nút, nhánh. Điều này giúp việc kiểm thử kỹ lưỡng hơn (nếu đó là mục tiêu của bài kiểm thử!)
Sau đó, chúng ta có thể gặp vấn đề khi có quá nhiều bài kiểm thử và cần tìm cách xác định các bài kiểm thử quan trọng nhất để chạy. Việc cắt giảm số lượng kiểm thử không thể quản lý có thể được thực hiện bằng cách phân tích rủi ro (xem Chương 5). Sử dụng một kỹ thuật kết hợp như mảng trực giao cũng có thể hữu ích.
Công cụ chuẩn bị dữ liệu kiểm thử
Thiết lập dữ liệu kiểm thử có thể là một nỗ lực đáng kể, đặc biệt nếu cần có phạm vi hoặc khối lượng dữ liệu lớn để kiểm thử. Các công cụ chuẩn bị dữ liệu kiểm thử giúp ích trong lĩnh vực này. Chúng có thể được sử dụng bởi các nhà phát triển, nhưng chúng cũng có thể được sử dụng trong quá trình kiểm thử hệ thống hoặc kiểm thử chấp nhận. Chúng đặc biệt hữu ích để kiểm thử hiệu suất và độ tin cậy, khi cần một lượng lớn dữ liệu thực tế.
Các công cụ chuẩn bị dữ liệu kiểm thử cho phép dữ liệu được chọn từ cơ sở dữ liệu hiện có hoặc được tạo, tạo ra, thao tác và chỉnh sửa để sử dụng trong các bài kiểm thử. Các công cụ tinh vi nhất có thể xử lý nhiều loại tệp và định dạng cơ sở dữ liệu.
Các tính năng hoặc đặc điểm của các công cụ chuẩn bị dữ liệu kiểm thử bao gồm hỗ trợ:
- Trích xuất các bản ghi dữ liệu đã chọn từ các tệp hoặc cơ sở dữ liệu
- “Nhồi” các bản ghi dữ liệu để làm cho chúng ẩn danh hoặc không thể xác định chúng với người thật (để bảo vệ dữ liệu)
- Cho phép sắp xếp hoặc sắp xếp các bản ghi theo một thứ tự khác
- Tạo các bản ghi mới được điền bằng dữ liệu giả ngẫu nhiên hoặc dữ liệu được thiết lập theo một số nguyên tắc, ví dụ: một hồ sơ hoạt động
- Xây dựng một số lượng lớn các bản ghi tương tự từ một mẫu (chẳng hạn như để cung cấp một tập hợp lớn các bản ghi cho các kích cỡ kiểm thử).