SlideShare a Scribd company logo
1 of 20
Download to read offline
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ
NGUYỄN VĂN HÒA
PHƢƠNG PHÁP SINH DỮ LIỆU KIỂM THỬ TỰ ĐỘNG
TỪ BIỂU ĐỒ TUẦN TỰ UML, BIỂU ĐỒ LỚP
VÀ RÀNG BUỘC OCL
LUẬN VĂN THẠC SĨ KỸ THUẬT PHẦN MỀM
HÀ NỘI – 2016
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ
NGUYỄN VĂN HÒA
PHƢƠNG PHÁP SINH DỮ LIỆU KIỂM THỬ TỰ ĐỘNG
TỪ BIỂU ĐỒ TUẦN TỰ UML, BIỂU ĐỒ LỚP
VÀ RÀNG BUỘC OCL
Ngành: Công nghệ thông tin
Chuyên ngành: Kỹ thuật phần mềm
Mã số: 60480103
LUẬN VĂN THẠC SĨ KỸ THUẬT PHẦN MỀM
CÁN BỘ HƢỚNG DẪN KHOA HỌC: PGS. TS. PHẠM NGỌC HÙNG
HÀ NỘI – 2016
VIETNAM NATIONAL UNIVERSITY, HANOI
UNIVERSITY OF ENGINEERING TECHNOLOGY
NGUYEN VAN HOA
A METHOD AND TOOL SUPPORTING FOR AUTOMATED
TESTING FROM UML SEQUENCE DIAGRAMS, CLASS
DIAGRAMS AND OCL CONSTRAINS
THE MS. THESIS INFORMATION TECHNOLOGY
Supervisor: Assoc. Prof., PHAM NGOC HUNG, PhD
HÀ NỘI – 2016
i
LỜI CẢM ƠN
Đầu tiên, tôi xin gửi lời cảm ơn chân thành và sâu sắc tới thầy Phạm Ngọc Hùng –
Ngƣời đã trực tiếp hƣớng dẫn nhiệt tình, giúp đỡ và động viên tôi rất nhiều, cho tôi có cơ
hội đƣợc tiếp xúc với các tài liệu tham khảo quý giá, góp ý cho tôi những lời khuyên chân
thành trong quá trình nghiên cứu để hoàn thành đề tài này.
Tiếp theo tôi xin gửi lời cảm ơn đến các thầy cô giảng viên Trƣờng Đại học Công
Nghệ - Đại học Quốc Gia Hà Nội – những ngƣời đã tận tâm truyền đạt những kiến thức
quý báu làm nền tảng cho tôi suốt 2 năm học.
Cuối cùng, tôi xin gửi lời biết ơn sâu sắc tới gia đình vì đã luôn ở bên cạnh tôi,
mang lại cho tôi nguồn động viên tinh thần to lớn và tạo mọi điều kiện thuận lợi cho tôi
trong quá trình học tập và hoàn thành luận văn này.
Với luận văn này tôi rất mong nhận đƣợc ý kiến đóng góp từ Thầy, Cô giáo và các
bạn quan tâm để hoàn thiện và phát triển nhiều hơn về các phƣơng pháp mới trong kiểm
thử phần mềm.
Xin trân trọng cảm ơn!
Hà Nội, ngày 10 tháng 10 năm 2016
Học viên
Nguyễn Văn Hòa
ii
TÓM TẮT
Luận văn này trình bày một phƣơng pháp nghiên cứu tự động hóa quá trình kiểm
thử dự án phần mềm từ biểu đồ tuần tự UML 2.0. Hƣớng nghiên cứu dựa trên lý thuyết
kiểm thử dựa trên mô hình. Mục tiêu đề ra là tự động hóa quá trình kiểm thử, nâng cao
hiệu quả kiểm thử, tiết kiệm chi phí và thời gian phát triển dự án. Phƣơng pháp đƣợc đề
xuất với nội dung chính nhƣ sau. Đầu vào là biểu đồ tuần tự UML 2.0 lƣu giữ dƣới dạng
tệp xmi. Chƣơng trình kiểm thử biến đổi tệp xmi bằng cách bóc tách các thông điệp, toán
tử và các ràng buộc đƣợc đƣa vào trong thiết kế, từ đó vẽ đồ thị dòng điều khiển tƣơng
ứng. Từ đồ thị dòng điều khiển sử dụng thuật toán dò tìm, thuật toán sinh ca kiểm thử cho
các toán tử song song có các điểm chia sẻ dữ liệu tìm ra các đƣờng đi từ điểm bắt đầu cho
tới điểm kết thúc gọi là các đƣờng kiểm thử. Tập các đƣờng kiểm thử đƣợc chia tƣơng
ứng thành 3 cấp độ kiểm thử khác nhau. Các ràng buộc trên mỗi đƣờng đi đƣợc thu thập
và giải lấy kết quả dựa trên công cụ SMT solver kết hợp phƣơng pháp sinh ngẫu nhiên.
Kết quả thu đƣợc sau khi giải hệ chính là đầu vào cho các ca kiểm thử tƣơng ứng. Cuối
cùng trích xuất ra tệp excel là các ca kiểm thử theo từng độ bao phủ dùng cho kiểm thử
thiết kế. Để kiểm nghiệm mức độ khả thi của phƣơng pháp, một công cụ hỗ trợ đã đƣợc
cài đặt và thử nghiệm với một số ví dụ đơn giản nhằm minh chứng cho tính đúng đắn và
hiệu quả của phƣơng pháp trên. Kết quả thực nghiệm cho thấy hiệu quả của các ca kiểm
thử cũng là khả quan để áp dụng cho các công ty phát triển phần mềm.
Từ khóa: Kiểm thử dựa trên mô hình, kiểm thử tự động, biểu đồ tuần tự, đồ thị
dòng điều khiển, kiểm thử luồng song song, kiểm thử có chia sẻ dữ liệu luồng song song.
iii
ABSTRACT
The content of this thesis is research and propose a method to generate a set of test
cases from the UML 2.0 Sequence diagrams. Based on model-based testing in order to
automate the testing process, increase effectiveness, reduce cost and time of testing. The
method follows the following steps. At first, in order to have the input model for testing,
it analyzes and divides the input diagram into fragments. These fragments can be
Sequential or nested based on their relationship. After that, it generates the corresponding
control flow graph for the input Sequence diagram. The final control flow graph is
analyzed to generate a set of testing paths. Symbolic Execution (SE) technique is used to
create reStrictions associated with that set of testing paths. Finally, the method uses SMT
solver to solve the set of reStrictions to find solution and then to generate a set of test
cases. A tool is also implemented and tested with some simple examples in order to show
the correctness and effectiveness of the method. The experimental results give us the
potential application of the tool in automation testing in companies.
Keywords: Model base testing, automated testing, Sequence diagram, control flow
testing, Parallel threading testing, threading testing with data shared.
iv
LỜI CAM ĐOAN
Tôi xin cam đoan rằng những nghiên cứu về sinh tự động bộ kiểm thử từ biểu đồ
tuần tự đƣợc trình bày trong luận văn này dƣới sự hƣớng dẫn của thầy Phạm Ngọc Hùng
là của tôi. Những gì tôi viết ra không sao chép từ các tài liệu, không sử dụng các kết quả
của ngƣời khác mà không trích dẫn cụ thể.
Tôi xin cam đoan công cụ kiểm thử tự động tôi trình bày trong luận văn là do tôi tự
phát triển, không sao chép mã nguồn của ngƣời khác. Nếu sai tôi hoàn toàn chịu trách
nhiệm theo quy định của Trƣờng Đại học Công Nghệ - Đại học Quốc Gia Hà Nội.
Hà nội, ngày 10 tháng 10 năm 2016
Học viên:
Nguyễn Văn Hòa
v
MỤC LỤC
LỜI CẢM ƠN........................................................................................................................i
TÓM TẮT ............................................................................................................................ii
ABSTRACT ........................................................................................................................iii
LỜI CAM ĐOAN................................................................................................................iv
MỤC LỤC............................................................................................................................v
DANH SÁCH BẢNG BIỂU ..............................................................................................vii
DANH SÁCH HÌNH VẼ...................................................................................................viii
BẢNG THUẬT NGỮ VIẾT TẮT .......................................................................................x
Chƣơng 1: GIỚI THIỆU.......................................................................................................1
Chƣơng 2: CÁC KHÁI NIỆM VÀ TỔNG QUAN KIỂM THỬ DỰA TRÊN MÔ HÌNH .3
2.1 Tổng quan kiểm thử dựa trên mô hình .....................................................................3
2.1.1. Khái niệm kiểm thử dựa trên mô hình..................................................................3
2.1.2. Quy trình chung của kiểm thử dựa trên mô hình..................................................5
2.1.3. Phƣơng pháp đặc tả mô hình bằng máy trạng thái UML .....................................6
2.1.4. Thuận lợi và khó khăn của kiểm thử tự động dựa trên mô hình ..........................6
2.2 Biểu đồ tuần tự và các khối phân đoạn trong UML .................................................8
2.2.1. Biểu đồ tuần tự .....................................................................................................8
2.2.2. Các phân đoạn sử dụng trong biểu đồ tuần tự......................................................8
2.3 Đồ thị dòng điều khiển ...........................................................................................16
2.4 Các độ đo kiểm thử.................................................................................................17
Chƣơng 3: PHƢƠNG PHÁP SINH ĐỒ THỊ DÒNG ĐIỀU KHIỂN TỪ BIỂU ĐỒ TUẦN
TỰ.......................................................................................................................................20
3.1 Điều kiện ràng buộc trong thiết kế .........................................................................20
3.2 Thuật toán biến đổi biểu đồ tuần tự sang đồ thị dòng điều khiển ..........................24
3.2.1. Thuật toán sinh đồ thị dòng điều khiển ..............................................................24
3.2.2. Đồ thị dòng điều khiển tƣơng ứng với các phân đoạn .......................................29
vi
3.3 Kỹ thuật sinh kịch bản kiểm thử.............................................................................37
3.3.1. Kịch bản kiểm thử cho các toán từ thông thƣờng ..............................................37
3.3.2. Kịch bản kiểm thử cho các phân đoạn song song (Par, Seq) .............................42
3.4 Xây dựng hệ ràng buộc...........................................................................................44
3.5 Giải hệ sử dụng SMT-Solver..................................................................................45
3.6 Các nghiên cứu liên quan .......................................................................................46
Chƣơng 4: CÔNG CỤ VÀ THỰC NGHIỆM ....................................................................48
4.1 Giới thiệu công cụ và môi trƣờng thực nghiệm .....................................................48
4.2 Thực nghiệm...........................................................................................................50
4.3 Ý nghĩa thực nghiệm ..............................................................................................57
Chƣơng 5: KẾT LUẬN ................................................................................................59
TÀI LIỆU THAM KHẢO..................................................................................................61
vii
DANH SÁCH BẢNG BIỂU
ảng 2.1 Ca kiểm thử độ bao phủ yếu ...............................................................................18
ảng 2.2 Ca kiểm thử độ bao phủ trung bình.....................................................................18
ảng 2.3 Ca kiểm thử độ bao phủ mạnh ............................................................................19
ảng 3.1 Các khóa cơ bản và ý nghĩa trong tệp xmi..........................................................24
ảng 3.2 Dữ liệu thu thập tƣơng ứng theo các nốt đƣợc nối với nhau ..............................39
ảng 4.1 Môi trƣờng thử nghiệm công cụ sinh ca kiểm thử từ thiết kế.............................49
viii
DANH SÁCH HÌNH VẼ
Hình 2.1 Qui trình kiểm thử dựa trên mô hình.....................................................................5
Hình 2.2 Phân đoạn Alt. .......................................................................................................9
Hình 2.3 Phân đoạn Opt. ......................................................................................................9
Hình 2.4 Phân đoạn Loop vô hạn. ........................................................................................9
Hình 2.5 Phân đoạn Loop với cận trên bằng cận dƣới bằng 10. ........................................10
Hình 2.6 Phân đoạn Loop với cận trên bằng 5, cận dƣới bằng 10. ....................................10
Hình 2.7 Phân đoạn Break..................................................................................................11
Hình 2.8 Phân đoạn Par......................................................................................................12
Hình 2.9 Phân đoạn Seq. ....................................................................................................12
Hình 2.10 Phân đoạn Strict.................................................................................................13
Hình 2.11 Phân đoạn Ignore...............................................................................................13
Hình 2.12 Phân đoạn Consider...........................................................................................14
Hình 2.13 Phân đoạn Neg...................................................................................................15
Hình 2.14 Phân đoạn Assert. ..............................................................................................15
Hình 2.15 Phân đoạn Critical. ............................................................................................16
Hình 2.16 Đồ thị dòng điều khiển tƣơng ứng của phân đoạn Par......................................18
Hình 3.1 Thiết kế tên thông điệp........................................................................................21
Hình 3.2 Thiết kế ràng buộc...............................................................................................22
Hình 3.3 Khai báo biến trong ràng buộc tƣơng ứng cho các lớp. ......................................23
Hình 3.4 Xóa triệt để các đối tƣợng không dùng nữa. .......................................................23
Hình 3.5 Đồ thị CFG tƣơng ứng cho phân đoạn Alt. .........................................................31
Hình 3.6 Đồ thị CFG tƣơng ứng cho phân đoạn Opt. ........................................................31
Hình 3.7 Đồ thị CFG tƣơng ứng cho phân đoạn Loop.......................................................32
Hình 3.8 Đồ thị CFG tƣơng ứng cho phân đoạn Break......................................................32
Hình 3.9 Đồ thị CFG tƣơng ứng cho phân đoạn Par..........................................................32
Hình 3.10 Đồ thị CFG tƣơng ứng cho phân đoạn Seq. ......................................................33
ix
Hình 3.11 Đồ thị CFG tƣơng ứng cho phân đoạn Ignore...................................................34
Hình 3.12 Đồ thị CFG tƣơng ứng cho phân đoạn Consider...............................................34
Hình 3.13 Đồ thị CFG tƣơng ứng cho phân đoạn Neg.......................................................35
Hình 3.14 Đồ thị CFG tƣơng ứng cho phân đoạn Assert...................................................36
Hình 3.15 Đồ thị CFG tƣơng ứng cho phân đoạn Strict.....................................................36
Hình 3.16 Ví dụ cây đồ thị cần duyệt.................................................................................38
Hình 3.17 Đồ thị dòng điều khiển. .....................................................................................39
Hình 3.18 Ví dụ về ràng buộc OCL đƣợc khai báo trong thiết kế. ....................................45
Hình 3.19 Mô tả công cụ SMT Solver ...............................................................................46
Hình 4.1 Cấu trúc công cụ thực nghiệm.............................................................................48
Hình 4.2 Đầu vào công cụ của ví dụ 1. ..............................................................................50
Hình 4.3 Đầu ra - đồ thị CFG của ví dụ 1. .........................................................................51
Hình 4.4 Đồ thị CFG và ca kiểm thử độ bao phủ yếu cho ví dụ 1.....................................52
Hình 4.5 Ca kiểm thử độ bao phủ yếu cho ví dụ 1.............................................................52
Hình 4.6 Ca kiểm thử độ bao phủ trung bình cho ví dụ 1..................................................52
Hình 4.7 Dữ liệu kiểm thử sau khi xuất ra tệp MS Excel ..................................................53
Hình 4.8 Đầu vào của ví dụ 2.............................................................................................54
Hình 4.9 Đầu ra đồ thị CFG cho ví dụ 2. ...........................................................................55
Hình 4.10 Ca kiểm thử độ bao phủ yếu cho ví dụ 2...........................................................55
Hình 4.11 Ca kiểm thử độ bao phủ trung bình cho ví dụ 2................................................56
Hình 4.12 Ca kiểm thử độ bao phủ mạnh cho ví dụ 2........................................................56
Hình 4.13 Đƣờng đi tƣơng ứng của một ca kiểm thử độ bao phủ mạnh của ví dụ 2.........57
x
BẢNG THUẬT NGỮ VIẾT TẮT
STT Từ viết tắt Tên đầy đủ Ý nghĩa
1 BN Block Node Nốt đơn
2 CFG Control Flow Graph Đồ thị dòng điều khiển
3 DC Decision Node Nốt quyết định
4 FN Fork Node Nốt rẽ nhánh
5 IDE
Integrated Development
Environment
Môi trƣờng phát triển tích
hợp
6 JN Join Node Nốt nối
7 MN Merge Node Nốt sáp nhập
8 OCL Object Constraint Language
Ngôn ngữ ràng buộc trên
đối tƣợng
9 SUT Software Under Testing
Phần mềm đang đƣợc kiểm
thử
10 UML Unified Modeling Language
Ngôn ngữ mô hình hóa
thống nhất
1
Chƣơng 1: GIỚI THIỆU
Công nghệ phần mềm đang ngày càng phát triển và chi phối cuộc sống của con
ngƣời. Ngƣợc lại, con ngƣời luôn không ngừng sáng tạo để tạo ra những công nghệ mới,
phần mềm và dịch vụ mới. Trong quá trình phát triển đó, cần phải có một qui trình song
song để phát hiện và kiểm soát những sai lầm mà con ngƣời có thể vô tình hoặc cố tình
tạo ra, đó chính là kiểm thử. Theo ƣớc tính, quá trình kiểm thử chiếm khoảng 50% thời
gian và 40% - 60% tổng chi phí trong toàn bộ quá trình phát triển phần mềm [1]. Quá
trình kiểm thử cũng quyết định sự thành công, mức độ đảm bảo của dự án phần mềm đặc
biệt là trong các lĩnh vực đòi hỏi độ chính xác cao nhƣ hàng không, quân sự, khoa học, vũ
trụ.. Vì vậy, để rút ngắn thời gian phát triển và nâng cao chất lƣợng dự án phần mềm, quá
trình sinh ca kiểm thử tự động và nâng cao chất lƣợng ca kiểm thử trở nên thực sự cần
thiết, nhất là đối với những phần mềm lớn và phức tạp. Kiểm thử tự động đang đƣợc xem
là giải pháp chính nhằm giảm chi phí và thời gian mà vẫn đảm bảo chất lƣợng trong quá
trình phát triển phần mềm. Để giải quyết vấn đề này, nhiều công trình nghiên cứu đã đƣợc
đề xuất nhằm giải quyết, tối ƣu và tự động hóa quá trình kiểm thử. Mỗi công trình nghiên
cứu mang lại một kết quả khác nhau và áp dụng cho từng mục đích kiểm thử khác nhau.
Một số nghiên cứu có thể kể đến nhƣ: phƣơng pháp sinh ca kiểm thử tự động từ biểu đồ
tuần tự trong UML bởi A.V.K. Shanthi và G. Mohan Kumar [6]. Sinh dữ liệu kiểm thử tự
động từ biểu đồ tuần tự UML và ràng buộc OCL bởi Ashalatha Nayak và Debasis
Samanta [4]. Sinh ca kiểm thử từ biểu đồ tuần tự và hệ thống chuyển đổi đƣợc gắn nhãn
bởi Emanuela G. Cartaxo [9]. Sinh ca kiểm thử tự động từ biểu đồ tuần tự UML và ràng
buộc OCL bởi Li Bao-Lin, Li Zhi-shu, Li Qing và Chen Yan Hong [10], v.v. Trong đó
một số nghiên cứu mới chỉ dừng lại ở dạng đề xuất, nhiều nghiên cứu khác chƣa giải
quyết trọn vẹn bài toán kiểm thử trực tiếp từ biểu đồ tuần tự từ một phần mềm cụ thể. Mỗi
phƣơng pháp hƣớng tới một mục đích kiểm thử khác nhau. Để hiểu rõ hơn một vài nghiên
cứu trên sẽ đƣợc trình bày chi tiết hơn ở chƣơng ba của luận văn.
Bài nghiên cứu này tôi sẽ trình bày một phƣơng pháp khác sinh ca kiểm thử tự
động và cải tiến một công đoạn sinh ca kiểm thử tự động để nâng cao chất lƣợng kiểm
thử. Cũng nhƣ các phƣơng pháp kiểm thử dựa trên mô hình khác, phƣơng pháp này đòi
hỏi phải có các mô hình toán học đặc tả chính xác hành vi của hệ thống và có sẵn trong
thực tế. Các mô hình này thƣờng đƣợc biểu diễn bằng các máy hữu hạn trạng thái đơn
định. Tuy nhiên, xây dựng mô hình cho các phần mềm là một công việc khó khăn và tiềm
ẩn nhiều lỗi đối với các công ty. Thay vào đó việc phân tích và thiết kế dựa trên các biểu
đồ tuần tự UML là một công việc dễ dàng và trở nên phổ biến hơn. Do đó việc kiểm thử
tính đúng đắn cho thiết kế dựa trên mô hình đang đƣợc nghiên cứu và áp dụng thực tế cho
kiểm thử dự án phần mềm. Không những tự động hóa đƣợc qui trình kiểm thử mà thời
2
gian bắt đầu kiểm thử cũng đƣợc tiến hành sớm hơn giúp rút ngắn thời gian phát triển
phần mềm.
Giai đoạn kiểm thử thiết kế (kiểm thử dựa trên mô hình) chủ yếu tập trung vào các
ca kiểm thử đƣợc sinh ra từ các đƣờng kiểm thử dựa trên đồ thị hoạt động và sinh ra dữ
liệu kiểm thử từ dữ liệu đầu vào là các bản thiết kế từ đặc tả chƣơng trình. Với mục tiêu
kiểm thử phần mềm dựa trên thiết kế của biểu đồ tuần tự, mục tiêu nâng cao chất lƣợng
kiểm thử cũng nhƣ khả năng phát hiện lỗi của các kịch bản kiểm thử trong thiết kế và khi
chƣơng trình đƣợc thực thi. Nội dung bài nghiên cứu này đƣợc trình bày trong 4 chƣơng
và phần kết luận.
Chƣơng 1 giới thiệu đề tài, lý do chọn đề tài, trình bày tổng quan nội dung nghiên
cứu và bố cục luận văn.
Chƣơng 2 trình bày các khái niệm cơ bản phục vụ cho đề tài bao gồm các vấn đề
liên quan trong kiểm thử dựa trên mô hình, phƣơng pháp đặc tả mô hình bằng máy trạng
thái UML. Các khái niệm về biểu đồ tuần tự và các phân đoạn trong thiết kế. Cuối cùng là
giới thiệu đồ thị dòng điều khiển và đề xuất ba độ đo kiểm thử áp dụng cho bài nghiên
cứu.
Chƣơng 3 nghiên cứu đề xuất cách biến đổi từ biểu đồ tuần tự sang đồ thị dòng
điều khiển và các thuật toán biến đổi. Phƣơng pháp sinh ca kiểm thử sau khi hoàn thành
độ thị dòng điều khiển trong đó chia ra 2 kịch bản kiểm thử. Một cho các phân đoạn thông
thƣờng (các phân đoạn không chứa luồng song song) và một kịch bản kiểm thử cho các
phân đoạn chứa luồng song song (Par, Seq). Phần cuối chƣơng 3 trình bày phƣơng pháp
sinh dữ liệu kiểm thử từ đồ thị dòng điều khiển, một số nghiên cứu liên quan để thấy đƣợc
ƣu nhƣợc điểm của bài nghiên cứu so với các phƣơng pháp khác.
Chƣơng 4 giới thiệu công cụ thực nghiệm, các ví dụ thể hiện tính đúng đắn và khả
thi của phƣơng pháp đề xuất. Kết quả thu đƣợc thực tế từ chƣơng trình và rút ra ý nghĩa
của phƣơng pháp đề xuất.
Cuối cùng là kết luận, định hƣớng mở rộng và tài liệu tham khảo.
3
Chƣơng 2: CÁC KHÁI NIỆM VÀ TỔNG QUAN KIỂM THỬ DỰA TRÊN MÔ
HÌNH
2.1 Tổng quan kiểm thử dựa trên mô hình
Ngày nay, các công ty phần mềm lớn thƣờng sử dụng ngôn ngữ UML (Unified
Modeling Language) để phân tích, thiết kế phần mềm trƣớc khi đi vào triển khai. Sản
phẩm tạo ra là các mô hình thiết kế bởi UML. Trong UML có nhiều mô hình phục vụ cho
thiết kế, việc lựa chọn những mô hình nào để thiết kế phụ vào mục đích sử dụng và định
hƣớng phát triển phần mềm của công ty đó. Quá trình kiểm thử trong giai đoạn thiết kế
này đƣợc gọi là kiểm thử dựa trên mô hình. Các mô hình thiết kế có thể là biểu đồ lớp,
biểu đồ tuần tự, biểu đồ hoạt động, v.v. là đầu vào cho kiểm thử dựa trên mô hình, đầu ra
là các ca kiểm thử để đánh giá, phát hiện lỗi. Mục đích của kiểm thử dựa trên mô hình là
tìm ra đƣợc lỗi từ khâu thiết kế, không triển khai những thiết kế lỗi, hạn chế và rút ngắn
đƣợc thời gian kiểm thử cũng nhƣ triển khai dự án sau này.
Việc kiểm thử và phát hiện sớm các lỗi, các khiếm khuyết trong thiết kế làm giảm
thiểu đến mức thấp nhất các lỗi phát sinh khi đƣa vào ứng dụng thực tế, đồng thời làm
giảm đáng kể thời gian cũng nhƣ chi phí phát triển, bảo trì. Do vậy, việc phát triển một
phƣơng pháp kiểm thử dựa trên mô hình mang lại hiệu quả cao là rất cần thiết. Trong
chƣơng này, tôi sẽ trình bày lý thuyết về phƣơng pháp kiểm thử dựa trên mô hình và ứng
dụng cho kiểm thử phần mềm.
2.1.1. Khái niệm kiểm thử dựa trên mô hình
Kiểm thử dựa trên mô hình là một kỹ thuật kiểm thử hộp đen, dựa trên phƣơng
pháp ứng dụng các mô hình thiết kế vào kiểm thử phần mềm. Mô hình thiết kế là đại diện
cho các hành vi mong muốn của một hệ thống cần kiểm thử, kiểm thử dựa trên mô hình
đại diện cho một chiến lƣợc thử nghiệm hay một môi trƣờng kiểm thử.
Một mô hình đặc tả hệ thống thƣờng là một bản tóm tắt, trình bày một phần hành
vi mong muốn của hệ thống. Chúng đƣợc biểu diễn bằng máy hữu hạn trạng thái, ôtômat,
đặc tả đại số, biểu đồ trạng thái bằng UML, v.v. Các ca kiểm thử có thể đƣợc sinh ra từ
mô hình theo nhiều cách khác nhau. Trƣờng hợp kiểm thử dựa trên một mô hình gọi là
kiểm thử chức năng có cùng mức độ trừu tƣợng nhƣ mô hình. Những trƣờng hợp kiểm
thử này đƣợc gọi là một bộ kiểm thử trừu tƣợng. Một bộ kiểm thử trừu tƣợng không thể
khẳng định hoàn toàn đƣợc tính đúng đắn của hệ thống. Vì hệ thống trên thiết kế cũng có
một mức sai trừu tƣợng. Một bộ kiểm thử thực thi cần phải đƣợc bắt nguồn từ một bộ thử
nghiệm trừu tƣợng tƣơng ứng. Các bộ kiểm thử thực thi có thể liên lạc trực tiếp với hệ
thống kiểm thử. Điều này đạt đƣợc bằng cách ánh xạ các ca kiểm thử trừu tƣợng với các
4
các ca kiểm thử cụ thể phù hợp để thực thi. Trong một số môi trƣờng kiểm thử dựa trên
mô hình, mô hình có đủ thông tin để tạo ra dãy ca kiểm thử thực thi trực tiếp. Trong các
trƣờng hợp khác, các yếu tố trong bộ phần mềm kiểm thử cần phải đƣợc ánh xạ tới bộ
kiểm thử cụ thể.
Có bốn phƣơng pháp tiếp cận với kiểm thử dựa trên mô hình nhƣ sau [7]:
 Sinh ra dữ liệu đầu vào kiểm thử từ một mô hình chính: đầu vào cơ bản của
kiểm thử dựa trên mô hình là các mô hình, từ đó tạo ra các ca kiểm thử bằng cách
chọn lựa thông minh một tập hợp con của tập giá trị các trƣờng hợp có khả năng để
đƣa ra dữ liệu đầu vào kiểm thử. Ví dụ mô hình cần kiểm thử có 3 tập đầu vào nhƣ
sau, A : {red, green, yellow}, B : {1, 2, 3, 4} và C : {car, truck, bike}. Chúng ta có
thể kết hợp và lựa chọn ra số ca kiểm thử tối thiểu thỏa mãn tất cả các đƣờng kiểm
thử có thể thực thi thay vì thực thi tất cả các ca kiểm thử. Theo đó số ca kiểm thử
cho ví dụ này là 12 thay vì 3 x 4 x 3 = 36 ca kiểm thử.
 Sinh ra các ca kiểm thử từ một mô hình môi trƣờng: phƣơng pháp này sử dụng
một loại mô hình khác, mô hình này sẽ miêu tả môi trƣờng mong muốn của SUT.
Từ mô hình mô phỏng giả lập này đƣa ra các tham số gọi tới SUT. Tuy nhiên, nhƣ
cách tiếp cận sinh dữ liệu đầu vào kiểm thử từ một mô hình chính, trình tự đƣợc
tạo ra không chỉ định rõ các đầu ra mong đợi của SUT, điều này là không thể dự
đoán các giá trị đầu ra, bởi vì mô hình môi trƣờng không mô hình hóa đƣợc toàn
bộ hành vi của SUT. Vì vậy nó rất khó để xác định chính xác một kiểm thử là
thành công hay thất bại.
 Sinh ra các ca kiểm thử với các dự đoán từ một mô hình hành vi: đƣa ra các ca
kiểm thử có khả năng thực thi bao gồm các thông tin dự đoán các giá trị đầu ra
mong muốn của SUT. Hoặc một vài khâu kiểm tra tự động các giá trị đầu ra thực tế
để có thể nhìn thấy nếu chúng là đúng đắn. Điều này khó hơn việc sinh ra dữ liệu
kiểm thử đầu vào hoặc kiểm thử dựa trên trình tự gọi tới SUT mà không kiểm tra
tới kết quả đầu ra. Để đƣa ra kiểm thử với các dự đoán thì ngƣời đƣa ra các ca
kiểm thử phải có đầy đủ thông tin về các hành vi mong đợi của SUT để có thể tiên
đoán hoặc kiểm tra các dữ liệu đầu ra của SUT. Một cách khác, với định nghĩa
kiểm thử dựa trên mô hình này, mô hình phải mô tả các hành vi mong đợi của
SUT, cũng nhƣ mối quan hệ giữa chúng, đồng thời mô tả đầu vào và đầu ra cho
từng hành vi. Thuận lợi của cách tiếp cận này là nó là phƣơng pháp tiếp cận duy
nhất giải quyết đƣợc vấn đề kiểm thử dựa trên mô hình bằng việc chọn lựa các giá
trị đầu vào và việc đƣa ra các trình tự của sự vận hành, việc đƣa ra các ca kiểm thử
có khả năng thực thi bao gồm thông tin quyết định sau mỗi ca kiểm thử.
5
 Sinh ra các đoạn mã kiểm thử từ các kiểm thử trừu tƣợng: sinh ra các ca kiểm
thử có thể thực thi bao gồm các thông tin tiên đoán dựa trên mô hình hành vi của
SUT. Quá trình sinh ra các ca kiểm thử này bao gồm việc sinh ra dữ liệu kiểm thử
và trình tự các phƣơng thức gọi tới kiểm thử tuần tự, sinh ra các dự đoán để kiểm
tra kết quả đầu ra của SUT. Đây là một phƣơng pháp tiếp cận hoàn thiện và phức
tạp nhất, mang lại hiệu quả tốt nhất. Nó có thể tự động hoàn thiện các tiến trình
thiết kế, đƣa ra một mô hình hoàn thiện, tái hiện đầy đủ các tuần tự kiểm thử và
chuyển đổi thành các kịch bản kiểm thử có thể thực thi.
Với cách nhìn của kiểm thử dựa trên mô hình, chúng ta định nghĩa kiểm thử dựa
trên mô hình nhƣ việc tự động tạo ra các ca kiểm thử hộp đen đối với bản thiết kế.
2.1.2. Quy trình chung của kiểm thử dựa trên mô hình
Mô hình UML đƣợc thiết kế từ các đặc tả yêu cầu của hệ thống. Mô hình có thể
đƣợc biểu diễn bằng các loại mô hình và biểu đồ khác nhau. Việc xây dựng mô hình còn
phải dựa trên các yếu tố dữ liệu đầu vào và đầu ra. Mô hình này đƣợc sử dụng để sinh đầu
vào cho các ca kiểm thử. Tiếp đến, chúng ta sẽ sinh giá trị đầu ra mong muốn ứng với mỗi
bộ đầu vào. Khi kết thúc bƣớc này, chúng ta đã có các ca kiểm thử. Sau khi thực thi các
ca kiểm thử tƣơng ứng theo từng giai đoạn hoặc phƣơng pháp tiếp cận, kết quả thu đƣợc
sẽ đƣợc so sánh với kết quả mong đợi. Từ đó quyết định hành động tiếp theo nhƣ sửa đổi
mô hình hoặc dừng kiểm thử, v.v.
Các bản đặc tả yêu cầu
Mô
hình
Các chuỗi kiểm
thử
Kiểm thử dự
đoán
Kết luận: Pass /
Fail
Thực thi
Thiết kế
Tạo tự động
Điều khiển
Theo dõi
Phản hồi
Phản hồi
Phản hồi
Hình 2.1 Qui trình kiểm thử dựa trên mô hình.
6
Hình 2.1 mô tả về quy trình chung của kiểm thử tự động dựa trên mô hình [8].
Kiểm thử tự động dựa trên mô hình gồm các giai đoạn sau:
 Sinh mô hình dựa trên các yêu cầu và chức năng của hệ thống.
 Sinh các ca kiểm thử (bộ đầu vào và giá trị đầu ra mong đợi cho mỗi ca kiểm thử).
 Chạy các kịch bản kiểm thử để phát hiện các lỗi/khiếm khuyết của sản phẩm.
 So sánh kết quả đầu ra thực tế với kết quả đầu ra dự kiến.
 Quyết định hành động tiếp theo (sửa đổi mô hình, tạo thêm ca kiểm thử, dừng kiểm
thử, đánh giá chất lƣợng của phần mềm) [1].
2.1.3. Phƣơng pháp đặc tả mô hình bằng máy trạng thái UML
Các phƣơng pháp đặc tả mô hình sử dụng các công cụ toán học thƣờng khó và ít
phổ biến vì thƣờng đƣợc thực hiện bằng các chuyên gia về đặc tả hình thức [1]. Phù hợp
hơn cho môi trƣờng công nghiệp, đặc tả mô hình bằng máy trạng thái UML thƣờng đƣợc
dùng để đặc tả các hành vi động (chuyển trạng thái) của các lớp đối tƣợng, các ca sử dụng
(use cases), các hệ thống con và thậm chí là toàn bộ hệ thống. Tuy nhiên, máy trạng thái
UML thƣờng đƣợc sử dụng cho các lớp đối tƣợng. Trong UML, một trạng thái ứng với
một điều kiện quan trọng của một đối tƣợng. Trạng thái này đƣợc quyết định bởi các giá
trị hiện thời của đối tƣợng, các mối quan hệ với các đối tƣợng khác và các hành động
(phƣơng thức) mà đối tƣợng này thực hiện. Một phép chuyển trạng thái là mối quan hệ
giữa hai trạng thái. Một phép chuyển trạng thái trong UML bao gồm một sự kiện đƣợc
kích hoạt, điều kiện và hành động tƣơng ứng. Các sự kiện đƣợc kích hoạt của các phép
chuyển trạng thái có thể là một trong các sự kiện sau:
 Một lời gọi ứng với một phƣơng thức.
 Một tín hiệu nhận đƣợc từ các trạng thái khác trong máy trạng thái.
 Một sự thay đổi giá trị của một thuộc tính nào đó của một đối tƣợng.
 Hết thời gian (timeout).
2.1.4. Thuận lợi và khó khăn của kiểm thử tự động dựa trên mô hình
Kiểm thử tự động luôn mang lại những ƣu điểm và hiệu quả vƣợt trội so với kiểm
thử thủ công, góp phần hoàn thiện qui trình kiểm thử trong phát triển các dự án phần
mềm. Sau đây là những ƣu điểm và thuận lợi của kiểm thử tự động dựa trên mô hình:
 Phát hiện lỗi sớm ngay từ khâu thiết kế: Lỗi phát hiện càng sớm, nhất là các lỗi
trong thiết kế sẽ giúp hạn chế đƣợc hàng loạt các lỗi phát sinh sau này theo phản
ứng dây chuyền, nếu không phát hiện đƣợc lỗi ở giai đoạn này đôi khi có thể dẫn
tới việc phải xây dựng lại cả mô hình và làm lại từ khâu thiết kế.
7
 Tiết kiệm thời gian và chi phí: Rút ngắn đƣợc thời gian sinh các ca kiểm thử và
phân tích kết quả nhờ qui trình tự động. Việc phát hiện đƣợc lỗi sớm cũng giúp ích
giảm thiểu thiệt hại và rủi ro cho hệ thống phần mềm, rút ngắn thời gian kiểm thử.
 Nâng cao chất lƣợng kiểm thử: Có thể đánh giá đƣợc mức độ hiệu quả của kiểm
thử thông qua các mức độ bao phủ của mô hình và các ca kiểm thử. Nếu mô hình
của hệ thống đƣợc xây dựng tốt thì quá trình kiểm thử dựa trên mô hình sinh ra
nhiều ca kiểm thử và phát hiện nhiều lỗi. Kiểm thử mô hình cũng cho phép giảm
các lỗi chủ quan do ngƣời kiểm thử sinh ra trong quá trình kiểm thử sản phẩm.
 Phát hiện các lỗi trong đặc tả, yêu cầu: Kiểm thử dựa trên mô hình đôi khi không
chỉ phát hiện đƣợc các lỗi trong thiết kế mà còn phát hiện đƣợc các lỗi trong tài
liệu đặc tả. Các đặc tả thiếu logic sẽ dẫn tới một thiết kế sai và không thể thực thi.
 Khả năng tái sử dụng cao: Mỗi khi phần mềm đƣợc nâng cấp, chúng ta dễ dàng
sinh thêm các ca kiểm thử và kiểm thử lại một cách nhanh chóng và hiệu quả.
 Hiểu hơn về hệ thống: Kiểm thử dựa trên mô hình giúp ngƣời phát triển hiểu hơn
về hệ thống cần kiểm thử thông qua việc xây dựng và phân tích mô hình hệ thống.
 Việc sinh ca kiểm thử tự động dựa trên các thuật toán và phƣơng pháp tiếp cận
khoa học, có tính toán sẽ làm giảm số lƣợng các ca kiểm thử trùng nhau hoặc
không hữu hiệu.
Có rất nhiều ƣu điểm và thuận lợi nhƣng kiểm thử dựa trên mô hình không dễ đƣợc
áp dụng trong thực tế vì một số khó khăn nhƣ sau:
 Không thể đảm bảo tìm đƣợc tất cả các lỗi vì sự sai khác trong thiết kế và thực thi.
 Khó xây dựng mô hình chính xác: Kiểm thử dựa trên mô hình cần có mô hình đặc
tả chính xác hành vi của hệ thống. Trong thực tế, việc xây dựng mô hình là rất khó,
tốn kém và tiềm ẩn nhiều lỗi.
 Chỉ áp dụng kiểm thử chức năng: Các mô hình kiểm thử phải nhỏ so với kích
thƣớc của hệ thống, rằng chúng ta có thể kiểm thử nó mà không mất quá nhiều chi
phí, nhƣng chúng phải đủ chi tiết để mô tả thực tế và các đặc điểm cần.
 Không thể bao phủ hết các giai đoạn kiểm thử: Ví dụ không kiểm thử đƣợc các tiến
trình cài đặt.
 Tạo giá trị đầu ra mong đợi cho các ca kiểm thử là một trong những vấn đề khó
khăn nhất của kiểm thử dựa trên mô hình. Thông thƣờng cần có chuyên gia hoặc
chuyên viên riêng tính toán kết quả mong đợi.

More Related Content

Similar to Luận văn thạc sĩ

VỀ MỘT PHƯƠNG PHÁP TỔNG HỢP HỆ ĐIỀU KHIỂN MỜ DÙNG MẠNG NƠRON ỨNG DỤNG TRONG C...
VỀ MỘT PHƯƠNG PHÁP TỔNG HỢP HỆ ĐIỀU KHIỂN MỜ DÙNG MẠNG NƠRON ỨNG DỤNG TRONG C...VỀ MỘT PHƯƠNG PHÁP TỔNG HỢP HỆ ĐIỀU KHIỂN MỜ DÙNG MẠNG NƠRON ỨNG DỤNG TRONG C...
VỀ MỘT PHƯƠNG PHÁP TỔNG HỢP HỆ ĐIỀU KHIỂN MỜ DÙNG MẠNG NƠRON ỨNG DỤNG TRONG C...Man_Ebook
 
Điều khiển cân bằng hệ con lắc ngược.pdf
Điều khiển cân bằng hệ con lắc ngược.pdfĐiều khiển cân bằng hệ con lắc ngược.pdf
Điều khiển cân bằng hệ con lắc ngược.pdfMan_Ebook
 
Nghiên cứu phát triển hệ điều khiển đo đặc tính đầu ra cho bộ định vị sử dụng...
Nghiên cứu phát triển hệ điều khiển đo đặc tính đầu ra cho bộ định vị sử dụng...Nghiên cứu phát triển hệ điều khiển đo đặc tính đầu ra cho bộ định vị sử dụng...
Nghiên cứu phát triển hệ điều khiển đo đặc tính đầu ra cho bộ định vị sử dụng...Man_Ebook
 
Giáo trình Lập trình PLC theo ngôn ngữ bậc thang.pdf
Giáo trình Lập trình PLC theo ngôn ngữ bậc thang.pdfGiáo trình Lập trình PLC theo ngôn ngữ bậc thang.pdf
Giáo trình Lập trình PLC theo ngôn ngữ bậc thang.pdfMan_Ebook
 
Tìm Hiểu Các Kỹ Thuật Kiểm Thử Phần Mềm và Một Số Ứng Dụng Trong Thực Tế
Tìm Hiểu Các Kỹ Thuật Kiểm Thử Phần Mềm và Một Số Ứng Dụng Trong Thực Tế Tìm Hiểu Các Kỹ Thuật Kiểm Thử Phần Mềm và Một Số Ứng Dụng Trong Thực Tế
Tìm Hiểu Các Kỹ Thuật Kiểm Thử Phần Mềm và Một Số Ứng Dụng Trong Thực Tế Nguyễn Anh
 
Nghiên cứu, thiết kế, thử nghiệm xe hai bánh tự cân bằng​
Nghiên cứu, thiết kế, thử nghiệm xe hai bánh tự cân bằng​Nghiên cứu, thiết kế, thử nghiệm xe hai bánh tự cân bằng​
Nghiên cứu, thiết kế, thử nghiệm xe hai bánh tự cân bằng​Man_Ebook
 
Đều khiển phi tuyến hệ agv​
Đều khiển phi tuyến hệ agv​Đều khiển phi tuyến hệ agv​
Đều khiển phi tuyến hệ agv​Man_Ebook
 
Thiết kế và chế tạo xe AGV ứng dụng Slam tối ưu hóa đường đi.pdf
Thiết kế và chế tạo xe AGV ứng dụng Slam tối ưu hóa đường đi.pdfThiết kế và chế tạo xe AGV ứng dụng Slam tối ưu hóa đường đi.pdf
Thiết kế và chế tạo xe AGV ứng dụng Slam tối ưu hóa đường đi.pdfMan_Ebook
 
Đồ án quản lý tuyển sinh
Đồ án quản lý tuyển sinhĐồ án quản lý tuyển sinh
Đồ án quản lý tuyển sinhLuân Phạm Thành
 
Hoàn thiện kỹ thuật chọn mẫu trong kiểm toán báo cáo tài chính do công ty TNH...
Hoàn thiện kỹ thuật chọn mẫu trong kiểm toán báo cáo tài chính do công ty TNH...Hoàn thiện kỹ thuật chọn mẫu trong kiểm toán báo cáo tài chính do công ty TNH...
Hoàn thiện kỹ thuật chọn mẫu trong kiểm toán báo cáo tài chính do công ty TNH...dịch vụ viết đề tài trọn gói 0973287149
 

Similar to Luận văn thạc sĩ (20)

VỀ MỘT PHƯƠNG PHÁP TỔNG HỢP HỆ ĐIỀU KHIỂN MỜ DÙNG MẠNG NƠRON ỨNG DỤNG TRONG C...
VỀ MỘT PHƯƠNG PHÁP TỔNG HỢP HỆ ĐIỀU KHIỂN MỜ DÙNG MẠNG NƠRON ỨNG DỤNG TRONG C...VỀ MỘT PHƯƠNG PHÁP TỔNG HỢP HỆ ĐIỀU KHIỂN MỜ DÙNG MẠNG NƠRON ỨNG DỤNG TRONG C...
VỀ MỘT PHƯƠNG PHÁP TỔNG HỢP HỆ ĐIỀU KHIỂN MỜ DÙNG MẠNG NƠRON ỨNG DỤNG TRONG C...
 
Điều khiển cân bằng hệ con lắc ngược.pdf
Điều khiển cân bằng hệ con lắc ngược.pdfĐiều khiển cân bằng hệ con lắc ngược.pdf
Điều khiển cân bằng hệ con lắc ngược.pdf
 
Nghiên cứu phát triển hệ điều khiển đo đặc tính đầu ra cho bộ định vị sử dụng...
Nghiên cứu phát triển hệ điều khiển đo đặc tính đầu ra cho bộ định vị sử dụng...Nghiên cứu phát triển hệ điều khiển đo đặc tính đầu ra cho bộ định vị sử dụng...
Nghiên cứu phát triển hệ điều khiển đo đặc tính đầu ra cho bộ định vị sử dụng...
 
Luận văn: Nghiên cứu và ứng dụng mẫu thiết kế trong phương pháp hướng đối tượng
Luận văn: Nghiên cứu và ứng dụng mẫu thiết kế trong phương pháp hướng đối tượngLuận văn: Nghiên cứu và ứng dụng mẫu thiết kế trong phương pháp hướng đối tượng
Luận văn: Nghiên cứu và ứng dụng mẫu thiết kế trong phương pháp hướng đối tượng
 
Giáo trình Lập trình PLC theo ngôn ngữ bậc thang.pdf
Giáo trình Lập trình PLC theo ngôn ngữ bậc thang.pdfGiáo trình Lập trình PLC theo ngôn ngữ bậc thang.pdf
Giáo trình Lập trình PLC theo ngôn ngữ bậc thang.pdf
 
Luận văn: Xây dựng công cụ hỗ trợ sinh ca kiểm thử cặp, 9đ
Luận văn: Xây dựng công cụ hỗ trợ sinh ca kiểm thử cặp, 9đLuận văn: Xây dựng công cụ hỗ trợ sinh ca kiểm thử cặp, 9đ
Luận văn: Xây dựng công cụ hỗ trợ sinh ca kiểm thử cặp, 9đ
 
Tìm Hiểu Các Kỹ Thuật Kiểm Thử Phần Mềm và Một Số Ứng Dụng Trong Thực Tế
Tìm Hiểu Các Kỹ Thuật Kiểm Thử Phần Mềm và Một Số Ứng Dụng Trong Thực Tế Tìm Hiểu Các Kỹ Thuật Kiểm Thử Phần Mềm và Một Số Ứng Dụng Trong Thực Tế
Tìm Hiểu Các Kỹ Thuật Kiểm Thử Phần Mềm và Một Số Ứng Dụng Trong Thực Tế
 
Kiểm chứng các hệ thống thời gian thực sử dụng uppaal, HAY
Kiểm chứng các hệ thống thời gian thực sử dụng uppaal, HAYKiểm chứng các hệ thống thời gian thực sử dụng uppaal, HAY
Kiểm chứng các hệ thống thời gian thực sử dụng uppaal, HAY
 
Luận án: Xây dựng mô hình lai cho bài toán dự báo theo tiếp cận mờ
Luận án: Xây dựng mô hình lai cho bài toán dự báo theo tiếp cận mờLuận án: Xây dựng mô hình lai cho bài toán dự báo theo tiếp cận mờ
Luận án: Xây dựng mô hình lai cho bài toán dự báo theo tiếp cận mờ
 
Nghiên cứu, thiết kế, thử nghiệm xe hai bánh tự cân bằng​
Nghiên cứu, thiết kế, thử nghiệm xe hai bánh tự cân bằng​Nghiên cứu, thiết kế, thử nghiệm xe hai bánh tự cân bằng​
Nghiên cứu, thiết kế, thử nghiệm xe hai bánh tự cân bằng​
 
Đề tài: Công cụ sinh dữ liệu thử tự động cho chương trình Java
Đề tài: Công cụ sinh dữ liệu thử tự động cho chương trình JavaĐề tài: Công cụ sinh dữ liệu thử tự động cho chương trình Java
Đề tài: Công cụ sinh dữ liệu thử tự động cho chương trình Java
 
Đều khiển phi tuyến hệ agv​
Đều khiển phi tuyến hệ agv​Đều khiển phi tuyến hệ agv​
Đều khiển phi tuyến hệ agv​
 
Thiết kế và chế tạo xe AGV ứng dụng Slam tối ưu hóa đường đi.pdf
Thiết kế và chế tạo xe AGV ứng dụng Slam tối ưu hóa đường đi.pdfThiết kế và chế tạo xe AGV ứng dụng Slam tối ưu hóa đường đi.pdf
Thiết kế và chế tạo xe AGV ứng dụng Slam tối ưu hóa đường đi.pdf
 
Kiem thu
Kiem thuKiem thu
Kiem thu
 
Đồ án quản lý tuyển sinh
Đồ án quản lý tuyển sinhĐồ án quản lý tuyển sinh
Đồ án quản lý tuyển sinh
 
Luận văn: Thiết kế hệ thống điều khiển cho Acrobot, HAY
Luận văn: Thiết kế hệ thống điều khiển cho Acrobot, HAYLuận văn: Thiết kế hệ thống điều khiển cho Acrobot, HAY
Luận văn: Thiết kế hệ thống điều khiển cho Acrobot, HAY
 
Luận án: Nhận dạng, điều khiển hệ phi tuyến dùng mô hình nơ rôn
Luận án: Nhận dạng, điều khiển hệ phi tuyến dùng mô hình nơ rônLuận án: Nhận dạng, điều khiển hệ phi tuyến dùng mô hình nơ rôn
Luận án: Nhận dạng, điều khiển hệ phi tuyến dùng mô hình nơ rôn
 
Kiểm Thử Hồi Quy Tự Động Cho Các Ứng Dụng LustreScade.doc
Kiểm Thử Hồi Quy Tự Động Cho Các Ứng Dụng LustreScade.docKiểm Thử Hồi Quy Tự Động Cho Các Ứng Dụng LustreScade.doc
Kiểm Thử Hồi Quy Tự Động Cho Các Ứng Dụng LustreScade.doc
 
Hoàn thiện kỹ thuật chọn mẫu trong kiểm toán báo cáo tài chính do công ty TNH...
Hoàn thiện kỹ thuật chọn mẫu trong kiểm toán báo cáo tài chính do công ty TNH...Hoàn thiện kỹ thuật chọn mẫu trong kiểm toán báo cáo tài chính do công ty TNH...
Hoàn thiện kỹ thuật chọn mẫu trong kiểm toán báo cáo tài chính do công ty TNH...
 
Luận văn: Tìm hiểu về đối sánh lược đồ và xây dựng ứng dụng VNMATCH
Luận văn: Tìm hiểu về đối sánh lược đồ và xây dựng ứng dụng VNMATCHLuận văn: Tìm hiểu về đối sánh lược đồ và xây dựng ứng dụng VNMATCH
Luận văn: Tìm hiểu về đối sánh lược đồ và xây dựng ứng dụng VNMATCH
 

More from ssuser499fca

Luận văn thạc sĩ máy tính.
Luận văn thạc sĩ máy tính.Luận văn thạc sĩ máy tính.
Luận văn thạc sĩ máy tính.ssuser499fca
 
Luận văn thạc sĩ máy tính.
Luận văn thạc sĩ máy tính.Luận văn thạc sĩ máy tính.
Luận văn thạc sĩ máy tính.ssuser499fca
 
Luận văn thạc sĩ máy tính.
Luận văn thạc sĩ máy tính.Luận văn thạc sĩ máy tính.
Luận văn thạc sĩ máy tính.ssuser499fca
 
Luận văn thạc sĩ máy tính.
Luận văn thạc sĩ máy tính.Luận văn thạc sĩ máy tính.
Luận văn thạc sĩ máy tính.ssuser499fca
 
Luận văn thạc sĩ máy tính.
Luận văn thạc sĩ máy tính.Luận văn thạc sĩ máy tính.
Luận văn thạc sĩ máy tính.ssuser499fca
 
Luận văn thạc sĩ máy tính.
Luận văn thạc sĩ máy tính.Luận văn thạc sĩ máy tính.
Luận văn thạc sĩ máy tính.ssuser499fca
 
Khóa luận hóa hữu cơ.
Khóa luận hóa hữu cơ.Khóa luận hóa hữu cơ.
Khóa luận hóa hữu cơ.ssuser499fca
 
Khóa luận hóa hữu cơ.
Khóa luận hóa hữu cơ.Khóa luận hóa hữu cơ.
Khóa luận hóa hữu cơ.ssuser499fca
 
Khóa luận hóa hữu cơ.
Khóa luận hóa hữu cơ.Khóa luận hóa hữu cơ.
Khóa luận hóa hữu cơ.ssuser499fca
 
Khóa luận hóa hữu cơ.
Khóa luận hóa hữu cơ.Khóa luận hóa hữu cơ.
Khóa luận hóa hữu cơ.ssuser499fca
 
Khóa luận hóa hữu cơ.
Khóa luận hóa hữu cơ.Khóa luận hóa hữu cơ.
Khóa luận hóa hữu cơ.ssuser499fca
 
Khóa luận hóa hữu cơ.
Khóa luận hóa hữu cơ.Khóa luận hóa hữu cơ.
Khóa luận hóa hữu cơ.ssuser499fca
 
Khóa luận kinh tế.
Khóa luận kinh tế.Khóa luận kinh tế.
Khóa luận kinh tế.ssuser499fca
 
Khóa luận kinh tế.
Khóa luận kinh tế.Khóa luận kinh tế.
Khóa luận kinh tế.ssuser499fca
 
Khóa luận kinh tế.
Khóa luận kinh tế.Khóa luận kinh tế.
Khóa luận kinh tế.ssuser499fca
 
Khóa luận kinh tế.
Khóa luận kinh tế.Khóa luận kinh tế.
Khóa luận kinh tế.ssuser499fca
 
Khóa luận kinh tế.
Khóa luận kinh tế.Khóa luận kinh tế.
Khóa luận kinh tế.ssuser499fca
 
Khóa luận kinh tế.
Khóa luận kinh tế.Khóa luận kinh tế.
Khóa luận kinh tế.ssuser499fca
 
Khóa luận kế toán kiểm toán.
Khóa luận kế toán kiểm toán.Khóa luận kế toán kiểm toán.
Khóa luận kế toán kiểm toán.ssuser499fca
 
Khóa luận quản trị doanh nghiêp.
Khóa luận quản trị doanh nghiêp.Khóa luận quản trị doanh nghiêp.
Khóa luận quản trị doanh nghiêp.ssuser499fca
 

More from ssuser499fca (20)

Luận văn thạc sĩ máy tính.
Luận văn thạc sĩ máy tính.Luận văn thạc sĩ máy tính.
Luận văn thạc sĩ máy tính.
 
Luận văn thạc sĩ máy tính.
Luận văn thạc sĩ máy tính.Luận văn thạc sĩ máy tính.
Luận văn thạc sĩ máy tính.
 
Luận văn thạc sĩ máy tính.
Luận văn thạc sĩ máy tính.Luận văn thạc sĩ máy tính.
Luận văn thạc sĩ máy tính.
 
Luận văn thạc sĩ máy tính.
Luận văn thạc sĩ máy tính.Luận văn thạc sĩ máy tính.
Luận văn thạc sĩ máy tính.
 
Luận văn thạc sĩ máy tính.
Luận văn thạc sĩ máy tính.Luận văn thạc sĩ máy tính.
Luận văn thạc sĩ máy tính.
 
Luận văn thạc sĩ máy tính.
Luận văn thạc sĩ máy tính.Luận văn thạc sĩ máy tính.
Luận văn thạc sĩ máy tính.
 
Khóa luận hóa hữu cơ.
Khóa luận hóa hữu cơ.Khóa luận hóa hữu cơ.
Khóa luận hóa hữu cơ.
 
Khóa luận hóa hữu cơ.
Khóa luận hóa hữu cơ.Khóa luận hóa hữu cơ.
Khóa luận hóa hữu cơ.
 
Khóa luận hóa hữu cơ.
Khóa luận hóa hữu cơ.Khóa luận hóa hữu cơ.
Khóa luận hóa hữu cơ.
 
Khóa luận hóa hữu cơ.
Khóa luận hóa hữu cơ.Khóa luận hóa hữu cơ.
Khóa luận hóa hữu cơ.
 
Khóa luận hóa hữu cơ.
Khóa luận hóa hữu cơ.Khóa luận hóa hữu cơ.
Khóa luận hóa hữu cơ.
 
Khóa luận hóa hữu cơ.
Khóa luận hóa hữu cơ.Khóa luận hóa hữu cơ.
Khóa luận hóa hữu cơ.
 
Khóa luận kinh tế.
Khóa luận kinh tế.Khóa luận kinh tế.
Khóa luận kinh tế.
 
Khóa luận kinh tế.
Khóa luận kinh tế.Khóa luận kinh tế.
Khóa luận kinh tế.
 
Khóa luận kinh tế.
Khóa luận kinh tế.Khóa luận kinh tế.
Khóa luận kinh tế.
 
Khóa luận kinh tế.
Khóa luận kinh tế.Khóa luận kinh tế.
Khóa luận kinh tế.
 
Khóa luận kinh tế.
Khóa luận kinh tế.Khóa luận kinh tế.
Khóa luận kinh tế.
 
Khóa luận kinh tế.
Khóa luận kinh tế.Khóa luận kinh tế.
Khóa luận kinh tế.
 
Khóa luận kế toán kiểm toán.
Khóa luận kế toán kiểm toán.Khóa luận kế toán kiểm toán.
Khóa luận kế toán kiểm toán.
 
Khóa luận quản trị doanh nghiêp.
Khóa luận quản trị doanh nghiêp.Khóa luận quản trị doanh nghiêp.
Khóa luận quản trị doanh nghiêp.
 

Recently uploaded

cac-cau-noi-tthcm.pdf-cac-cau-noi-tthcm-
cac-cau-noi-tthcm.pdf-cac-cau-noi-tthcm-cac-cau-noi-tthcm.pdf-cac-cau-noi-tthcm-
cac-cau-noi-tthcm.pdf-cac-cau-noi-tthcm-KhnhHuyn546843
 
kinh tế chính trị mác lênin chương hai và hàng hoá và sxxhh
kinh tế chính trị mác lênin chương hai và hàng hoá và sxxhhkinh tế chính trị mác lênin chương hai và hàng hoá và sxxhh
kinh tế chính trị mác lênin chương hai và hàng hoá và sxxhhdtlnnm
 
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...hoangtuansinh1
 
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfCampbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfTrnHoa46
 
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...Nguyen Thanh Tu Collection
 
Trắc nghiệm CHƯƠNG 5 môn Chủ nghĩa xã hội
Trắc nghiệm CHƯƠNG 5 môn Chủ nghĩa xã hộiTrắc nghiệm CHƯƠNG 5 môn Chủ nghĩa xã hội
Trắc nghiệm CHƯƠNG 5 môn Chủ nghĩa xã hộiNgocNguyen591215
 
sách sinh học đại cương - Textbook.pdf
sách sinh học đại cương   -   Textbook.pdfsách sinh học đại cương   -   Textbook.pdf
sách sinh học đại cương - Textbook.pdfTrnHoa46
 
TUYỂN TẬP 50 ĐỀ LUYỆN THI TUYỂN SINH LỚP 10 THPT MÔN TOÁN NĂM 2024 CÓ LỜI GIẢ...
TUYỂN TẬP 50 ĐỀ LUYỆN THI TUYỂN SINH LỚP 10 THPT MÔN TOÁN NĂM 2024 CÓ LỜI GIẢ...TUYỂN TẬP 50 ĐỀ LUYỆN THI TUYỂN SINH LỚP 10 THPT MÔN TOÁN NĂM 2024 CÓ LỜI GIẢ...
TUYỂN TẬP 50 ĐỀ LUYỆN THI TUYỂN SINH LỚP 10 THPT MÔN TOÁN NĂM 2024 CÓ LỜI GIẢ...Nguyen Thanh Tu Collection
 
xemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdf
xemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdfxemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdf
xemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdfXem Số Mệnh
 
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng ĐồngGiới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng ĐồngYhoccongdong.com
 
SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...
SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...
SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...ChuThNgnFEFPLHN
 
bài tập lớn môn kiến trúc máy tính và hệ điều hành
bài tập lớn môn kiến trúc máy tính và hệ điều hànhbài tập lớn môn kiến trúc máy tính và hệ điều hành
bài tập lớn môn kiến trúc máy tính và hệ điều hànhdangdinhkien2k4
 
SLIDE - Tu van, huong dan cong tac tuyen sinh-2024 (đầy đủ chi tiết).pdf
SLIDE - Tu van, huong dan cong tac tuyen sinh-2024 (đầy đủ chi tiết).pdfSLIDE - Tu van, huong dan cong tac tuyen sinh-2024 (đầy đủ chi tiết).pdf
SLIDE - Tu van, huong dan cong tac tuyen sinh-2024 (đầy đủ chi tiết).pdfhoangtuansinh1
 
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdfBỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdfNguyen Thanh Tu Collection
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...Nguyen Thanh Tu Collection
 
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quanGNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quanmyvh40253
 
powerpoint mẫu họp phụ huynh cuối kì 2 học sinh lớp 7 bgs
powerpoint mẫu họp phụ huynh cuối kì 2 học sinh lớp 7 bgspowerpoint mẫu họp phụ huynh cuối kì 2 học sinh lớp 7 bgs
powerpoint mẫu họp phụ huynh cuối kì 2 học sinh lớp 7 bgsNmmeomeo
 
bài thi bảo vệ nền tảng tư tưởng của Đảng.docx
bài thi bảo vệ nền tảng tư tưởng của Đảng.docxbài thi bảo vệ nền tảng tư tưởng của Đảng.docx
bài thi bảo vệ nền tảng tư tưởng của Đảng.docxTrnHiYn5
 
Bài giảng môn Truyền thông đa phương tiện
Bài giảng môn Truyền thông đa phương tiệnBài giảng môn Truyền thông đa phương tiện
Bài giảng môn Truyền thông đa phương tiệnpmtiendhti14a5hn
 
Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................TrnHoa46
 

Recently uploaded (20)

cac-cau-noi-tthcm.pdf-cac-cau-noi-tthcm-
cac-cau-noi-tthcm.pdf-cac-cau-noi-tthcm-cac-cau-noi-tthcm.pdf-cac-cau-noi-tthcm-
cac-cau-noi-tthcm.pdf-cac-cau-noi-tthcm-
 
kinh tế chính trị mác lênin chương hai và hàng hoá và sxxhh
kinh tế chính trị mác lênin chương hai và hàng hoá và sxxhhkinh tế chính trị mác lênin chương hai và hàng hoá và sxxhh
kinh tế chính trị mác lênin chương hai và hàng hoá và sxxhh
 
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
 
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfCampbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
 
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
 
Trắc nghiệm CHƯƠNG 5 môn Chủ nghĩa xã hội
Trắc nghiệm CHƯƠNG 5 môn Chủ nghĩa xã hộiTrắc nghiệm CHƯƠNG 5 môn Chủ nghĩa xã hội
Trắc nghiệm CHƯƠNG 5 môn Chủ nghĩa xã hội
 
sách sinh học đại cương - Textbook.pdf
sách sinh học đại cương   -   Textbook.pdfsách sinh học đại cương   -   Textbook.pdf
sách sinh học đại cương - Textbook.pdf
 
TUYỂN TẬP 50 ĐỀ LUYỆN THI TUYỂN SINH LỚP 10 THPT MÔN TOÁN NĂM 2024 CÓ LỜI GIẢ...
TUYỂN TẬP 50 ĐỀ LUYỆN THI TUYỂN SINH LỚP 10 THPT MÔN TOÁN NĂM 2024 CÓ LỜI GIẢ...TUYỂN TẬP 50 ĐỀ LUYỆN THI TUYỂN SINH LỚP 10 THPT MÔN TOÁN NĂM 2024 CÓ LỜI GIẢ...
TUYỂN TẬP 50 ĐỀ LUYỆN THI TUYỂN SINH LỚP 10 THPT MÔN TOÁN NĂM 2024 CÓ LỜI GIẢ...
 
xemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdf
xemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdfxemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdf
xemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdf
 
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng ĐồngGiới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
 
SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...
SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...
SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...
 
bài tập lớn môn kiến trúc máy tính và hệ điều hành
bài tập lớn môn kiến trúc máy tính và hệ điều hànhbài tập lớn môn kiến trúc máy tính và hệ điều hành
bài tập lớn môn kiến trúc máy tính và hệ điều hành
 
SLIDE - Tu van, huong dan cong tac tuyen sinh-2024 (đầy đủ chi tiết).pdf
SLIDE - Tu van, huong dan cong tac tuyen sinh-2024 (đầy đủ chi tiết).pdfSLIDE - Tu van, huong dan cong tac tuyen sinh-2024 (đầy đủ chi tiết).pdf
SLIDE - Tu van, huong dan cong tac tuyen sinh-2024 (đầy đủ chi tiết).pdf
 
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdfBỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
 
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quanGNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
 
powerpoint mẫu họp phụ huynh cuối kì 2 học sinh lớp 7 bgs
powerpoint mẫu họp phụ huynh cuối kì 2 học sinh lớp 7 bgspowerpoint mẫu họp phụ huynh cuối kì 2 học sinh lớp 7 bgs
powerpoint mẫu họp phụ huynh cuối kì 2 học sinh lớp 7 bgs
 
bài thi bảo vệ nền tảng tư tưởng của Đảng.docx
bài thi bảo vệ nền tảng tư tưởng của Đảng.docxbài thi bảo vệ nền tảng tư tưởng của Đảng.docx
bài thi bảo vệ nền tảng tư tưởng của Đảng.docx
 
Bài giảng môn Truyền thông đa phương tiện
Bài giảng môn Truyền thông đa phương tiệnBài giảng môn Truyền thông đa phương tiện
Bài giảng môn Truyền thông đa phương tiện
 
Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................
 

Luận văn thạc sĩ

  • 1. ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN VĂN HÒA PHƢƠNG PHÁP SINH DỮ LIỆU KIỂM THỬ TỰ ĐỘNG TỪ BIỂU ĐỒ TUẦN TỰ UML, BIỂU ĐỒ LỚP VÀ RÀNG BUỘC OCL LUẬN VĂN THẠC SĨ KỸ THUẬT PHẦN MỀM HÀ NỘI – 2016
  • 2. ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN VĂN HÒA PHƢƠNG PHÁP SINH DỮ LIỆU KIỂM THỬ TỰ ĐỘNG TỪ BIỂU ĐỒ TUẦN TỰ UML, BIỂU ĐỒ LỚP VÀ RÀNG BUỘC OCL Ngành: Công nghệ thông tin Chuyên ngành: Kỹ thuật phần mềm Mã số: 60480103 LUẬN VĂN THẠC SĨ KỸ THUẬT PHẦN MỀM CÁN BỘ HƢỚNG DẪN KHOA HỌC: PGS. TS. PHẠM NGỌC HÙNG HÀ NỘI – 2016
  • 3. VIETNAM NATIONAL UNIVERSITY, HANOI UNIVERSITY OF ENGINEERING TECHNOLOGY NGUYEN VAN HOA A METHOD AND TOOL SUPPORTING FOR AUTOMATED TESTING FROM UML SEQUENCE DIAGRAMS, CLASS DIAGRAMS AND OCL CONSTRAINS THE MS. THESIS INFORMATION TECHNOLOGY Supervisor: Assoc. Prof., PHAM NGOC HUNG, PhD HÀ NỘI – 2016
  • 4. i LỜI CẢM ƠN Đầu tiên, tôi xin gửi lời cảm ơn chân thành và sâu sắc tới thầy Phạm Ngọc Hùng – Ngƣời đã trực tiếp hƣớng dẫn nhiệt tình, giúp đỡ và động viên tôi rất nhiều, cho tôi có cơ hội đƣợc tiếp xúc với các tài liệu tham khảo quý giá, góp ý cho tôi những lời khuyên chân thành trong quá trình nghiên cứu để hoàn thành đề tài này. Tiếp theo tôi xin gửi lời cảm ơn đến các thầy cô giảng viên Trƣờng Đại học Công Nghệ - Đại học Quốc Gia Hà Nội – những ngƣời đã tận tâm truyền đạt những kiến thức quý báu làm nền tảng cho tôi suốt 2 năm học. Cuối cùng, tôi xin gửi lời biết ơn sâu sắc tới gia đình vì đã luôn ở bên cạnh tôi, mang lại cho tôi nguồn động viên tinh thần to lớn và tạo mọi điều kiện thuận lợi cho tôi trong quá trình học tập và hoàn thành luận văn này. Với luận văn này tôi rất mong nhận đƣợc ý kiến đóng góp từ Thầy, Cô giáo và các bạn quan tâm để hoàn thiện và phát triển nhiều hơn về các phƣơng pháp mới trong kiểm thử phần mềm. Xin trân trọng cảm ơn! Hà Nội, ngày 10 tháng 10 năm 2016 Học viên Nguyễn Văn Hòa
  • 5. ii TÓM TẮT Luận văn này trình bày một phƣơng pháp nghiên cứu tự động hóa quá trình kiểm thử dự án phần mềm từ biểu đồ tuần tự UML 2.0. Hƣớng nghiên cứu dựa trên lý thuyết kiểm thử dựa trên mô hình. Mục tiêu đề ra là tự động hóa quá trình kiểm thử, nâng cao hiệu quả kiểm thử, tiết kiệm chi phí và thời gian phát triển dự án. Phƣơng pháp đƣợc đề xuất với nội dung chính nhƣ sau. Đầu vào là biểu đồ tuần tự UML 2.0 lƣu giữ dƣới dạng tệp xmi. Chƣơng trình kiểm thử biến đổi tệp xmi bằng cách bóc tách các thông điệp, toán tử và các ràng buộc đƣợc đƣa vào trong thiết kế, từ đó vẽ đồ thị dòng điều khiển tƣơng ứng. Từ đồ thị dòng điều khiển sử dụng thuật toán dò tìm, thuật toán sinh ca kiểm thử cho các toán tử song song có các điểm chia sẻ dữ liệu tìm ra các đƣờng đi từ điểm bắt đầu cho tới điểm kết thúc gọi là các đƣờng kiểm thử. Tập các đƣờng kiểm thử đƣợc chia tƣơng ứng thành 3 cấp độ kiểm thử khác nhau. Các ràng buộc trên mỗi đƣờng đi đƣợc thu thập và giải lấy kết quả dựa trên công cụ SMT solver kết hợp phƣơng pháp sinh ngẫu nhiên. Kết quả thu đƣợc sau khi giải hệ chính là đầu vào cho các ca kiểm thử tƣơng ứng. Cuối cùng trích xuất ra tệp excel là các ca kiểm thử theo từng độ bao phủ dùng cho kiểm thử thiết kế. Để kiểm nghiệm mức độ khả thi của phƣơng pháp, một công cụ hỗ trợ đã đƣợc cài đặt và thử nghiệm với một số ví dụ đơn giản nhằm minh chứng cho tính đúng đắn và hiệu quả của phƣơng pháp trên. Kết quả thực nghiệm cho thấy hiệu quả của các ca kiểm thử cũng là khả quan để áp dụng cho các công ty phát triển phần mềm. Từ khóa: Kiểm thử dựa trên mô hình, kiểm thử tự động, biểu đồ tuần tự, đồ thị dòng điều khiển, kiểm thử luồng song song, kiểm thử có chia sẻ dữ liệu luồng song song.
  • 6. iii ABSTRACT The content of this thesis is research and propose a method to generate a set of test cases from the UML 2.0 Sequence diagrams. Based on model-based testing in order to automate the testing process, increase effectiveness, reduce cost and time of testing. The method follows the following steps. At first, in order to have the input model for testing, it analyzes and divides the input diagram into fragments. These fragments can be Sequential or nested based on their relationship. After that, it generates the corresponding control flow graph for the input Sequence diagram. The final control flow graph is analyzed to generate a set of testing paths. Symbolic Execution (SE) technique is used to create reStrictions associated with that set of testing paths. Finally, the method uses SMT solver to solve the set of reStrictions to find solution and then to generate a set of test cases. A tool is also implemented and tested with some simple examples in order to show the correctness and effectiveness of the method. The experimental results give us the potential application of the tool in automation testing in companies. Keywords: Model base testing, automated testing, Sequence diagram, control flow testing, Parallel threading testing, threading testing with data shared.
  • 7. iv LỜI CAM ĐOAN Tôi xin cam đoan rằng những nghiên cứu về sinh tự động bộ kiểm thử từ biểu đồ tuần tự đƣợc trình bày trong luận văn này dƣới sự hƣớng dẫn của thầy Phạm Ngọc Hùng là của tôi. Những gì tôi viết ra không sao chép từ các tài liệu, không sử dụng các kết quả của ngƣời khác mà không trích dẫn cụ thể. Tôi xin cam đoan công cụ kiểm thử tự động tôi trình bày trong luận văn là do tôi tự phát triển, không sao chép mã nguồn của ngƣời khác. Nếu sai tôi hoàn toàn chịu trách nhiệm theo quy định của Trƣờng Đại học Công Nghệ - Đại học Quốc Gia Hà Nội. Hà nội, ngày 10 tháng 10 năm 2016 Học viên: Nguyễn Văn Hòa
  • 8. v MỤC LỤC LỜI CẢM ƠN........................................................................................................................i TÓM TẮT ............................................................................................................................ii ABSTRACT ........................................................................................................................iii LỜI CAM ĐOAN................................................................................................................iv MỤC LỤC............................................................................................................................v DANH SÁCH BẢNG BIỂU ..............................................................................................vii DANH SÁCH HÌNH VẼ...................................................................................................viii BẢNG THUẬT NGỮ VIẾT TẮT .......................................................................................x Chƣơng 1: GIỚI THIỆU.......................................................................................................1 Chƣơng 2: CÁC KHÁI NIỆM VÀ TỔNG QUAN KIỂM THỬ DỰA TRÊN MÔ HÌNH .3 2.1 Tổng quan kiểm thử dựa trên mô hình .....................................................................3 2.1.1. Khái niệm kiểm thử dựa trên mô hình..................................................................3 2.1.2. Quy trình chung của kiểm thử dựa trên mô hình..................................................5 2.1.3. Phƣơng pháp đặc tả mô hình bằng máy trạng thái UML .....................................6 2.1.4. Thuận lợi và khó khăn của kiểm thử tự động dựa trên mô hình ..........................6 2.2 Biểu đồ tuần tự và các khối phân đoạn trong UML .................................................8 2.2.1. Biểu đồ tuần tự .....................................................................................................8 2.2.2. Các phân đoạn sử dụng trong biểu đồ tuần tự......................................................8 2.3 Đồ thị dòng điều khiển ...........................................................................................16 2.4 Các độ đo kiểm thử.................................................................................................17 Chƣơng 3: PHƢƠNG PHÁP SINH ĐỒ THỊ DÒNG ĐIỀU KHIỂN TỪ BIỂU ĐỒ TUẦN TỰ.......................................................................................................................................20 3.1 Điều kiện ràng buộc trong thiết kế .........................................................................20 3.2 Thuật toán biến đổi biểu đồ tuần tự sang đồ thị dòng điều khiển ..........................24 3.2.1. Thuật toán sinh đồ thị dòng điều khiển ..............................................................24 3.2.2. Đồ thị dòng điều khiển tƣơng ứng với các phân đoạn .......................................29
  • 9. vi 3.3 Kỹ thuật sinh kịch bản kiểm thử.............................................................................37 3.3.1. Kịch bản kiểm thử cho các toán từ thông thƣờng ..............................................37 3.3.2. Kịch bản kiểm thử cho các phân đoạn song song (Par, Seq) .............................42 3.4 Xây dựng hệ ràng buộc...........................................................................................44 3.5 Giải hệ sử dụng SMT-Solver..................................................................................45 3.6 Các nghiên cứu liên quan .......................................................................................46 Chƣơng 4: CÔNG CỤ VÀ THỰC NGHIỆM ....................................................................48 4.1 Giới thiệu công cụ và môi trƣờng thực nghiệm .....................................................48 4.2 Thực nghiệm...........................................................................................................50 4.3 Ý nghĩa thực nghiệm ..............................................................................................57 Chƣơng 5: KẾT LUẬN ................................................................................................59 TÀI LIỆU THAM KHẢO..................................................................................................61
  • 10. vii DANH SÁCH BẢNG BIỂU ảng 2.1 Ca kiểm thử độ bao phủ yếu ...............................................................................18 ảng 2.2 Ca kiểm thử độ bao phủ trung bình.....................................................................18 ảng 2.3 Ca kiểm thử độ bao phủ mạnh ............................................................................19 ảng 3.1 Các khóa cơ bản và ý nghĩa trong tệp xmi..........................................................24 ảng 3.2 Dữ liệu thu thập tƣơng ứng theo các nốt đƣợc nối với nhau ..............................39 ảng 4.1 Môi trƣờng thử nghiệm công cụ sinh ca kiểm thử từ thiết kế.............................49
  • 11. viii DANH SÁCH HÌNH VẼ Hình 2.1 Qui trình kiểm thử dựa trên mô hình.....................................................................5 Hình 2.2 Phân đoạn Alt. .......................................................................................................9 Hình 2.3 Phân đoạn Opt. ......................................................................................................9 Hình 2.4 Phân đoạn Loop vô hạn. ........................................................................................9 Hình 2.5 Phân đoạn Loop với cận trên bằng cận dƣới bằng 10. ........................................10 Hình 2.6 Phân đoạn Loop với cận trên bằng 5, cận dƣới bằng 10. ....................................10 Hình 2.7 Phân đoạn Break..................................................................................................11 Hình 2.8 Phân đoạn Par......................................................................................................12 Hình 2.9 Phân đoạn Seq. ....................................................................................................12 Hình 2.10 Phân đoạn Strict.................................................................................................13 Hình 2.11 Phân đoạn Ignore...............................................................................................13 Hình 2.12 Phân đoạn Consider...........................................................................................14 Hình 2.13 Phân đoạn Neg...................................................................................................15 Hình 2.14 Phân đoạn Assert. ..............................................................................................15 Hình 2.15 Phân đoạn Critical. ............................................................................................16 Hình 2.16 Đồ thị dòng điều khiển tƣơng ứng của phân đoạn Par......................................18 Hình 3.1 Thiết kế tên thông điệp........................................................................................21 Hình 3.2 Thiết kế ràng buộc...............................................................................................22 Hình 3.3 Khai báo biến trong ràng buộc tƣơng ứng cho các lớp. ......................................23 Hình 3.4 Xóa triệt để các đối tƣợng không dùng nữa. .......................................................23 Hình 3.5 Đồ thị CFG tƣơng ứng cho phân đoạn Alt. .........................................................31 Hình 3.6 Đồ thị CFG tƣơng ứng cho phân đoạn Opt. ........................................................31 Hình 3.7 Đồ thị CFG tƣơng ứng cho phân đoạn Loop.......................................................32 Hình 3.8 Đồ thị CFG tƣơng ứng cho phân đoạn Break......................................................32 Hình 3.9 Đồ thị CFG tƣơng ứng cho phân đoạn Par..........................................................32 Hình 3.10 Đồ thị CFG tƣơng ứng cho phân đoạn Seq. ......................................................33
  • 12. ix Hình 3.11 Đồ thị CFG tƣơng ứng cho phân đoạn Ignore...................................................34 Hình 3.12 Đồ thị CFG tƣơng ứng cho phân đoạn Consider...............................................34 Hình 3.13 Đồ thị CFG tƣơng ứng cho phân đoạn Neg.......................................................35 Hình 3.14 Đồ thị CFG tƣơng ứng cho phân đoạn Assert...................................................36 Hình 3.15 Đồ thị CFG tƣơng ứng cho phân đoạn Strict.....................................................36 Hình 3.16 Ví dụ cây đồ thị cần duyệt.................................................................................38 Hình 3.17 Đồ thị dòng điều khiển. .....................................................................................39 Hình 3.18 Ví dụ về ràng buộc OCL đƣợc khai báo trong thiết kế. ....................................45 Hình 3.19 Mô tả công cụ SMT Solver ...............................................................................46 Hình 4.1 Cấu trúc công cụ thực nghiệm.............................................................................48 Hình 4.2 Đầu vào công cụ của ví dụ 1. ..............................................................................50 Hình 4.3 Đầu ra - đồ thị CFG của ví dụ 1. .........................................................................51 Hình 4.4 Đồ thị CFG và ca kiểm thử độ bao phủ yếu cho ví dụ 1.....................................52 Hình 4.5 Ca kiểm thử độ bao phủ yếu cho ví dụ 1.............................................................52 Hình 4.6 Ca kiểm thử độ bao phủ trung bình cho ví dụ 1..................................................52 Hình 4.7 Dữ liệu kiểm thử sau khi xuất ra tệp MS Excel ..................................................53 Hình 4.8 Đầu vào của ví dụ 2.............................................................................................54 Hình 4.9 Đầu ra đồ thị CFG cho ví dụ 2. ...........................................................................55 Hình 4.10 Ca kiểm thử độ bao phủ yếu cho ví dụ 2...........................................................55 Hình 4.11 Ca kiểm thử độ bao phủ trung bình cho ví dụ 2................................................56 Hình 4.12 Ca kiểm thử độ bao phủ mạnh cho ví dụ 2........................................................56 Hình 4.13 Đƣờng đi tƣơng ứng của một ca kiểm thử độ bao phủ mạnh của ví dụ 2.........57
  • 13. x BẢNG THUẬT NGỮ VIẾT TẮT STT Từ viết tắt Tên đầy đủ Ý nghĩa 1 BN Block Node Nốt đơn 2 CFG Control Flow Graph Đồ thị dòng điều khiển 3 DC Decision Node Nốt quyết định 4 FN Fork Node Nốt rẽ nhánh 5 IDE Integrated Development Environment Môi trƣờng phát triển tích hợp 6 JN Join Node Nốt nối 7 MN Merge Node Nốt sáp nhập 8 OCL Object Constraint Language Ngôn ngữ ràng buộc trên đối tƣợng 9 SUT Software Under Testing Phần mềm đang đƣợc kiểm thử 10 UML Unified Modeling Language Ngôn ngữ mô hình hóa thống nhất
  • 14. 1 Chƣơng 1: GIỚI THIỆU Công nghệ phần mềm đang ngày càng phát triển và chi phối cuộc sống của con ngƣời. Ngƣợc lại, con ngƣời luôn không ngừng sáng tạo để tạo ra những công nghệ mới, phần mềm và dịch vụ mới. Trong quá trình phát triển đó, cần phải có một qui trình song song để phát hiện và kiểm soát những sai lầm mà con ngƣời có thể vô tình hoặc cố tình tạo ra, đó chính là kiểm thử. Theo ƣớc tính, quá trình kiểm thử chiếm khoảng 50% thời gian và 40% - 60% tổng chi phí trong toàn bộ quá trình phát triển phần mềm [1]. Quá trình kiểm thử cũng quyết định sự thành công, mức độ đảm bảo của dự án phần mềm đặc biệt là trong các lĩnh vực đòi hỏi độ chính xác cao nhƣ hàng không, quân sự, khoa học, vũ trụ.. Vì vậy, để rút ngắn thời gian phát triển và nâng cao chất lƣợng dự án phần mềm, quá trình sinh ca kiểm thử tự động và nâng cao chất lƣợng ca kiểm thử trở nên thực sự cần thiết, nhất là đối với những phần mềm lớn và phức tạp. Kiểm thử tự động đang đƣợc xem là giải pháp chính nhằm giảm chi phí và thời gian mà vẫn đảm bảo chất lƣợng trong quá trình phát triển phần mềm. Để giải quyết vấn đề này, nhiều công trình nghiên cứu đã đƣợc đề xuất nhằm giải quyết, tối ƣu và tự động hóa quá trình kiểm thử. Mỗi công trình nghiên cứu mang lại một kết quả khác nhau và áp dụng cho từng mục đích kiểm thử khác nhau. Một số nghiên cứu có thể kể đến nhƣ: phƣơng pháp sinh ca kiểm thử tự động từ biểu đồ tuần tự trong UML bởi A.V.K. Shanthi và G. Mohan Kumar [6]. Sinh dữ liệu kiểm thử tự động từ biểu đồ tuần tự UML và ràng buộc OCL bởi Ashalatha Nayak và Debasis Samanta [4]. Sinh ca kiểm thử từ biểu đồ tuần tự và hệ thống chuyển đổi đƣợc gắn nhãn bởi Emanuela G. Cartaxo [9]. Sinh ca kiểm thử tự động từ biểu đồ tuần tự UML và ràng buộc OCL bởi Li Bao-Lin, Li Zhi-shu, Li Qing và Chen Yan Hong [10], v.v. Trong đó một số nghiên cứu mới chỉ dừng lại ở dạng đề xuất, nhiều nghiên cứu khác chƣa giải quyết trọn vẹn bài toán kiểm thử trực tiếp từ biểu đồ tuần tự từ một phần mềm cụ thể. Mỗi phƣơng pháp hƣớng tới một mục đích kiểm thử khác nhau. Để hiểu rõ hơn một vài nghiên cứu trên sẽ đƣợc trình bày chi tiết hơn ở chƣơng ba của luận văn. Bài nghiên cứu này tôi sẽ trình bày một phƣơng pháp khác sinh ca kiểm thử tự động và cải tiến một công đoạn sinh ca kiểm thử tự động để nâng cao chất lƣợng kiểm thử. Cũng nhƣ các phƣơng pháp kiểm thử dựa trên mô hình khác, phƣơng pháp này đòi hỏi phải có các mô hình toán học đặc tả chính xác hành vi của hệ thống và có sẵn trong thực tế. Các mô hình này thƣờng đƣợc biểu diễn bằng các máy hữu hạn trạng thái đơn định. Tuy nhiên, xây dựng mô hình cho các phần mềm là một công việc khó khăn và tiềm ẩn nhiều lỗi đối với các công ty. Thay vào đó việc phân tích và thiết kế dựa trên các biểu đồ tuần tự UML là một công việc dễ dàng và trở nên phổ biến hơn. Do đó việc kiểm thử tính đúng đắn cho thiết kế dựa trên mô hình đang đƣợc nghiên cứu và áp dụng thực tế cho kiểm thử dự án phần mềm. Không những tự động hóa đƣợc qui trình kiểm thử mà thời
  • 15. 2 gian bắt đầu kiểm thử cũng đƣợc tiến hành sớm hơn giúp rút ngắn thời gian phát triển phần mềm. Giai đoạn kiểm thử thiết kế (kiểm thử dựa trên mô hình) chủ yếu tập trung vào các ca kiểm thử đƣợc sinh ra từ các đƣờng kiểm thử dựa trên đồ thị hoạt động và sinh ra dữ liệu kiểm thử từ dữ liệu đầu vào là các bản thiết kế từ đặc tả chƣơng trình. Với mục tiêu kiểm thử phần mềm dựa trên thiết kế của biểu đồ tuần tự, mục tiêu nâng cao chất lƣợng kiểm thử cũng nhƣ khả năng phát hiện lỗi của các kịch bản kiểm thử trong thiết kế và khi chƣơng trình đƣợc thực thi. Nội dung bài nghiên cứu này đƣợc trình bày trong 4 chƣơng và phần kết luận. Chƣơng 1 giới thiệu đề tài, lý do chọn đề tài, trình bày tổng quan nội dung nghiên cứu và bố cục luận văn. Chƣơng 2 trình bày các khái niệm cơ bản phục vụ cho đề tài bao gồm các vấn đề liên quan trong kiểm thử dựa trên mô hình, phƣơng pháp đặc tả mô hình bằng máy trạng thái UML. Các khái niệm về biểu đồ tuần tự và các phân đoạn trong thiết kế. Cuối cùng là giới thiệu đồ thị dòng điều khiển và đề xuất ba độ đo kiểm thử áp dụng cho bài nghiên cứu. Chƣơng 3 nghiên cứu đề xuất cách biến đổi từ biểu đồ tuần tự sang đồ thị dòng điều khiển và các thuật toán biến đổi. Phƣơng pháp sinh ca kiểm thử sau khi hoàn thành độ thị dòng điều khiển trong đó chia ra 2 kịch bản kiểm thử. Một cho các phân đoạn thông thƣờng (các phân đoạn không chứa luồng song song) và một kịch bản kiểm thử cho các phân đoạn chứa luồng song song (Par, Seq). Phần cuối chƣơng 3 trình bày phƣơng pháp sinh dữ liệu kiểm thử từ đồ thị dòng điều khiển, một số nghiên cứu liên quan để thấy đƣợc ƣu nhƣợc điểm của bài nghiên cứu so với các phƣơng pháp khác. Chƣơng 4 giới thiệu công cụ thực nghiệm, các ví dụ thể hiện tính đúng đắn và khả thi của phƣơng pháp đề xuất. Kết quả thu đƣợc thực tế từ chƣơng trình và rút ra ý nghĩa của phƣơng pháp đề xuất. Cuối cùng là kết luận, định hƣớng mở rộng và tài liệu tham khảo.
  • 16. 3 Chƣơng 2: CÁC KHÁI NIỆM VÀ TỔNG QUAN KIỂM THỬ DỰA TRÊN MÔ HÌNH 2.1 Tổng quan kiểm thử dựa trên mô hình Ngày nay, các công ty phần mềm lớn thƣờng sử dụng ngôn ngữ UML (Unified Modeling Language) để phân tích, thiết kế phần mềm trƣớc khi đi vào triển khai. Sản phẩm tạo ra là các mô hình thiết kế bởi UML. Trong UML có nhiều mô hình phục vụ cho thiết kế, việc lựa chọn những mô hình nào để thiết kế phụ vào mục đích sử dụng và định hƣớng phát triển phần mềm của công ty đó. Quá trình kiểm thử trong giai đoạn thiết kế này đƣợc gọi là kiểm thử dựa trên mô hình. Các mô hình thiết kế có thể là biểu đồ lớp, biểu đồ tuần tự, biểu đồ hoạt động, v.v. là đầu vào cho kiểm thử dựa trên mô hình, đầu ra là các ca kiểm thử để đánh giá, phát hiện lỗi. Mục đích của kiểm thử dựa trên mô hình là tìm ra đƣợc lỗi từ khâu thiết kế, không triển khai những thiết kế lỗi, hạn chế và rút ngắn đƣợc thời gian kiểm thử cũng nhƣ triển khai dự án sau này. Việc kiểm thử và phát hiện sớm các lỗi, các khiếm khuyết trong thiết kế làm giảm thiểu đến mức thấp nhất các lỗi phát sinh khi đƣa vào ứng dụng thực tế, đồng thời làm giảm đáng kể thời gian cũng nhƣ chi phí phát triển, bảo trì. Do vậy, việc phát triển một phƣơng pháp kiểm thử dựa trên mô hình mang lại hiệu quả cao là rất cần thiết. Trong chƣơng này, tôi sẽ trình bày lý thuyết về phƣơng pháp kiểm thử dựa trên mô hình và ứng dụng cho kiểm thử phần mềm. 2.1.1. Khái niệm kiểm thử dựa trên mô hình Kiểm thử dựa trên mô hình là một kỹ thuật kiểm thử hộp đen, dựa trên phƣơng pháp ứng dụng các mô hình thiết kế vào kiểm thử phần mềm. Mô hình thiết kế là đại diện cho các hành vi mong muốn của một hệ thống cần kiểm thử, kiểm thử dựa trên mô hình đại diện cho một chiến lƣợc thử nghiệm hay một môi trƣờng kiểm thử. Một mô hình đặc tả hệ thống thƣờng là một bản tóm tắt, trình bày một phần hành vi mong muốn của hệ thống. Chúng đƣợc biểu diễn bằng máy hữu hạn trạng thái, ôtômat, đặc tả đại số, biểu đồ trạng thái bằng UML, v.v. Các ca kiểm thử có thể đƣợc sinh ra từ mô hình theo nhiều cách khác nhau. Trƣờng hợp kiểm thử dựa trên một mô hình gọi là kiểm thử chức năng có cùng mức độ trừu tƣợng nhƣ mô hình. Những trƣờng hợp kiểm thử này đƣợc gọi là một bộ kiểm thử trừu tƣợng. Một bộ kiểm thử trừu tƣợng không thể khẳng định hoàn toàn đƣợc tính đúng đắn của hệ thống. Vì hệ thống trên thiết kế cũng có một mức sai trừu tƣợng. Một bộ kiểm thử thực thi cần phải đƣợc bắt nguồn từ một bộ thử nghiệm trừu tƣợng tƣơng ứng. Các bộ kiểm thử thực thi có thể liên lạc trực tiếp với hệ thống kiểm thử. Điều này đạt đƣợc bằng cách ánh xạ các ca kiểm thử trừu tƣợng với các
  • 17. 4 các ca kiểm thử cụ thể phù hợp để thực thi. Trong một số môi trƣờng kiểm thử dựa trên mô hình, mô hình có đủ thông tin để tạo ra dãy ca kiểm thử thực thi trực tiếp. Trong các trƣờng hợp khác, các yếu tố trong bộ phần mềm kiểm thử cần phải đƣợc ánh xạ tới bộ kiểm thử cụ thể. Có bốn phƣơng pháp tiếp cận với kiểm thử dựa trên mô hình nhƣ sau [7]:  Sinh ra dữ liệu đầu vào kiểm thử từ một mô hình chính: đầu vào cơ bản của kiểm thử dựa trên mô hình là các mô hình, từ đó tạo ra các ca kiểm thử bằng cách chọn lựa thông minh một tập hợp con của tập giá trị các trƣờng hợp có khả năng để đƣa ra dữ liệu đầu vào kiểm thử. Ví dụ mô hình cần kiểm thử có 3 tập đầu vào nhƣ sau, A : {red, green, yellow}, B : {1, 2, 3, 4} và C : {car, truck, bike}. Chúng ta có thể kết hợp và lựa chọn ra số ca kiểm thử tối thiểu thỏa mãn tất cả các đƣờng kiểm thử có thể thực thi thay vì thực thi tất cả các ca kiểm thử. Theo đó số ca kiểm thử cho ví dụ này là 12 thay vì 3 x 4 x 3 = 36 ca kiểm thử.  Sinh ra các ca kiểm thử từ một mô hình môi trƣờng: phƣơng pháp này sử dụng một loại mô hình khác, mô hình này sẽ miêu tả môi trƣờng mong muốn của SUT. Từ mô hình mô phỏng giả lập này đƣa ra các tham số gọi tới SUT. Tuy nhiên, nhƣ cách tiếp cận sinh dữ liệu đầu vào kiểm thử từ một mô hình chính, trình tự đƣợc tạo ra không chỉ định rõ các đầu ra mong đợi của SUT, điều này là không thể dự đoán các giá trị đầu ra, bởi vì mô hình môi trƣờng không mô hình hóa đƣợc toàn bộ hành vi của SUT. Vì vậy nó rất khó để xác định chính xác một kiểm thử là thành công hay thất bại.  Sinh ra các ca kiểm thử với các dự đoán từ một mô hình hành vi: đƣa ra các ca kiểm thử có khả năng thực thi bao gồm các thông tin dự đoán các giá trị đầu ra mong muốn của SUT. Hoặc một vài khâu kiểm tra tự động các giá trị đầu ra thực tế để có thể nhìn thấy nếu chúng là đúng đắn. Điều này khó hơn việc sinh ra dữ liệu kiểm thử đầu vào hoặc kiểm thử dựa trên trình tự gọi tới SUT mà không kiểm tra tới kết quả đầu ra. Để đƣa ra kiểm thử với các dự đoán thì ngƣời đƣa ra các ca kiểm thử phải có đầy đủ thông tin về các hành vi mong đợi của SUT để có thể tiên đoán hoặc kiểm tra các dữ liệu đầu ra của SUT. Một cách khác, với định nghĩa kiểm thử dựa trên mô hình này, mô hình phải mô tả các hành vi mong đợi của SUT, cũng nhƣ mối quan hệ giữa chúng, đồng thời mô tả đầu vào và đầu ra cho từng hành vi. Thuận lợi của cách tiếp cận này là nó là phƣơng pháp tiếp cận duy nhất giải quyết đƣợc vấn đề kiểm thử dựa trên mô hình bằng việc chọn lựa các giá trị đầu vào và việc đƣa ra các trình tự của sự vận hành, việc đƣa ra các ca kiểm thử có khả năng thực thi bao gồm thông tin quyết định sau mỗi ca kiểm thử.
  • 18. 5  Sinh ra các đoạn mã kiểm thử từ các kiểm thử trừu tƣợng: sinh ra các ca kiểm thử có thể thực thi bao gồm các thông tin tiên đoán dựa trên mô hình hành vi của SUT. Quá trình sinh ra các ca kiểm thử này bao gồm việc sinh ra dữ liệu kiểm thử và trình tự các phƣơng thức gọi tới kiểm thử tuần tự, sinh ra các dự đoán để kiểm tra kết quả đầu ra của SUT. Đây là một phƣơng pháp tiếp cận hoàn thiện và phức tạp nhất, mang lại hiệu quả tốt nhất. Nó có thể tự động hoàn thiện các tiến trình thiết kế, đƣa ra một mô hình hoàn thiện, tái hiện đầy đủ các tuần tự kiểm thử và chuyển đổi thành các kịch bản kiểm thử có thể thực thi. Với cách nhìn của kiểm thử dựa trên mô hình, chúng ta định nghĩa kiểm thử dựa trên mô hình nhƣ việc tự động tạo ra các ca kiểm thử hộp đen đối với bản thiết kế. 2.1.2. Quy trình chung của kiểm thử dựa trên mô hình Mô hình UML đƣợc thiết kế từ các đặc tả yêu cầu của hệ thống. Mô hình có thể đƣợc biểu diễn bằng các loại mô hình và biểu đồ khác nhau. Việc xây dựng mô hình còn phải dựa trên các yếu tố dữ liệu đầu vào và đầu ra. Mô hình này đƣợc sử dụng để sinh đầu vào cho các ca kiểm thử. Tiếp đến, chúng ta sẽ sinh giá trị đầu ra mong muốn ứng với mỗi bộ đầu vào. Khi kết thúc bƣớc này, chúng ta đã có các ca kiểm thử. Sau khi thực thi các ca kiểm thử tƣơng ứng theo từng giai đoạn hoặc phƣơng pháp tiếp cận, kết quả thu đƣợc sẽ đƣợc so sánh với kết quả mong đợi. Từ đó quyết định hành động tiếp theo nhƣ sửa đổi mô hình hoặc dừng kiểm thử, v.v. Các bản đặc tả yêu cầu Mô hình Các chuỗi kiểm thử Kiểm thử dự đoán Kết luận: Pass / Fail Thực thi Thiết kế Tạo tự động Điều khiển Theo dõi Phản hồi Phản hồi Phản hồi Hình 2.1 Qui trình kiểm thử dựa trên mô hình.
  • 19. 6 Hình 2.1 mô tả về quy trình chung của kiểm thử tự động dựa trên mô hình [8]. Kiểm thử tự động dựa trên mô hình gồm các giai đoạn sau:  Sinh mô hình dựa trên các yêu cầu và chức năng của hệ thống.  Sinh các ca kiểm thử (bộ đầu vào và giá trị đầu ra mong đợi cho mỗi ca kiểm thử).  Chạy các kịch bản kiểm thử để phát hiện các lỗi/khiếm khuyết của sản phẩm.  So sánh kết quả đầu ra thực tế với kết quả đầu ra dự kiến.  Quyết định hành động tiếp theo (sửa đổi mô hình, tạo thêm ca kiểm thử, dừng kiểm thử, đánh giá chất lƣợng của phần mềm) [1]. 2.1.3. Phƣơng pháp đặc tả mô hình bằng máy trạng thái UML Các phƣơng pháp đặc tả mô hình sử dụng các công cụ toán học thƣờng khó và ít phổ biến vì thƣờng đƣợc thực hiện bằng các chuyên gia về đặc tả hình thức [1]. Phù hợp hơn cho môi trƣờng công nghiệp, đặc tả mô hình bằng máy trạng thái UML thƣờng đƣợc dùng để đặc tả các hành vi động (chuyển trạng thái) của các lớp đối tƣợng, các ca sử dụng (use cases), các hệ thống con và thậm chí là toàn bộ hệ thống. Tuy nhiên, máy trạng thái UML thƣờng đƣợc sử dụng cho các lớp đối tƣợng. Trong UML, một trạng thái ứng với một điều kiện quan trọng của một đối tƣợng. Trạng thái này đƣợc quyết định bởi các giá trị hiện thời của đối tƣợng, các mối quan hệ với các đối tƣợng khác và các hành động (phƣơng thức) mà đối tƣợng này thực hiện. Một phép chuyển trạng thái là mối quan hệ giữa hai trạng thái. Một phép chuyển trạng thái trong UML bao gồm một sự kiện đƣợc kích hoạt, điều kiện và hành động tƣơng ứng. Các sự kiện đƣợc kích hoạt của các phép chuyển trạng thái có thể là một trong các sự kiện sau:  Một lời gọi ứng với một phƣơng thức.  Một tín hiệu nhận đƣợc từ các trạng thái khác trong máy trạng thái.  Một sự thay đổi giá trị của một thuộc tính nào đó của một đối tƣợng.  Hết thời gian (timeout). 2.1.4. Thuận lợi và khó khăn của kiểm thử tự động dựa trên mô hình Kiểm thử tự động luôn mang lại những ƣu điểm và hiệu quả vƣợt trội so với kiểm thử thủ công, góp phần hoàn thiện qui trình kiểm thử trong phát triển các dự án phần mềm. Sau đây là những ƣu điểm và thuận lợi của kiểm thử tự động dựa trên mô hình:  Phát hiện lỗi sớm ngay từ khâu thiết kế: Lỗi phát hiện càng sớm, nhất là các lỗi trong thiết kế sẽ giúp hạn chế đƣợc hàng loạt các lỗi phát sinh sau này theo phản ứng dây chuyền, nếu không phát hiện đƣợc lỗi ở giai đoạn này đôi khi có thể dẫn tới việc phải xây dựng lại cả mô hình và làm lại từ khâu thiết kế.
  • 20. 7  Tiết kiệm thời gian và chi phí: Rút ngắn đƣợc thời gian sinh các ca kiểm thử và phân tích kết quả nhờ qui trình tự động. Việc phát hiện đƣợc lỗi sớm cũng giúp ích giảm thiểu thiệt hại và rủi ro cho hệ thống phần mềm, rút ngắn thời gian kiểm thử.  Nâng cao chất lƣợng kiểm thử: Có thể đánh giá đƣợc mức độ hiệu quả của kiểm thử thông qua các mức độ bao phủ của mô hình và các ca kiểm thử. Nếu mô hình của hệ thống đƣợc xây dựng tốt thì quá trình kiểm thử dựa trên mô hình sinh ra nhiều ca kiểm thử và phát hiện nhiều lỗi. Kiểm thử mô hình cũng cho phép giảm các lỗi chủ quan do ngƣời kiểm thử sinh ra trong quá trình kiểm thử sản phẩm.  Phát hiện các lỗi trong đặc tả, yêu cầu: Kiểm thử dựa trên mô hình đôi khi không chỉ phát hiện đƣợc các lỗi trong thiết kế mà còn phát hiện đƣợc các lỗi trong tài liệu đặc tả. Các đặc tả thiếu logic sẽ dẫn tới một thiết kế sai và không thể thực thi.  Khả năng tái sử dụng cao: Mỗi khi phần mềm đƣợc nâng cấp, chúng ta dễ dàng sinh thêm các ca kiểm thử và kiểm thử lại một cách nhanh chóng và hiệu quả.  Hiểu hơn về hệ thống: Kiểm thử dựa trên mô hình giúp ngƣời phát triển hiểu hơn về hệ thống cần kiểm thử thông qua việc xây dựng và phân tích mô hình hệ thống.  Việc sinh ca kiểm thử tự động dựa trên các thuật toán và phƣơng pháp tiếp cận khoa học, có tính toán sẽ làm giảm số lƣợng các ca kiểm thử trùng nhau hoặc không hữu hiệu. Có rất nhiều ƣu điểm và thuận lợi nhƣng kiểm thử dựa trên mô hình không dễ đƣợc áp dụng trong thực tế vì một số khó khăn nhƣ sau:  Không thể đảm bảo tìm đƣợc tất cả các lỗi vì sự sai khác trong thiết kế và thực thi.  Khó xây dựng mô hình chính xác: Kiểm thử dựa trên mô hình cần có mô hình đặc tả chính xác hành vi của hệ thống. Trong thực tế, việc xây dựng mô hình là rất khó, tốn kém và tiềm ẩn nhiều lỗi.  Chỉ áp dụng kiểm thử chức năng: Các mô hình kiểm thử phải nhỏ so với kích thƣớc của hệ thống, rằng chúng ta có thể kiểm thử nó mà không mất quá nhiều chi phí, nhƣng chúng phải đủ chi tiết để mô tả thực tế và các đặc điểm cần.  Không thể bao phủ hết các giai đoạn kiểm thử: Ví dụ không kiểm thử đƣợc các tiến trình cài đặt.  Tạo giá trị đầu ra mong đợi cho các ca kiểm thử là một trong những vấn đề khó khăn nhất của kiểm thử dựa trên mô hình. Thông thƣờng cần có chuyên gia hoặc chuyên viên riêng tính toán kết quả mong đợi.