1. Trang chủ
  2. » Công Nghệ Thông Tin

Kiểm thử phần mềm Hướng đối tượng trên Biểu đồ lớp

33 206 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 33
Dung lượng 350 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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

Trang 1

MỞ ĐẦU

Cùng với sự phát triển vượt bậc của Công nghệthông tin, đặc biệt trong lĩnh vực Công nghệ phần mềm,hoạt động kiểm thử đã được đặc biệt chú trọng, thu hút sựtập trung nghiên cứu của các nhà khoa học, các học giảtrên toàn thế giới Song, bên cạnh những thành tựu khoahọc, hoạt động kiểm thử vẫn chưa thể khẳng định đượcrằng một sản phẩm phần mềm ra đời có chắc chắn đảmbảo tính đúng đắn, có lỗi hay không

Ngày nay, với sự phổ dụng và tính ưu việt của kỹthuật lập trình hướng đối tượng, sản phẩm phần mềm đã

có những bước đột phá về chất lượng Tuy nhiên, vấn đềkiểm soát lỗi và hoàn thiện sản phẩm vẫn gặp rất nhiềukhó khăn Một trong những nguyên nhân dẫn đến tìnhtrạng trên là do chúng ta chưa nhận thức đầy đủ ý nghĩacủa hoạt động kiểm thử khi thực hiện các giai đoạn trongtiến trình phát triển phần mềm; các phương pháp kiểmthử truyền thống vẫn được sử dụng phổ biến Hơn nữa,

độ phức tạp của phần mềm ngày càng cao; sự linh hoạt,mềm dẻo và những đặc điểm đa dạng của kỹ thuật lập

1

Trang 2

trình hướng đối tượng, nếu người phát triển phần mềmkhông cẩn thận, đôi khi sẽ trở nên nhập nhằng, dễ phátsinh lỗi.

Với thực trạng và yêu cầu trên, việc kiểm thử các

hệ thống hướng đối tượng cần phải được nghiên cứu kỹ,

có chiều sâu; trong đó kiểm thử hệ thống hướng đốitượng dựa trên các mô hình hợp nhất là một trong nhữngphương pháp có thể tiếp cận nghiên cứu

Mô hình hợp nhất có tính ưu việt về mặt mô hìnhhóa một cách trực quan Ngày nay, ngôn ngữ mô hìnhhóa hợp nhất (UML) đã trở thành công cụ quen thuộctrong tiến trình phát triển hệ thống hướng đối tượng(HTHĐT) 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ử HTHĐT trên biểu đồ lớp

Hưng Yên, ngày…tháng…năm 2013

2

Trang 3

Nhóm sv thực hiện

Phạm Thị Thanh Hải Nguyễn Thị Dung

Đỗ Thj Giang

3

Trang 4

Mục tiêu của đề tài là trình bày một cách tổng quan

về kiểm thử HTHĐT dựa trên lớp và đưa ra quy trình ápdụng thực tế

Để đạt được mục tiêu, đề tài cần thực hiện các nhiệm vụ sau:

- Tìm hiểu HTHĐT; UML và biểu đồ lớp (Class Diagram)

- Nghiên cứu về kiểm thử hướng đối tượng (OOT)

- Xây dựng quy trình kiểm thử HTHĐT dựa trên biểu đồ lớp

- Ứng dụng quy trình vào HTHĐT cụ thể, từ đó đưa rađánh giá tính hiệu quả của quy trình đề xuất

2 Đối tượng và phạm vi nghiên cứu

2.1 Đối tượng nghiên cứu

Trang 5

- Lý thuyết về HTHĐT, UML và 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)

Trang 6

1.1.1.1 Đối tượng (Object)

Đối tượng là sự kết hợp giữa dữ liệu và thủ tục ( haycòn gọi là các phương thức – method) thao tác trên dữ liệu

đó Có thể đưa ra công thức phản ánh bản chất kỹ thuật lậptrình hướng đối tượng như sau:

Đối tượng=Dữ liệu + Phương thức

1.1.1.2 Lớp (Class)

Lớp là một tập các đối tượng có cấu trúc dữ liệu và cácphương thức giống nhau( hay nói cách khác là một tập cácđối tượng cùng loại) Như vậy khi có một lớp thì chúng ta sẽbiết được một mô ta cấu trúc dữ liệu và phương thức của cácđối tượng thuộc lớp đó Một đối tượng sẽ là một thể hiện cụthể của lớp đó Trong lập trình, chúng ta có thể coi một lớpnhư là một kiểu dữ liệu, còn các đối tượng sẽ là các biến cókiểu là lớp

1.1.1.3 Lớp con (SubClass)

Trang 7

Lớp con là một lớp thông thường nhưng có thêm tính chất

kế thừa một phần hay toàn bộ các đặc tính của một lớp

khác Lớp chia sẻ sự kế thừa gọi là 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à một lớp mà nó không thể thực thể hóa

thành một đối tượng thực dụng được Lớp này được thiết

kế nhằm tạo ra một lớp có các đặc tính tổng quát nhưng bảnthân lớp đó chưa có ý nghĩa (hay không đủ ý nghĩa) để có thể tiến hành viết mã cho việc thực thể hóa

Thí dụ: Lớp "hinh" được định nghĩa không có dữ liệu nội tại

và chỉ có các phương thức "tinh_chu_vi", "tinh_dien_tich" Nhưng vì lớp hinh này chưa xác định được đầy đủ các đặc tính của nó (cụ thể các biến nội tại là tọa độ các đỉnh nếu là

đa giác, là đường bán kính và toạ độ tâm nếu là hình tròn, )nên nó chỉ có thể được viết thành một lớp trừu tượng Sau

đó, người lập trình có thể tạo ra các lớp con chẳng hạn như

là lớp "tam_giac", lớp "hinh_tron", lớp "tu_giac", Và trong các lớp con này người viết mã sẽ cung cấp các dữ liệu nội tại (như là biến nội tại r làm bán kính và hằng số nội tại

Pi cho lớp "hinh_tron" và sau đó viết mã cụ thể cho các phương thức "tinh_chu_vi" và "tinh_dien_tich")

1.1.2 Các tính chất cơ bản

1.1.2.1 Tính trừu tượng (Abstraction

Trang 8

Đây là khả năng của chương trình bỏ qua hay không chú

ý đến một số khía cạnh của thông tin mà nó đang trực tiếp làm việc lên, nghĩa là nó có khả năng tập trung vào những cốt lõi cần thiết Mỗi đối tượng phục vụ như là một "động tử" có thể hoàn tất các công việc một cách nội bộ, báo cáo, thay đổi trạng thái của nó và liên lạc với các đối tượng khác

mà không cần cho biết làm cách nào đối tượng tiến hành

được các thao tác Tính chất này thường được gọi là sự

trừu tượng của dữ liệu.

Tính trừu tượng còn thể hiện qua việc một đối tượng ban đầu có thể có một số đặc điểm chung cho nhiều đối tượng khác như là sự mở rộng của nó nhưng bản thân đối tượng ban đầu này có thể không có các biện pháp thi hành

1.1.2.2 Tính thừa kế (Inheritance)

Đặc tính này cho phép một đối tượng có thể có sẵn các

đặc tính mà đối tượng khác đã có thông qua kế thừa Điều này cho phép các đối tượng chia sẻ hay mở rộng các đặc tính sẵn có mà không phải tiến hành định nghĩa lại Tuy nhiên, không phải ngôn ngữ định hướng đối tượng nào cũng có tính chất này

1.1.2.3 Tính đa hình (Polymorphism)

Thể hiện thông qua việc gửi các thông điệp (message)

Việc gửi các thông điệp này có thể so sánh như việc gọi các

Trang 9

hàm bên trong của một đối tượng Các phương thức dùng trảlời cho một thông điệp sẽ tùy theo đối tượng mà thông điệp

đó được gửi tới sẽ có phản ứng khác nhau Người lập trình

có thể định nghĩa một đặc tính (chẳng hạn thông qua tên của các phương thức) cho một loạt các đối tượng gần nhau nhưng khi thi hành thì dùng cùng một tên gọi mà sự thi hànhcủa mỗi đối tượng sẽ tự động xảy ra tương ứng theo đặc tínhcủa từng đối tượng mà không bị nhầm lẫn

Thí dụ khi định nghĩa hai đối tượng "hinh_vuong" và

"hinh_tron" thì có một phương thức chung là "chu_vi" Khi gọi phương thức này thì nếu đối tượng là "hinh_vuong" nó

sẽ tính theo công thức khác với khi đối tượng là "hinh_tron"

1.1.2.4 Tính đóng gói (Encapsulation)

Tính chất này không cho phép người sử dụng các đối tượng thay đổi trạng thái nội tại của một đối tượng Chỉ có các phương thức nội tại của đối tượng cho phép thay đổi trạng thái của nó Việc cho phép môi trường bên ngoài tác động lên các dữ liệu nội tại của một đối tượng theo cách nào là hoàn toàn tùy thuộc vào người viết mã Đây là tính chất đảm bảo sự toàn vẹn của đối tượng

1.1.3 Ngôn ngữ mô hình hóa hợp nhất (UML)

1.1.3.1 Định nghĩa

UML là ngôn ngữ mô hình hóa thống nhất có phần chính

Trang 10

bao gồm những kí hiệu hình học được các phương pháp hướng đối tượng sử dụng để thể hiện và miêu tả thiết kế của một hệ thống.

1.1.3.2 Ý nghĩa của UML

 UML là ngôn ngữ dùng để trực quan hóa

 UML là ngôn ngữ đặc tả

 UML là ngôn ngữ dùng để xây dựng

 UML là ngôn ngữ dùng để lập tài liệu

1.1.4.2 Các thành phần của biểu đồ lớp

 Lớp (Class): Thuộc tính (attribute), Phương thức

Trang 12

Phát triểnTest script

Thực hiện kiểm thử

 Xác định phạm vi và rủi ro khi thực hiện test

 Xác định hướng tiếp cận (techniques, test items, coverage…)

Trang 13

 Xác định chính sách và chiến lược test

 Xác định nguồn tài nguyên cho test (e.g people, test environment,

 PCs)

 Lập kế hoạch cho nhiệm vụ tiếp theo: phân tích

và thiết kế test, triển khai và thực thi test, đánh giá test

 Xác định điều kiện dừng test

1.2.2.2 Phân tích và thiết kế test

Đầu vào: SRS, Detail design,Test plan

Đầu ra: Tài liệu Test design

Xem xét lại toàn bộ tài liệu dự án (phân tích rủi ro sảnphẩm, yêu cầu, kiến trúc, thiết kế )

Xác định các điều kiện test dựa trên việc phân tích các danh mục test, đặc tả của chúng…

Thiết kế test: xác định test case

Đánh giá khả năng test được của yêu cầu và hệ thống

Thiết lập môi trường kiểm thử và xác định cơ sở vật chất và các công cụ cho test

1.2.2.3 Triển khai và thực thi test

- Triển khai test:

Trang 14

Đầu vào: SRS, Use case, Test Design document

Đầu ra: Test case, Test script, Test data

- Thực thi test:

Đầu vào: Software/Product, Test case, Test script, Test dataĐầu ra: Defect list, Issue list, Test log

1.2.2.4 Đánh giá điều kiện kết thúc và báo cáo test

- Đầu vào: Test Log, Test Plan

- Đầu ra: Test Report

Đánh giá điều kiện kết thúc là hoạt động để đánh giá

thực thi kiểm thử với mục tiêu đặt ra

1.2.3.1 Kiểm thử chức năng (Functional Testing)

Kiểm thử chức năng là phương pháp kiểm thử chủyếu dựa vào đặc tả chức năng của hệ thống Các ca kiểmthử hay dữ liệu kiểm thử được dẫn xuất từ đặc tả Bởi

Trang 15

vậy, kiểm thử chức năng còn được gọi là kiểm thử dựatrên đặc tả hay kỹ thuật kiểm thử hộp đen (Black-BoxTesting) Kiểm thử chức năng là giải pháp tốt nhất để

tìm ra lỗi thiết kế Hoạt động kiểm thử được áp dụng chocác mức độ kiểm thử: Kiểm thử đơn vị, kiểm thử tíchhợp, kiểm thử hệ thống, kiểm thử hồi quy và kiểm thửchấp nhận

1.2.3.2 Kiểm thử cấu trúc (Structural

Testing)

Kiểm thử cấu trúc còn gọi là kiểm thử hộp trăng(White-Box Testing) chủ yếu dựa vào mã nguồn và cấutrúc chương trình Kiểm thử cấu trúc cho phép chúng takiểm thử cấu trúc bên trong của phần mềm, với mục đíchkiểm tra tất cả các câu lệnh và điều kiện tồn tại trongphần mềm đó Kiểm thử cấu trúc thường phát hiện lỗi lậptrình Tuy nhiên, đây là phương pháp kiểm thử khó thựchiện, chi phí cao

Chương này trình bày tổng quan về HTHĐT Bêncạnh đó, chúng tôi cũng tìm hiểu một cách chi tiết về

Trang 16

UML và biểu đồ lớp Nhiều khái niệm về kiểm thử cũngđược đề cập, đặc biệt QTKT và các kỹ thuật kiểm thử(kiểm thử chức năng và kiểm thử cấu trúc).

Trang 17

CHƯƠNG 2 KIỂM THỬ HỆ THỐNG HƯỚNG ĐỐI TƯỢNG DỰA TRÊN BIỂU ĐỒ LỚP

2.1 KIỂM THỬ HỆ THỐNG HƯỚNG ĐỐI TƯỢNG

2.1.1 Tổng quan về kiểm thử HTHĐT

Ở phần mềm hướng đối tượng, chương trình

được thực hiện dựa trên sự thực thi phương thức củađối tượng nào đó là thể hiện cụ thể của một lớp mỗikhi có một sự kiện được kích hoạt Hướng tiếp cậntập trung vào kiểm thử các đối tượng thuộc các lớp

và sự tương tác giữa các đối tượng thuộc các lớpkhác nhau Sự phức tạp của lớp đối tượng đó chínhlà: tính bao gói về mặt giữ liệu, sự thừa kế các lớpvới nhau, tính đa hình… điều đó dẫn đến hoạt độngkiểm thử phức tạp hơn Có thể đưa ra 3 cấp độ khácnhau cho kiểm thử phần mềm hướng đối tượng nhưsau:

Kiểm thử lớp (Class Testing)

Kiểm thử tích hợp đối tượng (Object Integration Testing)

Kiểm thử toàn bộ hệ thống (System Testing)

Trang 18

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 các kiểm thử để chứng thực chức

năng của một phần riêng biệt của code, thường ở mức hàm Trong một môi trường hướng đối tượng, kiểm thử đơn vị thường được sử dụng ở mức lớp và kiểm thử các đơn vị nhỏ nhất bao gồm các hàm constructor và destructor

- Loại liểm thử này thường được viết bởi các DEV như côngviêc của họ trong việc code (loại tét white- box), để đảm bảorằng từng hàm riêng biệt hoạt động đúng theo mong muốn một hàm có thể có nhiều kiểm thử, để bắt được các trường

Trang 19

hợp hoặc các nhánh code Unit testing một mình không thể bảo đảm chúc năng của một bộ phận của phần mềm mà là sửdụng để bảo đảm rằng các khối kiến trúc của phần mềm làm việcđộc lập với nhau.

- Unit testing(kiểm thử đơn vị)cũng được gọi là 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) là kiểm thử tập hợp các thành phần hướng đối tượng (set of object oriented components)

Như vậy, có thể hiểu OOTT 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à thiết bị của máy ATM

Trang 20

OOTT kiểm thử sự tương tác giữa hai đối tượng nảy sinhkhimộ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)

2.1.2.3 Kiểm thử hệ thống (System Testing)

- System testing kiểm thử một hệ thống đãđược tích hợphoàn chỉnh để xác minh rằng nó đáp ứng được yêu cầu

- Kiêm thử tích hợp hệ thống chứng thực rằng hệ thống đãđược tích hợp với các hệ thống bên ngoài hoặc hệ thống thứ

ba đã được xác định trong các yêu cầu hệ thống.

2.2 KIỂM THỬ HTHĐT DỰA TRÊN BIỂU ĐỒ LỚP 2.2.1 Ý nghĩa của biểu đồ lớp trong hoạt động

kiểm thử

2.2.1.1 Xây dựng tập các lớp

- Xây dựng lớp

- Đặc tả lớp

Trang 21

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được xem là đơn vị nhỏ nhất nên kiểm thử phương thức(method testing) có thể được xem là kiểm thử đơn vị(Unit Testing) Kiểm thử phương thức tập trung vàotừng chi tiết bên trong của mỗi phương thức Do vậy,những kỹ thuật kiểm thử đơn vị truyền thống hoàn toànphù hợp cho kiểm thử phương thức trong HTHĐT như kỹthuật kiểm thử dựa vào đồ thị luồng dữ liệu (DFG), kiểmthử 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 nhất

Kỹ thuật được xây dựng gồm ba bước chính:

- Phân tích luồng dữ 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 đầu tiên của kỹ thuật kiểm thử này là phân hoạch không gian trạng thái, từ đó xác định tập ca kiểm thử

Trang 22

- Đối với mỗi dữ liệu vào, xác định các lớp

tương đương từ miền dữ liệu vào

- Chọn dữ liệu đại diện cho mỗi lớp tương

đương

- Kết hợp các dữ liệu thử bởi tích đề-các để

tạo ra bộ dữ liệu kiểm thử

 Nguyên tắc phân hoạch các lớp tương đương

- Nếu dữ liệu vào thuộc một khoảng, xây dựng:

Ngày đăng: 24/10/2018, 16:35

TỪ KHÓA LIÊN QUAN

w