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 hợp, do đó mỗi tác nhân hoạt động nên được sử dụng như một cơ sở cho việc tạo ra các đầu vào test.
4. Local variable Definition-Usage Link Pairs: kiểm tra đường link cách sử dụng định nghĩa biến số cho chúng ta tìm thấy những sự không bình thường của luồng dữ liệu ở mức độ thiết kế. Các cặp đường link sau đây tất cả nên được check cho các bất thường của luồng dữ liệu:
− Global Variable Definition-Use Pairs − Object Creation-Use Pairs
− Object Creation-Destruction Pairs
(3) Kiểm tra động
Các biểu đồ cộng tác cung cấp một đường dẫn hoàn chỉnh cho một use case hoặc một sự hiểu rõ về một toán tử. Vì mục đích của kiểm tra động, ta tập trung vào các biểu đồ cộng tác cho sự hiểu rõ của các toán tử. Chúng ta giả định rằng có một biểu đồ cộng tác mỗi thao tác, và sự thực hiện của một thao tác khẳng định tới sự cộng tác. Thêm nữa, các biểu đồ cộng tác cung cấp thông tin cần thiết để test sự tương tác đối tượng.
Tiêu chuẩn test: với mỗi biểu đồ cộng tác trong đặc tả, phải có ít nhất một Test case t như vậy khi phần mềm được thực hiện sử dụng t, phần mềm mà thực hiện đường dẫn chuỗi thông điệp của biểu đồ cộng tác phải được thực hiện.
Mỗi biểu đồ cộng tác mô tả một dấu vết hoàn chỉnh của các thông điệp trong khi thực hiện một toán tử. Do đó, một đường dẫn chuỗi thông điệp gồm tất cả các cặp đường link sử dụng khác nhau biến số, các cặp đường link sử dụng khác nhau các đối tượng, các cặp đường link cách sử dụng tạo ra đối tượng, và các cặp đường link phá hủy cách sử dụng đối tượng.
Chúng ta có thể tạo ra một đường dẫn chuỗi thông điệp bằng việc sử dụng các thông điệp và số lượng trong chuỗi đó. Các đường dẫn chuỗi thông điệp có thể là dấu vết của các tương tác mức hệ thống hoặc các tương tác mức thành phần (đối tượng). Hình 21 cho thấy một đường dẫn chuỗi thông điệp mà được lấy từ hình 19. Trong biểu đồ này, các nút mô tả phương pháp các hướng tới và các cạnh mô tả luồng kiểm soát. Mỗi nút có thông tin về tên thao tác và tên đối tượng mà thao tác được thực hiện.
Các tiêu chuẩn của loại này là thường được sử dụng theo một trong hai cách sau đây. Tiêu chuẩn có thể được sử dụng là một hướng dẫn cho việc tạo ra các test, hoặc tiêu chuẩn có thể được sử dụng như là một hệ cho việc đánh giá các test được tạo ra bên ngoài. Ở đây tập trung vào việc sử dụng khuôn khổ của tiêu chuẩn; tạo ra test .
Hình 21. Một đường chuỗi thông điệp
Để test mà hệ thống sẽ đưa ra một dấu vết của sự kiện mà khẳng định cho đường dẫn chuỗi thông điệp chúng ta lấy được từ biều đồ cộng tác, chúng ta đưa các câu lệnh vào trong chương trình gốc.
Hình 22. Thuật toán instrumentation
Hình 22 đưa ra một thuật toán , thuật toán cố gắng để đạt được các mục đích sau: 1. Chèn các câu lệnh cho mỗi đường link
2. Giúp tester theo dõi dấu vết của sự tương tác trong thời gian chạy
Thuật toán này có thể được minh họa thông qua một ví dụ. Xem biểu đồ cộng tác trong hình 19, và đường dẫn chuỗi thông điệp của nó trong hình 22. Thuật toán sẽ bắt đầu với biểu đồ cộng tác, sau đó sắp xếp tất cả các tác nhân hoạt động của chúng và các đối tượng kết thúc đường link của chúng vào trong một danh sách link msPath. Thuật toán lấy nút đầu tiên trong msPath, {processOrder(o), Company, next}. Từ thông tin đã có trong nút msPath, thuật toán quyết định chèn vào trong việc thực hiện của phương thức processOrder() trong lớp Company. Sau đó, thuật toán lấy nút tiếp theo trong msPath và chèn vào tiếp theo. Thuật toán xử lý tất cả các nút trong msPath theo thứ tự của số các chuỗi thông điệp.