Ngày nay, ngôn ngữ mô hình hóa hợp nhất (UML) đã trở thành công cụ quen thuộc trong tiến trình phát triển hệ thống hướng đối tượng (Hệ thống hướng đối tượng). Một trong những dạng biểu đồ thường dùng để thực hiện việc mô hình hóa là biểu đồ lớp. Biểu đồ lớp không những cho ta cách nhìn tổng quan về cấu trúc mà còn thể hiện hành vi của hệ thống. Một cách chủ quan rằng, hoạt động kiểm thử dựa trên biểu đồ lớp sẽ tối ưu và mang lại hiệu quả cao cho nguồn tài nguyên cần chi phí trong hoạt động này. Bởi vậy, chúng em tiến hành tìm hiểu về vấn đề kiểm thử hệ thống hướng đối tượng trên biểu đồ lớp
MỞ ĐẦU Cùng với phát triển vượt bậc Công nghệ thông tin, đặc biệt lĩnh vực Công nghệ phần mềm, hoạt động kiểm thử đặc biệt trọng, thu hút tập trung nghiên cứu nhà khoa học, học giả toàn giới Song, bên cạnh thành tựu khoa học, hoạt động kiểm thử chưa thể khẳng định sản phẩm phần mềm đời có chắn đảm bảo tính đắn, có lỗi hay khơng Ngày nay, với phổ dụng tính ưu việt kỹ thuật lập trình hướng đối tượng, sản phẩm phần mềm có bước đột phá chất lượng Tuy nhiên, vấn đề kiểm sốt lỗi hồn thiện sản phẩm gặp nhiều khó khăn Một nguyên nhân dẫn đến tình trạng chưa nhận thức đầy đủ ý nghĩa hoạt động kiểm thử thực giai đoạn tiến trình phát triển phần mềm; phương pháp kiểm thử truyền thống sử dụng phổ biến Hơn nữa, độ phức tạp phần mềm ngày cao; linh hoạt, mềm dẻo đặc điểm đa dạng kỹ thuật lập trình hướng đối tượng, người phát triển phần mềm không cẩn thận, trở nên nhập nhằng, dễ phát sinh lỗi Với thực trạng yêu cầu trên, việc kiểm thử hệ thống hướng đối tượng cần phải nghiên cứu kỹ, có chiều sâu; kiểm thử hệ thống hướng đối tượng dựa mô hình hợp phương pháp tiếp cận nghiên cứu Mơ hình hợp có tính ưu việt mặt mơ hình hóa cách trực quan Ngày nay, ngơn ngữ mơ hình hóa hợp (UML) trở thành công cụ quen thuộc tiến trình phát triển hệ thống hướng đối tượng (HTHĐT) Một dạng biểu đồ thường dùng để thực việc mơ hình hóa biểu đồ lớp Biểu đồ lớp khơng cho ta cách nhìn tổng quan cấu trúc mà thể hành vi hệ thống Một cách chủ quan rằng, hoạt động kiểm thử dựa biểu đồ lớp tối ưu mang lại hiệu cao cho nguồn tài nguyên cần chi phí hoạt động Bởi vậy, chúng em tiến hành tìm hiểu vấn đề kiểm thử HTHĐT biểu đồ lớp Hưng Yên, ngày…tháng…năm 2013 Nhóm sv thực Phạm Thị Thanh Hải Nguyễn Thị Dung Đỗ Thj Giang Mục đích nghiên cứu Đề tài có tên “Tìm hiểu kiểm thử hệ thống hướng đối tượng (object orient system testing)” thực với mục đích đưa giải pháp quy trình kiểm thử HTHĐT dựa biểu đồ lớp Mục tiêu đề tài trình bày cách tổng quan kiểm thử HTHĐT dựa lớp đưa quy trình áp dụng thực tế Để đạt mục tiêu, đề tài cần thực nhiệm vụ sau: - Tìm hiểu HTHĐT; UML biểu đồ lớp (Class Diagram) - Nghiên cứu kiểm thử hướng đối tượng (OOT) - Xây dựng quy trình kiểm thử HTHĐT dựa biểu đồ lớp - Ứng dụng quy trình vào HTHĐT cụ thể, từ đưa đánh giá tính hiệu quy trình đề xuất Đối tượng phạm vi nghiên cứu 2.1 Đối tượng nghiên cứu - Lý thuyết HTHĐT, UML biểu đồ lớp - Kiểm thử hướng đối tượng (OOT), kiểm thử lớp - Một số kỹ thuật kiểm thử hướng đối tượng (OOT) 2.2 Phạm vi nghiên cứu - Đặc trưng, tính chất HTHĐT - Kiểm thử HTHĐT: sở lý thuyết, kỹ thuật kiểm thử - Kiểm thử HTHĐT mức lớp (Class Testing) CHƯƠNG HỆ THỐNG HƯỚNG ĐỐI TƯỢNG VÀ KIỂM THỬ PHẦN MỀM 1.1 1.1.1 HỆ THỐNG HƯỚNG ĐỐI TƯỢNG Một số khái niệm 1.1.1.1 Đối tượng (Object) Đối tượng kết hợp liệu thủ tục ( hay gọi phương thức – method) thao tác liệu Có thể đưa cơng thức phản ánh chất kỹ thuật lập trình hướng đối tượng sau: Đối tượng=Dữ liệu + Phương thức 1.1.1.2 Lớp (Class) Lớp tập đối tượng có cấu trúc liệu phương thức giống nhau( hay nói cách khác tập đối tượng loại) Như có lớp biết mô ta cấu trúc liệu phương thức đối tượng thuộc lớp Một đối tượng thể cụ thể lớp Trong lập trình, coi lớp kiểu liệu, đối tượng biến có kiểu lớp 1.1.1.3 Lớp (SubClass) Lớp lớp thông thường có thêm tính chất kế thừa phần hay tồn đặc tính lớp khác Lớp chia sẻ kế thừa gọi lớp cha (parent class) ll 1.1.1.4 Lớp trừu tượng (Abstract Class) Lớp trừu tượng lớp mà khơng thể thực thể hóa thành đối tượng thực dụng Lớp thiết kế nhằm tạo lớp có đặc tính tổng qt thân lớp chưa có ý nghĩa (hay khơng đủ ý nghĩa) để tiến hành viết mã cho việc thực thể hóa Thí dụ: Lớp "hinh" định nghĩa khơng có liệu nội có phương thức "tinh_chu_vi", "tinh_dien_tich" Nhưng lớp hinh chưa xác định đầy đủ đặc tính (cụ thể biến nội tọa độ đỉnh đa giác, đường bán kính toạ độ tâm hình tròn, ) nên viết thành lớp trừu tượng Sau đó, người lập trình tạo lớp chẳng hạn lớp "tam_giac", lớp "hinh_tron", lớp "tu_giac", Và lớp người viết mã cung cấp liệu nội (như biến nội r làm bán kính số nội Pi cho lớp "hinh_tron" sau viết mã cụ thể cho phương thức "tinh_chu_vi" "tinh_dien_tich") 1.1.2 Các tính chất 1.1.2.1 Tính trừu tượng (Abstraction Đây khả chương trình bỏ qua hay khơng ý đến số khía cạnh thơng tin mà trực tiếp làm việc lên, nghĩa có khả tập trung vào cốt lõi cần thiết Mỗi đối tượng phục vụ "động tử" hồn tất cơng việc cách nội bộ, báo cáo, thay đổi trạng thái liên lạc với đối tượng khác mà không cần cho biết làm cách đối tượng tiến hành thao tác Tính chất thường gọi trừu tượng liệu Tính trừu tượng thể qua việc đối tượng ban đầu có số đặc điểm chung cho nhiều đối tượng khác mở rộng thân đối tượng ban đầu khơng có biện pháp thi hành 1.1.2.2 Tính thừa kế (Inheritance) Đặc tính cho phép đối tượng có sẵn đặc tính mà đối tượng khác có thơng qua kế thừa Điều cho phép đối tượng chia sẻ hay mở rộng đặc tính sẵn có mà khơng phải tiến hành định nghĩa lại Tuy nhiên, ngôn ngữ định hướng đối tượng có tính chất 1.1.2.3 Tính đa hình (Polymorphism) Thể thơng qua việc gửi thơng điệp (message) Việc gửi thơng điệp so sánh việc gọi hàm bên đối tượng Các phương thức dùng trả lời cho thông điệp tùy theo đối tượng mà thơng điệp gửi tới có phản ứng khác Người lập trình định nghĩa đặc tính (chẳng hạn thơng qua tên phương thức) cho loạt đối tượng gần thi hành dùng tên gọi mà thi hành đối tượng tự động xảy tương ứng theo đặc tính đối tượng mà khơng bị nhầm lẫn Thí dụ định nghĩa hai đối tượng "hinh_vuong" "hinh_tron" có phương thức chung "chu_vi" Khi gọi phương thức đối tượng "hinh_vuong" tính theo công thức khác với đối tượng "hinh_tron" 1.1.2.4 Tính đóng gói (Encapsulation) Tính chất khơng cho phép người sử dụng đối tượng thay đổi trạng thái nội đối tượng Chỉ có phương thức nội đối tượng cho phép thay đổi trạng thái Việc cho phép mơi trường bên tác động lên liệu nội đối tượng theo cách hoàn toàn tùy thuộc vào người viết mã Đây tính chất đảm bảo tồn vẹn đối tượng 1.1.3 Ngơn ngữ mơ hình hóa hợp (UML) 1.1.3.1 Định nghĩa UML ngơn ngữ mơ hình hóa thống có phần bao gồm kí hiệu hình học phương pháp hướng đối tượng sử dụng để thể miêu tả thiết kế hệ thống 1.1.3.2 Ý nghĩa UML UML ngôn ngữ dùng để trực quan hóa UML ngơn ngữ đặc tả UML ngôn ngữ dùng để xây dựng UML ngôn ngữ dùng để lập tài liệu 1.1.3.3 Các thành phần UML Các phần tử Các quan hệ Các biểu đồ 1.1.4 Biểu đồ lớp (Class Diagram) 1.1.4.1 Khái niệm Một biểu đồ lớp dạng mơ hình tĩnh miêu tả hướng nhìn tĩnh hệ thống khái niệm lớp mối quan hệ chúng với Một mục đích biểu đồ lớp tạo tảng cho biểu đồ khác, thể khía cạnh khác hệ thống 1.1.4.2 Các thành phần biểu đồ lớp Lớp (Class): Thuộc tính (attribute), Phương thức Hướng tiếp cận theo class 2.1.2 Các chiến lược kiểm thử HTHĐT 2.1.2.1 Kiểm thử đơn vị (Unit Testing) - Unit testing đề cập đến kiểm thử để chứng thực chức phần riêng biệt code, thường mức hàm Trong môi trường hướng đối tượng, kiểm thử đơn vị thường sử dụng mức lớp kiểm thử đơn vị nhỏ bao gồm hàm constructor destructor - Loại liểm thử thường viết DEV công viêc họ việc code (loại tét white- box), để đảm bảo hàm riêng biệt hoạt động theo mong muốn hàm có nhiều kiểm thử, để bắt trường hợp nhánh code Unit testing khơng thể bảo đảm chúc phận phần mềm mà sử dụng để bảo đảm khối kiến trúc phần mềm làm việcđộc lập với - Unit testing(kiểm thử đơn vị)cũng gọi component testing(kiểm thử thành phần) 2.1.2.2 Kiểm thử tích hợp hướng đối tượng Kiểm thử tích hợp hướng đối tượng (OOTT) kiểm thử tập hợp thành phần hướng đối tượng (set of object oriented components) Như vậy, hiểu OOTT kiểm thử tương tác thành phần hướng đối tượng Hiểu thành phần hướng đối tượng theo nghĩa hẹp đối tượng sinh mã lệnh chương trình, theo nghĩa rộng đối tượng chương trình phần mềm thiết bị phần cứng khác hỗ trợ việc thực thi phiên làm việc hệ thống Ví dụ, hệ thống toán thẻ rút tiền tự động ATM (Automated Teller Machine), thành phần hướng đối tượng hiểu đối tượng chương trình phần mềm thiết bị máy ATM OOTT kiểm thử tương tác hai đối tượng nảy sinhkhi đối tượng gọi phương thức đối tượng khác chế gửi thông báo Những đối tượng cần phải thể lớp khác Nếu đối tượng thể lớp, kiểm thử đề nghị kiểm thử lớp (kiểm thử đối tượng) 2.1.2.3 Kiểm thử hệ thống (System Testing) - System testing kiểm thử hệ thống đãđược tích hợp hồn chỉnh để xác minh đáp ứng u cầu - Kiêm thử tích hợp hệ thống chứng thực hệ thống tích hợp với hệ thống bên ngồi hệ thống thứ ba xác định yêu cầu hệ thống 2.2 2.2.1 KIỂM THỬ HTHĐT DỰA TRÊN BIỂU ĐỒ LỚP Ý nghĩa biểu đồ lớp hoạt động kiểm thử 2.2.1.1 Xây dựng tập lớp - Xây dựng lớp - Đặc tả lớp 2.2.2 Kiểm thử Lớp (Class Testing) 2.2.2.1 Kiểm thử phương thức (Method Testing) Trong hệ thống hướng đối tượng, phương thức xem đơn vị nhỏ nên kiểm thử phương thức (method testing) xem kiểm thử đơn vị (Unit Testing) Kiểm thử phương thức tập trung vào chi tiết bên phương thức Do vậy, kỹ thuật kiểm thử đơn vị truyền thống hoàn toàn phù hợp cho kiểm thử phương thức HTHĐT kỹ thuật kiểm thử dựa vào đồ thị luồng liệu (DFG), kiểm thử dựa vào đồ thị luồng điều khiển (CFG), kiểm thử giá trị biên (BVT), 2.2.2.2 Kiểm thử lớp đơn (Intra-Class Testing) Kiểm thử dựa vào phân tích hợp Kỹ thuật xây dựng gồm ba bước chính: - Phân tích luồng liệu (Data flow analysis) - Thực thi thành phần tiêu biểu (Symbolic Execution) - Tinh giảm tự động (Automated deduction) Kiểm thử lớp tương đương (Equivalence Classes Testing) Việc kỹ thuật kiểm thử phân hoạch khơng gian trạng thái, từ xác định tập ca kiểm thử Ý tưởng: - Phân hoạch miền liệu vào thành lớp liệu có quan hệ với - Mỗi lớp dùng để kiểm thử chức gọi lớp tương đương Ba bước - Đối với liệu vào, xác định lớp tương đương từ miền liệu vào - Chọn liệu đại diện cho lớp tương đương - Kết hợp liệu thử tích đề-các để tạo liệu kiểm thử Nguyên tắc phân hoạch lớp tương đương - Nếu liệu vào thuộc khoảng, xây dựng: • lớp giá trị lớn • lớp giá trị nhỏ • n lớp giá trị hợp lệ - Nếu liệu tập hợp giá trị, xây dựng • lớp với tập rỗng • lớp nhiều giá trị • n lớp hợp lệ - Nếu liệu vào điều kiện ràng buộc, xây dựng • lớp với ràng buộc thỏa mãn • lớp với ràng buộc khơng thỏa mãn Ví dụ Bài toán tam giác Thường Cân Đều Nhọn 6,5,3 6,1,6 4,4,4 Vuông 5,6,10 7,4,4 Không thể Tù 3,4,5 √2,2,√2 Không thể Khơng tam giác -1,2,8 2.2.2.3 Kiểm thử tích hợp lớp (Inter-Class Testing) Kiểm thử tích hợp lớp (Inter-Class testing) gọi kiểm thử Cluster Cluster tương tác lớp với nhằm thực yêu cầu hệ thống phần mềm Kiểm thử cluster xem giai đoạn kiểm thử tích hợp hệ thống Kiểm thử cluster kiểm thử tập lớp hệ thống hệ thống Kiểm thử dựa vào quan hệ kết tập – sử dụng Mối quan hệ tương tác lớp đặc tính HTHĐT Có thể phân loại nhiều cách khác góc nhìn Inter-Class Tuy nhiên, phần này, chúng tơi quan tâm đến quan hệ kết tập quan hệ sử dụng Kỹ thuật kiểm thử inter-class dựa vào quan hệ kết tập - dụng tạo chuỗi trình tự lời gọi tập đối tượng tạo nên hệ thống Hai yêu cầu cần phải thực là: mở rộng khái niệm quan hệ khai báo-sử dụng biến tuyến tính đối tượng; việc phân tích luồng liệu lớp thực tập lớp cách sử dụng thơng tin tóm tắt lớp Kỹ thuật gồm hai bước: - Tạo đặc tả ca kiểm thử (Generating Test Case Specifications): Đặc tả ca kiểm thử kiểm thử interclass cặp phương thức; phương thức làm thay đổi trạng thái đối tượng, phương thức thứ hai truy cập trạng thái thay đổi Cặp phương thức tạo cách xác định trình tự lớp cho phép phân tích luồng liệu tăng trưởng thực việc phân tích luồng liệu tăng trưởng để xử lý trạng thái lớp có thành phần lớp khác - Tạo ca kiểm thử (Generating Test Cases) Một ca kiểm thử tương ứng với quan hệ defuse, trình tự lời triệu gọi phương thức, bắt đầu hàm tạo kể phương thức quan hệ def-use thơng qua lộ trình khai báo-trắng (def-clear) Việc tạo ca kiểm thử ứng với quan hệ def-use thông qua xác định điều kiện trước sau cho việc thực thi lộ trình phương thức đơn kỹ thuật thực thi thành phần tiêu biểu; sau lựa chọn điều kiện thích hợp nhờ vào kỹ thuật tinh giảm tự động Kiểm thử dựa vào quan hệ thừa kế lớp Trong phần trình bày kỹ thuật kiểm thử nhóm lớp cóquan hệ với cách tái sử dụng thông tin kiểm thử lớp cha để áp dụng cho lớp thông qua việc khai thác tính phân cấp tự nhiên quan hệ thừa kế Như vậy, kỹ thuật kiểm thử dựa vào tính thừa kế lớp thực qua hai giai đoạn: Kiểm thử lớp sở (lớp cha – parent class) kiểm thử lớp (subclass) - Kiểm thử lớp sở (Base class testing): Giai đoạn nhằm mục đích tạo lịch sử kiểm thử lớp cha Các mức kiểm thử áp dụng cho lớp dạng intra- class inter-class tương ứng với tương tác lớp với đối tượng nhóm kỹ thuật kiểm thử có Các ca kiểm thử bao gồm hai loại: ca kiểm thử tạo dựa vào đặc tả ca kiểm thử dựa vào chương trình - Kiểm thử lớp (subClass testing): Trên sở sử dụng lịch sử kiểm thử (HISTORY(P)) đồ thị lớp (G(P)) lớp cha, thuật toán TestSubclass dẫn xuất lịch sử kiểm thử lớp R (HISTORY(R)) HISTORY(R) dùng để kiểm thử lớp Kiểm thử dựa vào thực thi (Execution Tree) Kỹ thuật kiểm thử dựa vào thực thi xây dựng sở ứng dụng lý thuyết đồ thị - phương pháp sử dụng để mơ hình hóa quy trình thực thi lớp phần tử hiệu - Xây dựng đồ thị tương tác (Interaction Graph) Để xây dựng đồ thị tương tác (IG), dựa vào bảng biến đồ thị luồng điều khiển phương thức Trong đồ thị tương tác cần quan tâm hai vấn đề sau: Một là: tương tác khơng có tham số thực cách tự động Hai là: có mối quan hệ phụ thuộc biến sử dụng thuộc tính - Xây dựng thực thi (Execution Tree) Cây thực thi xây dựng nhờ vào liên kết đồ thị tương tác cluster Cây thực thi hữu hạn với nút gốc tương đương với phương thức ban đầu nút lại dịch vụ cuối cluster Các điều kiện có cạnh đồ thị tương tác sử dụng thực thi tất phương thức nhập kết nối đến nút gốc - Xây dựng ca kiểm thử (Test Case) Các ca kiểm thử cluster trình bày theo trình tự lời gọi phương thức Trình tự thực phương thức xác định từ điểm đầu đến điểm cuối, nút gốc thực thi đến nút Đường dẫn cho biết trình tự gọi thực thi theo nguyên tắc từ xuống từ trái sang phải 2.3 XÂY DỰNG QUY TRÌNH KIỂM THỬ HTHĐT DỰA TRÊN BIỂU ĐỒ LỚP 2.3.1 Mơ hình hóa quy trình 2.3.2 Quy trình kiểm thử chi tiết Bước 1: Xây dựng tập lớp Bước 2: Chuyển đổi mơ hình lớp Bước 3: Tạo ca kiểm thử Bước 4: Thực thi kiểm thử Bước 5: Phân tích kết kiểm thử Bước 6: Chuyển đổi mơ hình lớp Bước 7: Tạo ca kiểm thử Bước 8: Thực thi kiểm thử Bước 9: Phân tích kết kiểm thử KẾT LUẬN Kiểm thử hệ thống hướng đối tượng có vai trò quan trọng việc phát triển phần mềm hướng đối tượng Phần mềm hướng đối tượng phát triển gia tăng chu kỳ có tính hồi quy Sau chu kỳ, thành phần hướng đói tượng phần mềm đặt kiểm thử tích hợp thực Khơng có cấu trúc rõ ràng phần mềm hướng đối tượng Có thể khơng có thành phần mức cao mức thấp Các thành phần gửi thông báo tới thành phần khác Mỗi thông báo làm thay đổi trạng thái thành phần, điều gần dẫn đến số lượng vô tận ca kiểm thử Có nhiều trạng thái xảy tương tác lần hệ thống Sự phức tạp dẫn đến chi phí lớn việc kiểm thử Hưng Yên, ngày…tháng…năm 2013 Nhóm sv thực Phạm Thị Thanh Hải Nguyễn Thị Dung Đỗ Thj Giang ... UML biểu đồ lớp Nhiều khái niệm kiểm thử đề cập, đặc biệt QTKT kỹ thuật kiểm thử (kiểm thử chức kiểm thử cấu trúc) CHƯƠNG KIỂM THỬ HỆ THỐNG HƯỚNG ĐỐI TƯỢNG DỰA TRÊN BIỂU ĐỒ LỚP 2.1 KIỂM THỬ... thuật kiểm thử - Kiểm thử HTHĐT mức lớp (Class Testing) CHƯƠNG HỆ THỐNG HƯỚNG ĐỐI TƯỢNG VÀ KIỂM THỬ PHẦN MỀM 1.1 1.1.1 HỆ THỐNG HƯỚNG ĐỐI TƯỢNG Một số khái niệm 1.1.1.1 Đối tượng (Object) Đối tượng. .. vị)cũng gọi component testing (kiểm thử thành phần) 2.1.2.2 Kiểm thử tích hợp hướng đối tượng Kiểm thử tích hợp hướng đối tượng (OOTT) kiểm thử tập hợp thành phần hướng đối tượng (set of object oriented