Tóm tắt luận văn ngành Thạc sĩ Công nghệ thông tin: Các giải pháp cho mạng riêng ảo kiểu site-t
1 Giới thiệu Trong lĩnh vực phát triển phần mềm nay, hầu hết ứng dụng phần mềm phát triển Web Chính vậy, việc kiểm thử để đảm bảo chất lượng ứng dụng Web vấn đề cần thiết Tuy nhiên, ứng dụng Web ngày trở nên phức tạp, đặc biệt ứng dụng Web sử dụng tảng Java EE - giải pháp sử dụng phổ biến để triển khai cho ứng dụng Web doanh nghiệp Các ứng dụng thường phát triển thời gian dài, với quy mơ lớn có độ phức tạp cao, ví dụ ứng dụng xử lý nghiệp vụ logic lĩnh vực ngân hàng, thuế, kế toán, v.v Khi phiên bàn giao nâng cấp, sửa đổi mã nguồn, v.v., việc kiểm thử viên phải kiểm thử lại toàn chức phần mềm cần thiết để đảm bảo chức hoạt động tốt, thay đổi nhỏ ứng dụng gây số ảnh hưởng dự đốn trước hay chí sai sót tiềm ẩn bên ứng dụng phát triển Phương pháp đơn giản để kiểm thử hồi quy chạy tất ca kiểm thử phiên trước [1] Tuy nhiên, việc kiểm thử lại toàn tốn thời gian cơng sức Do đó, để hồn thành cơng việc kiểm thử tiến độ hiệu quả, công ty phần mềm cần phải áp dụng phương pháp công cụ nhằm tối ưu hoạt động kiểm thử Phương pháp phân tích ảnh hưởng thành phần kết hợp với công cụ kiểm thử tự động để thực kiểm thử hồi quy giải pháp hữu hiệu nhằm nâng cao tính hiệu xác, giảm thiểu chi phí rút ngắn thời gian trình kiểm thử sản phẩm phần mềm nói chung ứng dụng Web nói riêng Thay kiểm thử lại tồn ứng dụng, kiểm thử viên cần kiểm thử thành phần bị thay đổi thành phần có khả bị ảnh hưởng dựa thay đổi Phân tích ảnh hưởng thay đổi (Change Impact Analysis - CIA) [3,4,5] giải pháp để giải toán CIA đóng vai trị quan trọng giai đoạn phát triển phần mềm, bảo trì kiểm thử hồi quy Đối với nhóm phát triển, CIA ứng dụng vào việc giúp nhận biết thay đổi cần thực dựa thay đổi có sẵn Đối với kiểm thử viên, CIA ứng dụng vào việc xác định 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 ca kiểm thử rút ngắn thời gian kiểm thử hồi quy mà đảm bảo chất lượng phần mềm.Java EE xem giải pháp phổ biến để triển khai ứng dụng Web doanh nghiệp Các công nghệ cốt lõi sử dụng Java EE bao gồm: EJB, JSF, CDI, JAX-WS, v.v tích hợp với framework khác Hibernate, Struts, Spring, v.v Công cụ JCIA đời phần giải toán cho ứng dụng Java EE, cơng cụ giúp ta thực phân tích ảnh hưởng thay đổi cho ứng dụng Java EE đa tảng, hỗ trợ framework Hibernate, Struts, Spring Tuy nhiên công cụ cịn đơn giản, phân tích phụ thuộc chủ yếu cho mã nguồn Java chưa mang lại tính hiệu cao việc kiểm thử hồi quy góc nhìn kiểm thử viên Trong thực tế, có số cơng cụ hỗ trợ quản lý phiên mã nguồn Git, SVN, VSS, v.v., cơng cụ giúp lập trình viên quản lý dòng lệnh thay đổi qua phiên khác Tuy nhiên, để đánh giá ảnh hưởng từ thay đổi chưa có giải pháp thỏa đáng Một số nghiên cứu trước đề xuất phương pháp công cụ thực việc đảm bảo chất lượng mã nguồn cho ứng dụng doanh nghiệp [2] Công cụ JCIA đời phần giải toán cho ứng dụng Java EE, cơng cụ giúp người dùng thực phân tích ảnh hưởng thay đổi cho ứng dụng Java EE đa tảng, hỗ trợ công nghệ tảng (framework) Hibernate, Struts, Spring Mặc dù vậy, cơng cụ cịn đơn giản, phân tích phụ thuộc chủ yếu cho mã nguồn Java chưa mang lại tính hiệu việc kiểm thử hồi quy góc nhìn kiểm thử viên Dựa ý tưởng phương pháp phân tích phụ thuộc mã nguồn Java, cải tiến nghiên cứu nhằm phân tích ảnh hưởng thay đổi cho thành phần liên quan đến giao diện, từ kiểm thử viên có góc nhìn khách quan cơng việc kiểm thử hồi quy cần thực giao diện thay đổi ảnh hưởng, đưa nhìn khách quan lập trình viên kiểm thử viên Trong nghiên cứu này, công nghệ Java Servlet tập trung hỗ trợ Sau đó, luận văn hồn thiện dần phương pháp cho tảng khác Ngoài ra, luận văn phát triển giải pháp phân loại kiểm thử sau có tập thay đổi ảnh hưởng từ hai phiên khác để hỗ trợ cho việc kiểm thử hồi quy thực cách hiệu Một công cụ phát triển phiên công cụ JCIA [5] để thực giải pháp triển khai tiến hành thực nghiệm nhằm minh chứng cho tính hiệu cơng cụ phát triển Phần cịn lại luận văn cấu trúc sau Chương trình bày phương pháp phân tích ảnh hưởng công cụ JCIA thực Ở Chương 3, luận văn giới thiệu phương pháp cải tiến bao gồm phương pháp phân tích phụ thuộc cho thành phần giao diện công nghệ Java Servlet, phân loại kiểm thử từ tập thay đổi tập ảnh hưởng tìm Tiếp đến, Chương mơ tả cơng cụ hỗ trợ, kết thực nghiệm thảo luận Cuối cùng, Chương kết luận luận văn định hướng nghiên cứu tương lai 2 Phương pháp phân tích ảnh hưởng JCIA 2.1 Giới thiệu công cụ JCIA Trong trình phát triển phần mềm, việc đời phiên thay phiên cũ tất yếu để giải yêu cầu thay đổi từ khách hàng, sửa lỗi, mở rộng hệ thống, v.v Một thành phần phần mềm bị thay đổi thuộc tính, phương thức, tệp tập tệp Khi nhiều thành phần thay đổi, tập thành phần khác bị ảnh hưởng Đối với lập trình viên, họ khơng nắm rõ hết thay đổi cẩn thực dựa thay đổi có sẵn Đối với người quản lý họ quan tâm đến ảnh hưởng thành phần mã nguồn có thay đổi xảy Cơng cụ JCIA đời với mục đích hỗ trợ xây dựng phần mềm hiệu dễ dàng Công cụ hỗ trợ phân tích ảnh hưởng thay đổi cho dự án viết Java EE sử dụng công nghệ: EJB, JSF, CDI, JAX-WS, JPA JMS, v.v Công cụ thiết kế mang lại tối giản thao tác người sử dụng Bộ công cụ nhận đầu vào toàn mã nguồn dự án doanh nghiệp sử dụng tảng công nghệ Java EE dạng tệp nén Người dùng tải dự án lên JCIA, công cụ hiển thị cấu trúc dự án đồ thị phụ thuộc thành phần Để phân tích thay đổi, người dùng đánh dấu thành phần dự kiến thay đổi yêu cầu cơng cụ phân tích Sau phân tích xong, thành phần dự đoán thay đổi hiển thị Một cách khác, cơng cụ JCIA phân tích tự động cách tải lên mã nguồn thay đổi so sánh hai phiên mã nguồn phân tích ảnh hưởng, trả báo cáo kết 2.2 Tổng quan công cụ JCIA JCIA bao gồm năm mơ-đun chính: xử lý sở, phân tích ảnh hưởng tha đổi, phân tích cấu trúc, trình diễn, quản lý người dùng lịch sử phân tích Mơ- đun xử lý sở bao gồm hai thành phần co tiền xử lý phân tích phụ thuộc theo công nghệ tảng để sinh cấu trúc phụ thuộc cho nút JCIA cung cấp hai cách để thực việc phân tích ảnh hưởng thay đổi hai cách: Người dùng chọn tập thay đổi phân tích trực tiếp giao diện hiển thị phụ thuộc Đầu vào mã nguồn, đầu kiến trúc mã nguồn thể dạng đồ thị dạng đồ thị phụ thuộc Phân tích tự động cách người dùng tải lên mã nguồn thay đổi, công cụ thực so sánh hai phiên mã nguồn phân tích ảnh hưởng trả kết báo cáo Cơng cụ gồm ba phần giao diện chính: Project View, Central View bao gồm Dependency View Change Impact view, Change set view Impact Set View - Khung nhìn Project View Khung nhìn Project View cung cấp cho người dùng giao diện trực quan để xem dạng thư mục dự án đầu vào Người dùng biết thơng tin dự án đưa vào hệ thống thành phần chưa bên thơng qua khung nhìn Để thao tác mở đóng thư mục, nháy chuột trái vào thư mục, để mở toàn thư mục tất thư mục nó, chuột phải vào thư mục chọn “Expand All” Để thị thơng tin chi tiết lớp đó, nháy chuột vào lớp muốn hiển thị, thông tin class hiển thị khung nhìn Class View - Khung nhìn Dependency View Khung nhìn Dependency View cho phép thị tất thành phần dự án phụ thuộc lẫn chúng Bao gồm phụ thuộc hàm gọi hàm, hàm dùng biến Mũi tên nối hai node thể hai đối tượng có mối quan hệ phuộc thuộc lẫn Xem thông tin cụ thể node cách đưa trỏ chuột đến tệp, cửa sổ pop-up hiển thị thông tin Việc hiển thị phụ thuộc giao diện phân mức tùy vào yêu cầu người dùng với ba mức: All, None, Partial Mức All cho phép hiển thị tất phụ thuộc, mức None không hiển thị phụ thuộc, Partial hiển thị phụ thuộc liên quan đến node làm việc Để thêm node vào tập thay đổi, bấm chuột phải vào node chọn Change Sau node thêm vào tập thay đổi, node chuyển sang màu xanh Để xem mã nguồn tệp, chọn node thuộc kiểu têp, chuột phải chọn View Source Code - Khung nhìn Change Impact View Change Impact View phần giao diện sinh sau bạn thực phân tích ảnh hưởng Nó giống với Dependency View liệu hiển thị chứa node có liên quan đến kết phân tích ảnh hưởng giúp bạn dễ quan sát tập trung vào kết phân tích - Khung nhìn Change Set View Để thay đổi thuộc tính đối tượng (lớp, biến hay hàm), thay dổi lưu tập Change thể khung nhìn Change Set Từ thay đổi theo mong muốn người dùng gửi lên hệ thống yêu cầu phân tích.Các nút chức bao gồm: Impact level, Upload Change Set, Clean all Analyze Impact Level: Là giá trị thể cho mức ảnh hưởng muốn phân tích Với mức tệp ảnh hưởng trực tiếp tương tự mức 2, 3, … Upload Change Set: Để thay đổi nhiều tệp lúc cách tải lên tệp text chứa đường dẫn tệp thay đổi project Cơng cụ tự tìm kiếm tệp thêm chúng vào tâp thay dổi Clean all: Xóa bỏ tồn tập thay đổi tập ảnh hưởng phân tích Analyze: Thực phân tích tập thay đổi để tìm tập bị hưởng hưởng - Khung nhìn Impact Set View Là nơi hiển thị tệp ảnh hưởng sau công cụ thực q trình phân tích ảnh hường từ tệp thay đổi Nút chức Export Data dùng để xuất liệu phân tích Người dùng nhận tệp zip chứa tệp thuộc tập thay đổi tập ảnh hưởng với tệp Excel chứa thông tin chúng 2.3 Kiểm thử hồi quy Khi phát triển hệ thống phần mềm, điều quan trọng đạt mức yêu cầu chất lượng Một lỗi nhỏ hệ thống tốn để sửa chữa sau sản phẩm bàn giao Vì vậy, kiểm thử khía cạnh quan trọng dự án phát triển sản phẩm hệ thống phần mềm Để tìm lỗi sản phẩm thiết kế sớm tốt, kiểm thử thực nhiều giai đoạn Một hệ thống phần mềm lớn thường chia thành nhiều hệ thống con, hệ thống chia thành mô đun nhỏ Kiểm thử phần mềm sau tách thành bốn giai đoạn: kiểm thử đơn vị, kiểm thử tích hợp, kiểm thử hệ thống kiểm thử chấp nhận người dùng Khi phát triển phần mềm liên quan đến thay đổi mã nguồn lỗi bổ sung tính mới, khách hàng muốn có tính phiên nhất, mong đợi tính cũ giữ nguyên Dựa vào kinh nghiệm cho thấy sửa đổi gây chức làm việc trước thất bại Để kiểm tra tính tồn vẹn phần mềm loại lỗi bất ngờ này, kiểm thử hồi quy sử dụng Kiểm hồi quy thực bốn giai đoạn kiểm thử nêu trên, thực lý tưởng mã nguồn sửa đổi sử dụng môi trường Kiểm thử hồi quy kiểm tra lại có lựa chọn hệ thống thành phần để xác minh sửa đổi không gây ảnh hưởng không mong muốn hệ thống thành phần phải tuân thủ yêu cầu cụ thể Để giảm thiểu thời gian thực công việc cách hiệu quả, việc lựa chọn kĩ thuật kiểm thử kiểm thử tự động cần thiết Một cách đơn giản để kiểm thử hồi quy kiểm thử lại toàn phiên trước Tuy nhiên, phiên có thay đổi ca kiểm thử phiên trước khơng chạy lại mà khơng có sửa đổi hay cập nhật Một ca kiểm thử tốt phải trì chạy xuyên suốt qua phiên hệ thống cách cập nhật, loại bỏ ca kiểm thử lỗi thời qua phiên Các ca kiểm thử dư thừa không ảnh hưởng đến tính đúng, sai phát lỗi hệ thống, chúng ảnh hưởng đến thời gian chi phí kiểm thử Như đề cập trước đó, người ta ước tính kiểm thử hồi quy chiếm gần nửa chi phí bảo trì phần mềm Việc loại bỏ ca kiểm thử dư thừa nên thực giúp giảm thời gian chi phí kiểm thử Chi phí cho việc thực lại kiểm thử giảm cách chọn tập hợp ca kiểm thử thực lại, bỏ qua ca kiểm thử không liên quan ưu tiên thực tập kiểm thử liên quan đến thay đổi [1] 2.3 Phân tích phụ thuộc 2.3.1 Tiền xử lý mã nguồn Định nghĩa: (Biểu đồ phụ thuộc Java EE), cho mã nguồn ứng dụng Java EE, biểu đồ phụ thuộc Java EE viết tắt JDG định nghĩa cặp (V,E) với V = {v1,v2, ,vk} tập nút đại diện cho thành phần mã nguồn thư mục; tệp; lớp, phương thức, thuộc tính, thẻ (XML, JSP), v.v., E = {(vi,vj) | vi,vj ∈V} tập cạnh Mỗi cạnh (vi,vj) đại diện cho quan hệ phụ thuộc vi vj có nghĩa vi phụ thuộc vào vj Mã nguồn ứng dụng Java EE cho trước xử lý để xây dựng thư mục mức tệp Một cấu trúc trừu tượng AST xây dựng cách sử dụng công cụ JDT Java Dựa AST thu được, thành phần cấp độ thấp lớp, phương thức, thuộc tính, v.v phụ thuộc thành phần phát thêm vào JDG Sự phụ thuộc thành phần liên quan đến công nghệ Java EE JSF, CDI, dịch vụ Web xác định để thêm vào cạnh JDG Kết JDG tương ứng với mã nguồn tạo Trong ứng dụng Java EE, mã nguồn Java nhiều định dạng mã nguồn sử dụng XML, JSP, XHTML, v.v, định dạng có cấu trúc cú pháp tương ứng Các mã nguồn tiền xử lý để đưa định dạng chung cấu trúc, nút cấu trúc chứa thơng tin cần thiết để phân tích phụ thuộc chúng thiết kế tối ưu phục vụ cho việc duyệt tìm kiếm nút dễ dàng 2.3.2 Phân tích phụ thuộc Java Core Trong mã nguồn Java, có ba loại quan hệ lớp: quan hệ phụ thuộc, thành phần kế thừa Dựa vào quan hệ này, phân tích phụ thuộc cho Java Core phân tích nút thành phần Java biểu đồ phụ thuộc Java EE xác định phụ thuộc Java Core thành phần Quan hệ phụ thuộc: hai lớp gọi phụ thuộc phương thức lớp sử dụng đối tượng lớp để thực thao tác Khi hai lớp phụ thuộc, thay đổi lớp ảnh hưởng đến lớp Quan hệ thành phần: lớp chứa thuộc tính đối tượng lớp khác Quan hệ kế thừa: lớp kế thừa thuộc tính public lớp cha thêm số thuộc tính riêng Khi lớp cha thay đổi lớp kế thừa bj ảnh hưởng 2.3.3 Phân tích phụ thuộc cho Struts Struts framework thiết kế theo mơ hình MVC bao gồm Model, View, Controller Trong View hiển thị liệu định dạng cụ thể thường mã nguồn JSP, Model định nghĩa đối tượng để tương tác với sở liệu, model định nghĩa thuộc tính đối tượng thường dùng mã nguồn Java, Controller xử lý logic, làm vai trị điều hướng model view thơng qua lớp FilterDispatcher với tệp cấu hình người dùng định nghĩa sử dụng mã nguồn XML Một ví dụ cho mã nguồn cấu hình Struts cho chức hiển thị Để phân tích phụ thuộc ứng dụng sử dụng Struts 2, bao gồm bước sau: Bước 1: trình xác nhận kiểm tra mã nguồn dự án có sử dụng Struts khơng, đầu cấu trúc tương ứng với tệp cấu hình Struts Bước 2: trình phân tích cú pháp tìm kiếm tất tệp cấu hình khai báo struts.xml duyệt tất tệp cấu hình, lưu thơng tin Configuration Model chứa thông tin : Package, Action, Result, Result Type, Interceptor, Interceptor Stack Bước 3: trình phân tích phụ thuộc đọc thơng tin từ Configuration Model với phân tích cấu trúc để xác định phụ thuộc thêm vào cấu trúc 2.3.4 Phân tích phụ thuộc cho Hibernate ORM Framework (Object Relational Mapping Framework) công cụ giúp chuyển đổi ánh xạ kiểu cấu trúc liệu từ hệ thống khơng tương thích đối tượng phù hợp Hibernate framework này, ánh xạ bảng CSDL với đối tượng Java gọi thực thể đồng thời sử dụng JDBC để quản lí cải tiến thao tác đến CSDL Hibernate sử dụng hai phương pháp ánh xạ dùng tệp ánh xạ XML dùng Annotation để định nghĩa thông tin bảng trực tiếp lớp Java Do Hibernate quản lí bảng ánh xạ, nên bảng CSDL sử dụng xác định tệp cấu hình phân tích Các bước phân tích phụ thuộc cho Hibernate mơ tả Hình 2.12 Đầu tiên, phân tích tìm tệp cấu hình hibernate.hbm.xml để xác định xem mã nguồn có sử dụng Hibernate hay khơng Nếu tìm thấy, phân tích đọc thẻ có tệp cấu hình thẻ XML khai báo việc ánh xạ đối tượng Mỗi thẻ XML khai báo tệp ánh xạ XML khác lớp Java Bộ phân tích xác định tệp cấu hình ánh xạ theo cách thức nào, từ có cách phân tích tương ứng Các nút thể cho bảng, cột CSDL tạo thêm vào cấu trúc Cùng với đó, nút phân tích truy vấn sử dụng để tìm thành phần có khả tác động đến CSDL Hibernate có hai cách thức tương tác với CSDL dùng phương thức xây dựng sẵn có sử dụng thực thể sử dụng câu truy vấn Do phân tích Hibernate chia làm hai phần nhỏ phân tích hàm tương tác thực thể phân tích câu truy vấn Hibernate xây dựng sẵn phương thức tương tác với CSDL thực thể, danh sách phương thức cho Bảng Tham số truyền vào hàm tên thực thể Java dạng “package.name” ví dụ “sample.entity.Consumer” Đi kèm với tên thực thể đối tượng Java chứa giá trị cần gửi cho CSDL, cần gửi đối tượng Java đủ Các phương thức có đặc điểm riêng biệt nên chúng dễ tìm thấy quét qua câu lệnh Sau phân tích tham số truyền vào phương thức xác định thực kiểu thực thể tham số Phương pháp phân tích ảnh hưởng thành phần giao diện phân loại kiểm thử Với tảng khác mã nguồn Java tương tác với mã nguồn giao diện theo cách khác Vì vậy, công cụ JCIA tập trung vào phân tích ảnh hưởng giao diện cho tảng Java Servlet 3.1 Java Servlet Java Servlet chương trình chạy phía máy chủ Web đóng vai trị lớp trung gian yêu cầu đến từ trình duyệt Web HTTP Client với sở liệu ứng dụng HTTP Server Web browser: trình duyệt giúp người dùng truy cập máy chủ Web thông qua giao thức HTTP Web server: chương trình máy tính sử dụng HTTP (Hypertext Transfer Protocol) để truyền tải liệu Servlet Container: phần máy chủ Web viết ngôn ngữ Java để xử lý Web động, u cầu tính tốn từ máy khách Database: nơi chứa liệu tương tác hệ thống Dữ liệu nhập vào form liệu trình duyệt máy chủ máy khách sau giao tiếp với máy chủ Web thông qua giao thức HTTP để truyền, nhận liệu Webserver có nhiệm vụ trung chuyển liệu điều hướng đến Servlet Container để thực tác vụ tương ứng với yêu cầu từ phía client Servlet Container gọi init () method servlet để khởi tạo (được gọi lần servlet load lần Container gọi service () method servlet để xử lý HTTP request, tức đọc liệu yêu cầu hình thành response Web server trả lại kết yêu cầu 3.2 Phương pháp phân tích ảnh hưởng Ý tưởng phân tích dựa kiến trúc luồng liệu Java Servlet kết hợp với kết phân tích mã nguồn từ cơng cụ JCIA có Các bước phân tích phụ thuộc cho Java Servlet mơ tả hình Đầu tiên, phân tích tìm đến tệp cấu hình web.xml annotation, từ tìm ánh xạ từ Java Servlet URL tương ứng Nếu khơng tìm Java Servlet q trình phân tích dừng lại Mã nguồn Mã cấu hình web.xml Java Servlet Mã nguồn ví dụ cho việc tìm kiếm Java Servlet thơng qua tệp cấu hình web.xml Thơng tin Java Servlet khai báo rõ ràng nhờ vào liên hệ Như vậy, có phụ thuộc servlet ánh xạ từ class Java đường dẫn Controller/SANPHAM_CTR tới URL Sanpham.do Mã nguồn Mã Annotation Java Servlet Mã nguồn thể mối quan hệ URL Java Servlet thơng qua Annotation Từ đó, phụ thuộc từ LoginService.class tới URL /LoginService dễ dàng nhận Tiếp theo, phân tích phân tích đến phụ thuộc thành phần giao diện Công cụ tìm đến tệp JSP, phân tích thẻ thu thập thuộc tính thẻ Dựa thuộc tính thẻ giao diện tệp JSP, phụ thuộc tệp hình thành Mã nguồn Phụ thuộc mã nguồn giao diện 10 Mã nguồn thể phụ thuộc từ thẻ tới tệp với đường dẫn templates/user/sidebar.jsp, templates/user/navbar.jsp, reception/bookbed.jsp, templates/footer.jsp Nếu mã nguồn tệp bị thay đổi giao diện chứa mã nguồn bị thay đổi Sau q trình phân tích phụ thuộc mã nguồn Java mã nguồn giao diện thông qua liệu lưu Session vận chuyển thông qua HTTPRequest, HTTPResponse Từ đó, cơng cụ nhận phụ thuộc cách tìm đối tượng tương ứng mã nguồn Bên cạnh đó, giao diện tương tác với mã nguồn Java thông qua lời gọi đến URL theo giao thức HTTP Dựa vào ánh xạ phân tích từ cấu hình, phân tích đánh dấu lại phụ thuộc Mã nguồn Phụ thuộc mã nguồn Java mã nguồn giao diên Mã nguồn cho thấy mã nguồn Java lấy liệu từ hai input giao diện thông qua phương thức getParameter request Ngoài ra, mã nguồn thể mối quan hệ form tới class servlet có ánh xạ với URL LoginService 3.3 Phương pháp phân loại kiểm thử hồi quy Có số cách để kiểm thử hồi quy thực Tuy nhiên, điều phụ thuộc vào yếu tố loại thay đổi đưa ra, sửa lỗi, v.v Một tập hợp kiểm thử thực theo luồng sau: Kiểm thử hồi quy đơn vị: thực kiểm thử lại thay đổi module vùng ứng dụng Kiểm thử hồi quy tích hợp: thực retest thay đổi module kèm theo tương tác với Kiểm thử hồi quy toàn bộ: kiểm tra lại toàn ứng dụng, khơng phụ thuộc vào vị trí thay đổi Dựa phân tích ảnh hưởng mà công cụ JCIA thực bao gồm phụ thuộc liên quan đến mã nguồn Java mã nguồn giao diện JSP với tảng Java Servlet Một phương pháp phân loại kiểm thử hồi quy đề xuất bao gồm: kiểm thử hồi quy đơn vị, kiểm thử hồi quy tích hợp kiểm thử hồi quy cho giao diện Mục đích việc phân loại để đưa nhìn khách quan lập trình viên kiểm thử viên Lập 11 trình viên kiểm thử hồi quy cho đơn vị tích hợp đơn vị hiệu kiểm thử viên kiểm thử hồi quy cho trang thay đổi ảnh hưởng Giao diện cần kiểm thử xác định dựa vào kiểu đối tượng dựng cấu trúc, tệp thẻ JSP Kết hợp với liệu phân tích hai phiên bản, cơng cụ đưa tệp giao diện bị thay đổi cần phải kiểm thử lại Từ phụ thuộc phân tích được, cơng cụ tự động phân loại kiểm thử hồi quy cho phương thức Java Nếu phương thức khơng gọi đến phương thức khác phân loại vào kiểm thử đơn vị Và ngược lại phương thức gọi đến phương thức khác phân loại vào kiểm thử tích hợp 3.3 Quy trình kiểm thử hồi quy dựa phương pháp đề xuất 3.4 Quá trình kiểm thử hồi quy việc kiểm thử lại tất thành phần thay đổi thành phần bị ảnh hưởng Luận văn đề xuất phương pháp kiểm thử hồi quy dựa kết công cụ JCIA Đầu tiên, mã nguồn dự án Java EE phiên trước thay đổi đưa vào cơng cụ để phân tích, sau phiên mã nguồn Java EE 12 sửa đổi đưa vào công cụ JCIA để so sánh hai phiên tìm thành phần bị ảnh hưởng Sau có kết đầu thành phần thay đổi bị ảnh hưởng, thành phần phân loại để đưa vào công cụ kiểm thử để thực kiểm thử hồi quy CTF4Junit (công cụ kiểm thử đơn vị cho hàm Java), Ranorex (công cụ kiểm thử giao diện) Thực nghiệm triển khai 4.1 Giới thiệu công cụ JCIA mở rộng Công cụ nhận đầu vào mã nguồn dự án Java EE sử dụng tảng Java Servlet dạng file zip Sau chọn tệp đưa vào hệ thống, đường dẫn tới mã nguồn Java cần hệ thống phân tích, hệ thống hiển thị gợi ý tự động src/java (đường dẫn mặc định project tạo NetBeans) Việc lựa chọn phân tích phụ thuộc giúp cơng cụ tập trung vào phân tích chuyên biệt cho cơng nghệ cụ thể Hệ thống phân tích phụ thuộc cho Struts2, JavaCore, Hibernate Ngồi hệ thống hiển thị tất phụ thuộc không hiển thị phụ thuộc Sau tải mã nguồn dự án thành công, công cụ sử dụng phương pháp phân tích ảnh hưởng thành phần đặc biệt thành phần giao diện mở rộng cơng cụ để tìm phụ thuộc tệp giao diện với Để so sánh hai phiên mã nguồn dự án, phiên mã nguồn dự án kèm tệp (info.txt) chứa thông tin tệp bị thay đổi tải lên với việc lựa chọn mức độ phân tích phụ thuộc Impact Level Cơng cụ thực phân tích ảnh hưởng thay đổi cho phiên Hệ thống tự động tìm tệp liệt kê thực trình phân tích ảnh hưởng Sau đó, cơng cụ sử dụng phương pháp phân loại kiểm thử hồi quy từ tập thay đổi ảnh hưởng, từ xuất liệu phân tích tệp Excel, PDF, CSV để sử dụng làm đầu vào cho công cụ kiểm thử 4.2 Thực nghiệm Sau đây, luận văn trình bày ví dụ áp dụng cơng cụ JCIA phân tích cho mã nguồn ứng dụng Web Java EE quản lý bệnh viện [7] Đây ứng dụng quản lý thông tin liên quan đến bệnh viện như: 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, quản lý dịch vụ khám chữa bệnh Ứng dụng Web có chức phân theo quyền Hình 4.3 Ứng dụng Web bao gồm trang: Đăng nhập: Người dùng cần phải đăng nhập vào thành công vào hệ thống để sử dụng chức quản lý hệ thống Tài khoản dùng để truy cập vào hệ thống cung cấp khởi tạo người quản trị hệ thống Tương ứng với loại người dùng khác nhau, người quản trị cung cấp quyền truy cập vào hệ thống khác 13 Từ đó, người dùng truy cập vào giao diện chức tương ứng với quyền cung cấp User Admin: Sau đăng nhập thành cơng người quản trị hệ thống có quyền thực chức như: quản lý nhân viên, quản lý phòng, quản lý dịch vụ y tá, gửi/nhận tin nhắn từ người dùng khác, thay đổi mật - Quản lý nhân viên: Ở chức này, người quản trị hệ thống thực thêm mới, sửa, xóa nhân viên phân loại phịng ban cho nhân viên Việc phân loại nhằm phân quyền cho nhân viên tham gia sử dụng hệ thống Nhân viên thuộc phòng ban phân quyền sử dụng chức tương ứng phịng ban Thơng tin nhân viên bao gồm thơng tin chung, trình độ chun mơn kinh nghiệm làm việc, phịng ban Kết việc thêm, sửa, xóa nhân viên thành công, nhân viên hiển thị danh sách nhân viên thể bảng “All Employees” Bên cạnh đó, để giúp tiết kiệm thời gian cho quản trị viên, hệ thống có cung cấp chức tìm kiếm nhanh bảng thông tin nhân viên bảng - Quản lý phòng: Chức quản lý phòng cho phép quản trị viên thêm, sửa, xóa thơng tin phòng Danh sách phòng sau thêm sửa đổi hiển thị trang quản lý phòng giúp quản trị viên biết loại phịng có bệnh viên, số lượng giường giá loại phịng 14 Ngồi nhằm giúp quản trị viên tìm kiếm thơng tin nhanh chóng, hệ thống cịn cung cấp thêm chức tìm kiếm nhanh - Quản lý dịch vụ y tá: Chức quản lý dịch vụ y tá cung cấp cho quản trị viên hệ thống chức thêm, sửa, xóa dịch vụ y tá Thơng tin dịch vụ hiển thị bảng, người dùng tìm kiếm thơng tin dịch vụ User Receptionist: Hệ thống cho phép người dùng thực chức như: quản lý bệnh nhân, đặt phòng cho bệnh nhân, gửi/nhận tin nhắn từ người dùng khác, đổi mật - Quản lý bệnh nhân: Hệ thống cho phép người dùng Receptionist quản lý thông tin bệnh nhân với chức năng: thêm, sửa, xóa thơng tin bệnh nhân bao gồm thơng tin cá nhân thông tin người thân Các thông tin bệnh nhân liên quan đến bệnh nhân hiển thị bảng “All Patient” Bên cạnh đó, người dùng tìm kiếm thơng tin bệnh nhân bảng với chức tìm kiếm - Quản lý đặt phịng: Hệ thống cho phép người dùng Receptionist thực chức năng: thêm, sửa, xóa thơng tin đặt phịng Thơng tin chi tiết phòng đặt hiển thị bảng người dùng tìm kiếm thơng tin phịng đặt cách thực chức tìm kiếm phía bảng User Pharmacist: Hệ thống cho phép người dùng thực chức như: quản lý thuốc, bán thuốc cho bệnh nhân, gửi/nhận tin nhắn người dùng khác, thay đổi mật - Quản lý thuốc: Ở chức này, người dùng Pharmacist thực chức năng: thêm, sửa, xóa thơng tin thuốc Các thơng tin liên quan đến thuốc hiển thị bảng “All Drugs”, người dùng tìm kiếm thơng tin thuốc bảng cách sử dụng chức tìm kiếm - Quản lý bán thuốc: Chức cho phép người dùng Pharmacist quản lý thuốc bán cho bệnh nhân thực thêm, sửa, xóa thơng tin thuốc bán thơng tin hiển thị bảng cho phép người dùng tìm kiếm thơng tin với chức tìm kiếm Bên cạnh người dùng in hóa đơn thuốc Bài toán đặt ra: Sau kiểm thử phiên 1, kiểm thử viên phát số lỗi bao gồm: cập nhật thông tin bệnh nhân không thành cơng, khơng hiển thị thơng báo sau xóa thơng tin bệnh nhân, hình “Sell Drug” “Manage Drug” thiếu xác nhận trường bắt buộc Trong phiên mới, khách hàng yêu cầu nhóm phát triển sửa lỗi tìm phiên thêm số yêu cầu thay đổi 15 Yêu cầu thứ nhất: Thêm trường cho bệnh nhân nội trú (In Patient) ngoại trú (Out Patient) hình quản lý bệnh nhân Nếu bệnh nhân nội trú, bệnh nhân phép thực chức đặt phịng thơng qua Receptionist Nếu bệnh nhân đăng ký ngoại trú đặt phịng thành cơng u cầu thứ hai: Thêm trường kiểm tra Health Insurance với mức độ 1, 2, 3, tương ứng việc giảm 10%, 20%, 30%, 40% số tiền mà bệnh nhân phải trả cho đặt phòng mua thuốc 16 Sau tiếp nhận yêu cầu khách hàng làm rõ yêu cầu, nhóm phát triển thực triển khai đưa phiên Kiểm thử viên thực cập nhật ca kiểm thử dựa theo yêu cầu thay đổi khách hàng Lúc này, mã nguồn phiên đưa vào công cụ JCIA để so sánh phân tích ảnh hưởng từ thay đổi Hình mô tả kết sau đưa vào cơng cụ JCIA để phân tích bao gồm thành phần thay đổi thành phần dự đoán thay đổi Các thành phần phân loại kiểm thử hồi quy cho đơn vị Từ kết trên, lập trình viên phải thực kiểm thử đơn vị cho tất hàm thay đổi hàm bị ảnh hưởng để đảm bảo chất lượng cho phiên Việc kiểm thử đơn vị kết hợp với công cụ CTF4Junit, công cụ hỗ trợ sinh ca kiểm thử cho đơn vị cho mã nguồn Java Tuy nhiên, công cụ hỗ trợ phần hàm với kiểu liệu nguyên thủy 17 Tiếp theo kết phân loại kiểm thử hồi quy cho thành phần giao diện hình Từ kết trên, kiểm thử viên phải cập nhật ca kiểm thử chọn các ca kiểm thử phù hợp để thực kiểm thử hồi quy giao diện Dựa vào kết đầu công cụ JCIA mở rộng, hình giao diện thay đổi dự đốn thay đổi kiểm thử để đảm bảo chất lượng phiên Việc kiểm thử giao diện kết hợp với công cụ Ranorex, công cụ hỗ trợ kiểm thử giao diện tự động kỹ thuật ghi lại phát lại để kiểm thử tính xác tương tác người dùng giao diện Kết luận Luận văn cải tiến phương pháp cơng cụ phục vụ cho quy trình kiểm thử hồi quy để đảm bảo chất lượng mã nguồn ứng dụng doanh nghiệp tảng công nghệ Java EE Các phương pháp đề xuất [2,5] tập trung phân tích chủ yếu cho mã nguồn Java Tuy nhiên với tảng khác mã nguồn Java tương tác với 18 mã nguồn giao diện theo cách khác Trong luận văn này, tác giả hoàn thành thêm chức cho cơng cụ nhằm đáp ứng cho việc phân tích mã nguồn giao diện cho ứng dụng sử dụng cơng nghệ Java Servlet Bên cạnh đó, cơng cụ cịn hỗ trợ phân loại kiểm thử hồi quy từ thành phần thay đổi ảnh hưởng bao gồm kiểm thử đơn vị, kiểm thử tích hợp kiểm thử giao diện Từ đó, đưa nhìn khách quan kiểm thử viên lập trình viên Đối với kiểm thử viên, họ thực kiểm thử hồi quy dựa mã nguồn đặc tả Nếu kiểm thử hồi quy dựa đặc tả chọn ca kiểm thử để thực liên quan đến phần đặc tả bị thay đổi, kỹ thuật đòi hỏi đặc tả phải quản lý tốt Tuy nhiên, với phương pháp cải tiến mà luận văn thực hiện, việc kiểm thử hồi quy dựa mã nguồn Kiểm thử viên cần thực số ca kiểm thử dựa kết phân tích ảnh hưởng thành phần giao diện Cịn lập trình viên họ sử dụng công cụ để đánh giá thay đổi mã nguồn Một ánh xạ thành phần mã nguồn giao diện, chức ứng dụng tích hợp, giúp cơng cụ thực có ích ứng dụng vào trình đảm bảo chất lượng phần mềm công ty phát triển phần mềm Về thực nghiệm, luận văn áp dụng công cụ để so sánh hai phiên mã nguồn cho ứng dụng Web quản lý bệnh viện Kết thực nghiệm cho thấy, cơng cụ cải tiến tìm thành phần ảnh hưởng liên quan đến giao diện ứng dụng Web mà cơng cụ trước khơng tìm thấy Thêm vào việc phân loại thành phần ảnh hưởng thành phần thay đổi Từ đó, hỗ trợ kiểm thử hồi quy cách hiệu Dựa vào kết thực nghiệm, cơng cụ cho thấy tính khả dụng công cụ giúp giảm thời gian chi phí kiểm thử hồi quy Dựa thực được, tương lai có thêm nhiều phụ thuộc giao diện cho tảng khác thêm vào để xử lý giúp phân tích ảnh hưởng dự đốn tập ảnh hưởng xác Bộ quản lý so sánh phiên mã nguồn tích hợp với hệ thống quản lý phiên SVN, Git công cụ kiểm thử hồi quy Bộ công cụ hỗ trợ cho thêm nhiều công nghệ tảng khác Java, xa nữa, tương lai công cụ phân tích cho ngơn ngữ khác 19 ... gồm: kiểm thử hồi quy đơn vị, kiểm thử hồi quy tích hợp kiểm thử hồi quy cho giao diện Mục đích việc phân loại để đưa nhìn khách quan lập trình viên kiểm thử viên Lập 11 trình viên kiểm thử hồi quy. .. theo kết phân loại kiểm thử hồi quy cho thành phần giao diện hình Từ kết trên, kiểm thử viên phải cập nhật ca kiểm thử chọn các ca kiểm thử phù hợp để thực kiểm thử hồi quy giao diện Dựa vào kết... diện cho ứng dụng sử dụng cơng nghệ Java Servlet Bên cạnh đó, cơng cụ hỗ trợ phân loại kiểm thử hồi quy từ thành phần thay đổi ảnh hưởng bao gồm kiểm thử đơn vị, kiểm thử tích hợp kiểm thử giao