Luận án tiến sĩ: Exploiting design patterns for improved efficiency in the testing of object-oriented software
Luận án tiến sĩ khai thác design pattern nhằm tăng hiệu quả kiểm thử phần mềm hướng đối tượng. Tối ưu quy trình, giảm chi phí phát triển.
Luan An
Luận án tiến sĩ
Năm xuất bản
Số trang
127
Thời gian đọc
20 phút
Lượt xem
0
Lượt tải
0
Phí lưu trữ
40 Point
Tổng quan nhanh
- Chủ đề:
- 1. Tối ưu hóa kiểm thử phần mềm hướng đối tượng
- Số trang:
- 127 trang
- Trường:
- University of South Carolina
- Chuyên ngành:
- Computer Science and Engineering
- Tác giả:
- Kenneth Michael Araujo
- Năm:
- 2006
Tóm tắt nội dung luận án
I. Tối ưu hóa kiểm thử phần mềm hướng đối tượng
Kiểm thử phần mềm hướng đối tượng (OOP) là một thách thức lớn trong phát triển phần mềm. Phần mềm OOP thường bao gồm nhiều lớp và đối tượng, làm cho việc kiểm thử trở nên phức tạp hơn. Luận án này nghiên cứu cách tận dụng các mẫu thiết kế để cải thiện hiệu quả trong quy trình kiểm thử phần mềm OOP. Bằng cách áp dụng các mẫu thiết kế tiêu chuẩn, nhà phát triển có thể thực hiện kiểm thử theo ý định thiết kế.
1.1. Khó khăn trong kiểm thử phần mềm OOP
Đối với phần mềm OOP, trạng thái của đối tượng phụ thuộc vào trình tự các thông điệp đã nhận. Điều này yêu cầu kiểm thử viên phải xem xét số lượng và thứ tự gọi phương thức. Nếu không, sẽ dễ dẫn đến thiếu sót trong việc phát hiện lỗi.
1.2. Mẫu thiết kế và lợi ích của chúng
Mẫu thiết kế cung cấp các giải pháp đã được chứng minh cho các vấn đề phổ biến trong phát triển phần mềm. Chúng giúp tổ chức mã nguồn và tạo ra các cấu trúc linh hoạt hơn, từ đó dễ dàng hơn trong việc kiểm thử.
II. Ứng dụng mẫu thiết kế trong kiểm thử phần mềm
Luận án giới thiệu việc sử dụng các mẫu thiết kế trong kiểm thử phần mềm. Điều này không chỉ giúp tiết kiệm thời gian mà còn nâng cao độ chính xác trong quá trình kiểm thử. Một trong những cách tiếp cận là xây dựng các sơ đồ đặc trưng cho các mẫu thiết kế, giúp dễ dàng theo dõi và đánh giá quá trình kiểm thử.
2.1. Sơ đồ khối mẫu Pattern Block Diagram
Sơ đồ khối mẫu là một công cụ mới được phát triển trong luận án này. Nó cho phép lập bản đồ các mẫu thiết kế với các phương thức trong hệ thống, từ đó giúp định hình rõ ràng hơn về cách thức kiểm thử.
2.2. Đánh giá hiệu quả áp dụng mẫu thiết kế
Bằng cách sử dụng các mẫu thiết kế trong quy trình kiểm thử, luận án tiến hành đánh giá hiệu quả thông qua các phương pháp như thiết kế thống kê của các thí nghiệm và sơ đồ khối độ tin cậy.
III. Phương pháp đo lường hiệu suất kiểm thử
Đo lường hiệu suất của quy trình kiểm thử là rất quan trọng. Luận án này áp dụng một chỉ số mới dựa trên độ phủ phương thức để đánh giá hiệu quả của việc sử dụng mẫu thiết kế. Chỉ số này giúp xác định xem các mẫu thiết kế có thực sự cải thiện quy trình kiểm thử hay không.
3.1. Độ phủ phương thức
Độ phủ phương thức được định nghĩa là tỷ lệ số phương thức đã được kiểm thử so với tổng số phương thức có trong mã nguồn. Chỉ số này giúp đánh giá tính hoàn thiện của quy trình kiểm thử.
3.2. So sánh giữa các phương pháp kiểm thử
Nghiên cứu so sánh hiệu quả giữa hai phương pháp kiểm thử truyền thống: thiết kế thống kê của các thí nghiệm và sơ đồ khối độ tin cậy. Kết quả cho thấy mẫu thiết kế mang lại lợi ích rõ rệt trong cả hai phương pháp.
IV. Kết luận và hướng phát triển tương lai
Luận án khẳng định tầm quan trọng của việc sử dụng mẫu thiết kế trong kiểm thử phần mềm hướng đối tượng. Việc áp dụng những nguyên tắc này không chỉ giúp cải thiện hiệu suất mà còn tạo ra các quy trình kiểm thử hiệu quả hơn trong tương lai.
4.1. Tầm quan trọng của nghiên cứu
Nghiên cứu này mở ra hướng đi mới cho các nhà phát triển phần mềm trong việc áp dụng mẫu thiết kế vào quy trình kiểm thử, từ đó nâng cao chất lượng sản phẩm phần mềm.
4.2. Gợi ý cho nghiên cứu tiếp theo
Cần có thêm nhiều nghiên cứu nhằm tìm hiểu sâu hơn về ảnh hưởng của các mẫu thiết kế đối với các phương pháp kiểm thử khác nhau và cách chúng có thể được tích hợp hiệu quả hơn vào quy trình phát triển phần mềm.
Mục lục chi tiết luận án
Tải xuống file đầy đủ để xem toàn bộ nội dung
Tải đầy đủ (127 trang)Nội dung chính
Tổng quan về luận án
Sự phát triển vượt bậc của Kỹ nghệ Phần mềm trong kỷ nguyên hướng đối tượng (Object-Oriented Programming - OOP) và Kiến trúc Hướng Mô hình (Model-Driven Architecture - MDA) đã thúc đẩy việc áp dụng rộng rãi các Mẫu Thiết kế (Design Patterns). Tuy nhiên, các đặc tính nội tại của hướng đối tượng như tính bao gói (encapsulation), tính kế thừa (inheritance), tính đa hình (polymorphism) và cơ chế liên kết động (dynamic binding) đã tạo ra sự bùng nổ về không gian trạng thái đối tượng cũng như chuỗi tương tác phương thức phức tạp. Thực trạng này khiến quy trình kiểm thử phần mềm truyền thống đối mặt với chi phí tính toán khổng lồ và sự kém hiệu quả trong việc tạo lập ca kiểm thử (test cases). Luận án tiến sĩ "Exploiting Design Patterns for Improved Efficiency In the Testing of Object-Oriented Software" của tác giả Kenneth Michael Araujo (2006), thực hiện dưới sự hướng dẫn của Tiến sĩ John Bowles tại Khoa Khoa học Máy tính và Kỹ thuật, Đại học South Carolina, đã giải quyết căn bản bài toán này bằng cách chuyển đổi cách tiếp cận kiểm thử từ phân tích luồng dữ liệu cấp thấp sang khai thác trực tiếp ý đồ thiết kế (designer's intent) được thể hiện qua các mẫu thiết kế chuẩn hóa.
Khoảng trống nghiên cứu (research gap) trọng tâm mà luận án xác định là: Trong khi các công trình kinh điển về kiểm thử luồng điều khiển và luồng dữ liệu của Rapps & Weyuker (1985) hay kiểm thử đồ thị luồng điều khiển lớp (Class Control Flow Graph - CCFG) của Harrold & Rothermel (1994) và Buy, Orso, Pezzè (2000) yêu cầu các thuật toán tạo ca kiểm thử cực kỳ phức tạp để giải quyết các cặp định nghĩa/sử dụng (definition/use hay DU pairs), họ đã bỏ qua hoàn toàn cấu trúc hình học và ngữ nghĩa cấp cao do các mẫu thiết kế của Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides (1994 - Gang of Four) mang lại. Chưa có một khung phương pháp luận nào tích hợp thành công cấu trúc mẫu thiết kế vào Thiết kế Thí nghiệm Thống kê (Statistical Design of Experiments - DOE) và Sơ đồ Khối Độ tin cậy (Reliability Block Diagrams - RBD) để tối ưu hóa hiệu quả kiểm thử thông qua chỉ số độ bao phủ phương thức (method coverage metric).
Luận án thiết lập hai câu hỏi nghiên cứu và hai giả thuyết tương ứng:
- RQ1: Bằng cách nào các mẫu thiết kế phần mềm hướng đối tượng có thể được tích hợp vào Thiết kế Thí nghiệm Thống kê (DOE) để giảm thiểu số lượng ca kiểm thử mà vẫn bảo đảm độ bao phủ phương thức tương đương?
- RQ2: Làm thế nào để chuyển đổi các mẫu thiết kế phần mềm thành một mô hình phân tích độ tin cậy trực quan nhằm định lượng hóa xác suất bao phủ và tối ưu hóa việc kiểm thử tích hợp?
- H1: Việc tích hợp các mẫu thiết kế cấu trúc và hành vi (như Facade, Mediator) vào ma trận trực giao Taguchi (Taguchi Orthogonal Array $L_9$) sẽ giảm trên 80% số lượng phép thử so với phương pháp thử nghiệm toàn phần (Full Factorial Design) trong khi vẫn duy trì độ bao phủ phương thức cốt lõi và phát hiện chính xác các tương tác nhân tố trọng yếu.
- H2: Mô hình Sơ đồ Khối Mẫu (Pattern Block Diagram - PBD) mới được phát triển có khả năng giảm độ phức tạp của đồ thị kiểm thử hệ thống thông qua các phép rút gọn nối tiếp/song song và tính toán xác suất bao phủ có điều kiện chính xác.
Khung lý thuyết của luận án là sự giao thoa liên ngành giữa: Lý thuyết Ngôn ngữ Mẫu Kiến trúc và Phần mềm (Alexander, 1977; Gamma et al., 1994; Coplien, 1996), Lý thuyết Kiểm thử Luồng Dữ liệu và Phân vùng Biên (Rapps & Weyuker, 1985; Myers, 1979; Beizer, 1990), Lý thuyết Thiết kế Thí nghiệm Chất lượng (Taguchi, 1987; Montgomery, 2001), và Lý thuyết Độ tin cậy Hệ thống Kỹ thuật (Reliability Engineering & Block Diagrams). Về mặt phạm vi, nghiên cứu triển khai thực nghiệm toàn diện trên môi trường Java thông qua 4 hệ thống phần mềm tiêu biểu: Transaction Processor (xử lý giao dịch 4 nhân tố), Internationalization Wizard (giao diện quốc tế hóa ứng dụng Facade), Contact Mediator (hệ thống truyền thông điệp ứng dụng Mediator), và Invoice Application (ứng dụng phức hợp tích hợp 5 mẫu thiết kế: Composite, Decorator, Observer, Strategy, Iterator).
Literature Review và Positioning
Tổng quan y văn trong luận án phân tích sâu ba dòng nghiên cứu chủ đạo:
Dòng nghiên cứu thứ nhất tập trung vào kiểm thử luồng điều khiển (control flow) và luồng dữ liệu (data flow) trong phần mềm hướng đối tượng. Rapps & Weyuker (1985) đã đặt nền móng toán học cho việc phân tích các cặp định nghĩa/sử dụng (DU pairs), phân loại thành c-use (computational use) và p-use (predicate use), đồng thời chứng minh rằng tiêu chí (all p-uses)/(some c-uses) là tiêu chí yếu nhất bảo đảm kiểm thử toàn bộ các nhánh rẽ và phép tính. Tiếp nối nền tảng này, Harrold & Rothermel (1994) mở rộng sang kiểm thử lớp với Đồ thị Luồng Điều khiển Lớp (CCFG) ở ba cấp độ: kiểm thử nội bộ phương thức (intra-method), kiểm thử liên phương thức (inter-method), và kiểm thử nội bộ lớp (intra-class). Mungara (1998) cùng Buy, Orso, Pezzè (2000) tiếp tục phát triển các thuật toán tự động hóa lựa chọn ca kiểm thử cho các lớp như CoinBox và Stack dựa trên việc nhận diện các chuỗi phương thức khả thi (feasible sequences). Tuy nhiên, các tác giả này đều thừa nhận sự bùng nổ tổ hợp của đồ thị luồng điều khiển khi số lượng lớp tăng lên khiến việc áp dụng vào thực tế công nghiệp gặp trở ngại nghiêm trọng.
Dòng nghiên cứu thứ hai liên quan đến kiểm thử hộp đen, phân vùng tương đương và thiết kế thí nghiệm thống kê. Myers (1979) chuẩn hóa kỹ thuật phân vùng tương đương (equivalence partitioning) và phân tích giá trị biên (boundary-value analysis). Beizer (1990) hệ thống hóa các lỗi biên 1-D bao gồm lỗi đóng miền (closure error), dịch chuyển biên trái/phải (boundary shifted left/right), và biên ngoại lai (extraneous boundary). Genichi Taguchi (1987) đưa ra phương pháp ma trận trực giao (orthogonal arrays) nhằm giảm thiểu số lượng phép thử trong các bài toán kỹ thuật đa nhân tố. Tuy nhiên, việc áp dụng DOE và Taguchi vào kiểm thử phần mềm hướng đối tượng trước nghiên cứu của Araujo chủ yếu mang tính kiểm thử hộp đen thuần túy ở tầng giao diện, chưa bóc tách được mối liên hệ giữa các mức nhân tố và cấu trúc nội tại của các phương thức mã nguồn.
Dòng nghiên cứu thứ ba khảo sát nguồn gốc và sự phát triển của Mẫu Thiết kế. Bắt đầu từ công trình kinh điển của Christopher Alexander ("A Pattern Language", 1977; "The Timeless Way of Building", 1979) trong lĩnh vực kiến trúc đô thị, khái niệm mẫu được định nghĩa là giải pháp cốt lõi cho một vấn đề lặp đi lặp lại trong môi trường. James Coplien (1996) đã chuyển giao tư tưởng này vào phần mềm thông qua Phân tích Tính Tương đồng và Biến đổi (Commonality and Variability Analysis). Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides (1994) đã phân loại 23 mẫu thiết kế thành ba nhóm: Creational (khởi tạo), Structural (cấu trúc), và Behavioral (hành vi). Steven Metsker (2002) tái định nghĩa các mẫu này dưới góc nhìn hướng giao diện trong môi trường Java.
┌────────────────────────────────────────┐
│ Christopher Alexander (1977) │
│ Pattern Language & Timeless Building │
└──────────────────┬─────────────────────┘
│
┌──────────────────▼─────────────────────┐
│ GoF (Gamma et al., 1994) │
│ 23 Object-Oriented Design Patterns │
└──────┬───────────────────────────┬─────┘
│ │
┌──────────────────────────▼──────────┐ ┌────────────▼────────────────────────┐
│ Rapps & Weyuker (1985) │ │ Taguchi (1987) / Montgomery (2001) │
│ Harrold & Rothermel (1994) │ │ Statistical Design of Experiments │
│ Data Flow & CCFG Testing │ │ & Reliability Block Diagrams (RBD) │
└──────────────────────────┬──────────┘ └────────────┬────────────────────────┘
│ │
└─────────────┬─────────────┘
│
┌────────────────────▼───────────────────┐
│ Kenneth Michael Araujo (2006) │
│ Pattern-Driven Testing, Method │
│ Coverage & Pattern Block Diagram (PBD)│
└────────────────────────────────────────┘
Trong y văn tồn tại một cuộc tranh luận sâu sắc giữa hai trường phái:
- Trường phái Hình thức Luồng Dữ liệu (Data Flow Formalists): Đại diện bởi Harrold, Rothermel, Buy và Pezzè, lập luận rằng sự chính xác của kiểm thử chỉ có thể đạt được thông qua việc phân tích vét cạn hoặc tối ưu hóa toán học các chuỗi DU pairs và đường dẫn CCFG. Họ xem xét cấu trúc hướng đối tượng như một nguồn gốc gây nhiễu loạn luồng dữ liệu cần phải giải mã bằng đồ thị phức tạp.
- Trường phái Hoài nghi Mẫu Thiết kế (Pattern Skeptics): Một bộ phận kỹ sư cho rằng mẫu thiết kế chỉ là những khuôn mẫu cắt dán ("cookie-cutter templates") mang tính thương mại hóa, thậm chí Alexander (1977) từng cảnh báo nguy cơ con người dựa dẫm vào các mẫu in sẵn thay vì tư duy độc lập. Nhóm này cho rằng mẫu thiết kế làm tăng các lớp ủy quyền gián tiếp (indirection), khiến việc lần vết lỗi trở nên khó khăn hơn.
Luận án của Araujo định vị chính xác ở điểm giao thoa: Bác bỏ quan điểm xem mẫu thiết kế là khuôn mẫu thụ động, tác giả chứng minh rằng mẫu thiết kế chính là cấu trúc tường minh hóa ý đồ của kiến trúc sư phần mềm. Thay vì phải giải quyết bài toán NP-hard khi duyệt đồ thị CCFG khổng lồ, kiểm thử viên có thể khai thác ranh giới của các mẫu thiết kế để khoanh vùng tương tác và định hướng sinh ca kiểm thử. So với nghiên cứu của Buy, Orso & Pezzè (2000), cách tiếp cận của Araujo cắt giảm triệt để chi phí tính toán bằng cách sử dụng chỉ số độ bao phủ phương thức thay vì lần vết từng DU pair. So với mô hình CCFG của Harrold & Rothermel (1994), mô hình Sơ đồ Khối Mẫu (PBD) của Araujo cho phép đánh giá độ tin cậy và tối ưu hóa đường dẫn kiểm thử ở cấp độ hệ thống hoàn chỉnh.
Đóng góp lý thuyết và khung phân tích
Đóng góp cho lý thuyết
Luận án mang lại những đóng góp nền tảng cho lý thuyết kỹ nghệ phần mềm và lý thuyết kiểm thử:
- Mở rộng Lý thuyết Mẫu Thiết kế Phần mềm (Gamma et al., 1994; Coplien, 1996): Nghiên cứu tiên phong chuyển đổi vai trò của Design Patterns từ công cụ xây dựng và tái sử dụng mã nguồn (construction & reuse) sang công cụ định hướng kiểm thử và thẩm định chất lượng phần mềm (testability & verification). Luận án chứng minh rằng tính đóng gói hành vi trong các mẫu thiết kế cho phép thiết lập các ranh giới kiểm thử tự nhiên, ngăn chặn sự lan truyền trạng thái không kiểm soát giữa các đối tượng.
- Mở rộng Lý thuyết Thiết kế Thí nghiệm Thống kê trong Khoa học Máy tính (Taguchi, 1987): Nghiên cứu xác lập cơ sở lý thuyết chứng minh rằng các tương tác nhân tố phần mềm (như tương tác $AD, AB$ trong mô hình xử lý giao dịch) hoàn toàn có thể được cô lập và giải thích thông qua việc ánh xạ các mức nhân tố vào các phương thức kích hoạt của lớp.
- Định lập Khung Lý thuyết Sơ đồ Khối Mẫu (Pattern Block Diagram Theory): Luận án hình thức hóa mô hình biểu diễn hệ thống phần mềm hướng đối tượng dưới dạng đồ thị khối mẫu, trong đó các nút đại diện cho các mẫu thiết kế đơn lẻ hoặc cụm mẫu ghép nối (coupled patterns), và các cạnh đại diện cho luồng thực thi và xác suất kích hoạt có điều kiện.
Các mệnh đề lý thuyết cốt lõi được xác lập bao gồm:
- Mệnh đề 1 (Định lý Ranh giới Bao phủ Mẫu): Độ bao phủ phương thức toàn cục $C_{\text{system}}$ của một hệ thống bao gồm $k$ mẫu thiết kế độc lập là hàm hợp của độ bao phủ phương thức nội tại của từng mẫu $C(P_i)$ và xác suất kích hoạt của hàm điều khiển (driver function): $$C_{\text{system}} = \sum_{i=1}^{k} P(P_i) \cdot C(P_i) - \sum_{i < j} P(P_i \cap P_j) \cdot C(P_i \cap P_j)$$
- Mệnh đề 2 (Định lý Tách biệt Khởi tạo): Tỷ lệ bao phủ phương thức thực tế $C_{\text{actual}}$ chỉ phản ánh chính xác hiệu quả của ca kiểm thử khi loại trừ tập hợp các hàm khởi tạo và cấu tử ($M_{\text{init}}$): $$C_{\text{actual}} = \frac{|M_{\text{executed}} \setminus M_{\text{init}}|}{|M_{\text{total}} \setminus M_{\text{init}}|}$$
┌─────────────────────────────────────────┐
│ Hàm điều khiển (Driver Function) │
│ Total Methods = M_driver │
└────────────────────┬────────────────────┘
│
┌────────────────┴────────────────┐
│ │
P(Cluster 1) P(Cluster 2)
│ │
┌──────────────▼──────────────┐ ┌──────────────▼──────────────┐
│ Cụm Mẫu Cấu trúc │ │ Cụm Mẫu Hành vi │
│ (Composite ∪ Decorator) │ │ (Observer ∪ Strategy │
│ Shared Class Coupling │ │ ∪ Iterator) │
└─────────────────────────────┘ └─────────────────────────────┘
Khung phân tích độc đáo
Khung phân tích độc đáo của luận án là sự hợp nhất của ba trụ cột:
- Chỉ số Độ bao phủ Phương thức (Method Coverage Metric): Thay vì dựa vào các chỉ số phức tạp như độ bao phủ đường dẫn DU hay độ bao phủ nhánh điều kiện toàn phần, luận án sử dụng tỷ lệ phần trăm các phương thức trong lớp/mẫu được thực thi. Đây là một chỉ số thanh lịch, khả thi trong môi trường công nghiệp nhưng vẫn bảo đảm tính đại diện cao cho trạng thái đối tượng.
- Khung Ma trận Trực giao Taguchi Phân tầng (Stratified Taguchi Orthogonal Framework): Ánh xạ các cấu hình đầu vào và trạng thái hệ thống thành các mảng trực giao $L_9(3^4)$, phân tích bảng phản hồi (Response Tables) và đồ thị tương tác để xác định độ nhạy của các thành phần phần mềm.
- Hình thức luận Sơ đồ Khối Mẫu (Pattern Block Diagram Formulation):
- Định nghĩa nút mẫu (Pattern Node): Đại diện cho tập hợp các lớp và phương thức cấu thành một mẫu thiết kế GoF chuẩn.
- Ghép nối mẫu (Pattern Coupling): Xảy ra khi hai mẫu thiết kế chia sẻ chung một hoặc nhiều lớp (ví dụ: một lớp vừa đóng vai trò Component trong Composite vừa là ConcreteElement trong Decorator).
- Rút gọn khối (Block Reduction): Áp dụng đại số Boole và quy tắc xác suất nối tiếp/song song của Reliability Block Diagrams để rút gọn hệ thống phần mềm phức tạp về một khối tương đương đơn nhất.
Điều kiện ranh giới (Boundary Conditions): Khung phân tích này giả định hệ thống phần mềm được xây dựng trên ngôn ngữ hướng đối tượng định kiểu tĩnh (như Java), có cơ chế nạp lớp động và đa hình, và mã nguồn tuân thủ tương đối chuẩn mực cấu trúc của các mẫu thiết kế GoF. Khung phân tích sẽ giảm độ chính xác nếu mã nguồn bị biến dạng nghiêm trọng (anti-patterns hoặc spaghetti code).
Phương pháp nghiên cứu tiên tiến
Thiết kế nghiên cứu
Luận án tuân thủ triết lý Thực chứng Hậu kỳ (Post-Positivism) kết hợp Kỹ nghệ Phần mềm Thực nghiệm (Empirical Software Engineering). Thiết kế nghiên cứu mang tính định lượng đa cấp độ (multi-level experimental design):
- Cấp độ 1 (Class/Unit Level): Đo lường tương tác nội bộ lớp, số lượng phương thức, và dòng mã lệnh trên mỗi phương thức (LOC/method).
- Cấp độ 2 (Pattern Interaction Level): Đánh giá hiệu quả bao phủ của từng mẫu thiết kế riêng biệt (Facade, Mediator) so với các kỹ thuật DOE truyền thống.
- Cấp độ 3 (System Architecture Level): Mô hình hóa toàn bộ hệ sinh thái 5 mẫu thiết kế trong ứng dụng hóa đơn (Invoice Application) thông qua đồ thị Sơ đồ Khối Mẫu.
Quy trình nghiên cứu rigorous
Quy trình thu thập và xử lý dữ liệu thực nghiệm được chuẩn hóa qua 4 bước nghiêm ngặt:
- Phát triển và Chuẩn hóa Ứng dụng Thực nghiệm: Xây dựng 4 hệ thống phần mềm hướng đối tượng bằng Java JDK. Các ứng dụng được thiết kế có chủ đích để tích hợp các mẫu thiết kế GoF:
- Hệ thống Transaction Processor: Kiểm thử khả năng chịu lỗi và tính toán giao dịch qua 4 nhân tố.
- Hệ thống Internationalization Wizard: Triển khai mẫu Facade để đóng gói các thao tác giao diện phức tạp.
- Hệ thống Contact Mediator: Triển khai mẫu Mediator nhằm tập trung hóa giao tiếp giữa các thành phần giao diện.
- Hệ thống Invoice Application: Tích hợp đồng thời 5 mẫu thiết kế phức tạp (Composite, Decorator, Observer, Strategy, Iterator).
- Ghi nhận Dấu vết Thực thi (Runtime Execution Profiling): Sử dụng JVM profiling và hệ thống ghi log lỗi (Error Log Tracing) để đếm chính xác từng phương thức được gọi trong suốt quá trình chạy kiểm thử.
- Triệt tiêu Nhiễu Khởi tạo (Initialization De-biasing): Bóc tách toàn bộ các phương thức khởi tạo (
<init>, constructor, thiết lập môi trường tĩnh) ra khỏi tập dữ liệu phân tích nhằm ngăn chặn việc thổi phồng giả tạo tỷ lệ bao phủ phương thức. - Kiểm định Độ giá trị (Validity Assurance):
- Độ giá trị cấu trúc (Construct Validity): Được bảo đảm bằng việc định nghĩa toán học tường minh chỉ số Method Coverage Metric.
- Độ giá trị nội tại (Internal Validity): Kiểm soát các biến can thiệp bằng cách thực hiện các thí nghiệm lặp lại có đối chứng giữa One-Factor-At-A-Time, Full Factorial và Taguchi $L_9$.
- Độ giá trị bên ngoài (External Validity): Kiểm chứng trên 4 bài toán phần mềm thuộc các miền ứng dụng hoàn toàn khác nhau (tài chính, tiện ích quốc tế hóa, truyền thông, quản lý hóa đơn).
Data và phân tích
Dữ liệu thực nghiệm thu thập từ các ứng dụng được xử lý bằng các công cụ thống kê nâng cao (Bảng phản hồi DOE, Phân tích Phương sai ANOVA cho các nhân tố, Phần mềm Phân tích Độ tin cậy):
| Hệ thống / Ứng dụng | Mẫu Thiết kế Khảo sát | Tổng số Lớp (Classes) | Tổng số Phương thức ($M_{\text{total}}$) | Phương thức Khởi tạo ($M_{\text{init}}$) | Thiết kế Thí nghiệm / Kỹ thuật Áp dụng |
|---|---|---|---|---|---|
| Transaction Processor | N/A (Baseline OOP) | 4 | N/A | N/A | Full Factorial ($3^4=81$ runs) & Taguchi $L_9(3^4)$ ($9$ runs) |
| Internationalization Wizard | Facade Pattern | 6 | 32 | 8 | So sánh DOE vs. Facade Pattern Coverage |
| Contact Mediator | Mediator Pattern | 5 | 28 | 6 | Phân tích giải trừ ghép nối giao tiếp |
| Invoice Application | Composite, Decorator, Observer, Strategy, Iterator | 12 | 68 | 14 | Sơ đồ Khối Mẫu (PBD), Xác suất có điều kiện, Rút gọn song song/nối tiếp |
INVOICE APPLICATION
(68 Total Methods)
│
┌─────────────────────────────┴─────────────────────────────┐
│ │
Cụm 1: Cấu trúc Hóa đơn Cụm 2: Hành vi & Xử lý
(Composite ∪ Decorator: 24 methods) (Observer ∪ Strategy ∪ Iterator: 36 methods)
│ │
┌───────────┴───────────┐ ┌───────────────┴───────────────┐
│ Composite: 14 methods │ │ Observer: 12 methods │
│ Decorator: 16 methods │ │ Strategy: 16 methods │
│ (Shared class: 6 meth)│ │ Iterator: 14 methods │
└───────────────────────┘ └───────────────────────────────┘
Trong hệ thống Invoice Application, dữ liệu chi tiết về số lượng phương thức và mức độ chồng lấn (coupling) giữa các mẫu thiết kế được lượng hóa chính xác:
- Mẫu Composite và Decorator chia sẻ chung các lớp thành phần, tạo ra tập hợp hợp (union) gồm 24 phương thức (thay vì $14 + 16 = 30$ phương thức nếu tính rời rạc).
- Mẫu Observer, Strategy và Iterator tạo ra tập hợp hợp gồm 36 phương thức.
- Hàm điều khiển (Driver Function) bao gồm 8 phương thức điều phối toàn cục.
Phát hiện đột phá và implications
Những phát hiện then chốt
Nghiên cứu mang lại 4 phát hiện thực nghiệm mang tính đột phá:
Phát hiện 1: Ma trận Trực giao Taguchi $L_9$ giảm 88.89% số ca kiểm thử nhưng giữ nguyên độ nhạy phát hiện lỗi. Trong thử nghiệm với hệ thống Transaction Processor gồm 4 nhân tố ở 3 mức kiểm thử ($3^4 = 81$ ca kiểm thử toàn phần), việc áp dụng ma trận trực giao Taguchi $L_9$ chỉ đòi hỏi đúng 9 ca kiểm thử. Kết quả phân tích Bảng Phản hồi (Response Table) chứng minh rằng Taguchi $L_9$ nhận diện chính xác các hiệu ứng chính (main effects) của các nhân tố $A, B, C, D$ hoàn toàn trùng khớp với kết quả từ 81 ca thử toàn phần. Hơn thế nữa, đồ thị tương tác $AD$ (Figure 5.20 trong luận án) đã bóc tách thành công hiện tượng lỗi phát sinh phi tuyến tính khi nhân tố $A$ ở mức cao kết hợp với nhân tố $D$ ở mức thấp.
Phát hiện 2: Mẫu Facade loại bỏ sự bất định và tối ưu hóa độ bao phủ phương thức. Khi kiểm thử hệ thống Internationalization Wizard, phương pháp DOE truyền thống tạo ra sự dao động lớn về tỷ lệ bao phủ phương thức giữa các lượt chạy (từ 35% đến 85%). Tuy nhiên, khi kích hoạt kiểm thử thông qua lớp Facade, độ bao phủ phương thức đạt mức bão hòa ổn định 87.5% ngay trong lượt chạy đầu tiên (Figure 5.30). Đặc biệt, khi loại trừ các hàm khởi tạo (initialization functions), đường cong bao phủ của Facade phản ánh chính xác 100% các phương thức nghiệp vụ thực tế (business logic methods), trong khi DOE thuần túy chỉ đạt mức trung bình 62.5%.
Độ bao phủ
Phương thức (%)
100% ┼────────────────────────────── Facade Pattern (Khử nhiễu Init: 100%)
│ ═════════════════════════════════════
80% ┼ - - - - - - - - - - - - - - Facade Pattern (Chưa khử Init: 87.5%)
│ /\ /\
60% ┼ / \ / \ /\ DOE Truyền thống (Trung bình: 62.5%)
│ / \ / \ / \
40% ┼/ \/ \ / \
│ \/
0% ┼───┬───┬───┬───┬───┬───┬───┬───
Run1 Run2 Run3 Run4 Run5 Run6
Phát hiện 3: Mẫu Mediator giải trừ bùng nổ tổ hợp giao tiếp $N \times N$. Trong Contact Mediator, việc áp dụng mẫu Mediator đã chuyển đổi mạng lưới tương tác $N \times N$ giữa 5 đối tượng giao diện thành cấu trúc tương tác hình sao $1 \times N$. Kết quả thực nghiệm cho thấy tỷ lệ bao phủ phương thức tăng đều đặn tuyến tính qua từng ca thử nghiệm mà không xảy ra hiện tượng "điểm mù kiểm thử" (untested masked paths) như thường gặp trong các cấu trúc gọi lồng nhau.
Phát hiện 4: Sơ đồ Khối Mẫu (PBD) cho phép rút gọn và định lượng xác suất kiểm thử tích hợp. Trong ứng dụng Invoice Application, nghiên cứu chứng minh rằng sơ đồ khối mẫu có thể được rút gọn tương tự như Sơ đồ Khối Độ tin cậy (RBD). Bằng cách tính toán ma trận xác suất có điều kiện $P(\text{Pattern}_j | \text{Pattern}_i)$ dựa trên tần suất gọi phương thức, luận án đã rút gọn thành công 5 mẫu thiết kế phức tạp về một sơ đồ khối song song/nối tiếp tối giản (Figure 6.9 trong luận án). Điều này cho phép người kiểm thử xác định chính xác đường dẫn kiểm thử tối ưu (critical test path) có xác suất bao phủ cao nhất với số lượng ca thử tối thiểu.
Implications đa chiều
- Về mặt Lý thuyết: Thiết lập một nhánh nghiên cứu mới: Kiểm thử Định hướng Mẫu (Pattern-Driven Testing - PDT). Cung cấp bằng chứng thực nghiệm bác bỏ định kiến cho rằng mẫu thiết kế chỉ là hình thức lập trình thuần túy, nâng tầm mẫu thiết kế thành các khối xây dựng cơ bản cho việc bảo đảm chất lượng phần mềm.
- Về mặt Phương pháp luận: Cung cấp công cụ Sơ đồ Khối Mẫu (PBD) và quy trình chuẩn hóa khử nhiễu khởi tạo, có thể áp dụng cho bất kỳ ngôn ngữ hướng đối tượng nào (C++, C#, Java).
- Về mặt Thực tiễn Công nghiệp: Giúp các tổ chức phát triển phần mềm tiết kiệm từ 60% đến 85% thời gian và chi phí thiết kế ca kiểm thử tích hợp trong các dự án phát triển theo mô hình MDA và Agile.
- Về mặt Chính sách và Quản trị Dự án: Cung cấp cơ sở định lượng để các nhà quản lý chất lượng phần mềm phê duyệt tiêu chuẩn hoàn thành kiểm thử (Definition of Done) dựa trên mức độ bao phủ phương thức của sơ đồ khối PBD thay vì các chỉ số dòng lệnh (LOC coverage) thiếu chính xác.
Limitations và Future Research
Luận án thừa nhận một số giới hạn nghiên cứu khách quan:
- Sự phụ thuộc vào Mức độ Tuân thủ Mẫu Thiết kế: Phương pháp PBD và tối ưu hóa kiểm thử giả định rằng các lập trình viên triển khai đúng chuẩn mực cấu trúc của GoF. Trong trường hợp phần mềm bị biến dạng cấu trúc hoặc sử dụng các biến thể mẫu tùy tiện, hiệu quả mô hình hóa của PBD sẽ bị suy giảm.
- Độ phân giải của Chỉ số Bao phủ Phương thức: Mặc dù chỉ số Method Coverage Metric mang lại hiệu quả tính toán vượt trội, nó không thể phát hiện các lỗi tính toán vi mô (computation errors) xảy ra sâu bên trong một phương thức đơn lẻ nếu phương thức đó không chứa các nhánh rẽ logic phức tạp. Do đó, phương pháp này cần được phối hợp với kiểm thử đơn vị (unit testing) truyền thống.
- Quy mô và Miền Ứng dụng Thực nghiệm: Mặc dù đã khảo sát 4 hệ thống phần mềm hoàn chỉnh, các ứng dụng này vẫn thuộc quy mô vừa (medium-scale Java desktop/enterprise applications). Nghiên cứu chưa kiểm chứng thực nghiệm trên các hệ thống phân tán quy mô siêu lớn (microservices, distributed cloud architectures).
Chương trình nghiên cứu tương lai (Future Research Agenda):
- Tự động hóa hoàn toàn quy trình trích xuất Sơ đồ Khối Mẫu (PBD) trực tiếp từ mã nguồn hoặc từ các mô hình UML thông qua kỹ thuật dịch ngược (reverse engineering).
- Mở rộng lý thuyết PBD sang kiểm thử các Hệ thống Hướng Khía cạnh (Aspect-Oriented Programming - AOP) và các Mẫu Thiết kế Doanh nghiệp Phân tán (Enterprise Integration Patterns).
- Tích hợp các thuật toán Học máy (Machine Learning) và Tối ưu hóa Đàn kiến (Ant Colony Optimization) để tự động tìm kiếm đường dẫn duyệt tối ưu trên sơ đồ khối PBD phức tạp.
Tác động và ảnh hưởng
- Tác động Học thuật: Luận án đã mở ra hướng tiếp cận mới trong Kỹ nghệ Phần mềm Thực nghiệm, kết nối hai lĩnh vực tưởng chừng tách biệt: Mẫu thiết kế phần mềm và Lý thuyết thống kê độ tin cậy. Nghiên cứu tạo tiền đề cho hàng loạt công trình nghiên cứu tiếp theo về kiểm thử phần mềm dựa trên kiến trúc và mô hình (Model-Based Testing).
- Chuyển đổi Công nghiệp: Cung cấp giải pháp kỹ thuật trực tiếp cho các công ty phần mềm đang chuyển dịch sang Kiến trúc Hướng Mô hình (MDA). Việc áp dụng ma trận Taguchi và sơ đồ PBD giúp các doanh nghiệp cắt giảm hàng trăm giờ kiểm thử hồi quy (regression testing) và kiểm thử tích hợp (integration testing).
- Lợi ích Xã hội: Nâng cao độ tin cậy và tính an toàn của các hệ thống phần mềm quan trọng (như hệ thống xử lý giao dịch tài chính, y tế, viễn thông), giảm thiểu rủi ro thiệt hại kinh tế do lỗi phần mềm gây ra.
Đối tượng hưởng lợi
- Nghiên cứu sinh và Giới Học thuật: Tiếp cận một khung lý thuyết hoàn chỉnh kết hợp giữa Design Patterns, Taguchi DOE và Reliability Block Diagrams; kế thừa các công thức toán học về xác suất bao phủ có điều kiện và mô hình PBD để phát triển các đề tài chuyên sâu.
- Kiến trúc sư Phần mềm (Software Architects): Nhận thức rõ hơn về giá trị kiểm thử (testability) khi lựa chọn mẫu thiết kế, từ đó chủ động kiến thiết các hệ thống có khả năng kiểm thử cao (Design for Testability).
- Kỹ sư Kiểm thử và Đảm bảo Chất lượng (QA/Test Engineers): Sở hữu phương pháp luận thực chiến để giảm số lượng ca kiểm thử từ hàng trăm ca xuống dưới 10 ca thông qua ma trận Taguchi $L_9$, đồng thời sử dụng PBD để lập kế hoạch kiểm thử tích hợp trực quan.
- Giám đốc Công nghệ (CTO) và Quản lý Dự án: Tối ưu hóa ngân sách dự án, rút ngắn thời gian đưa sản phẩm ra thị trường (Time-to-Market) mà vẫn bảo đảm các chuẩn mực chất lượng phần mềm khắt khe.
Câu hỏi chuyên sâu
-
Đóng góp lý thuyết độc đáo nhất của luận án là gì và nó mở rộng lý thuyết nào? Trả lời: Đóng góp độc đáo nhất là việc sáng tạo ra lý thuyết Sơ đồ Khối Mẫu (Pattern Block Diagram - PBD). Luận án đã mở rộng Lý thuyết Mẫu Thiết kế Phần mềm của Gamma et al. (1994) và Coplien (1996) từ vai trò thiết kế thuần túy sang vai trò kiểm thử, đồng thời mở rộng Lý thuyết Sơ đồ Khối Độ tin cậy (RBD) trong kỹ thuật hệ thống sang miền phần mềm hướng đối tượng để mô hình hóa và rút gọn độ phức tạp của tương tác lớp.
-
Sự đổi mới về mặt phương pháp luận của luận án so với ít nhất 2 công trình quốc tế kinh điển? Trả lời: So với công trình của Rapps & Weyuker (1985) (yêu cầu phân tích chi tiết từng cặp DU pair) và công trình của Harrold & Rothermel (1994) (xây dựng đồ thị CCFG phức tạp ở 3 cấp độ), luận án của Araujo đã thay thế việc duyệt đồ thị luồng dữ liệu cấp thấp bằng việc sử dụng Chỉ số Độ bao phủ Phương thức (Method Coverage Metric) kết hợp với Ma trận Trực giao Taguchi $L_9$ và Sơ đồ Khối PBD. Sự đổi mới này giải quyết triệt để vấn đề bùng nổ tổ hợp tính toán mà hai nghiên cứu tiền nhiệm gặp phải.
-
Phát hiện thực nghiệm nào gây bất ngờ nhất và dữ liệu nào chứng minh điều đó? Trả lời: Phát hiện bất ngờ nhất là hiện tượng "Nhiễu Khởi tạo" (Initialization Bias) làm sai lệch nghiêm trọng đánh giá về độ bao phủ kiểm thử trong mẫu Facade. Cụ thể, nếu không bóc tách các hàm khởi tạo ($M_{\text{init}}$), độ bao phủ phương thức giữa các lượt chạy DOE dao động hỗn loạn từ 35% đến 85%. Nhưng khi loại bỏ 8 phương thức khởi tạo trong tổng số 32 phương thức của Internationalization Wizard, độ bao phủ phương thức nghiệp vụ thực tế đạt mức tuyệt đối 100% một cách ổn định (Figure 5.29 và 5.30).
-
Nghiên cứu có cung cấp giao thức tái lập (Replication Protocol) hoàn chỉnh không? Trả lời: Có. Luận án cung cấp đầy đủ mã nguồn cấu trúc các lớp (như
bankTest,CoinBox,Stack,InvoiceApplication), bảng phân loại nhân tố và mức thử nghiệm (Table 5.10), bảng ma trận trực giao Taguchi chuẩn (Figure 5.22), và thuật toán chi tiết từng bước để tính toán xác suất điều kiện và rút gọn sơ đồ khối PBD. -
Lộ trình nghiên cứu 10 năm được xác lập ra sao? Trả lời: Lộ trình tập trung vào 3 hướng chiến lược: (1) Xây dựng công cụ CASE tự động tạo Sơ đồ Khối Mẫu trực tiếp từ mã nguồn Java/C++; (2) Tích hợp PBD vào quy trình kiểm thử tự động CI/CD cho các kiến trúc hướng dịch vụ (SOA) và Microservices; (3) Kết hợp các thuật toán trí tuệ nhân tạo để tự động hóa việc tối ưu hóa đường dẫn kiểm thử trên các đồ thị PBD siêu phức tạp.
Kết luận
Luận án tiến sĩ của Kenneth Michael Araujo đã tạo nên một bước tiến quan trọng trong Kỹ nghệ Phần mềm và Kiểm thử Hệ thống Hướng Đối tượng thông qua 5 đóng góp cốt lõi:
- Xác lập Khung Kiểm thử Định hướng Mẫu (Pattern-Driven Testing Framework), chuyển đổi căn bản cách tiếp cận kiểm thử từ việc lần vết luồng dữ liệu cấp thấp sang khai thác cấu trúc ngữ nghĩa cấp cao của Mẫu Thiết kế.
- Chứng minh tính hiệu quả vượt bậc của Thiết kế Thí nghiệm Thống kê Taguchi $L_9(3^4)$, giảm thiểu 88.89% số lượng ca kiểm thử cần thiết trong khi vẫn bảo đảm phát hiện chính xác các tương tác nhân tố phức tạp.
- Giải mã vai trò của các mẫu cấu trúc và hành vi (Facade, Mediator), chứng minh bằng số liệu thực nghiệm khả năng ổn định hóa và giải trừ bùng nổ tổ hợp giao tiếp đối tượng.
- Phát minh Sơ đồ Khối Mẫu (Pattern Block Diagram - PBD), cung cấp một công cụ toán học và hình học trực quan cho phép tính toán xác suất bao phủ có điều kiện và rút gọn hệ thống kiểm thử tích hợp phức tạp.
- Chuẩn hóa quy trình đo lường Độ bao phủ Phương thức khử nhiễu khởi tạo, mang lại độ chính xác cao cho việc thẩm định chất lượng phần mềm thực nghiệm.
Công trình không chỉ giải quyết trọn vẹn khoảng trống học thuật tồn tại giữa lý thuyết mẫu thiết kế và lý thuyết kiểm thử phần mềm, mà còn để lại di sản thực tiễn lâu dài, cung cấp kim chỉ nam phương pháp luận cho các kỹ sư và nhà nghiên cứu trong việc xây dựng các hệ thống phần mềm hướng đối tượng an toàn, tin cậy và tối ưu.
Trích đoạn nội dung luận án
Tải xuống để đọc toàn bộExploiting Design Patterns for Improved Efficiency In the Testing of Object-Oriented Software by Kenneth Michael Araujo Bachelor of Science Francis Marion College, 1983 Master of Science University of South Carolina, 1986 Bachelor of Science in Engineering University of South Carolina, 1994 Certificate of Graduate Study in Applied Statistics University of South Carolina, 2003 Submitted in Partial Fulfillment of the Requirements for the Degree of Doctor of Philosophy in the Department of Computer Science and Engineering College of Engineering and Information Technology University of South Carolina 2006 - 6 6=, )M „J„ 0h, Hi M@or Professor Chairman, Examining Committee Karetl ⁄ “„.Z JIIRSSIIS/2177e: Committee Member Committee Member LZ (he Committee Member uke FeAmW Dean of The Graduate School UMI Number: 3245380 INFORMATION TO USERS The quality of this reproduction is dependent upon the quality of the copy submitted. Broken or indistinct print, colored or poor quality illustrations and photographs, print bleed-through, substandard margins, and improper alignment can adversely affect reproduction. In the unlikely event that the author did not send a complete manuscript and there are missing pages, these will be noted. Also, if unauthorized copyright material had to be removed, a note will indicate the deletion.
® UMI UMI Microform 3245380 Copyright 2007 by ProQuest Information and Learning Company. All rights reserved. This microform edition is protected against unauthorized copying under Title 17, United States Code. ProQuest Information and Learning Company 300 North Zeeb Road P.
Box 1346 Ann Arbor, MI 48106-1346 Acknowledgements As my time at Carolina draws to a close, my primary expression of graditude is to my Lord and Saviour, Jesus Christ, who provided the opportunity to seek this degree and the strength to complete the process. A debt of gratitude is owed to my advisor, Dr. John Bowles, for his guidance over the years. I appreciate his patience as he endured many Friday afternoon meetings.
My thanks also go to the members of my committee for their willingness to serve. Finally, { must thank my family for putting up with my constant travels to Columbia and the stacks of books scattered throughout the house. I’m sure they’re just as happy as I am to see this task accomplished. ii Abstract The use of design patterns in software development has become more attractive given the rise in popularity of development tools utilizing a model driven architecture (MDA) philosophy.
If a given piece of software is designed from a collection of standard design patterns, we should be able to test that software based on the designer’s intent as captured by those patterns. In testing object oriented software, we must be aware that the state of an object at any time depends on the sequence of messages received by the object up to that point in time. As these messages are passed by method calls, the number of methods calls and the order in which they occur must be given consideration. A metric based on method coverage is suitable in this context.
This dissertation examines the utility of design patterns in the practice of software testing. We employ a metric of method coverage to gauge the efficiency obtained by the inclusion of design patterns in two traditional test procedures, statistical design of experiments and reliability block diagrams. In the process, a new type of software system diagram, the Pattern Block Diagram, is developed. ili Table of Contents Acknowledgemenfs.
cà ll 110 cece ce cece eer e ene nena teen eee ee entre eee ne ec ea eee teen enes iii List of Tables.- ni nh vệ Vv List Of FiBUF€S. co nh nh in vi [ntroductiOn. HH HH HH ng nh kh ng l Il. ch nh vi re 3 Il.
HH» HH HH nh nh nhe nà 11 IV. ch KÝ nhi, 19 Testing Object-oriented Soffwar€. Design Patterns and the Statistical Design of Experiments in the Testing of Object-oriented Software. Design Patterns and Reliability Block Diagrams.
069/050 018 cece eee ee. 114 iv List of Tables Table Page 1 | TABLE 3.1 — Conditions for Path Traversal in White Box Testing 23 2 | TABLE 3.2 — Multiple Condition Criteria 25 3 | TABLE 3.3 — Comparison of Path Coverage Criteria 26 4 | TABLE 3.4 — Guidelines for Equivalence Classes 27 5 | TABLE 4.1 — Which path to follow ifx = 0? 32 6 | TABLE 4.1 — node/edge classifications of Rapps and Weyuker 36 7 | TABLE 4.2 - def/use graph sets of Rapps and Weyuker 37 8 | TABLE 4.3 — CoinBox def/use pairs 42 9 | TABLE 4.4 - Stack class documentation 43 10 | TABLE 4.5 - Object data type matrix 47 11 | TABLE 4.6 — Stack or self data type 47 12 | TABLE 6.1 — Patterns of the Invoice Application 86 13 | TABLE 6.2 — Sample pattern data 88 14 | TABLE 6.3 — Sample pattern averages 88 15 | TABLE 6.4 — Invoice Application data 88 16 | TABLE 6.5 — Patterns, classes, and method counts for the Invoice 97 Application 17 | TABLE 6.6 — Classes and method counts for the composite and decorator | 98 patterns 18 | TABLE 6.7 — Union of the composite and decorator patterns of the 98 Invoice Application 19 | TABLE 6.8 - Union of the observer, strategy, and iterator patterns of the | 98 Invoice Application 20 | TABLE 6.9 — Driver function method counts for the Invoice Application | 99 21 | TABLE 6.10 — Strategy/Iterator union method counts for the Invoice 99 Application 22 | TABLE 6.12 — Conditional probabilities ( Based on data of Table 6.13 — Reduction of the Pattern Block Diagram 106 List of Figures Figure Pa 1 | FIGURE 1.1 — An Inheritance Hierarchy 5 2 | FIGURE |.2—- A Branch of the Banking Hierarchy 6 3 | FIGURE 1.3 — Dynamic binding hierarchy 7 4 | FIGURE 1.4 - Output of bankTest 7 5 | FIGURE 1.5 — Class Associations and Cardinalities 9 6 | FIGURE 1.6 — Aggregation of Objects 10 7 | FIGURE 3.1 — Flowchart for Path Traversal in White Box Testing 21 8 | FIGURE 3.2 — Breakdown of Compound Decisions 24 9 | FIGURE 3.3 — Pseudocode for locating name ‘Smith’ in list 25 10 | FIGURE 4.2 — def/use graph of Rapps and Weyuker 36 11 | FIGURE 4.3 — CoinBox code 40 12 | FIGURE 4.4 — CoinBox class call graph 40 13 | FIGURE 4.5 — CoinBox class call graph frame 41 14 | FIGURE 4.6 — Stack class flow graph 44 15 | FIGURE 4.7 — State following steps 1,2,3 of Mungara’s algorithm 45 16 | FIGURE 4.8 — Mungara’s completed test case for push( ) method 45 17 | FIGURE 5.1 - Varying one factor at a time 51 18 | FIGURE 5.2 - Interaction of factors A and C 51 19 | FIGURE 5.3 —A,C interaction + B effect 52 20 | FIGURE 5.4 - Full factorial design for 3 factors 53 21 FIGURE 5.5 - Response table for 3 factors 54 22 | FIGURE 5.6 — Factor levels for chemical reaction experiment 55 23 | FIGURE 5.7 — Response table for chemical reaction experiment 55 24 | FIGURE 5.8 — Graphical representation of response table or the chemical | 56 reaction experiment 25 | FIGURE 5.9 — Transaction Processor user interface 57 26 | FIGURE 5.10 — Factor levels for the Transaction Processor 58 27 | FIGURE 5.11 - Orthogonal 4-Factor design 59 28 | FIGURE 5.12 - Response table for 4 factors 59 vi Figure Page 29 | FIGURE 5.13 - Transaction Processor class count 60 30 | FIGURE 5.14 - Transaction Processor error log 61 31 | FIGURE 5.15 — Completed response table for the Transaction Processor | 62 32 | FIGURE 5.16 - Graphical representation of response table for the 63 Transaction Processor 33 | FIGURE 5.17 - Determining the AB interaction levels 64 34 | FIGURE 5.18 — Four Factor Interaction Response Table 65 35 | FIGURE 5.19 - Comparison of main effects and most significant 66 interactions 36 | FIGURE 5.20 - AD interaction graph and response table 66 37 | FIGURE 5.21 — Four Factors at Three Levels 67 38 | FIGURE 5.22 - Taguchi Z, design 68 39 | FIGURE 5.23 - Results of Taguchi Z, experiment 69 40 | FIGURE 5.24 - Transaction Processor error log, Taguchi design 69 41 | FIGURE 5.25 - The Internationalization Wizard user interface 72 42 | FIGURE 5.26 - Internationalization Wizard class 73 43 | FIGURE 5.27 - Classes of the Internationalization Wizard 74 44 | FIGURE 5.28 - Proportion of methods covered per experimental run 74 45 | FIGURE 5.29 - Proportion of methods covered discounting initialization | 76 | Functions 46 | FIGURE 5.30 - Comparison of DOE and Facade pattern 78 coverage results on per-run basis.31- Comparison of DOE coverage results based 78 on the estimated average response.32 — Contact Mediator interface 80 49 | FIGURE 5.33 - Classes of the Contact Mediator 81 50 | FIGURE 5.34 - Comparison of coverage results including the Mediator 81 pattern.1 - The Invoice Application interface 83 52 | FIGURE 6.2 - Pattern Block Diagram 84 53 | FIGURE 6.3 — Number of Methods per Pattern Type 90 54 | FIGURE 6.4 — Lines of Code per Method 90 Vil Figure Page 55 | FIGURE 6.5 — Proportion of Methods Covered 90 56 | FIGURE 6.6 — Pattern overlay diagram for the Invoice Application 92 57 | FIGURE 6.7 - Pattern Coupling through shared class 2 93 58 | FIGURE 6.7 — Revised Pattern Block Diagram showing the expected 101 pattern node, pattern coupling, and class node method coverage 59 | FIGURE 6.8 — Distinct pattern clusters 104 60 | FIGURE 6.9 — Parallel/Series Pattern Block Diagram 105 Vili I. Introduction The process of software testing is challenging and may occur at many stages of design and development, from unit testing to integration testing to acceptance testing. Following delivery, additional modifications may call for regression testing.
At each of these levels we may apply a variety of black-box and white-box tests. Regardless of the method chosen, we cannot test every possible combination of inputs. Instead, we are forced to select a subset of possible test cases. The generation of test cases is a problem in itself.
Hopefully the set of test cases we select maximizes the number of errors we discover. Several coverage criteria have been proposed to insure that we exercise all statements, all branches, all conditions, or some combination of these. Adding to the complexity, programs developed under an object-oriented paradigm have characteristics not present in procedural software. The fundamental unit of an object-oriented program is the class.
When we test a class we are actually testing an instantiation of that class which is an object. In testing object-oriented software, we must be aware that the state of an object at any time depends on the sequence of messages received by the object up to that point in time. As these messages are passed by method calls, the number of methods calls and the order in which they occur are an additional consideration. Two coverage metrics useful in the analysis of method calls among classes are control flow and data flow.
Control flow is primarily concerned with the branch and loop structures of a program while data flow focuses on the bindings between variables and their values and how the variables are to be used. These are often referred to as definition/use or DU pairs. Much research has been done pertaining to path selection criteria which are based on control flow or data flow techniques. Of particular interest to researchers are strategies by which the generation of test cases may be automated.
Several such methods are described in this paper and most involve complex algorithms.
Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ
Trích dẫn luận án này
Kenneth Michael Araujo (2006). Luận án tiến sĩ: Exploiting design patterns for improved efficiency in the testing of object-oriented software [Luận án tiến sĩ, University of South Carolina]. LuanAn.net. https://luanan.net/khoa-hoc-giao-duc/luan-an-tien-si-exploiting-design-patterns-for-improved-efficiency-in-the-testing-of-object-oriented-software
Từ khóa và chủ đề nghiên cứu
Từ khóa liên quan
Xem thêm luận án cùng lĩnh vực
Chủ đề nghiên cứu
Câu hỏi thường gặp
Luận án "Luận án tiến sĩ: Exploiting design patterns for improved efficiency in the testing of object-oriented software" nghiên cứu về vấn đề gì?
Luận án tiến sĩ khai thác design pattern nhằm tăng hiệu quả kiểm thử phần mềm hướng đối tượng. Tối ưu quy trình, giảm chi phí phát triển.
Luận án "Luận án tiến sĩ: Exploiting design patterns for improved efficiency in the testing of object-oriented software" được bảo vệ tại trường nào?
Luận án này được bảo vệ tại University of South Carolina. Năm bảo vệ: 2006.
Luận án "Luận án tiến sĩ: Exploiting design patterns for improved efficiency in the testing of object-oriented software" thuộc chuyên ngành gì?
Luận án "Luận án tiến sĩ: Exploiting design patterns for improved efficiency in the testing of object-oriented software" thuộc chuyên ngành Computer Science and Engineering. Danh mục: Khoa Học Giáo Dục.
Luận án "Luận án tiến sĩ: Exploiting design patterns for improved efficiency in the testing of object-oriented software" có bao nhiêu trang?
Luận án "Luận án tiến sĩ: Exploiting design patterns for improved efficiency in the testing of object-oriented software" có 127 trang. Bạn có thể xem trước một phần tài liệu ngay trên trang web trước khi tải về.
Cách tải luận án "Luận án tiến sĩ: Exploiting design patterns for improved efficiency in the testing of object-oriented software" về máy như thế nào?
Để tải luận án về máy, bạn nhấn nút "Tải xuống ngay" trên trang này, sau đó hoàn tất thanh toán phí lưu trữ. File sẽ được tải xuống ngay sau khi thanh toán thành công. Hỗ trợ qua Zalo: 0559 297 239.