Khi kiểm thử một hệ thống phần mềm dựa trên thành phần, chúng ta giả sử mỗi thành phần riêng biệt là đã đƣợc kiểm thử đầy đủ. Vì vậy đảm bảo chính xác sự tƣơng tác giữa các thành phần là chìa khóa thành công của hệ thống phần mềm đáng tin cậy.
Các thành phần có thể tƣơng tác với các thành phần khác trực tiếp hoặc gián tiếp. Tƣơng tác trực tiếp bao gồm các lời gọi của các giao tiếp tiếp xúc với các thành phần hoặc hành động ngƣời dùng kích hoạt sự kiện. Tƣơng tác gián tiếp là thông qua chuỗi các sự kiện. Sau đây là bốn yếu tố chính xác định mô hình các đặc trƣng của sự tƣơng tác mà cần tham gia vào kiểm thử thành phần.
Giao tiếp (Interfaces): Giao tiếp là cách phổ biến nhất để kích hoạt các thành phần. Vì vậy, nó là cần thiết trong kiểm thử hệ thống và kiểm thử tích hợp để kiểm tra mỗi giao tiếp trong môi trƣờng tích hợp ít nhất một lần.
Sự kiện (Events): Kiểm tra các giao tiếp cung cấp tin tƣởng rằng mỗi giao diện là có thể đƣợc gọi trong thời gian chạy đã đƣợc thực hiện ít nhất một lần. kịch bản này tƣơng tự nhƣ các tiêu chí kiểm thử truyền thống đòi hỏi tất cả chức năng hoặc thủ tục đƣợc kiểm thử ít nhất một lần. Tuy nhiên một giao diện đƣợc gọi bởi các thành phần khác nhau trong ngữ cảnh khác nhau có thể có kết quả khác nhau. Vì vậy để quan sát các hành vi của mỗi giao tiếp trong thời gian chạy, mọi lời gọi của giao tiếp cần đƣợc kiểm tra ít nhất một lần. Hơn nữa, mỗi sự kiện mà không kích hoạt thông qua giao diện có thể tác động vào thành phần mà cần phải đƣợc kiểm tra. Vì vậy mỗi sự kiện trong hệ thống bất kể các loại cần đƣợc bao phủ bởi một số kiểm thử.
Mối quan hệ phụ thuộc vào ngữ cảnh: Kiểm thử sự kiện và giao diện đảm bảo rằng mọi giao diện giữa hai thành phần, khách và chủ là đƣợc kiểm tra. Tuy nhiên, khi thực hiện một hệ thống phần mềm dựa trên thành phần bao gồm sự liên quan giữa một nhóm các thành phần, trình tự gây ra sự kiện có thể sản sinh ra kết quả bất ngờ. Để nắm bắt đƣợc mối quan hệ giữa các sự kiện, chúng ta xác định mối quan hệ phụ thuộc ngữ cảnh tƣơng tự mối quan hệ phụ thuộc luồng điều khiển trong chƣơng trình truyền thống. Một sự kiện e2 có mối quan hệ phụ thuộc nhạy cảm bối cảnh và sự kiện e1 nếu có một con đƣờng thực hiện kích hoạt e1 trực tiếp hoặc gián tiếp sẽ kích hoạt e2. Đối với sự kiện e đã cho, nó cần thiết kiểm tra e với mọi sự kiện có mối quan hệ phụ thuộc nhạy cảm với e. Điều này cho phép ngƣời kiểm tra thực hiện các tác động có thể của lịch sử thực hiện về kết quả thực hiện của e.
Mối quan hệ phụ thuộc nội dung: Một lời gọi giao diện của thành phần trong thực tế là lời gọi hàm bởi thành phần. Vì vậy, khi một hàm khai báo giao diện v1 có mối quan hệ phụ thuộc dữ liệu với hàm khác đƣợc khai báo trong giao diện v2, thứ tự gọi v1và v2 có thể ảnh hƣởng tới kết quả. Mối quan hệ nội dung tồn tại giữa hai giao diện v1 và v2 nếu hai giao diện có mối quan hệ phụ thuộc dữ liệu. Một giao diện đóng gói một hoặc nhiều ký hiệu, mỗi một ký hiệu là khai báo một hàm. Khi một giao diện đƣợc gọi, một hoặc nhiều hàm sẽ đƣợc thực hiện để thực thi dịch vụ đƣợc yêu cầu. Vì vậy, mối quan hệ phụ thuộc giao diện có thể nhận từ mối quan hệ phụ thuộc chức năng, mà chúng ta xem bất cứ thông tin hữu dụng trong kiểm thử lớp của lập trình hƣớng đối tƣợng. Chính xác hơn, một chức năng f2 phụ thuộc vào chức năng f1 nếu và chỉ nếu giá trị của biến đƣợc dịnh nghĩa trong f1 là đƣợc sử dụng trong f2. Do đó, mối quan hệ phụ thuộc nội dung chính thức đƣợc định nghĩa nhƣ sau: Một giao diện v2 có mối quan hệ phụ thuộc vào giao diện v1 nếu và chỉ nếu v1 chứa ký kiệu của f1, v2 chứa ký
32
hiệu f2 và f2 phụ thuộc và f1. Cả hai sự tƣơng tác trực tiếp giữa các giao diện và các sự kiện, cũng nhƣ mối quan hệ phụ thuộc ngữ cảnh, nên đƣợc bao gồm trong tƣơng tác luồng điều khiển của hệ thống dựa trên thành phần. Phụ thuộc nhạy cảm nội dung, mặt tìm lỗi.