4. Ý nghĩa lý luận và thực tiễn của đề tài
2.5.1. Kiểm thử đơn vị trong mô hình hướng đối tượng
Trong mô hình hướng đối tượng, sự bao gói quy định việc định nghĩa lớp và đối tượng. Điều này có nghĩa là, mỗi lớp và mỗi thể hiện của lớp bao gói các thuộc tính (dữ liệu) và các thao tác (phương thức, tác vụ) thực hiện trên những dữ liệu đó. Đơn vị nhỏ nhất có thể kiểm thử được là lớp (đối tượng được đóng gói). Trong một lớp có nhiều thao tác khác nhau và một số thao tác đặc biệt có thể tồn tại như một phần của các lớp khác (gọi đến nó), nên ý nghĩa của kiểm thử đơn vị thay đổi nhiều.
độ đơn vị, cấp độ chức năng và cấp độ toàn hệ thống. Tại cấp độ đơn vị, lớp là đơn vị kiểm thử. Các lớp được tích hợp dựa trên mối quan hệ như kế thừa và kết hợp để hình thành đơn vị lớn hơn tạo thành chức năng. Kiểm thử tích hợp nhận biết những lỗi trong quá trình tích hợp các phần tử đơn vị. Kiểm thử hệ thống bao gồm kiểm thử toàn bộ phần mềm.
Kiểm thử lớp bao gồm kiểm thử các phương thức được định nghĩa trong lớp và sự tác động của chúng lên trạng thái của lớp hoặc các đối tượng. Những mô hình khác nhau được sử dụng để kiểm thử các phương thức của lớp. Tương tự, trạng thái của lớp hoặc các đối tượng cần phải được theo dõi cả trước và sau khi lớp thực thi xong. Ở cấp độ này, có thể áp dụng tất cả những gì đã dùng cho kiểm thử đơn vị truyền thống.
Trong phần mềm hướng đối tượng, một ứng dụng được cài đặt bằng việc gọi các phương thức theo trật tự thực hiện các chức năng của nó. Các phương thức của lớp có độ phức tạp hơn ít hơn và kích thước nhỏ hơn so với các mô đun trong chương trình cấu trúc, tuy nhiên chúng có nhiều phương thức và sự tương tác giữa các phương thức thông qua thông báo xuất hiện tùy thuộc vào từng trường hợp cụ thể khi vận hành. Vì thể, các phương pháp và kỹ thuật kiểm thử môđun đối với phần mềm thông thường không thể đem lại hiệu quả khi áp dụng cho các phương thức của phần mềm hướng đối tượng. Trong trường hợp số phương thức ít và thức có quy nhỏ, thì việc áp dụng là có thể.
Có 3 phương pháp để kiểm thử đơn vị trong phần mềm hướng đối tượng: 1. Kiểm thử hộp trắng dựa trên việc kiểm tra chặt chẽ các chi tiết thủ tục của
đơn vị đó. Nó kiểm thử câu lệnh, rẽ nhánh, luồng dữ liệu và luồng điều khiển của mã chương trình mà không có bất kỳ sự tham chiếu nào đối với đặc tả. Đường dẫn cơ bản kiểm thử và cấu trúc điều khiển kiểm thử là một số trong những phương pháp kiểm thử hộp trắng. Lớp được kiểm thử như một đơn vị riêng rẽ, không phải đi vào chi tiết cấp độ câu lệnh của các phương thức thì sử dụng các kỹ thuật kiểm thử hộp đen.
2. Kiểm thử hộp đen xác định liệu chương trình có đạt được yêu cầu về chức năng và không phải chức năng của nó không loại trừ những cài đặt của nó. Nó cũng kiểm tra ảnh hưởng của phương thức được gọi lên trạng thái của
đơn vị. Sự bao phủ được sử dụng để xác định phần trăm của lớp đặc tả được thực hiện trong kiểm thử. Phân tích giá trị biên, phân chia lớp tương đương, biều đồ kiểm thử cơ sở là một số trong những phương pháp kiềm thử hộp đen có thể sử dụng.
3. Chỉ có kiểm thử hộp trắng hoặc kiểm thử hộp đen là chưa đủ cho kiểm thử đơn vị của phần mềm hướng đối tượng. Kiểm thử hộp trắng kiểm tra mã chương trình liệu làm việc tốt hay chưa nhưng không kiểm tra cho mã chương trình hoặc chức năng chưa dùng đến. Mặt khác, kiểm thử hộp đen kiểm tra liệu các đơn vị làm việc đúng theo đặc tả hay chưa nhưng không đảm bảo liệu tất cả các phần của mã chương trình đã được kiểm tra. Cách tốt và hiệu quả hơn nhiều để kiểm tra lớp là sử dụng kết hợp kỹ thuật hộp đen và hộp trắng, mà còn được gọi là kiểm thử hộp xám (gray-box testing). Kiểm thử hộp xám dựa trên kiểm tra đặc tả phần mềm.
2.5.2. Kiểm thử tích hợp hướng đối tượng - OOIT
Một hệ thống được chia thành các hệ thống nhỏ với mục đích phân tán và phát triển song song các hệ thống nhỏ đó. Một hệ thống nhỏ là tập hợp logic các lớp mà tương tác với nhau theo cách cài đặt các chức năng của hệ thống con. Hệ thống con có giao diện được định nghĩa đầy đủ thông qua đó, các dịch vụ của hệ thống được gọi và sử dụng. Kiểm thử tích hợp hướng đối tượng (Object Oriented Integration Testing - OOIT) kiểm tra các lỗi nảy sinh trong qua trình tương tác giữa các phần tử đơn vị của hệ thống nhỏ.
Hệ thống nhỏ trong một phần mềm hướng đối tượng là tập hợp các lớp liên quan với nhau thông qua mối quan hệ như kế thừa, kết hợp và ràng buộc động. Các phần tử tương tác của hệ thống nhỏ trong một phần mềm hướng đối tượng kết nối thông qua các mối quan hệ khác nhau lại hợp thành một đơn vị phần mềm lớn hơn. Hệ thống nhỏ trong phần mềm hướng đối tượng do vậy được quan sát như một phần tử đơn vị tích hợp lớn hơn bao gồm những phần tử lớp khác và các phần tử được tích hợp. Do đó, hệ thống con được phát triển, có kiến trúc khác đáng kể so với phần mềm thông thường. Vì thiếu kiến trúc điều khiển phân cấp, các chiến lược tích hợp trên xuống hay dưới lên không còn có ý nghĩa trong phần mềm hướng đối tượng.
thông qua các mối quan hệ khác nhau. Khi kiểm thử tích hợp các đơn vị phần mềm liên quan cần kiểm tra trình tự đúng của việc gọi phương thức và cập nhật trạng thái chính xác cho việc cài đặt một chức năng đơn lẻ. Các lớp liên quan thông qua sự kế thừa thường đòi hỏi kiểm thử lại các phương thức dẫn xuất khi chúng được sử dụng trong lớp con.
Kiểm thử tích hợp của việc cài đặt ràng buộc động cần kiểm tra các ràng buộc của phương thức liên quan tại thời điểm chạy chương trình. Vì mô hình lặp và tăng dần đối với sự phát triển phần mềm hướng đối tượng đưa đến sự phát triển tăng dần của các đối tượng phần mềm, các hệ thống con trong phần mềm và quy mô kiểm thử cũng phải tăng lên.
OOIT là kiểm thử tập hợp các thành phần hướng đối tượng. Như vậy, có thể hiểu OOIT là kiểm thử sự tương tác giữa các thành phần hướng đối tượng. Hiểu các thành phần hướng đối tượng theo nghĩa hẹp là các đối tượng sinh ra bởi mã lệnh chương trình, theo nghĩa rộng là các đối tượng của chương trình phần mềm và các thiết bị phần cứng khác hỗ trợ việc thực thi một phiên làm việc trong hệ thống. Ví dụ, hệ thống thanh toán thẻ rút tiền tự động ATM (Automated Teller Machine), các thành phần hướng đối tượng được hiểu là các đối tượng chương trình phần mềm và các thiết bị của máy ATM.
Kiểm thử tích hợp được thực hiện sau hoạt động kiểm thử lớp-đối tượng (kiểm thử đơn vị), các thành phần độc lập được tích hợp lại. Mục đích kiểm thử tích hợp là tìm ra các khiếm khuyết phát sinh khi những thành phần ảnh hưởng lẫn nhau trong những trường hợp cụ thể.
OOIT kiểm thử sự tương tác giữa hai đối tượng nảy sinh khi một đối tượng gọi phương thức của các đối tượng khác bằng cơ chế gửi thông báo. Những đối tượng này cần phải là thể hiện của các lớp khác nhau. Nếu các đối tượng đều là thể hiện của cùng một lớp, khi đó kiểm thử được đề nghị là kiểm thử lớp (kiểm thử đối tượng).
Phần mềm hướng đối tượng được phát triển một cách gia tăng với vòng đời của việc lập kế hoạch, phân tích, thiết kế, thực hiện và kiểm thử. Kiểm thử tích hợp có vai trò đặc biệt ở đây khi nó được thực hịên sau mỗi bước phát triển.
đánh giá thấp nhất và do đó không có bất kỳ cấu trúc rõ ràng nào mô tả luồng điều khiển của phần mềm có thể theo
Cũng vì lý do không có cấu trúc cây phân cấp rõ ràng như trong cách phát triển truyền thống, vì thế không có bản đồ đường “road map” nào để hướng dẫn việc tích hợp các đơn vị phần mềm. Vì thế, kiểm thử tích hợp là phần phức tạp nhất của kiểm thử hướng đối tượng. Các phương thức và các lớp được kiểm thử đơn vị sau đó được ghép cùng với các lớp khác và các phương thức của chúng để thực hiện kiểm thử tích hợp.
Một cách tiếp cận chung của kiểm thử tích hợp là sử dụng các cụm, nó đơn giản là một nhóm các lớp và các phương thức của các lớp đó được yêu cầu thực hiện một số hoạt động đẻ thực hiện một chức năng chung. Hình 2.3 chỉ ra cách phân cụm
Hình 2.3: Cụm các lớp đối tượng cần để thực hiện công việc chung.
Để thực hiện kiểm thử tích hợp, ta cần biết quan hệ giữa các lớp và các phương thức trong phạm vi giữa các lớp. Điều này có thể đạt được bằng cách sử dụng lược đồ quan hệ đối tượng (Object Relation Diagram - ORD), đây là sơ đồ
Sự kiện cổng ra B Sự kiện cổng vào A Method 2 Sự kiện cổng vào B 2 Method 1 Method 3 Method 2 3 Method 1 Method 3 Method 2 Method 1 1 Sự kiện cổng ra A Đối tƣợng 1
MM- đường liên kết vào-ra trong cụm Thông báo
Đối tƣợng 3
Block Diagram-BBD) hoặc đồ thị có hướng (Directed Graph) chỉ ra các phương thức phụ thuộc trong phạm vi giữa các lớp.
Một số kỹ thuật được dùng trong kiểm thử tích hợp là:
1. Kiểm thử phân lớp: Kiểm thử mối quan hệ giữa các thể hiện của các lớp 2. Kiểm thử theo kịch bản: Kiểm thử sự tương tác của các đối tượng khác nhau nhằm đáp ứng sự mong đợi của một ca kiểm thử đã được đặc tả.
3. Kiểm thử chấp nhận: Tìm ra các lỗi và các mâu thuẫn trong sự tích hợp của các thành phần so với yêu cầu đề ra (thường cho đặc tả ca sử dụng).
4. Kiểm thử dựa trên sự kiện: Tìm ra các luồng điều khiển mà nó có thể không được thực hiện.
5. Kiểm thử dựa trên UML: Kết hợp đặc tả phân tích thiết kế phần mềm bằng ngôn ngữ mô hình hóa thống nhất UML theo các biểu đồ: biểu đồ ca sử dụng, biểu đồ lớp, biểu đồ tuần tự,… với công cụ Rational Rose để sinh ra mã xuôi và ngược