Luận văn thạc sĩ công nghệ thông tin 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 - Pdf 54

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

NGUYỄN THỊ HỒNG VÂN

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

LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

Hà Nội – 2018


ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

NGUYỄN THỊ HỒNG VÂN

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
Ngành: Công nghệ thông tin
Chuyên ngành: Kỹ Thuật Phần Mềm
Mã số: 8480103.01

LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS. TS. PHẠM NGỌC HÙNG

Hà Nội – 2018

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

3.2.3

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

Chương 4. Thực nghiệm và triển khai ..................................................................... 36
4.1 Giới thiệu công cụ JCIA mở rộng ................................................................... 38
4.2 Thực nghiệm ................................................................................................... 39
4.3. Ý nghĩa của công cụ thực nghiệm.................................................................. 39
Chương 5. Kết luận .................................................................................................. 53


ii

TÀI LIỆU THAM KHẢO ........................................................................................ 56


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. TS. 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.


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ữ


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


Hình 4.2. Kết quả đầu ra của công cụ ............................................................. 39
Hình 4.3. Ứng dụng Web quản lý bệnh viện. ................................................. 40
Hình 4.4. Lỗi xảy ra ở phiên bản 1.................................................................. 49
Hình 4.6. Yêu cầu thêm mới cho giao diện quản lý bệnh nhân ...................... 50
Hình 4.7. Nghiệp vụ liên quan đến Health Insurance ..................................... 50
Hình 4.8. Kết quả tập thay đổi và ảnh hưởng cho kiểm thử đơn vị ................ 51
Hình 4.9. Kết quả tập thay đổi và ảnh hưởng cho kiểm thử giao diện ........... 51
Hình 4.10. Kết quả kiểm thử hồi quy giao diện với Ranorex ......................... 52
Hình 4.11. Kết quả tập thay đổi và ảnh hưởng cho kiểm thử tích hợp ........... 52


vii


viii

DANH MỤC BẢNG
Bảng 2.1. Ý nghĩa các kiểu cạnh trong đồ thị chuỗi ....................................... 24
Bảng 2.2. Các phương thức truy xuất CSDL có sẵn của Hibernate ............... 26
Bảng 4.1. Mô tả yêu cầu chức năng quản lý nhân viên .................................. 41
Bảng 4.2. Mô tả yêu cầu chức năng quản lý phòng ........................................ 42
Bảng 4.3. Mô tả yêu cầu chức năng quản lý dịch vụ ...................................... 42
Bảng 4.4. Mô tả yêu cầu chức năng quản lý bệnh nhân ................................. 43
Bảng 4.5. Mô tả yêu cầu chức năng đặt phòng ............................................... 43
Bảng 4.6. Mô tả yêu cầu chức năng quản lý thuốc ......................................... 44
Bảng 4.7. Mô tả yêu cầu chức năng quản lý bán thuốc .................................. 44


9


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.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


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. 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ả. Một bộ
công cụ được phát triển như là một phiên bản tiếp theo của công cụ JCIA [5] để

tích hợp, kiểm thử hệ thống và 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 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. Để kiểm tra tính toàn vẹn của phần mềm đối với loại lỗi bất ngờ này, kiểm
thử hồi quy được sử dụng. Kiểm hồi quy có thể được thực hiện trên mỗi trong
bốn giai đoạn kiểm thử nêu trên, và được thực hiện lý tưởng mỗi khi mã nguồn
được sửa đổi hoặc sử dụng trong môi trường mới.
Kiểm thử hồi quy là kiểm tra lại có lựa chọn của một hệ thống hoặc thành
phần để xác minh rằng các sửa đổi không gây ra các ảnh hưởng không mong
muốn và hệ thống hoặc thành phần đó vẫn phải tuân thủ các yêu cầu cụ thể. Để
giảm thiểu thời gian thực hiện công việc này một cách hiệu quả, việc lựa chọn kĩ
thuật kiểm thử và kiểm thử tự động là rất cần thiết. Một cách đơn giản để kiểm
thử hồi quy là kiểm thử lại toàn bộ phiên bản trước đó. Tuy nhiên, khi phiên bản
mới có sự thay đổi thì các ca kiểm thử của phiên bản trước đó có thể không chạy
lại được mà không có sự sửa đổi hay cập nhật. Một bộ các ca kiểm thử tốt phải
được duy trì chạy xuyên suốt qua các phiên bản của hệ thống bằng cách cập
nhật, loại bỏ các ca kiểm thử lỗi thời qua các phiên bản. Các ca kiểm thử dư
thừa không ảnh hưởng đến tính đúng, sai cũng như phát hiện được lỗi của hệ


12

thống, chúng chỉ ảnh hưởng đến thời gian và chi phí kiểm thử. Như đã đề cập
trước đó, người ta ước tính kiểm thử hồi quy có thể chiếm gần một nửa chi phí
bảo trì phần mềm. Việc loại bỏ các ca kiểm thử dư thừa nên được thực hiện giúp
giảm thời gian và chi phí kiểm thử. Chi phí cho việc thực hiện lại một bộ kiểm
thử có thể được giảm bằng cách chọn một tập hợp các ca kiểm thử được thực
hiện lại, bỏ qua các ca kiểm thử không liên quan hoặc ưu tiên thực hiện một tập

13

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. Hình 2.1 mô tả giao diện chính của công cụ JCIA với các phụ thuộc
được thể hiện bằng mũi tên có chiều từ nút (node) sở hữu phụ thuộc đến nút bị
gọi.

Hình 2.1. Giao diện chính của công cụ JCIA
- 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 mã nguồn dự án đầu vào dưới dạng cây thư mục. Nút chức năng “Expand
All” dùng để hiển thị các thành phần chứa bên trong thư mục và các thư mục
con trong nó (như Hình 2.2).

Hình 2.2. Màn hình Project View


14

- Khung nhìn Dependency View
Khung nhìn Dependency View cho phép hiển thị tất cả các thành phần
trong dự án và sự phụ thuộc lẫn nhau giữa chúng. Bao gồm các phụ thuộc hàm
gọi hàm, hàm dùng biến.
Mũi tên nối giữa hai nút thể hiện rằng hai đối tượng đó có mối quan hệ phụ
thuộc lẫn nhau. Xem thông tin cụ thể của một nút bằng cách chọn tệp, một cửa
sổ sẽ hiển thị thông tin của tệp đó (như Hình 2.3).

Hình 2.3. Màn hình Dependency View
Việc hiển thị phụ thuộc trên giao diện cũng được phân mức tùy vào yêu

Impact Level: Là giá trị thể hiện cho mức ảnh hưởng muốn phân tích. Với
mức 1 là các tệp ảnh hưởng trực tiếp và tương tự các mức 2, 3, 4, v.v.
Upload Change Set: Để thay đổi nhiều tệp cùng một lúc bằng cách tải lên
một tệp text chứa đường dẫn của các tệp thay đổi trong mã nguồn dự án. Công
cụ sẽ tự tìm kiếm các tệp và thêm chúng vào tập thay đổi.
Clean all: Xóa bỏ toàn bộ các tập thay đổi và tập ảnh hưởng đã được phân tích.
Analyze: Thực hiện phân tích tập thay đổi để tìm các tập bị ảnh hưởng.
- Khung nhìn Impact Set View
Là nơi hiển thị các tệp ảnh hưởng sau khi công cụ thực hiện quá trình phân
tích ảnh hưởng từ tệp thay đổi (như Hình 2.7). Nút chức năng Export Data dùng
để xuất dữ liệu phân tích. Người dùng sẽ nhận được một tệp .zip chứa các tệp
thuộc tập thay đổi và tập ảnh hưởng cùng với một tệp MS. Excel chứa thông tin
của chúng.

Hình 2.7. Impact Set View


17

2.3 Phân tích các phụ thuộc
2.2.1 Tiền xử lý mã nguồn
Định nghĩa 2.1: (Biểu đồ phụ thuộc Java EE), cho mã nguồn ứng dụng
Java EE, một biểu đồ phụ thuộc Java EE viết tắt là JDG (Java dependency
graph) được định nghĩa là một cặp (V, E) với V = {v1,v2,...,vk} là tập nút đại diện
cho các thành phần trong mã nguồn như thư mục, tệp, lớp, phương thức, thuộc
tính, thẻ (XML, JSP), v.v., và E = {(vi,vj) | vi,vj ∈V} là tập các cạnh. Mỗi cạnh
(vi,vj) đại diện cho quan hệ phụ thuộc giữa vi và vj có nghĩa là vi phụ thuộc vào vj
[5].
Mã nguồn ứng dụng Java EE cho trước sẽ được xử lý để xây dựng cây thư
mục ở mức tệp. Một cây cấu trúc trừu tượng (Abstract syntax tree - AST) được

<result name=“success”>/WEB-INF/hienthi.jsp</result>
</action>

Hình 2.9 mô tả quy trình phân tích sự phụ thuộc cho Struts 2.

Hình 2.9. Quy trình phân tích sự phụ thuộc cho ứng dụng Struts 2
Quy trình phân tích sự phụ thuộc bắt đầu từ tệp cấu hình trong mã nguồn
Struts 2, các thông tin phụ thuộc giữa các thành phần sẽ được khai thác với phụ
thuộc từ thẻ <action> đến hàm hienthi() của lớp HelloActionSupport và một
phụ thuộc từ thẻ <result> đến tệp JSP hienthi.jsp. Để phân tích sự phụ thuộc
trong ứng dụng sử dụng Struts 2, bao gồm các bước như sau [2]:


19

 Bước 1: trình xác nhận sẽ kiểm tra mã nguồn của dự án có sử dụng Struts
2 không, đầu ra là cây cấu trúc tương ứng với tệp cấu hình chính của
Struts 2.
 Bước 2: một trình phân tích cú pháp sẽ tìm kiếm tất cả tệp cấu hình được
khai báo trong struts.xml và duyệt tất cả các tệp cấu hình, lưu thông tin
trong Configuration Model chứa thông tin về : Package, Action, Result,
Result Type, Interceptor, Interceptor Stack.
 Bước 3: trình phân tích phụ thuộc sẽ đọc thông tin từ Configuration
Model cùng với phân tích cây cấu trúc để xác định phụ thuộc và thêm vào
cây cấu trúc.
2.2.3 Phân tích sự phụ thuộc trong Java Core
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 [2]. 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.

public class A {
int a;
public int f(){...} }
class B extends A{
public void k(){...} }

2.2.4 Phân tích phụ thuộc cho công nghệ kết nối cơ sở dữ liệu JDBC
JDBC (Java Database Connectivity) là một giao diện lập trình ứng dụng
của Java (API) được dùng để kết nối và truy xuất cơ sở dữ liệu. JDBC quản lý
kết nối đến cơ sở dữ liệu, gửi các câu truy vấn từ ứng dụng Java tới cơ sở dữ liệu
và xử lý kết quả sau truy vấn thành các đối tượng của Java. Mã nguồn 2.5 là một
ví dụ về câu truy vấn trong JDBC [2].
Mã nguồn 2.5. Mã nguồn chương trình Sample
public String getTableName(String a){
return “Consumer where name =” +a ; }
public Consumer findConsumer(boolean isOrderId, int order, Session
session) {
List<Consumer> consumers = new ArrayList();
String orderBy = “order by”;
if (order == 0)
orderStr = “”;
else {
if (isOrderId)
orderStr+= “category”;
if (order == -1) orderStr += “desc”; else orderStr + = “asc”;}
consumers = session.createQuery(“Select*
From”+getTableName()+orderBy);
return consumers; }



quét, giá trị câu lệnh return sẽ được xử lý và thêm vào đồ thị. Nếu phần tử vừa
thêm là biến cục bộ, bộ sinh đồ thị sẽ quét trong phương thức sử dụng biến đó.
Nếu câu lệnh thay đổi giá trị biến được tìm thấy, đỉnh mới được tạo tùy thuộc
vào việc thay đổi là khởi tạo hay cộng gộp và thêm vào đồ thị.
Trong trường hợp giá trị mới đó được tạo nên bởi nhiều thành phần nhỏ, ví
dụ như “select * from” + getTableName() +orderBy thì mỗi thành phần được
nối trực tiếp đến phần tử thêm cuối cùng trong đồ thị với cạnh kiểu CONCAT.


22

Những đoạn câu lệnh ở trong cặp if…then, then…else được tính như một đồ thị
con có đỉnh là phần tử được thêm cuối cùng trong đồ thị, và đỉnh gốc đó được
đặt kiểu PRODUCT. Trong trường hợp câu lệnh cần thêm vào đồ thị ở trong
vòng lặp, ta phải xác định giá trị được thêm ở dạng chuỗi kí tự bình thường, hay
là phần tử của một mảng. Nếu là một chuỗi kí tự, giá trị của đỉnh được thêm vào
đồ thị có dạng
Sau khi tập dự đoán được xây dựng xong, các câu truy vấn được phân tích.
Các bảng sử dụng trong câu ở các vị trí quan trọng như: sau “from”, sau “join”,
v.v. sẽ được lấy ra. Danh sách những bảng này sẽ được thêm vào cây cấu trúc và
sinh phụ thuộc.



Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status