Các Test case được tạo ra bằng cách sử dụng các biểu đồ cộng tác UML là một trong những cách tiêu biểu trong kỹ thuật sinh Test case dựa trên mô hình. Các biểu đồ cộng tác UML cho thấy một chú ý quan trọng cho việc sinh test case bởi vì chúng mô tả chính xác các chức năng phần mềm được thực hiện như thế nào, các biểu đồ này cung cấp một kết nối trong một hình thức mà có thể dễ dàng được vận dụng bởi các phương pháp tự động. Phần này còn đưa ra các tiêu chuẩn test mới mà dựa trên các biểu đồ cộng tác UML. Các tiêu chuẩn được xác định cho cả việc test tĩnh và động của các biểu đồ cộng tác mức độ ví dụ và mức độ đặc tả [4]. Các tiêu chuẩn này cho phép một sự tích hợp chính thức các test được dựa trên các chú giải thiết kế ở mức độ cao, làm cho phần mềm đáng tin cậy hơn.
3.3.1.1. Các biểu đồ cộng tác
Trong phát triển phần mềm hướng đối tượng, các đối tượng tương tác với nhau để thực hiện hành vi. Sự tương tác này có thể được mô tả trong hai cách bổ sung, một tập trung vào các đối tượng riêng và cách còn lại tập trung vào một tập hợp của việc kết hợp các đối tượng. Một máy trạng thái xem xét mỗi đối tượng riêng biệt. Hành vi của tập hợp của một bộ các đối tượng có thể được mô hình hóa trong điều kiện của việc làm thế nào chúng cộng tác với nhau.
Một sự cộng tác là một phần mô tả của một tập hợp của các đối tượng mà tương tác để thực hiện một vài hành vi bên trong một ngữ cảnh. Nó gồm các đường rãnh (Slots) mà là được điền vào bởi các đối tượng và các đường link tại thời điểm chạy. Một rãnh cộng tác được gọi là một vai trò (role) bởi vì nó mô tả mục đích của một đối tượng hoặc đường link bên trong cộng tác.
Một sự cộng tác gồm các ClasssifierRoles, AssociationRoles, và Interaction. Một ClassifierRole xác định một vai trò để được tham gia bởi một đối tượng (Object) bên trong một sự cộng tác. Một AssociationRole xác định các quan hệ của ClassifierRole tới các vai khác. AssociationRole là một chủ thể của các đường link đang tồn tại. Một đường link là một sự kết nối riêng trong hai hoặc nhiều hơn các đối tượng, và là một trường hợp của một Association. Các đối tượng phải là các trường hợp định hướng hoặc không của các lớp tại các vị trí tương đương trong một sự kết hợp.
Một Association là một sự quan hệ trong số hai hoặc nhiều các classifiers cụ thể mà mô tả các kết nối trong số các trường hợp. Các classifier tham gia đã được xếp vào các vị trí bên trong sự kết hợp.
Một interaction là một đặc tả hành vi mà là gồm một chuỗi của các liên kết trong một bộ của các đối tượng bên trong một đặc tả để thực hiện một mục tiêu cụ thể. Mỗi sự tương tác chứa đựng một bộ được sắp xếp từng phần của các thông điệp. Một thông điệp là một đặc tả của một tác nhân hoạt động, nói một cách khác, sự liên kết
giữa một người gửi và một người nhận. Thông điệp xác định vai trò tham gia bởi đối tượng gửi và đối tượng nhận và nó cho thấy thao tác nào nên được áp dụng cho người nhận bởi người gửi. Một tác nhân hoạt động là một sự liên kết giữa hai đối tượng mà gây ra một thao tác để một đối tượng được tạo ra hoặc phá hủy.
Một thao tác là một đặc tả của một sự chuyển đổi hoặc xếp hàng mà một đối tượng có thể được yêu cầu thực hiện. Nó có một cái tên và một danh sách các tham số. Một phương pháp là một thủ tục mà thực hiện một thao tác đó. Nó là một thuật toán hoặc một phần mô tả thủ tục.
Một biểu đồ cộng tác là một sự mô tả đồ họa của một sự cộng tác. Các đối tượng trong một biểu đồ cộng tác là các trường hợp của các lớp trong một biểu đồ lớp. Không có các phần tương tác, một biểu đồ cộng tác tương tự với một biểu đồ lớp. Tuy nhiên, chúng không giống nhau. Với một sự cộng tác, ở đó không cần một đối tượng của mọi lớp, bởi vì một vài lớp sẽ là không liên quan tới sự cộng tác cụ thể mà được xem xét. Có thể là hai hoặc nhiều hơn các đối tượng khác nhau của cùng lớp.
Một biểu đồ sự cộng tác có hai dạng. Một biểu đồ cộng tác mức độ đặc tả cho thấy ClassifierRoles, AssociationRoles, và Messages, ở đây biểu đồ cộng tác ở mức ví dụ cho các Object, Link, và Stimuli. Các phần phụ giới thiệu các biểu đồ cộng tác mức đặc tả và mức ví dụ tách biệt nhau, và khai thác các tính chất của chúng cho việc sinh ra Test case.
Ví dụ các biểu đồ cộng tác và đặc tả
Các biểu đồ cộng tác mức đặc tả cho thấy các vai trò được xác định bên trong một sự cộng tác. Biểu đồ gồm một tập hợp của các lớp và các đường tương đương tới ClassifierRoles và AssociationRoles trong sự cộng tác. Các mũi tên được gắn kèm tới bản đồ trên các thông điệp. Hình 18 là một biểu đồ cộng tách mức độ đặc tả mà được phỏng theo từ Unified Modeling language Specification. Về mặt đồ họa, một ClassifierRole sử dụng một biểu tượng lớp, mà là một hình chữ nhật.
Cú pháp của tên của một ClassifierRole là: „/‟ClassifierRoleName „:‟ClassifierName [„,‟ ClassifierName]*
Hình 18. Biểu đồ cộng tác mức độ đặc tả
Bằng việc kiểm tra biểu đồ cộng tác, chúng ta có thể lấy được từ các ràng buộc sau: (1) Các đối tượng Teacher và Student là các trường hợp của lớp Person, nhưng
chúng có một vài thuộc tính khác nhau, (2) đối tượng Student không thể là một Faculty, (3) mỗi student phải có giảng viên/gia sư, và (4) mỗi khóa học phải có một bài giảng. Sự thực hiện có thể được test theo những ràng buộc này. Ví dụ, một Student không thể là một Faculty. Một Course không thể có hơn một Lecturer; một Student nên có một Tutor; một Student không thể có hơn một Tutor, vân vân…Một biểu đồ cộng tác mức ví dụ cho thấy sự cộng tác của các trường hợp ClassifierRoles và AssociationRoles. Nó cũng gồm các trường hợp của thông điệp liên kết qua các trường hợp AssociationRole. Một đối tượng đóng vai trò được xác định bởi một ClassifierRole được mô tả bởi một đối tượng.
Hình 19: Biểu đồ cộng tác cho một thao tác
Hình 19 là một ví dụ về một biểu đồ đặc tả mức độ ví dụ. Trong biểu đồ này, các mũi tên chỉ dọc theo đường trong hướng của đối tượng nhận. Các đầu mũi tên có các biến đổi mà có thể được sử dụng để cho thấy các loại khác nhau của sự liên kết. Các đầu mũi tên được đưa ra trong biểu đồ này, chỉ ra luồng phẳng của kiểm soát. Mỗi mũi tên cho thấy một tiến trình tới bước tiếp theo trong chuỗi. Thông thường tất cả các thông điệp là không đồng bộ. Một số dạng âm thanh nổi được gán kèm tới các đường link: <<parameter>> chỉ ra các tham số phương pháp; <<local>> có nghĩa là biến cục bộ của một phương pháp.
Các biểu đồ cộng tác mức độ ví dụ và đặc tả mô tả các muối quan hệ mang tính cấu trúc giữa những người tham gia của một cộng tác và các kiểu liên kết của họ. Một sự hiểu rõ là một mối quan hệ giữa một đặc tả và việc thực hiện của nó. Khi các biểu đồ cộng tác được sử dụng để mô tả về việc hiểu rõ các use case, chúng mô tả chỉ các hành động hữu hình bên ngoài và các chuỗi của chúng. Khi các biểu đổ cộng tác được sử dụng để mô tả việc hiểu rõ về một thao tác trên một đối tượng, chúng cung cấp thêm các thông tin xác định, chẳng hạn như (1) các tham số cho thao tác và cách sử dụng của chúng, (2) các tính chất của việc tham gia vào các biến, ví dụ cục bộ hoặc toàn cục, (3) các ràng buộc qua các kết hợp, và (4) việc xây dựng và/hoặc bỏ đi của các đối tượng trong quá trình.
Bởi vì các biểu đồ cộng tác gồm cả các thông điệp mà đã qua giữa các đối tượng và các chuỗi của chúng, các biểu đồ cộng tác cung cấp cả luồng dữ liệu mức độ thiết kế và thông tin luồng kiểm soát mức độ thiết kế. Theo truyền thống, thông tin luồng kiểm soát và luồng dữ liệu đã có được từ mã nguồn. Thông tin luồng kiểm soát và luồng dữ liệu đã có tác động quan trọng lên việc test. Do đó, sử dụng biểu đồ cộng tác trong việc test giúp chúng ta trong nhiều cách. Ưu điểm rõ ràng là: (1) tạo ra dữ liệu test sử dụng các kỹ thuật test luồng kiểm soát và luồng dữ liệu có trước khi tạo ra mã, (2) kiểm tra tĩnh về bản thân đặc tả, và (3) kiểm tra tĩnh của mã.
3.3.1.2. Các tiêu chuẩn test
Các biểu đồ cộng tác mô tả cấu trúc và hành vi của hệ thống. Một biểu đồ cộng tác UML xác định những yêu cầu gì phải được hoàn thành bởi các đối tượng trong một hệ thống, và những liên kết gì phải được thực hiện giữa các đối tượng cho một công việc cụ thể để được thực hiện. Các biểu đồ cộng tác UML được sử dụng ở các mức độ trừu tượng đặc tả khác nhau. Ví dụ, chúng mô tả sự hiểu rõ về các use case, mà có được tính năng hệ thống mức độ cao. Các biểu đồ cộng tác UML cũng xác định việc thực hiện của một thao tác lớp như một sự tương tác. Các đặc tả liên kết, ví dụ, các use case. Với các biểu đồ cộng tác hoặc các biểu đồ lớp với các biểu đồ cộng tác, có thể được sử dụng để kiểm tra tĩnh mã và test việc chạy ứng dụng.
(1) Một số định nghĩa
Hình 19 là một biểu đồ cộng tác, trong biểu đồ này: processOrder (0) là một thao tác được xác định sự thực hiện của nó được mô hình hóa bởi biểu đồ cộng tác: Company là một đối tượng mà thao tác được xác định được gọi là processOrder(0). Do đó, processorOrder thuộc về lớp Company. Chúng ta phân biệt bốn loại của thông điệp trong biều đồ này. Một cách gọi của một phương pháp qua một đối tượng mà được xác định trong đối tượng gọi là một local method invocation. Trong hình 19, d và s là cục bộ :Company, 0 là một tham số tới :Company và delivery và store không phải là local. Bốn loại thông điệp là: (1) các dẫn chứng phương pháp cục bộ không có các giá trị trả về, ví dụ deliver (d) trong hình 19, (2) các dẫn chứng phương pháp cục bộ với các giá trị trả về, (3) các dẫn chứng phương pháp của đối tượng tham số, ví dụ pNr:=getpNr(), và (4) tạo ra đối tượng, ví dụ: delivery(o,s). Các thông điệp trên các đường link, các tham số, và số lượng các chuỗi mà được mô tả trong biểu đồ cộng tác là các mục đích test.
Các điều kiện sau sẽ được sử dụng trong định nghĩa về các tiêu chuẩn test. Trước khi xác định các tiêu chuẩn test, chúng ta xác định 12 loại có thể kết nối trong các biểu đồ cộng tác. Các loại của các cặp, hoặc các đường link, là gọi lại về các định nghĩa về luồng dữ liệu, nhưng đưa ra các tương tác dữ liệu mà xuất hiện ở một mức độ thiết kế cao hơn luồng dữ liệu truyền thống (intra-procedural). Chúng được phân loại dựa trên thông tin từ các biểu đồ lớp và các biểu đồ cộng tác, nhưng một khi đã định nghĩa, chỉ các biểu đồ cộng tác được cần để tạo ra các test.
Một cặp cộng tác là một cặp của ClassifierRolers hoặc AssociationRoles mà được kết nối thông qua một đường link trong biểu đồ cộng tác. Phần ClassifierRole mô tả loại của Object với một bộ của các thao tác và thuộc tính được yêu cầu.
Hình 20. Các cặp cộng tác
Một đường link định nghĩa biến số là một đường link mà các tác nhân hoạt động của nó có một giá trị trả lại và được gán vào biến cục bộ. Một đường link cách sử dụng biến số là một đường link mà danh sách đối số của các tác nhân hoạt động gồm một biến cục bộ. Một đường link định nghĩa đối tượng là một tác nhân hoạt động mà đưa lại một tham chiếu tới một đối tượng mà có thể sử dụng được cho đối tượng mục tiêu. Một đường link tạo ra đối tượng là một đường link các tác nhân hoạt động của nó dẫn chứng tạo ra của lớp CollaborationRole. Một đường link cách sử dụng đối tượng là một đường link mà các tác nhân hoạt động của nó dẫn chứng một phương thức về một đối tượng có thể sử dụng cục bộ. Một đường link phá hủy đối tượng là một đường link mà các tác nhân hoạt động của nó dẫn chứng phá hủy về một đối tượng có thể sử dụng cục bộ.
Đôi khi chúng ta quan tâm đến các cặp của các đường link. Một cặp đường link sử dụng khác của biến số là một cặp của các đường link mà trong đó một đối tượng trước tiên được sử dụng và sau đó bị bỏ đi. Một đường dẫn chuỗi các tin nhắn là một đường dẫn mà gồm tất cả các tin nhắn trong một cộng tác theo một trật tự được xác định bởi biểu đồ cộng tác.
Các cặp đường link cách sử dụng định nghĩa biến số, các cặp đường link cách sử dụng tạo ra đối tượng có thể được sử dụng để kiểm tra tĩnh các mã. Các đường dẫn chuỗi tin nhắn có thể được sử dụng để tạo ra các Test case.
(2) Kiểm tra tĩnh
Kiểm tra có thể thực hiện tĩnh hoặc động. Ở khía cạnh nào đó phần mềm được thực hiện trên một vài dữ liệu nhập. Kiểm tra tĩnh liên quan tới việc kiểm tra một vài khía cạnh của phần mềm mà không cần thực hiện, thường bằng cách đánh giá mã nguồn.
Các biểu đồ cộng tác cung cấp các ràng buộc trên một hệ thống. Ví dụ, một biểu đồ cộng tác cho một thao tác mô tả thông tin cụ thể mà cần thiết cho thao tác này
để được hoàn thành, chẳng hạn các giá trị trả lại cho một phương thức trong một quá trình, các loại tham số, vân vân…
Chúng ta đã xác định bốn mục nên được sử dụng để kiểm tra mã tĩnh, được mô tả như sau:
1. ClassifierRoles: Trong một cộng tác, nếu hai ClassifiierRoles bắt nguồn từ cùng một lớp cơ sở giống nhau, chúng nên được phân biệt trong điều kiện của các thác thao tác được yêu cầu của chúng và các giá trị của các thuộc tính. Bởi vì chúng bắt đầu từ cùng lớp, có khả năng rằng chúng có thể bị nhầm lẫn với nhau. Vì lý do này, ClassifierRoles mà bắt đầu từ cùng lớp nên được test để biết nếu chúng có tất cả các thuộc tính và các thao tác được yêu cầu.
2. Collaborating Pairs: Các đường link trên một biểu đồ cộng tác mô tả các ràng buộc cấu trúc của một cặp cộng tác và các thông điệp liên kết của chúng. Sự kết hợp này nói nếu nó là một mối quan hệ một tới một, một tới một vài, hoặc một vài tới một vài. Mối quan hệ phản ánh một ràng buộc trong đặc tả yêu cầu. Do đó, test mối quan hệ cấu trúc giữa các đối tượng có thể như là sự xác nhận của các yêu cầu. Mỗi cặp cộng tác trên biểu đồ cộng tác nên được kiểm tra hoặc test ít nhất một lần.
3. Thông điệp hoặc các tác nhân kích thích: Các thông điệp cung cấp thông tin về:
Loại giá trị trả lại
Chuỗi kiểm soát
Thao tác hoặc tên phương pháp được dẫn chứng trên đối tượng mục tiêu
Các tham số tới các toán tử hoặc phương thức.
Test của một thông điệp bản thân nó có bộc lộ nhiều vấn đề tích hợp nhất. Một tác nhân hoạt động là một ví dụ về một thông điệp. Một tác nhân hoạt động có thể là một dấu hiệu, một phương thức hoặc việc gọi toán tử, hoặc một sự kiện mà khiến một đối tượng được tạo ra hoặc bị phá hủy. Bên cạnh đó mang theo một dữ liệu xác định, các thông điệp có một đường. Đó là, một tác nhân hoạt động bắt nguồn từ một đối tượng nguồn (sender) và cư trú trên một đối tượng đích (receiver). Chúng ta có thể nhận thấy rằng các tác nhân hoạt động cung cấp thông tin ban đầu cho việc test tích