Luận văn ThS: Phương pháp kiểm thử hồi quy cho dự án Java EE (ĐHCN - Nguyễn Thị Hồng Vân)

Luận văn ThS: Nghiên cứu kiểm thử hồi quy cho ứng dụng Java EE. Tìm hiểu phương pháp, công cụ kiểm thử hiệu quả, đảm bảo chất lượng phần mềm Java EE.

Chuyên ngành

Công nghệ thông tin

Người đăng

Ẩn danh

Thể loại

Luận văn thạc sĩ

2018

58
2
0

Phí lưu trữ

30 Point

Mục lục chi tiết

LỜI CAM ĐOAN

LỜI CẢM ƠN

DANH MỤC THUẬT NGỮ VIẾT TẮT

DANH MỤC HÌNH VẼ

DANH MỤC BẢNG

1. Chương 1. Phương pháp phân tích sự ảnh hưởng trong JCIA

1.1. Bộ công cụ JCIA

1.2. Phân tích các phụ thuộc

1.2.1. Tiền xử lý mã nguồn

1.2.2. Phân tích sự phụ thuộc cho Struts 2

1.2.3. Phân tích sự phụ thuộc trong Java Core

1.2.4. Phân tích phụ thuộc cho công nghệ kết nối cơ sở dữ liệu JDBC

1.2.5. Phân tích phụ thuộc cho Hibernate

1.3. Quản lý phiên bản

2. Phương pháp phân tích ảnh hưởng các thành phần giao diện và phân loại kiểm thử hồi quy

2.1. Phương pháp phân tích ảnh hưởng các thành phần giao diện

2.1.1. Phân tích kiến trúc Java Servlet

2.1.2. Phương pháp phân tích sự ảnh hưởng

2.2. Phương pháp phân loại kiểm thử hồi quy

2.2.1. Kiểm thử hồi quy

2.2.2. Phân loại kiểm thử hồi quy

2.2.3. Quy trình kiểm thử hồi quy dựa trên phương pháp đề xuất

3. Thực nghiệm và triển khai

3.1. Giới thiệu công cụ JCIA mở rộng

3.2. Ý nghĩa của công cụ thực nghiệm

TÀI LIỆU THAM KHẢO

Tóm tắt

I. Tổng quan về Luận văn ThS Kiểm thử Hồi quy Java EE

Trong bối cảnh phát triển phần mềm hiện đại, các ứng dụng web ngày càng phức tạp, đặc biệt là các ứng dụng sử dụng nền tảng Java EE. Nền tảng này được sử dụng rộng rãi để triển khai các ứng dụng web doanh nghiệp. Các ứng dụng này thường được phát triển trong thời gian dài, với quy mô lớn và độ phức tạp cao. Khi một phiên bản mới được bàn giao, do nâng cấp, sửa đổi mã nguồn, việc kiểm thử lại toàn bộ chức năng của phần mềm là rất cần thiết để đảm bảo các chức năng vẫn hoạt động tốt. Một sự thay đổi nhỏ trong ứng dụng cũng có thể gây ra những ảnh hưởng không thể dự đoán trước, hoặc thậm chí là các sai sót tiềm ẩn. Phương pháp đơn giản để kiểm thử hồi quy là chạy tất cả các ca kiểm thử của phiên bản trước. Tuy nhiên, việc kiểm thử lại toàn bộ này là rất tốn kém về thời gian và công sức. Do đó, để hoàn thành công việc kiểm thử đúng tiến độ và hiệu quả, các công ty phần mềm cần phải áp dụng các phương pháp và công cụ nhằm tối ưu được các hoạt động kiểm thử. Phương pháp phân tích sự ảnh hưởng của các thành phần kết hợp với công cụ kiểm thử tự động để thực hiện kiểm thử hồi quy là một giải pháp hữu hiệu nhằm nâng cao tính hiệu quả và chính xác, giảm thiểu chi phí và rút ngắn thời gian trong quá trình kiểm thử các sản phẩm phần mềm nói chung và các ứng dụng Web nói riêng. Thay vì kiểm thử lại toàn bộ ứng dụng, kiểm thử viên chỉ cần kiểm thử các thành phần bị thay đổi và thành phần có khả năng bị ảnh hưởng dựa trên thay đổi đó. Phân tích ảnh hưởng sự thay đổi (Change Impact Analysis - CIA) là giải pháp để giải quyết bài toán trên. CIA đóng một vai trò quan trọng trong các giai đoạn phát triển phần mềm, bảo trì và kiểm thử hồi quy. Đối với nhóm phát triển, CIA có thể được ứng dụng vào việc giúp nhận biết các thay đổi cần thực hiện dựa trên các thay đổi có sẵn. Đối với kiểm thử viên, CIA có thể ứng dụng vào việc xác định những ca kiểm thử có liên quan đến phần mã nguồn chỉnh sửa giúp giảm số lượng các ca kiểm thử và rút ngắn thời gian kiểm thử hồi quy mà vẫn đảm bảo được chất lượng phần mềm. Trong thực tế, có một số công cụ hỗ trợ quản lý phiên bản mã nguồn như Git, SVN, VSS, v., các công cụ này giúp lập trình viên quản lý được các dòng lệnh thay đổi qua các phiên bản khác nhau. Tuy nhiên, để có thể đánh giá được các ảnh hưởng từ sự thay đổi là chưa có giải pháp thỏa đáng. Một số nghiên cứu trước đã đề xuất các phương pháp và công cụ thực hiện việc đảm bảo chất lượng mã nguồn cho ứng dụng doanh nghiệp. Công cụ JCIA ra đời phần nào giải quyết được bài toán trên cho ứng dụng Java EE, công cụ giúp người dùng có thể thực hiện phân tích ảnh hưởng sự thay đổi cho các ứng dụng Java EE đa nền tảng, hỗ trợ các công nghệ nền tảng (framework) như Hibernate, Struts, Spring. Mặc dù vậy, công cụ này còn khá đơn giản, phân tích sự phụ thuộc chủ yếu cho mã nguồn Java và chưa mang lại tính hiệu quả trong việc kiểm thử hồi quy ở góc nhìn của kiểm thử viên.

1.1. Tầm quan trọng của kiểm thử hồi quy trong Java EE

Kiểm thử hồi quy đóng vai trò then chốt trong việc đảm bảo chất lượng và độ tin cậy của các ứng dụng Java EE. Các ứng dụng Java EE thường trải qua các thay đổi liên tục, từ việc sửa lỗi đến bổ sung tính năng mới. Việc thực hiện kiểm thử hồi quy giúp xác định xem những thay đổi này có gây ra tác động tiêu cực nào đến các chức năng hiện có hay không. Nếu không có kiểm thử hồi quy, những lỗi tiềm ẩn có thể xâm nhập vào hệ thống và gây ra hậu quả nghiêm trọng. Theo tài liệu gốc, phương pháp đơn giản để kiểm thử hồi quy là chạy tất cả các ca kiểm thử của phiên bản trước [1]. Tuy nhiên, việc kiểm thử lại toàn bộ này là rất tốn kém về thời gian và công sức.

1.2. Giới thiệu về Phân tích Ảnh hưởng Thay đổi CIA

Phân tích Ảnh hưởng Thay đổi (CIA) là một phương pháp quan trọng trong quá trình phát triển và bảo trì phần mềm. CIA giúp xác định các thành phần của hệ thống có thể bị ảnh hưởng bởi một thay đổi cụ thể. Trong bối cảnh kiểm thử hồi quy, CIA giúp tập trung nỗ lực kiểm thử vào các khu vực có khả năng bị ảnh hưởng cao nhất, giảm thiểu thời gian và chi phí kiểm thử. Theo tài liệu gốc, CIA đóng một vai trò quan trọng trong các giai đoạn phát triển phần mềm, bảo trì và kiểm thử hồi quy. Đối với nhóm phát triển, CIA có thể được ứng dụng vào việc giúp nhận biết các thay đổi cần thực hiện dựa trên các thay đổi có sẵn.

II. Thách thức Kiểm thử Hồi quy Tự động trong Java EE

Việc thực hiện kiểm thử hồi quy tự động trong các ứng dụng Java EE phức tạp đặt ra nhiều thách thức đáng kể. Thứ nhất, sự phức tạp của kiến trúc Java EE, với nhiều lớp và thành phần tương tác, làm cho việc xác định phạm vi ảnh hưởng của một thay đổi trở nên khó khăn. Thứ hai, các ứng dụng Java EE thường tích hợp với nhiều hệ thống bên ngoài, làm tăng thêm độ phức tạp của quá trình kiểm thử. Thứ ba, việc tạo và duy trì các bộ kiểm thử hồi quy tự động đòi hỏi kỹ năng và kiến thức chuyên môn sâu rộng về Java EE và các công cụ kiểm thử. Một trong những thách thức lớn nhất là việc duy trì các bộ kiểm thử hồi quy tự động khi ứng dụng thay đổi. Khi các chức năng mới được thêm vào hoặc các chức năng hiện có được sửa đổi, các bộ kiểm thử hồi quy cần được cập nhật để phản ánh những thay đổi này. Quá trình này có thể tốn thời gian và công sức, đặc biệt là đối với các ứng dụng lớn và phức tạp. Ngoài ra, việc chọn các công cụ kiểm thử phù hợp cũng là một thách thức quan trọng. Có nhiều công cụ kiểm thử hồi quy tự động có sẵn trên thị trường, nhưng không phải tất cả đều phù hợp với mọi ứng dụng Java EE. Việc lựa chọn công cụ phù hợp đòi hỏi sự đánh giá cẩn thận về các yêu cầu cụ thể của dự án và khả năng của các công cụ khác nhau. Cuối cùng, việc đảm bảo rằng các bộ kiểm thử hồi quy tự động thực sự hiệu quả trong việc phát hiện lỗi cũng là một thách thức. Các bộ kiểm thử cần được thiết kế cẩn thận để bao phủ tất cả các kịch bản quan trọng và đảm bảo rằng các lỗi được phát hiện một cách chính xác và kịp thời. Việc này đòi hỏi sự hiểu biết sâu sắc về ứng dụng và các rủi ro tiềm ẩn.

2.1. Sự phức tạp của Kiến trúc Java EE và Kiểm thử

Kiến trúc Java EE phức tạp bao gồm nhiều thành phần như Servlet, JSP, EJB, JPA, và nhiều framework khác như Spring Framework, Hibernate. Sự tương tác giữa các thành phần này tạo ra một mạng lưới phụ thuộc phức tạp, khiến cho việc xác định chính xác phạm vi ảnh hưởng của một thay đổi trở nên cực kỳ khó khăn. Ví dụ, một thay đổi nhỏ trong một Servlet có thể ảnh hưởng đến nhiều JSPEJB khác. Việc tự động hóa kiểm thử đòi hỏi phải xây dựng các kịch bản kiểm thử có khả năng bao phủ được các tương tác phức tạp này.

2.2. Tích hợp với Hệ thống Bên ngoài và Thách thức

Các ứng dụng Java EE thường xuyên tương tác với các hệ thống bên ngoài như cơ sở dữ liệu, dịch vụ web (REST API, SOAP), và các ứng dụng khác. Việc kiểm thử các tương tác này đòi hỏi phải sử dụng các công cụ mô phỏng (Mockito, WireMock) và các kỹ thuật kiểm thử tích hợp phức tạp. Ngoài ra, việc quản lý dữ liệu kiểm thử và đảm bảo tính nhất quán của dữ liệu giữa các hệ thống cũng là một thách thức lớn. Ví dụ, việc kiểm thử một ứng dụng Java EE tương tác với một cơ sở dữ liệu quan hệ (JDBC) đòi hỏi phải tạo ra các bản ghi kiểm thử và đảm bảo rằng các bản ghi này được cập nhật chính xác sau mỗi lần chạy kiểm thử.

2.3. Kỹ năng và Kiến thức Chuyên môn cần thiết

Để xây dựng và duy trì các bộ kiểm thử hồi quy tự động hiệu quả, các chuyên gia kiểm thử cần có kiến thức sâu rộng về Java EE, các framework liên quan, và các công cụ kiểm thử tự động như JUnit, TestNG, và Selenium. Họ cũng cần có kỹ năng lập trình tốt để có thể viết các kịch bản kiểm thử phức tạp và tùy chỉnh các công cụ kiểm thử theo yêu cầu của dự án. Ngoài ra, kiến thức về các mẫu thiết kế và các phương pháp kiểm thử phần mềm cũng rất quan trọng để đảm bảo rằng các bộ kiểm thử được thiết kế một cách hiệu quả và bao phủ được tất cả các rủi ro tiềm ẩn.

III. Phương pháp Phân tích Ảnh hưởng Thay đổi CIA trong Java EE

Để giải quyết các thách thức kiểm thử hồi quy trong Java EE, việc áp dụng phương pháp Phân tích Ảnh hưởng Thay đổi (CIA) là vô cùng quan trọng. CIA giúp xác định các thành phần của ứng dụng có thể bị ảnh hưởng bởi một thay đổi cụ thể, từ đó tập trung nỗ lực kiểm thử vào các khu vực có nguy cơ cao nhất. CIA có thể được thực hiện bằng nhiều cách, từ phân tích thủ công đến sử dụng các công cụ tự động. Phân tích thủ công đòi hỏi sự hiểu biết sâu sắc về kiến trúc ứng dụng và các phụ thuộc giữa các thành phần. Các công cụ tự động có thể giúp giảm bớt công sức phân tích bằng cách tự động phát hiện các phụ thuộc và xác định các thành phần có thể bị ảnh hưởng. Một số công cụ CIA còn có khả năng phân tích mã nguồn để xác định các dòng mã có thể bị ảnh hưởng bởi một thay đổi cụ thể. Khi thực hiện CIA, cần xem xét nhiều yếu tố khác nhau, bao gồm: - Loại thay đổi: Các thay đổi nhỏ có thể chỉ ảnh hưởng đến một vài thành phần, trong khi các thay đổi lớn có thể ảnh hưởng đến toàn bộ ứng dụng. - Vị trí thay đổi: Các thay đổi ở các thành phần quan trọng có thể có tác động lớn hơn các thay đổi ở các thành phần ít quan trọng. - Phụ thuộc: Các thành phần có nhiều phụ thuộc có khả năng bị ảnh hưởng cao hơn các thành phần có ít phụ thuộc. Sau khi thực hiện CIA, cần ưu tiên kiểm thử các thành phần có nguy cơ bị ảnh hưởng cao nhất. Việc này giúp đảm bảo rằng các lỗi tiềm ẩn được phát hiện một cách nhanh chóng và hiệu quả.

3.1. Phân tích Phụ thuộc Mã nguồn Java EE

Phân tích phụ thuộc mã nguồn là một phần quan trọng của CIA. Quá trình này bao gồm việc xác định các phụ thuộc giữa các lớp, phương thức, và các thành phần khác trong ứng dụng Java EE. Các phụ thuộc này có thể được xác định bằng cách phân tích mã nguồn, sử dụng các công cụ phân tích tĩnh, hoặc dựa trên thông tin cấu hình. Dựa vào các quan hệ này, bộ phân tích phụ thuộc cho Java Core sẽ phân tích các nút là thành phần Java trên biểu đồ phụ thuộc Java EE và xác định phụ thuộc Java Core giữa các thành phần. Quan hệ phụ thuộc: hai lớp gọi là phụ thuộc nếu phương thức của lớp này sử dụng đối tượng của lớp kia để thực hiện các thao tác.

3.2. Sử dụng Công cụ CIA Tự động cho Java EE

Có nhiều công cụ CIA tự động có sẵn cho Java EE, chẳng hạn như JCIA. Các công cụ này có thể giúp giảm bớt công sức phân tích bằng cách tự động phát hiện các phụ thuộc và xác định các thành phần có thể bị ảnh hưởng. Một số công cụ còn có khả năng phân tích mã nguồn để xác định các dòng mã có thể bị ảnh hưởng bởi một thay đổi cụ thể. Công cụ JCIA ra đời với mục đích hỗ trợ xây dựng phần mềm hiệu quả và dễ dàng hơn. Công cụ hỗ trợ phân tích ảnh hưởng của sự thay đổi cho các dự án viết bằng Java EE sử dụng các công nghệ: EJB, JSF, CDI, JAX-WS, JPA, v. JCIA bao gồm các mô-đun chính: bộ xử lý cơ sở, bộ phân tích ảnh hưởng sự thay đổi, bộ phân tích cấu trúc, bộ trình diễn, bộ quản lý người dùng và lịch sử phân tích.

3.3. Ưu tiên Kiểm thử Dựa trên Rủi ro Ảnh hưởng

Sau khi thực hiện CIA, cần ưu tiên kiểm thử các thành phần có nguy cơ bị ảnh hưởng cao nhất. Điều này có thể được thực hiện bằng cách đánh giá rủi ro của từng thành phần dựa trên các yếu tố như mức độ quan trọng của thành phần, số lượng phụ thuộc, và mức độ thay đổi. Các thành phần có rủi ro cao nhất nên được kiểm thử trước, và các thành phần có rủi ro thấp hơn có thể được kiểm thử sau hoặc bỏ qua. Việc này giúp đảm bảo rằng các lỗi tiềm ẩn được phát hiện một cách nhanh chóng và hiệu quả. Khi phát triển phần mềm liên quan đến thay đổi mã nguồn do lỗi hoặc bổ sung tính năng mới, khách hàng muốn có các tính năng mới trong phiên bản mới nhất, nhưng mong đợi các tính năng cũ vẫn giữ nguyên. Dựa vào kinh nghiệm đã cho thấy những sửa đổi này có thể gây ra chức năng làm việc trước đó thất bại.

IV. Ứng dụng JCIA trong Kiểm thử Hồi quy Java EE Ví dụ Thực tiễn

Để minh họa cách phương pháp CIA có thể được áp dụng trong kiểm thử hồi quy Java EE, hãy xem xét một ví dụ thực tế. Giả sử một ứng dụng quản lý bệnh viện Java EE được phát triển và đã trải qua nhiều lần sửa đổi. Một thay đổi được thực hiện đối với lớp quản lý bệnh nhân để thêm một trường mới vào cơ sở dữ liệu. Sử dụng công cụ JCIA, chúng ta có thể xác định các thành phần có thể bị ảnh hưởng bởi thay đổi này. Ví dụ, chúng ta có thể thấy rằng các trang JSP hiển thị thông tin bệnh nhân, các Servlet xử lý các yêu cầu liên quan đến bệnh nhân, và các EJB truy cập dữ liệu bệnh nhân có thể bị ảnh hưởng. Chúng ta cũng có thể thấy rằng các công cụ quản lý mã nguồn có thể thấy được các dòng lệnh thay đổi. Tuy nhiên việc kiểm thử như thế nào, phân loại ra sao và được thực hiện bởi lập trình viên hay kiểm thử viên là chưa có công cụ nào hỗ trợ. Các công cụ quản lý mã nguồn hiện nay đều không hỗ trợ tích hợp kiểm thử. Sau khi xác định các thành phần có thể bị ảnh hưởng, chúng ta có thể ưu tiên kiểm thử các thành phần này. Chúng ta có thể bắt đầu bằng cách kiểm thử các trang JSP để đảm bảo rằng trường mới được hiển thị chính xác. Sau đó, chúng ta có thể kiểm thử các Servlet để đảm bảo rằng chúng có thể xử lý các yêu cầu liên quan đến trường mới. Cuối cùng, chúng ta có thể kiểm thử các EJB để đảm bảo rằng chúng có thể truy cập dữ liệu của trường mới. Bằng cách tập trung nỗ lực kiểm thử vào các thành phần có nguy cơ bị ảnh hưởng cao nhất, chúng ta có thể đảm bảo rằng các lỗi tiềm ẩn được phát hiện một cách nhanh chóng và hiệu quả. Ngoài ra, công cụ gồm ba phần giao diện chính: Project View, Central View bao gồm Dependency View và Change Impact View, Change Set View và Impact Set View.

4.1. Mô tả Chi tiết Ví dụ Ứng dụng Quản lý Bệnh viện

Ví dụ ứng dụng quản lý bệnh viện bao gồm các chức năng quản lý nhân viên, quản lý thông tin bệnh nhân, quản lý đặt phòng, quản lý thuốc, và quản lý dịch vụ khám chữa bệnh. Ứng dụng này sử dụng Java Servlet cho phần giao diện người dùng, EJB cho phần xử lý nghiệp vụ, và JPA cho phần truy cập dữ liệu. Các chức năng này được phân theo các quyền như: Admin, Receptionist và Pharmacist. Việc kiểm thử hồi quy trong ứng dụng này là rất quan trọng để đảm bảo rằng các thay đổi không ảnh hưởng đến các chức năng hiện có.

4.2. Phân tích Ảnh hưởng Thay đổi cho Chức năng Thêm Bệnh nhân

Giả sử chúng ta thêm một trường mới (ví dụ, số điện thoại) vào chức năng thêm bệnh nhân. Sử dụng JCIA, chúng ta có thể xác định rằng các thành phần có thể bị ảnh hưởng bao gồm: - Trang JSP hiển thị form thêm bệnh nhân. - Servlet xử lý yêu cầu thêm bệnh nhân. - EJB lưu trữ thông tin bệnh nhân vào cơ sở dữ liệu. - Các trang JSP hiển thị danh sách bệnh nhân. Việc kiểm thử hồi quy cần tập trung vào việc đảm bảo rằng trường số điện thoại được hiển thị chính xác trên form thêm bệnh nhân, được xử lý chính xác bởi Servlet, được lưu trữ chính xác trong cơ sở dữ liệu bởi EJB, và được hiển thị chính xác trên danh sách bệnh nhân.

4.3. Kết quả Kiểm thử Hồi quy và Đánh giá Hiệu quả JCIA

Sau khi thực hiện kiểm thử hồi quy, chúng ta có thể đánh giá hiệu quả của JCIA bằng cách so sánh số lượng ca kiểm thử cần thực hiện với và không có JCIA. Nếu JCIA giúp giảm đáng kể số lượng ca kiểm thử cần thực hiện mà vẫn đảm bảo chất lượng, thì JCIA được coi là hiệu quả. Ngoài ra, chúng ta cũng có thể đánh giá hiệu quả của JCIA bằng cách đo thời gian cần thiết để thực hiện kiểm thử hồi quy với và không có JCIA. Nếu JCIA giúp giảm thời gian kiểm thử, thì JCIA được coi là hiệu quả. Luận văn đề xuất một quy trình kiểm thử hồi quy dựa trên kết quả của công cụ JCIA, mã nguồn dự án Java EE phiên bản trước khi thay đổi sẽ được đưa vào công cụ để phân tích, sau đó một phiên bản mã nguồn Java EE được sửa đổi sẽ được đưa vào công cụ JCIA mở rộng để so sánh hai phiên bản và tìm ra các thành phần bị ảnh hưởng. Sau khi có được kết quả đầu ra là các thành phần thay đổi và bị ảnh hưởng, các thành phần này sẽ được phân loại dựa trên các tệp mã nguồn là Java Core hay JSP.

V. Kết luận và Hướng Nghiên cứu Luận văn Kiểm thử Hồi quy

Luận văn này đã trình bày một phương pháp tiếp cận kiểm thử hồi quy hiệu quả cho các ứng dụng Java EE phức tạp bằng cách sử dụng Phân tích Ảnh hưởng Thay đổi (CIA) và công cụ JCIA. Phương pháp này giúp tập trung nỗ lực kiểm thử vào các khu vực có nguy cơ cao nhất, giảm thiểu thời gian và chi phí kiểm thử. Tuy nhiên, vẫn còn nhiều hướng nghiên cứu có thể được khám phá để cải thiện hơn nữa hiệu quả của kiểm thử hồi quy Java EE. Một hướng nghiên cứu là phát triển các công cụ CIA tự động mạnh mẽ hơn, có khả năng phân tích mã nguồn chi tiết hơn và xác định các phụ thuộc phức tạp hơn. Một hướng nghiên cứu khác là phát triển các phương pháp ưu tiên kiểm thử thông minh hơn, có khả năng dự đoán chính xác hơn các thành phần có nguy cơ bị ảnh hưởng cao nhất. Một vấn đề quan trọng cần giải quyết từ Mã nguồn 2.5 làm thế nào để biết được câu truy vấn cuối cùng có giá trị gì và có ảnh hưởng đến bảng nào trong cơ sử dữ liệu. Hiện nay có một vài công cụ đã giải quyết được vấn đề này: JSA, JDBC Checker, v. Cuối cùng, việc tích hợp các công cụ CIA và các công cụ kiểm thử tự động có thể giúp tạo ra một quy trình kiểm thử hồi quy liền mạch và hiệu quả hơn. Ngoài ra, luận văn cũng phát triển một giải pháp phân loại kiểm thử sau khi có được tập thay đổi và ảnh hưởng từ hai phiên bản khác nhau để hỗ trợ cho việc kiểm thử hồi quy được thực hiện một cách hiệu quả.

5.1. Tóm tắt Đóng góp của Luận văn về Kiểm thử Java EE

Luận văn này đã đóng góp vào lĩnh vực kiểm thử Java EE bằng cách đề xuất một phương pháp tiếp cận dựa trên CIA và công cụ JCIA. Phương pháp này giúp giảm thiểu thời gian và chi phí kiểm thử bằng cách tập trung nỗ lực kiểm thử vào các khu vực có nguy cơ cao nhất. Ngoài ra, luận văn cũng cung cấp một ví dụ thực tế về cách phương pháp này có thể được áp dụng trong một ứng dụng quản lý bệnh viện Java EE.

5.2. Các Hạn chế của Phương pháp và Công cụ JCIA

Mặc dù phương pháp và công cụ JCIA đã chứng minh hiệu quả trong việc giảm thiểu thời gian và chi phí kiểm thử, nhưng vẫn còn một số hạn chế cần được giải quyết. Một hạn chế là khả năng phân tích mã nguồn của JCIA còn hạn chế, đặc biệt là đối với các phụ thuộc phức tạp. Một hạn chế khác là JCIA chưa hỗ trợ đầy đủ tất cả các framework Java EE phổ biến. Trong Mã nguồn Java, có ba loại quan hệ chính giữa các lớp: quan hệ phụ thuộc, thành phần và kế thừa. Dựa vào các quan hệ này, bộ phân tích phụ thuộc cho Java Core sẽ phân tích các nút là thành phần Java trên biểu đồ phụ thuộc Java EE và xác định phụ thuộc Java Core giữa các thành phần.

5.3. Đề xuất Các Hướng Nghiên cứu Tiếp theo về Hồi quy Java EE

Các hướng nghiên cứu tiếp theo có thể tập trung vào việc cải thiện khả năng phân tích mã nguồn của JCIA, hỗ trợ thêm nhiều framework Java EE hơn, và phát triển các phương pháp ưu tiên kiểm thử thông minh hơn. Ngoài ra, việc tích hợp JCIA với các công cụ kiểm thử tự động khác có thể giúp tạo ra một quy trình kiểm thử hồi quy liền mạch và hiệu quả hơn. Trong nghiên cứu này, công nghệ Java Servlet sẽ được tập trung hỗ trợ đầu tiên. Sau đó, luận văn sẽ hoàn thiện dần phương pháp cho các nền tảng khác.

24/09/2025

Trích đoạn nội dung tài liệu

Chương 1. Phương pháp phân tích sự ảnh hưởng trong JCIA .1 Bộ công cụ JCIA .2 Phân tích các phụ thuộc .1 Tiền xử lý mã nguồn .2 Phân tích sự phụ thuộc cho Struts 2 .3 Phân tích sự phụ thuộc trong Java Core .4 Phân tích phụ thuộc cho công nghệ kết nối cơ sở dữ liệu JDBC .5 Phân tích phụ thuộc cho Hibernate .3 Quản lý phiên bản. Phương pháp phân tích ảnh hưởng các thành phần giao diện và phân loại kiểm thử hồi quy .1 Phương pháp phân tích ảnh hưởng các thành phần giao diện .1 Phân tích kiến trúc Java Servlet .2 Phương pháp phân tích sự ảnh hưởng.2 Phương pháp phân loại kiểm thử hồi quy .1 Kiểm thử hồi quy .2 Phân loại kiểm thử hồi quy .3 Quy trình kiểm thử hồi quy dựa trên phương pháp đề xuất. Thực nghiệm và triển khai .1 Giới thiệu công cụ JCIA mở rộng.

Ý nghĩa của công cụ thực nghiệm. 53 TIEU LUAN MOI download : skknchat@gmail.com ii TÀI LIỆU THAM KHẢO. 56 TIEU LUAN MOI download : skknchat@gmail.com iii LỜI CAM ĐOAN Tôi xin cam đoan rằng những nghiên với đề tài “Phương pháp phân tích sự ảnh hưởng của các thành phần và ứng dụng cho kiểm thử hồi quy trong các dự án Java EE” được trình bày trong luận văn này là công trình nghiên cứu của riêng tôi dưới sự hướng dẫn của thầy giáo PGS. Phạm Ngọc Hùng, không sao chép lại của người khác.

Tất cả các nguồn tài liệu tham khảo, các công trình nghiên cứu liên quan đều được trích dẫn cụ thể. Tôi xin chịu hoàn toàn trách nhiệm nếu có bất kỳ phát hiện nào về sự sao chép mà không có trích dẫn trong tài liệu tham khảo. TIEU LUAN MOI download : skknchat@gmail.com iv LỜI CẢM ƠN Đầu tiên, tôi xin gửi lời cảm ơn chân thành tới thầy giáo PGS. Phạm Ngọc Hùng - người đã hướng dẫn tận tình, chỉ bảo và đóng góp ý kiến quý báu cho tôi trong suốt quá trình học tập và làm khóa luận.

Trong quãng thời gian được thầy hướng dẫn, tôi đã học hỏi được nhiều kinh nghiệm về phương pháp nghiên cứu, kỹ năng trình bày. Thầy còn tiếp thêm cho tôi niềm tin vượt qua khó khăn giúp tôi trưởng thành hơn trong cuộc sống. Tôi xin gửi lời cảm ơn chân thành đến các thầy cô giáo khoa Công nghệ thông tin trường Đại học Công nghệ - Đại học Quốc gia Hà Nội đã tận tình truyền đạt những kiến thức quý báu, tạo điều kiện tốt nhất cho tôi trong suốt thời gian học tập và nghiên cứu. Tiếp theo, tôi xin gửi lời cảm ơn đến gia đình và người thân đã luôn bên cạnh động viên, cổ vũ và là chỗ dựa vững chắc để tôi yên tâm học hành trong suốt những năm qua.

Tôi cũng xin gửi lời cảm ơn chân thành đến Bùi Quang Cường và Ngô Hải Yến đã tạo điều kiện giúp đỡ tôi để nghiên cứu công cụ JCIA. Mặc dù đã rất cố gắng nhưng luận văn chắc chắn không tránh khỏi những thiếu sót, tôi rất mong nhận được những ý kiến đánh giá và phê bình từ phía các Thầy Cô để luận văn được hoàn thiện hơn. Tôi xin chân thành cảm ơn! Hà Nội, tháng 10 năm 2018 Học viên Nguyễn Thị Hồng Vân TIEU LUAN MOI download : skknchat@gmail.com v DANH MỤC THUẬT NGỮ VIẾT TẮT STT Từ viết tắt Từ đầy đủ Ý nghĩa 1 AST Abstract Syntax Tree Cây cấu trúc trừu tượng 2 CIA Change Impact Analysis Phân tích ảnh hưởng sự thay đổi 3 DAO Data Access Object Đối tượng truy cập dữ liệu 4 ERD Entity Relationship Biểu đồ quan hệ thực thể Diagram 5 Java EE Java Enterprise Edition Java phiên bản doanh nghiệp 6 JCIA Java Change Impact Phân tích ảnh hưởng sự Analysis thay đổi mã nguồn trong các dự án Java 7 JDBC Java Database Connectivity Giao diện tương tác với cơ sở dữ liệu quan hệ trong Java 8 JDG Java Dependency Graph Đồ thị phụ thuộc Java EE 9 MVC Model - View - Controller Mô hình thiết kế ứng dụng Web 10 ORM Object Relational Mapping Ánh xạ quan hệ đối tượng TIEU LUAN MOI download : skknchat@gmail.com vi DANH MỤC HÌNH VẼ Hình 2. Giao diện chính của công cụ JCIA.

Màn hình Project View. Màn hình Dependency View. Change Impact View. Hiển thị mã nguồn.

Change Set View. Impact Set View. Mô hình ứng dụng Struts2. Quy trình phân tích sự phụ thuộc cho ứng dụng Struts 2.

Ví dụ minh họa đồ thị chuỗi. Quá trình xây dựng và dự đoán câu truy vấn. Quá trình phân tích phụ thuộc cho Hibernate. So sánh cây cấu trúc giữa hai phiên bản mã nguồn.

Kiến trúc Java Servlet. Vòng đời của Java Servlet. Mã nguồn sử dụng nền tảng Java Servlet. Phân loại kiểm thử hồi quy.

Quy trình kiểm thử hồi quy đề xuất. Kiến trúc của công cụ JCIA. Kết quả đầu ra của công cụ. Ứng dụng Web quản lý bệnh viện.

Lỗi xảy ra ở phiên bản 1. Yêu cầu thêm mới cho giao diện quản lý bệnh nhân. Nghiệp vụ liên quan đến Health Insurance. Kết quả tập thay đổi và ảnh hưởng cho kiểm thử đơn vị.

Kết quả tập thay đổi và ảnh hưởng cho kiểm thử giao diện. Kết quả kiểm thử hồi quy giao diện với Ranorex. Kết quả tập thay đổi và ảnh hưởng cho kiểm thử tích hợp. 52 TIEU LUAN MOI download : skknchat@gmail.com vii TIEU LUAN MOI download : skknchat@gmail.com viii DANH MỤC BẢNG Bảng 2.

Ý nghĩa các kiểu cạnh trong đồ thị chuỗi. Các phương thức truy xuất CSDL có sẵn của Hibernate. Mô tả yêu cầu chức năng quản lý nhân viên. Mô tả yêu cầu chức năng quản lý phòng.

Mô tả yêu cầu chức năng quản lý dịch vụ. Mô tả yêu cầu chức năng quản lý bệnh nhân. Mô tả yêu cầu chức năng đặt phòng. Mô tả yêu cầu chức năng quản lý thuốc.

Mô tả yêu cầu chức năng quản lý bán thuốc. 44 TIEU LUAN MOI download : skknchat@gmail.com 9 Chƣơng 1. Giới thiệu Trong lĩnh vực phát triển phần mềm hiện nay, hầu hết các ứng dụng phần mềm đều được phát triển trên nền Web. Chính vì vậy, việc kiểm thử để đảm bảo chất lượng các ứng dụng Web là một vấn đề rất cần thiết.

Tuy nhiên, các ứng dụng Web ngày càng trở nên phức tạp, đặc biệt là đối với các ứng dụng Web sử dụng nền tảng Java EE - một trong những giải pháp đang được sử dụng phổ biến để triển khai cho các ứng dụng Web doanh nghiệp. Các ứng dụng này thường được phát triển trong thời gian dài, với quy mô lớn và có độ phức tạp cao, ví dụ như các ứng dụng xử lý nghiệp vụ logic trong các lĩnh vực ngân hàng, thuế, kế toán, v. Khi một phiên bản mới được bàn giao có thể là do nâng cấp, sửa đổi mã nguồn, v., việc kiểm thử viên phải kiểm thử lại toàn bộ chức năng của phần mềm là rất cần thiết để đảm bảo các chức năng vẫn hoạt động tốt, bởi vì một sự thay đổi nhỏ trong ứng dụng cũng có thể gây ra một số ảnh hưởng không thể dự đoán trước hay thậm chí là cả những sai sót tiềm ẩn bên trong đối với ứng dụng đang phát triển. Phương pháp đơn giản để kiểm thử hồi quy là chạy tất cả các ca kiểm thử của phiên bản trước [1].

Tuy nhiên, việc kiểm thử lại toàn bộ này là rất tốn kém về thời gian và công sức. Do đó, để hoàn thành công việc kiểm thử đúng tiến độ và hiệu quả, các công ty phần mềm cần phải áp dụng các phương pháp và công cụ nhằm tối ưu được các hoạt động kiểm thử. Phương pháp phân tích sự ảnh hưởng của các thành phần kết hợp với công cụ kiểm thử tự động để thực hiện kiểm thử hồi quy là một giải pháp hữu hiệu nhằm nâng cao tính hiệu quả và chính xác, giảm thiểu chi phí và rút ngắn thời gian trong quá trình kiểm thử các sản phẩm phần mềm nói chung và các ứng dụng Web nói riêng. Thay vì kiểm thử lại toàn bộ ứng dụng, kiểm thử viên chỉ cần kiểm thử các thành phần bị thay đổi và thành phần có khả năng bị ảnh hưởng dựa trên thay đổi đó.

Phân tích ảnh hưởng sự thay đổi (Change Impact Analysis - CIA) [3,4,5] là giải pháp để giải quyết bài toán trên. CIA đóng một vai trò quan trọng trong các giai đoạn phát triển phần mềm, bảo trì và kiểm thử hồi quy. Đối với nhóm phát triển, CIA có thể được ứng dụng vào việc giúp nhận biết các thay đổi cần thực hiện dựa trên các thay đổi có sẵn. Đối với kiểm thử viên, CIA có thể ứng dụng vào việc xác định những ca kiểm thử có liên quan đến phần mã nguồn chỉnh sửa giúp giảm số lượng các ca kiểm thử và rút ngắn thời gian kiểm thử hồi quy mà vẫn đảm bảo được chất lượng phần mềm.

Trong thực tế, có một số công cụ hỗ trợ quản lý phiên bản mã nguồn như Git, SVN, VSS, v., các công cụ này giúp lập trình viên quản lý được các dòng lệnh thay đổi qua các phiên bản khác nhau. Tuy nhiên, để có thể đánh giá được TIEU LUAN MOI download : skknchat@gmail.com 10 các ảnh hưởng từ sự thay đổi là chưa có giải pháp thỏa đáng. Một số nghiên cứu trước đã đề xuất các phương pháp và công cụ thực hiện việc đảm bảo chất lượng mã nguồn cho ứng dụng doanh nghiệp [2]. Công cụ JCIA ra đời phần nào giải quyết được bài toán trên cho ứng dụng Java EE, công cụ giúp người dùng có thể thực hiện phân tích ảnh hưởng sự thay đổi cho các ứng dụng Java EE đa nền tảng, hỗ trợ các công nghệ nền tảng (framework) như Hibernate, Struts, Spring.

Mặc dù vậy, công cụ này còn khá đơn giản, phân tích sự phụ thuộc chủ yếu cho mã nguồn Java và chưa mang lại tính hiệu quả trong việc kiểm thử hồi quy ở góc nhìn của kiểm thử viên. Dựa trên ý tưởng về phương pháp phân tích phụ thuộc trong mã nguồn Java, một cải tiến được nghiên cứu nhằm phân tích ảnh hưởng sự thay đổi cho các thành phần liên quan đến giao diện, từ đó kiểm thử viên sẽ có góc nhìn khách quan hơn về công việc kiểm thử hồi quy cần thực hiện trên các giao diện thay đổi và ảnh hưởng, cũng như đưa ra một cái nhìn khách quan giữa lập trình viên và kiểm thử viên. Trong nghiên cứu này, công nghệ Java Servlet sẽ được tập trung hỗ trợ đầu tiên. Sau đó, luận văn sẽ hoàn thiện dần phương pháp cho các nền tảng khác.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ