Tạo testcase sử dụng cây phân loại (Testcase design using classification trees)
1. Giới thiệu Kiểm thử hệ thống (System Test) là một phần tất yếu của quá trình "verification" and validation" phần mềm. (Trong bài viết này tôi xin sử dụng 2 khái niệm "verification" & validation" thay vì dịch ra tiếng việt 2 từ này để có cái nhìn thân thiện hơn và tránh hiểu nhầm) System ...
1. Giới thiệu
Kiểm thử hệ thống (System Test) là một phần tất yếu của quá trình "verification" and validation" phần mềm. (Trong bài viết này tôi xin sử dụng 2 khái niệm "verification" & validation" thay vì dịch ra tiếng việt 2 từ này để có cái nhìn thân thiện hơn và tránh hiểu nhầm) System Test nhằm mục đích tìm kiếm các lỗi trong các đối tượng test và đưa ra hành vi đúng của nó bằng cách thực hiện test các đối tượng với các giá trị đầu vào đã được lựa chọn. Quá trình test được cấu trúc như sau:
- Xác định các đối tượng test
- Với mỗi đối tượng test, xây dựng các bộ giá trị đầu vào chi tiết sao cho đáp ứng các điều kiện tiền đề.
- Từ các bộ giá trị chi tiết này sẽ xây dựng các expect cụ thể cho từng trường hợp để tạo ra testcase
- Khi execute thì sẽ cho ra kết quả test thực tế (actual result)
- So sánh kết quả thực tế với mong muốn (expect result) Yêu cầu tiên quyết đối với kiểm tử phần mềm là việc thiết kế chính các các testcases. Testcase có chính xác thì mới đảm bảo được phát hiện được nhiều lỗi, cũng có nghĩa là phầm mềm có chất lượng cao hơn.
2. Tại sao lại là kiểm thử phân loại?
Kinh nghiệm cho thấy, phương pháp và các công cụ cực kỳ hữu ích trong kiểm thử phần mềm (DeMillo et al., 1987; Graham, 1991). Các phương pháp và công cụ cho black-box testing (test dựa trên các đặc tả chức năng, không quan tâm đến cấu trúc chương trình) được sử dụng rộng rãi trong thực tế. Một cách tiếp cận white-box testing điển hình là kiểm thử phân loại cây và phân loại cây. Với ý tưởng là phân tách các thuộc tính, các giá trị đầu vào và xây dựng các giá trị này phân lớp từng loại để đảm bảo cover hết các trường hợp. Sau đó kết hợp chúng thành một tổ hợp các nhánh của 1 cây. Và sinh testcase cho các nhánh chi tiết đó. Dẫn tới việc xây dựng phương pháp Classification Tree để tạo testcase. Việc xây dựng cây và thiết kết testcase được nêu rõ như dưới đây.
3. Phương pháp cây phân loại (The Classification-Tree Method)
Các phương pháp cây phân loại (Grochtmann và Grimm, 1993) là một phương pháp tiếp cận đặc biệt để (Blackbox) kiểm thử phân vùng và nâng cao ý tưởng từ phương pháp category-partition được định nghĩa bởi Ostrand và Balcer (1988).
Ý nghĩa của phương pháp cây phân loại:
Mỗi giá trị đầu vào của một đối tượng test đều được coi là một khía cạnh để đánh giá và phân loại.
Đối với mỗi khía cạnh, việc tách rời và phân loại được sẽ được xác định. Sau đó, các loại kết quả từ các phân loại trên sẽ được phân loại tiếp (thậm chí theo kiểu đệ quy)
Từng bước của quá trình phân loại đầu vào này sẽ được biểu diễn thành cây, cây này được gọi là cây phân loại.
Ta xây dựng 1 bảng kết hợp giữa các giá trị đầu vào và các thuộc tính được xác định trước đó.
Sau đó, các testcase sẽ được hình thành bằng cách kết hợp các loại của các nhánh cây khác nhau với các giá trị đầu vào. Mỗi một testcase sẽ được đánh dấu bằng 1 dấu chấm tròn. (Hình 3)
Quá trình này được coi là hoàn thành khi tất cả các testcase được đánh dấu. Khi sử dụng các phương pháp cây phân loại, nguồn thong tin quan trọng nhất cho 1 tester chính là các đặc tả chức năng (functional specification).
Một lợi thế lớn của phương pháp phân loại cây là nó biến quá trình thiết kế testcase trở thành một quá trình cấu trúc và hệ thống hóa từng phần riêng biệt - làm cho nó dễ dàng để xử lý, dễ hiểu và đương nhiên viết tài liệu test cũng dễ dàng hơn rất nhiều.
Việc sử dụng các phương pháp cây phân loại sẽ được giải thích bằng một ví dụ đơn giản. Các đối tượng thử nghiệm
là một hệ thống thị giác máy tính mà nên xác định kích thước của các đối tượng khác nhau (Hình 1).
Các đầu vào là các khối hình khác nhau (khối hình vuông, khối hình tam giác, khối hình tròn). Các khía cạnh được xem xét trong trường hợp này là: kích thước, màu sắc và hình dạng của một khối (Hình 2).
-
Việc phân loại dựa trên khía cạnh "màu sắc". Ví dụ, các khối này có màu đỏ, xanh lá, xanh da trời...
-
Việc phân loại dựa trên khía cạnh "hình dạng". Ví dụ, các khối này có hình vuông, hình tròn, hình tam giác....
-
Việc phân loại dựa trên khía cạnh "Kích thước". Ví dụ, các khối này có kích thước to, nhỏ.... Ngoài ra, khía cạnh được thêm vào cho hình tam giác là "hình dạng của tam giác": cân, đều... Các phân loại khác nhau và các lớp được biểu diễn là cây phân loại như Hình 3 Một số testcases được đánh dấu bằng chấm đen chính là ví dụ của một bảng tổ hợp các liên kết giữa các giá trị đầu vào và các khía cạn. Testcase thứ 3, là một ví dụ cho 1 tam giác cân, màu xanh, kích thước nhỏ.
Phương pháp cây phân loại đặc biệt phù hợp cho automation test vì nó tách quá trình thiết kế testcase thành nhiều bước mà có thể được thực hiện tự động và riêng biệt. Ngoài ra, nó còn cung cấp một kí hiệu đồ họa thích hợp (dấu chấm đen) để hiển thị trong giao diện người dùng.
4. Tool CTE (The Classification-Tree Editor) tạo testcase
Tool CTE được xây dựng bằng ngôn ngữ C, dựa trên phương pháp cây phân loại và hỗ trợ để xác định các trường hợp phân loại một cách hiệu quả (Grochtmann et al., 1993). Có thể cài đặt trên Windows, SUN OS, Solaris... Để dùng Tool này sinh testcase, được thực hiện qua 2 giai đoạn:
- Thiết kế của một cây phân loại dựa vào specs
- Tạo ra các testcase tương ứng và lưu vào bảng Cả hai giai đoạn này đều được thực hiện tự động. Tool CTE sử dụng 2 cửa số window cùng hiển thị trên màn hình cùng lúc (Hình 4). (1) Cửa sổ phía trên thì có vùng hiển thị cây được xây dựng dựa vào specs. (2) Phần cửa sổ phía dưới thì đưa ra bảng testcase được xây dựng từ cây phía trên, mỗi dấu chấm được đánh dấu sẽ tương ứng với 1 testcase được sinh ra. (3) Phần testcase list được sinh tương ứng với các dấu chấm sinh ra ở (2) (4) Phần menu bar: các chức năng thực hiện chỉnh sửa và lưu bộ testcace được sinh ra. (5) Status area: Trạng thái/Chế độ làm việc hiện tại của tool (6) Pop-up được sử dụng để chọn các lệnh trong khu vực làm việc Để mang đến cho người sử dụng các hỗ trợ một cách tối ưu, phần chính sửa được thực hiện theo cú pháp và hướng đối tượng. Có phài chức năng sẽ được thực hiện tự động, Chúng bao gốn các kết nối giữa các thành phần của cây, cập nhật bảng sau khi thay đổi cây, kiếm tra cú pháp của các mục trong bảng. Năm 2014, Berner&Mattner ra mắt sản phẩm CTE tên TESTONA. Link download tool: http://www.testona.net/en/webshop/testona-light-free-of-charge/index.html