Tải bản đầy đủ (.pdf) (143 trang)

Nghiên cứu phát triển kỹ thuật và giải pháp kiểm thử ứng dụng di động

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.32 MB, 143 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC DUY TÂN
-------------------

NGUYỄN ĐỨC MẬN

NGHIÊN CỨU PHÁT TRIỂN KỸ THUẬT VÀ
GIẢI PHÁP KIỂM THỬ ỨNG DỤNG DI ĐỘNG

MÃ SỐ CHUYÊN NGÀNH: 9480101

LUẬN ÁN TIẾN SĨ KHOA HỌC MÁY TÍNH

Đà Nẵng, 12-2019


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC DUY TÂN
-------------------

NGUYỄN ĐỨC MẬN

NGHIÊN CỨU PHÁT TRIỂN KỸ THUẬT VÀ
GIẢI PHÁP KIỂM THỬ ỨNG DỤNG DI ĐỘNG
MÃ SỐ CHUYÊN NGÀNH: 9480101
CÁN BỘ HƯỚNG DẪN KHOA HỌC:
PGS, TS. HUỲNH QUYẾT THẮNG
TS. NGUYỄN THANH HÙNG

LUẬN ÁN TIẾN SĨ KHOA HỌC MÁY TÍNH


Đà Nẵng 12-2019


LỜI CAM ĐOAN
Tôi xin cam đoan tất cả các nội dung trong luận án "Nghiên cứu phát triển kỹ thuật
và giải pháp kiểm thử ứng dụng di động" là công trình nghiên cứu của riêng tơi. Các
số liệu, kết quả trong luận án là trung thực, trích dẫn đầy đủ và chưa từng được ai
công bố trong bất kỳ công trình nào khác.
Đà Nẵng, ngày 15 tháng 12 năm 2019
Người hướng dẫn khoa học
Tác giả luận án

Nguyễn Đức Mận

PGS, TS. Huỳnh Quyết Thắng

i


LỜI CẢM ƠN
Lời đầu tiên, tôi xin chân thành cảm ơn Thầy hướng dẫn PGS, TS. Huỳnh Quyết
Thắng và TS. Nguyễn Thanh Hùng là người đã định hướng, chỉ dẫn, hướng dẫn rất
tận tình trong tồn bộ q trình thực hiện nghiên cứu của luận án này. Thầy luôn đồng
hành, động viên, khích lệ kịp thời và ln chu đáo, nghiêm túc trong công tác nghiên
cứu, điều này đã giúp cho tôi trưởng thành hơn trên con đường học thuật, nghiên cứu
khoa học của bản thân.
Tôi xin gửi lời cảm ơn đến các nhà khoa học, các thầy cô phản biện, các thầy cô
trong hội đồng các cấp cũng như những nhà khoa học độc lập đã có những đóng góp,
góp ý rất chi tiết giúp tơi hồn thành tốt luận án này.
Tôi xin chân thành cảm ơn các thầy cô là lãnh đạo và cán bộ khoa học tại Khoa

Sau đại học của trường Đại học Duy Tân, đặc biệt là sự giúp đỡ của PGS, TS. Nguyễn
Gia Như trong quá trình học tập và nghiên cứu tại Khoa. Sự hỗ trợ của mọi người đã
giúp cho quá trình học tập và nghiên cứu của tơi có được nhiều thuận lợi.
Tôi xin gửi lời cảm ơn đến Hội đồng Quản trị và Ban Giám Hiệu Trường Đại học
Duy Tân, tập thể cán bộ giảng viên Khoa Đào tạo Quốc tế đã hỗ trợ, tạo điều kiện
cho tôi trong quá trình làm việc cũng như học tập, nghiên cứu để tơi có thể đạt được
những kết quả như ngày hơm nay.
Tơi xin cảm ơn Cơng ty MeU-Solutions và nhóm dự án của cơng ty, đặc biệt cảm
ơn Anh Đỗ Hồng Nhật, CEO của công ty MeU Solutions đã tạo điều kiện, hỗ trợ
nghiên cứu cho tôi và là nơi thực hiện các thử nghiệm nghiên cứu trong luận án.
Cảm ơn các thành viên trong nhóm nghiên cứu cùng tham gia trong các cơng trình
cơng bố và cho phép sử dụng kết quả nghiên cứu trong luận án này.
Cuối cùng, tôi xin gửi lời cảm ơn đến gia đình, những người thân yêu và bạn bè đã
đồng hành, chia sẻ và giúp đỡ rất nhiều về tình cảm cũng như vật chất trong quá trình
học tập, nghiên cứu. Đặc biệt là gia đình của tơi, chỗ dựa vững chắc về mọi mặt, là
động lực để giúp tơi hồn thành tốt luận án.
Mặc dù bản thân tác giả đã có nhiều cố gắng, nỗ lực trong quá trình làm việc nhưng
do thời gian và điều kiện nghiên cứu còn nhiều hạn chế, luận án có thể cịn nhiều
thiếu sót. Tác giả của luận án rất mong nhận được sự đóng góp ý kiến của mọi người
nhằm giúp tơi hồn thiện nội dung khoa học của luận án cũng như những hướng đi
mở rộng sau này trong con đường khoa học của bản thân.
Tác giả luận án
Nguyễn Đức Mận

ii


MỤC LỤC
LỜI CAM ĐOAN ................................................................................................................... i
LỜI CẢM ƠN ........................................................................................................................ ii

DANH MỤC CÁC HÌNH TRONG LUẬN ÁN ................................................................... vi
DANH MỤC CÁC BẢNG TRONG LUẬN ÁN................................................................ viii
DANH MỤC THUẬT NGỮ, TỪ VIẾT TẮT ....................................................................... x
MỞ ĐẦU ............................................................................................................................... 1
1. Giới thiệu ......................................................................................................................... 1
2. Mục tiêu nghiên cứu của luận án ..................................................................................... 6
3. Phương pháp nghiên cứu ................................................................................................. 7
4. Đối tượng nghiên cứu và phạm vi thực hiện ................................................................... 8
5. Cấu trúc của luận án ........................................................................................................ 9
6. Các đóng góp khoa học của luận án .............................................................................. 10
CHƯƠNG 1. TỔNG QUAN KIỂM THỬ ỨNG DỤNG .................................................... 11
DI ĐỘNG VÀ PHƯƠNG PHÁP PHÁT TRIỂN LINH HOẠT .......................................... 11
1.1. Giới thiệu tổng quan ................................................................................................... 11
1.2. Phân loại ứng dụng di động ........................................................................................ 13
1.3. Kiểm thử ứng dụng di động........................................................................................ 15
1.3.1. Đặc điểm của ứng dụng di động....................................................................... 16
1.3.2.Tính đặc thù của ứng dụng di động ảnh hưởng đến việc kiểm thử phần mềm . 17
1.4. Phương pháp phát triển linh hoạt ............................................................................... 18
1.4.1. Phát triển hướng kiểm thử TDD....................................................................... 19
1.4.2. Phát triển hướng hành vi BDD ......................................................................... 20
1.4.3. Kiểm thử trong môi trường phát triển Agile Scrum ......................................... 22
1.5. Các thách thức của kiểm thử ứng dụng di động ......................................................... 22
1.6. Kết chương ................................................................................................................. 26
CHƯƠNG 2. CÁC KỸ THUẬT TỐI ƯU HÓA, TÁI CẤU TRÚC VÀ PHÂN TÍCH MÃ
NGUỒN CỦA ỨNG DỤNG DI ĐỘNG ............................................................................ 28
2.1. Đặt vấn đề ................................................................................................................... 28
2.2. Kỹ thuật phân tích và tái cấu trúc mã nguồn để nâng cao hiệu năng của ứng dụng di
động dựa trên PMD và Android lint .................................................................................. 30
2.2.1. PMD và Android lint ........................................................................................ 30
2.2.2. Kiểm thử hiệu năng .......................................................................................... 32

2.2.3. Các kỹ thuật tối ưu trong phát triển ứng dụng Android ................................... 33
2.2.3.1. Tối ưu mã nguồn java ................................................................................. 33
2.2.3.2. Sử dụng bộ nhớ hiệu quả ............................................................................ 36
2.2.3.3. Đa luồng và đồng bộ hóa ............................................................................ 37
2.2.3.4. Tối ưu hóa mã nguồn sử dụng JNI.............................................................. 38
2.2.4. Phân tích và tái cấu trúc mã nguồn dựa trên PMD và Android lint ................. 39
2.2.4.1 Đề xuất kỹ thuật phân tích và tái cấu trúc mã nguồn PMDlint ................... 39
2.2.4.2. Sử dụng luật phân tích mã nguồn ............................................................... 41
2.2.4.3. Sử dụng luật thay đổi mã nguồn ................................................................. 41
2.2.4.4. Chiến lược áp dụng luật phân tích và thay đổi mã nguồn .......................... 42
2.2.4.5. Cài đặt luật phân tích và thay đổi mã nguồn .............................................. 43

iii


2.2.4.6. Kết quả thử nghiệm ..................................................................................... 45
2.3. Kỹ thuật phân tích mã nguồn tìm lỗi tiềm ẩn cho các phương thức của lớp Java ...... 48
2.3.1. Đề xuất mơ hình phân tích mã nguồn và kiểm thử hộp trắng .......................... 48
2.3.2. Biểu đồ cấu trúc điều khiển .............................................................................. 49
2.3.3. Mô hình các điều kiện ...................................................................................... 52
2.3.4. Sinh các bộ dữ liệu kiểm thử ............................................................................ 53
2.3.5. Thực hiện quá trình kiểm thử ........................................................................... 54
2.3.6. Phân tích kết quả kiểm thử ............................................................................... 55
2.3.7. Phân loại và lựa chọn các bộ dữ liệu kiểm thử ................................................ 55
2.3.8. Kết quả cài đặt và thử nghiệm .......................................................................... 57
2.4. Kết chương ................................................................................................................. 61
CHƯƠNG 3. CÁC KỸ THUẬT KIỂM THỬ VÀ XÂY DỰNG GIẢI PHÁP TÍCH HỢP
TRONG MÔI TRƯỜNG PHÁT TRIỂN LINH HOẠT ...................................................... 62
3.1. Đặt vấn đề ................................................................................................................... 62
3.2. Kỹ thuật sinh ca kiểm thử và dữ liệu dựa trên yêu cầu người dùng và điều kiện chấp

nhận ................................................................................................................................... 65
3.2.1. Một số thuật ngữ liên quan ............................................................................... 65
3.2.2. Đề xuất tiếp cận sinh trường hợp kiểm thử và dữ liệu kiểm thử ...................... 67
3.2.2.1. Xây dựng giải pháp AgileUATM ................................................................ 67
3.2.2.2. Bài toán thực nghiệm cho phương pháp đề xuất ........................................ 77
3.2.2.3. Phân tích dữ liệu thực nghiệm so sánh hiệu quả giải pháp AgileUATM ... 82
3.3. Phương pháp ứng dụng học máy và đồ thị hóa kết quả kiểm thử .............................. 87
3.3.1. Đồ thị hóa hoạt động và kết quả kiểm thử ....................................................... 87
3.3.1.1. Đề xuất cách tiếp cận.................................................................................. 87
3.3.1.2. Chi tiết về kỹ thuật xây dựng đồ thị Graph ................................................. 89
3.3.1.3. Kết quả thực nghiệm ................................................................................... 90
3.3.1.4. Một số đánh giá về giải pháp...................................................................... 94
3.3.2. Phương pháp ứng dụng học máy cho kiểm thử ứng dụng di động .................. 95
3.3.2.1. Đề xuất cách tiếp cận.................................................................................. 95
3.3.2.2. Xây dựng và huấn luyện bộ phân loại nhận diện đối tượng ....................... 97
3.3.2.3. Xây dựng thư viện heuristics....................................................................... 99
3.3.2.4. Kiến trúc mức tổng quát Shinobi .............................................................. 100
3.3.2.5. Phân tích kết quả thực nghiệm ................................................................. 101
3.3.2.6. Đánh giá kết quả ....................................................................................... 104
3.4. Giải pháp AgileScrum+ tích hợp các kỹ thuật và phương pháp PMDLint, UniTest,
AgileUATM, One2Explore và Shinobi ........................................................................... 104
3.4.1. Đề xuất giải pháp tích hợp AgileScrum+........................................................ 105
3.4.2. Cách tiếp cận thực nghiệm và đánh giá các kỹ thuật, phương pháp và qui trình
AgileScrum+ ............................................................................................................. 107
3.4.2.1. Mơ hình tăng trưởng độ tin cậy phần mềm............................................... 107
3.4.2.2. Mơ hình hàm mũ Poision không đồng nhất .............................................. 108
3.4.2.3. Các bước tiến hành thực nghiệm và đánh giá .......................................... 110
3.4.2.4. Kết quả thực nghiệm và đánh giá ............................................................. 112
3.5. Kết chương ............................................................................................................... 116
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ......................................................................... 118

1. Kết luận ....................................................................................................................... 118
2. Hướng phát triển của luận án ...................................................................................... 121

iv


DANH SÁCH CÁC CƠNG TRÌNH KHOA HỌC ĐÃ CƠNG BỐ LIÊN QUAN ĐẾN
LUẬN ÁN.......................................................................................................................... 123
TÀI LIỆU THAM KHẢO ................................................................................................. 125

v


DANH MỤC CÁC HÌNH TRONG LUẬN ÁN
Hình 1.1. Thị trường của ứng dụng trên điện thoại thông minh [79] .................................. 12
Hình 1.2. Quy trình phát triển TDD [7] ............................................................................... 19
Hình 1.3. Mơ hình BDD – TDD trong Agile mơ phỏng bởi Paul Littlebury [12] ............... 21
Hình 2.1. Kiến trúc của PMDLint được đề xuất trong luận án ............................................ 40
Hình 2.2. Cấu hình điện thoại a) Motorola moto X, b) HTC One XL................................. 46
Hình 2.3. Giao diện thực hiện phân tích và tái cấu trúc mã nguồn ...................................... 47
Hình 2.4. Mơ hình tổng quan kiểm thử hộp trắng mã nguồn phương thức của một lớp Java
............................................................................................................................................. 49
Hình 2.5. Mã nguồn phương thức sumAbsolute.................................................................. 50
Hình 2.6. Biểu đồ luồng điều khiển của phương thức sumAbsolute .................................. 51
Hình 2.7. Mơ hình hóa lại biểu đồ cấu trúc điều khiển của phương thức sumAbsolute...... 51
Hình 2.8 Mơ hình kỹ thuật phân loại, lựa chọn các bộ dữ liệu kiểm thử ............................ 56
Hình 2.9 Một số màn hình kết quả thử nghiệm ................................................................... 60
Hình 3.1. Mơ hình hoạt động của giải pháp AgileUATM đề xuất ...................................... 68
Hình 3.2. Xây dựng cú pháp định nghĩa cho ngơn ngữ myDSL ......................................... 71
Hình 3.3. Ví dụ về đặc tả myDSL cho tính năng đăng ký tài khoản Register ..................... 72

Hình 3.4. Workflow sinh test script cho Unit test (BDD) ................................................... 75
Hình 3.5. Màn hình của cơng cụ sinh BDD Testscript ........................................................ 76
Hình 3.6 Giao diện của ứng dụng ACM .............................................................................. 77
Hình 3.7. Đặc tả hình thức cho US Register gọi là myDSL.agt ..................................... 81
Hình 3.8 Kết quả sinh Unit test cho Register class sử dụng tính năng sinh kịch bản
BDD ..................................................................................................................................... 82
Hình 3.9. Kết quả so sánh giữa hai lần thực hiện kiểm tra ................................................. 91
Hình 3.10. Đồ thị tổng hợp các kết quả thực thi của Master Graph .................................... 92
Hình 3.11. Một kết quả so sánh giữa thực thi hiện tại và các thực thi trước đó (Master) .. 93
Hình 3.12. Shinobi framework ............................................................................................ 96
Hình 3.13. Faster R-CNN [107,118]: .................................................................................. 98
Hình 3.14. (a) Độ chính xác với giá trị loss ở mức 0,8, (b) Độ chính xác với giá trị loss ở
mức 0,02 .............................................................................................................................. 99
Hình 3.15 Kiến trúc mức tổng quát của Shinobi ............................................................... 100
Hình 3.16. Kết quả nhận diện các đối tượng web từ dữ liệu kiểm thử. ............................. 102

vi


Hình 3.17. Shinobi nhận diện các web controls khơng được tương tác. ........................... 102
Hình 3.18. Tất cả các kiểu đối tượng điều khiển được nhận diện và sử dụng heuristic data
attack để đề xuất giá trị thích hợp ...................................................................................... 103
Hình 3.19. Kết quả nhận diện dữ liệu kiểm thử nhập vào khơng có ý nghĩa ..................... 103
Hình 3.20. Qui trình phát triển Scrum tích hợp các kỹ thuật kiểm thử và tối ưu hóa mã
nguồn AgileScrum+............................................................................................................ 106
Hình 3.21. Qui trình thực hiện đánh giá độ tin cậy............................................................ 111
Hình 3.22. (a) Độ tin cậy của sản phẩm -đội A

(b) Độ tin cậy của sản phẩm -đội B ... 115


Hình 3.23. (a) Số lượng lỗi tích lũy phát hiện theo thời gian -đội A và (b) đội B............ 115
Hình 3.23 (a) Tỷ lệ lỗi -đội A

(b) Tỷ lệ lỗi -đội B ..................................................... 115

vii


DANH MỤC CÁC BẢNG TRONG LUẬN ÁN
Bảng 1.1. So sánh các kỹ thuật, công nghệ phát triển của các loại ứng dụng di động ........ 14
Bảng 1.2. Phân loại ứng dụng di động theo đặc thù riêng và kiểm thử tương ứng [74] ...... 17
Bảng 2.1. So sánh thời gian thực hiện sau tinh chỉnh mã nguồn [69] ................................. 34
Bảng 2.2: Danh sách các luật đã thực hiện trong phạm vi của luận án ............................... 43
Bảng 2.3: Thống kê % sử dụng CPU đã kiểm thử trên Motorola moto X........................... 46
Bảng 2.4: Thống kê % sử dụng CPU đã kiểm thử trên HTC One XL................................. 46
Bảng 2.5 – Thống kê % sử dụng CPU của kết quả kiểm thử trên HTC One XL cho từng
luật ....................................................................................................................................... 47
Bảng 2.6: Bảng quyết định phân loại các bộ dữ liệu kiểm thử dựa vào kết quả kiểm tra các
điều kiện trong mơ hình. ...................................................................................................... 56
Bảng 2.7: Kết quả kiểm thử các phương thức của lớp UtilityTasks.java ............................ 58
Bảng 2.8: Tổng hợp kết quả kiểm thử tất cả các phương thức của lớp UtilityTasks.java ... 59
Bảng 3.1. Ví dụ mẫu về mơ tả một user story .............................................................. 69
Bảng 3.2. Ví dụ về đặc tả tiêu chuẩn chấp nhận cho tính năng Register.................. 69
Bảng 3.3. Mô tả cú pháp của ngôn ngữ đặc tả myDSL ................................................... 71
Bảng 3.4. Ví dụ mơ tả cú pháp chuyển đổi từ MyDSL sang Z3 ................................ 72
Bảng 3.5. Ví dụ về test case / test input được sinh ra cho tính năng Register ......... 73
Bảng 3.6. Các chức năng của công cụ AgileUATM ....................................................... 76
Bảng 3.7. Danh sách các user stories của ứng dụng ACM ......................................... 78
Bảng 3.8. Đặc tả điều kiện chấp nhận cho chức năng Register (US01) ......................... 80
Bảng 3.9. Kết quả thực hiện theo phương pháp kiểm thử truyền thống .............................. 83

Bảng 3.10. Kết quả thực hiện áp dụng giải pháp AgileUATM ........................................... 83
Bảng 3.11. Danh sách các nhóm dự án được mời tham gia thực nghiệm giải pháp đề xuất
của luận án ........................................................................................................................... 84
Bảng 3.12. Kết quả thực nghiệm của phương pháp đề xuất AgileUATM .......................... 85
Bảng 3.13. Thông tin của các đối tượng người dùng của dự án được lấy ý kiến phản hồi
(360-degree feedbacks) ........................................................................................................ 93
Bảng 3.14. Kết quả phản hồi của các đối tượng (360-degree feedbacks) testers, trưởng
nhóm kiểm thử và khách hàng ............................................................................................. 94
Bảng 3.15. Kết quả thực hiện áp dụng kỹ thuật PMDlint và UniTest cho các dự án mã
nguồn FOSS và dự án do nhóm nghiên cứu thực hiện. ..................................................... 112

viii


Bảng 3.16. Dữ liệu lỗi thu thập của dự án đội A và đội B ................................................. 113
Bảng 3.17 – Kết quả tính tốn và ước lượng độ tin cậy của dự án đội A so với đội B ..... 114

ix


DANH MỤC THUẬT NGỮ, TỪ VIẾT TẮT
Từ / thuật ngữ viết tắt
Ý nghĩa
AC (Acceptance Criteria)
Điều kiện chấp nhận
Agile (Agile Developemt Methodology)
Phương pháp luận phát triển linh hoạt
AI (Artificial Intelligence)
Trí tuệ nhân tạo
BDD (Behavior Driven Development)

Phát triển hướng hành vi
BVA (boundary value analysis)
Phân tích giá trị biên
CDT (Context-Driven Testing)
Kiểm thử hướng ngữ cảnh
Developer
Người phát triển, kỹ sư phát triển
DSL (Domain-specific language)
Ngôn ngữ chuyên biệt
EPC (Equivalence Partition Class)
Phân vùng tương đương
ET (Exploratory testing)
Kiểm thử thăm dò
Functional Test
Kiểm thử chức năng
ML (Machine Learning)
Học máy
Mobile web (Mobile Web Application)
Ứng dụng web di động
Native (Native Application)
Ứng dụng bản địa/ cục bộ
NHPP
(Non-Homogeneous
Poisson Q trình Poisson khơng đồng nhất
Process)
PMD (Programming Mistake Detector)
Bộ phát hiện lỗi lập trình
PO (Product Owner)
Chủ sản phẩm
SMT (satisfiability modulo theories)

Các lý thuyết modulo thỏa mãn
SRGM (Software Reliability Growth Mơ hình tăng trưởng độ tin cậy phần mềm
Models)
TDD (Test Driven Development)
Phát triển hướng kiểm thử
Test case
Ca kiểm thử/ trường hợp kiểm thử
Test Data/ Test Input
Dữ liệu kiểm thử
Test Design
Thiết kế kiểm thử
Tester
Người kiểm thử, kỹ sư kiểm thử
UAT (User Acceptance testing)
Kiểm thử chấp nhận người dùng
UI/GUI (User Interface/ Graphic User Giao diện người dùng/ Giao diện người
Interface)
dùng đồ họa
Unit test
Kiểm thử đơn vị

x


MỞ ĐẦU
1. Giới thiệu
Điện thoại thơng minh ngày càng đóng vai trò quan trọng trong cuộc sống ngày
nay. Với những tính năng và khả năng của chiếc điện thoại thơng minh, con người có
thể dùng để giải quyết rất nhiều vấn đề trong cuộc sống của họ. Điện thoại thông
minh có những ưu điểm như tính kết nối giữa con người với con người và với vạn

vật, sử dụng cho giải trí, thực hiện giao dịch ngân hàng, mua bán trực tuyến, quản lý
lịch trình, quản lý cơng việc, tìm kiếm thông tin, kiểm tra sức khỏe và vân vân. Một
số ứng dụng phổ biến hiện nay như ứng dụng nhắn tin và gọi điện Zalo (Vietnam),
WhatsApp, Line, Snapchat hoặc trò chơi PokeMon Go, Flappy Bird (Vietnam), ứng
dụng Wallet hoặc các ứng dụng phổ biến khác như Flipboard, Pocket, Vine, ZingMP3
(Vietnam), Uber, Grab, Money Lover (Vietnam)... Các nghiên cứu thực tế cho thấy
rằng, để người dùng sử dụng điện thoại nhiều hơn, sử dụng các ứng dụng chạy trên
điện thoại thường xun hơn cho các mục đích khác nhau thì đòi hỏi các ứng dụng
phải đáp ứng được yêu cầu sử dụng của họ, phải dễ sử dụng, ổn định và đáng tin cậy.
Khoảng 50% ứng dụng di động bị đánh giá kém trên các cửa hàng Play hay Appstore
dựa trên các vấn đề như sự cố, hiệu suất kém và tốn năng lượng. Người dùng thường
sẽ xóa ngay ứng dụng sau khi cài đặt nếu nó gặp sự cố, hiệu năng kém, chất lượng
kém và thiếu tin cậy. Theo các thống kê [22, 65, 70, 71], có 77% người dùng xóa ứng
dụng kém chất lượng sau 72 giờ cài đặt. Do đó, việc nghiên cứu, đề xuất giải pháp,
phát triển kỹ thuật phân tích mã nguồn, các kỹ thuật và phương pháp kiểm thử nhằm
nâng cao chất lượng của sản phẩm, nâng cao độ tin cậy và hiệu năng là điều rất cần
thiết và có ý nghĩa. Đặc điểm của điện thoại di động là sự đa dạng về thiết bị, băng
thông và bộ nhớ hạn chế, dung lượng lưu trữ và nguồn năng lượng bị giới hạn, sự đa
dạng người dùng. Những đặc điểm này là thách thức lớn cho các kỹ sư phát triển cũng
như các kỹ sư kiểm thử. Các kỹ sư kiểm thử phải nghiên cứu nhằm đề xuất các giải
pháp hiệu quả cho phát triển ứng dụng di động hiện nay. Bên cạnh đó, tính cạnh tranh
để phát hành sản phẩm ra thị trường sớm nhưng vẫn đảm bảo chất lượng và độ tin
cậy của sản phẩm cũng là một trong những thách thức trong phát triển phần mềm nói
chung và ứng dụng di động nói riêng. Hiện tại, các nhà nghiên cứu phát triển đang

1


dành nhiều sự quan tâm cho việc nghiên cứu và công bố các đề xuất áp dụng nhưng
vẫn chưa thể đáp ứng hay giải quyết đầy đủ các thách thức ở trên, điều này cũng là

động lực cho việc nghiên cứu để đưa ra các giải pháp, phát triển các kỹ thuật kiểm
thử mới nhằm đóng góp vào lĩnh vực kiểm thử ứng dụng di động hiện nay.
Qua khảo sát, hiện tại, có nhiều nghiên cứu liên quan đến vấn đề sinh tự động
trường hợp kiểm thử dựa trên mô hình (model-based testing), sinh trường hợp kiểm
thử dựa trên các biểu đồ UML như biểu đồ Use case, biểu đồ hoạt động (activity
diagram), biểu đồ lớp, biểu đồ tuần tự, phân tích mã nguồn để tối ưu hóa chương trình,
phân tích và sinh dữ liệu kiểm thử dựa vào mã nguồn, đồ thị hóa dữ liệu kiểm thử và
ứng dụng học máy cho kiểm thử tự động. Cụ thể:
Các nghiên cứu liên quan hướng phân tích mã nguồn, tối ưu hóa mã nguồn, gồm
có:
Shuai Hao và cộng sự [42] đề xuất phân tích chương trình, các kỹ thuật đo lường
dựa trên thống kê; Xueliang Li và John P. Gallagher [61] đã đề xuất một khung tối
ưu hóa năng lượng bởi việc tối ưu mã nguồn, kỹ thuật này cho phép các nhà phát triển
nhận thức được việc sử dụng năng lượng do mã lệnh gây ra và áp dụng các chiến lược
tái cấu trúc mã nguồn hướng mục tiêu. Wedyan, F và cộng sự [121] trình bày hiệu
quả của các cơng cụ phân tích tĩnh tự động để phát hiện lỗi và tái cấu trúc. Một số kỹ
thuật được tự động hóa và được hỗ trợ bởi nhiều cơng cụ giúp tăng hiệu suất của
người phát triển và giảm nhẹ gánh nặng của họ. Tuy nhiên, trên thực tế, những kỹ
thuật này không đủ để giải quyết khoảng cách giữa việc hiểu nơi tiêu thụ năng lượng
và cách mã lệnh có thể được thay đổi để giảm năng lượng tiêu thụ. Những kỹ thuật
này cho phép người phát triển hiểu nơi tiêu thụ năng lượng trong một ứng dụng; họ
không cung cấp hướng dẫn để cải thiện mức tiêu thụ năng lượng của ứng dụng.
Các nghiên cứu liên quan kỹ thuật sinh trường hợp kiểm thử, sinh dữ liệu kiểm thử,
gồm có:
Wang và cộng sự [119] đề xuất mơ hình hóa ca sử dụng (use case) để sinh kiểm
thử hệ thống. Kỹ thuật đề xuất sử dụng các đặc tả trường hợp sử dụng, sơ đồ lớp và
các ràng buộc để tạo các trường hợp kiểm thử hệ thống. Oluwagbemi và Asmuni [81]
trình bày phương pháp nâng cao để tạo các trường hợp kiểm thử từ các sơ đồ UML
2



khác nhau. Thu tập các tài liệu từ các sơ đồ được đề xuất, các đại diện trung gian của
các tài liệu là ở dạng cây mà qua đó truyền tải nội dung tạo ra các trường hợp thử
nghiệm.
Rane [89] đã thiết kế và triển khai một công cụ để hỗ trợ tự động sinh test case
trong quy trình phát triển phần mềm linh hoạt bằng cách xử lý ngôn ngữ tự nhiên.
Công cụ này tăng thời gian cần thiết để tạo ra các trường hợp kiểm thử là 7%, giảm
công sức tạo test case là 31% và cải thiện 23% liên quan đến phạm vi kiểm thử của
các yêu cầu. Thời gian và nỗ lực để tạo các trường hợp thử nghiệm cho nhiều user
story của cùng một tính năng được giảm tương ứng 61% và 87%;
Pandit và Tahiliani [84] đề xuất quy trình UAT và cơng cụ AgileUAT, nhằm tạo
ra một danh sách đầy đủ các trường hợp kiểm thử chấp nhận bằng ngôn ngữ tự nhiên,
dựa trên các tiêu chí chấp nhận. Cơng cụ có khả năng lần vết giữa các epics, user
stories, tiêu chí chấp nhận (AC) và các trường hợp kiểm thử chấp nhận. Một phương
pháp hướng mơ hình cho tiến hóa trường hợp thử nghiệm đã được đề xuất sử dụng
kỹ thuật kiểm thử hộp đen trong đó mọi thứ được coi là mơ hình và thơng tin tiến hóa
được trích từ phân tích so sánh giữa hai hoặc nhiều phiên bản phát triển của ứng dụng
di động. Nó đã được quan sát thấy rằng những thay đổi có thể ảnh hưởng đến giao
diện hoặc mã của ứng dụng đó hoặc cả hai. Tương tự, bất kỳ loại thay đổi nào cũng
có thể tác động đến các trường hợp thử nghiệm được tạo ra.
Dynodriod là một hệ thống sinh dữ liệu đầu vào cho Android, được sử dụng rộng
rãi trong các thử nghiệm trong khi một số phương pháp tiếp cận trước đó dựa vào các
kỹ thuật kiểm thử ngẫu nhiên [62]. MobiGUITAR [6] được xây dựng trên khung
GUITAR sử dụng trích xuất GUI để xây dựng mơ hình của một ứng dụng. Các trường
hợp thử nghiệm được sinh ra bằng việc duyệt theo chiều sâu của mơ hình.
MobiGUITAR dựa trên sự quan sát, trích xuất và trừu tượng hóa trạng thái thời gian
chạy của các widget GUI. Sự trừu tượng hóa là một mơ hình máy trạng thái có thể
mở rộng, cùng với các tiêu chí bao phủ thử nghiệm.
Yu [127] đã đề xuất một cách tiếp cận để tạo ra các trường hợp ứng dụng di động
thử nghiệm, tập trung vào các ứng dụng Android. Cách tiếp cận chủ yếu phụ thuộc

vào các sự kiện bên ngồi. Hai khía cạnh của các sự kiện bên ngoài được xem xét: rõ
3


ràng và ẩn. Các sự kiện bên ngoài từ các thành phần bổ sung của thiết bị di động được
xác định thủ cơng và được nhóm thành các danh mục. Một số ví dụ bao gồm trạng
thái cuộc gọi điện thoại trở thành (1) không hoạt động, (2) tắt máy và (3) đổ chuông.
Các mẫu sự kiện được xây dựng từ các chuỗi các sự kiện bên ngoài, như đổ chuông,
tắt máy, không hoạt động.
Liu và cộng sự [128] đã đề xuất kỹ thuật ART để tạo các trường hợp thử nghiệm
cho các ứng dụng di động. Kết quả cho thấy công cụ ART đã giảm số lượng các
trường hợp thử nghiệm cũng như thời gian cần thiết để phơi bày lỗi đầu tiên so với
kỹ thuật ngẫu nhiên. Kỹ thuật đề xuất được sử dụng để đo khoảng cách giữa các đầu
vào của ứng dụng di động được thể hiện trong chuỗi sự kiện. Các tác giả đã trình bày
nghiên cứu thực nghiệm đầu tiên, sử dụng khoảng cách trên trường hợp thử nghiệm
thế hệ ngẫu nhiên thích ứng cho các ứng dụng di động thực tế. Kỹ thuật được đề xuất
là hiệu quả để tạo ra các trường hợp thử nghiệm ngẫu nhiên về mặt phát hiện lỗi trước
đó.
Các nghiên cứu liên quan đến việc sinh trường hợp kiểm thử phần lớn dựa trên các
biểu đồ UML không phù hợp với qui trình phát triển linh hoạt. Hiện chỉ có Rane [89],
Pandit và Tahiliani [84], Dynodriod [62], MobiGUITAR [6], Yu [127] tập trung
nhiều vào kiểm thử cho ứng dụng di động, sinh trường hợp kiểm thử trong môi trường
phát triển linh hoạt. Qua khảo sát, tác giả luận án thấy rằng các nghiên cứu được thực
hiện và nghiên cứu đề xuất cho đến nay chủ yếu liên quan đến thử nghiệm GUI, dữ
liệu được tạo từ mơ hình UML hoặc tạo trường hợp thử nghiệm và dữ liệu thử nghiệm
từ mã nguồn. Chỉ có một cách tiếp cận được đề xuất bởi Pandit và Tahiliani sử dụng
xử lý ngơn ngữ tự nhiên để trích xuất thơng tin từ câu chuyện của người dùng và tiêu
chí chấp nhận để tạo trường hợp kiểm tra và dữ liệu thử nghiệm.
Đối với các nghiên cứu về trực quan hóa kết quả kiểm thử và phương pháp ứng
dụng học máy vào kiểm thử, gồm có:

Một số nghiên cứu của Chan và cộng sự [19] và Stepien et al. [106] đã giới thiệu
các kỹ thuật cung cấp cái nhìn tồn cục về kết quả thử nghiệm. Các kỹ thuật trực quan
tập trung vào mối quan hệ giữa người dùng và các vấn đề được báo cáo của họ. Các

4


kỹ thuật hỗ trợ xác định các mẫu chung để xác định vị trí các vấn đề và cách ưu tiên
các trường hợp thử nghiệm phù hợp cho các phiên bản sau.
Chen và cộng sự [20] xây dựng ViViz bằng cách sử dụng các biểu đồ để trực quan
hóa một phần mềm; cho phép các nhà phát triển và người thử nghiệm nhanh chóng
có được cái nhìn sâu sắc về cấu trúc GUI và trạng thái của quá trình thử nghiệm. Nó
cung cấp các biểu diễn có thể nhìn thấy cho dữ liệu thử nghiệm được tạo bởi GUITAR.
TESTAR [109] cung cấp thông tin trực quan về các lần chạy thử. Kiểm tra trực
quan giúp người kiểm tra trực tiếp kiểm tra và phân tích cách thức kiểm tra phần mềm
được thực hiện trong quá trình tìm kiếm các lỗi tiềm ẩn.
Học máy là một miền của AI được sử dụng rộng rãi trong các giai đoạn khác nhau
của vòng đời phát triển phần mềm, đặc biệt là để tự động hóa các quy trình kiểm thử
phần mềm. Theo Wegener [122] các thuật tốn tiến hóa đã được sử dụng để tự động
hóa việc tạo trường hợp thử nghiệm. Von Mayrhauser và cộng sự [67] sử dụng mạng
nơ ron nhân tạo xây dựng một mơ hình để ước tính hiệu quả của các trường hợp thử
nghiệm được tạo ra.
Briand và cộng sự [119] đã đề xuất một phương pháp dựa trên thuật toán cây quyết
định C4.5 để dự đoán các lỗi tiềm ẩn trong hệ thống phần mềm và bản địa hóa các lỗi
để giảm thời gian xử lý gỡ lỗi. Tất cả các công việc nghiên cứu liên quan cho thấy
việc sử dụng các kỹ thuật máy học trong các quy trình thử nghiệm tự động hóa có
hiệu quả cao [94].
Tuy nhiên, hầu hết các nghiên cứu chỉ tập trung vào các kỹ thuật kiểm tra dựa trên
thử nghiệm theo kịch bản của Google, như tạo trường hợp kiểm thử, xác minh, kiểm
tra mơ hình. Việc áp dụng ML trong phương pháp CDT cịn hạn chế. Trong khi đó,

với sự phát triển của AI, CDT, Agile, việc áp dụng ML, Heuristic trong CDT và Agile
rất đáng quan tâm và nên bao gồm các khung hỗ trợ cho người thử nghiệm hoặc QA,
cũng như các nhà phát triển. Xu hướng là ML đang được các nhà nghiên cứu nghiên
cứu về lĩnh vực kiểm thử phần mềm, tự động hóa thử nghiệm. Bên canh đó phương
pháp trực quan hóa và hiển thị đầy đủ thông tin của hoạt động kiểm thử thăm dò theo
cách tiếp cận hướng ngữ cảnh chưa được nghiên cứu đầy đủ và ứng dụng cho lĩnh
vực kiểm thử ứng dụng web và ứng dụng di động.
5


Từ các hạn chế đã được khảo sát và trình bày ở trên cùng với các thách thức của
kiểm thử ứng dụng di động hiện nay, nghiên cứu sinh đã lựa chọn và thực hiện nghiên
cứu các kỹ thuật phân tích mã nguồn, tối ưu hóa và tái cấu trúc mã nguồn, phân tích
mã nguồn để tìm lỗi tiềm ẩn (kiểm thử tĩnh), kỹ thuật sinh kịch bản kiểm thử, phương
pháp trực quan hóa hoạt động kiểm thử, phương pháp ứng dụng học máy vào kiểm
thử và đề xuất giải pháp tích hợp các kỹ thuật kiểm thử vào qui trình phát triển linh
hoạt Agile Scrum cho phát triển ứng dụng di động. Nội dung nghiên cứu của luận án
bao gồm (1) một số kỹ thuật tối ưu và tái cấu trúc mã nguồn nhằm nâng cao hiệu
năng, tiết kiệm năng lượng; (2) phân tích mã nguồn tìm lỗi tiềm ẩn trong mã nguồn
và kiểm thử hộp trắng; (3) kỹ thuật sinh ca kiểm thử và dữ liệu kiểm thử tự động dựa
trên câu chuyện người dùng (user story) và điều kiện chấp nhận (acceptance criteria);
(4) phương pháp trực quan hóa bằng đồ thị cho hoạt động kiểm thử thăm dò và
phương pháp ứng dụng học máy cho kiểm thử ứng dụng web di động; (5) giải pháp
tích hợp các kỹ thuật phân tích mã nguồn, kỹ thuật và phương pháp kiểm thử vào qui
trình Agile Scrum; đi kèm với các phương pháp/ kỹ thuật được đề xuất là các công
cụ hỗ trợ. Các kết quả nghiên cứu (1), (2), (3), (4) có thể vận dụng riêng lẻ hoặc cùng
áp dụng vào qui trình Agile Scrum để giúp nâng cao chất lượng của sản phẩm, tăng
độ tin cậy trước khi phát hành sản phẩm. Kết quả nghiên cứu đã được thực nghiệm,
phân tích đánh giá và ứng dụng thực tiễn (một số kỹ thuật) tại doanh nghiệp phần
mềm.

Kết quả của nghiên cứu của luận án bên cạnh các đóng góp về mặt khoa học cịn
có ý nghĩa về mặt thực tiễn, một số kết quả nghiên cứu đã được ứng dụng thực tiễn
tại công ty MeU Solutions và đã mang lại giá trị cho các dự án với khách hàng thực
tế. Các kỹ sư phát triển và kỹ sư kiểm thử sử dụng giúp nâng cao chất lượng cho sản
phẩm, nâng cao độ tin cậy cho ứng dụng và hiệu quả trong sản xuất phần mềm nói
chung, cho ứng dụng di động nói riêng.

2. Mục tiêu nghiên cứu của luận án
Mục tiêu của luận án là (1) Xây dựng và thử nghiệm các kỹ thuật tối ưu, tái cấu
trúc mã nguồn và tìm lỗi tiềm ẩn trong mã nguồn nhằm nâng cao hiệu năng cho ứng

6


dụng di động; và (2) phát triển và thử nghiệm các kỹ thuật sinh trường hợp kiểm thử,
phương pháp trực quan hóa kiểm thử thăm dị, ứng dụng học máy trong nhận diện đối
tượng phục vụ kiểm thử và giải pháp tích hợp vào qui trình Agile Scrum nhằm nâng
cao chất lượng, nâng cao độ tin cậy cho ứng dụng di động.

3. Phương pháp nghiên cứu
o Nghiên cứu và đánh giá các nguồn tài liệu liên quan, các nghiên cứu liên quan
một cách có hệ thống để có được cái nhìn tổng quan tồn diện về lĩnh vực kiểm
thử phần mềm cho ứng dụng di động. Thu thập và hệ thống hóa các vấn đề ảnh
hưởng đến việc kiểm thử các ứng dụng di động chạy trên nền tảng Android.
o Phân tích tài liệu, kỹ thuật thu thập dữ liệu phân tích đã được áp dụng để thu
thập, xử lý dữ liệu cần thiết cho việc phân tích tồn diện về:
• các vấn đề ảnh hưởng đến việc kiểm thử ứng dụng di động chạy trên nền
tảng Android;
• hiệu năng của ứng dụng di động;
• các cơng cụ kiểm thử tự động, phân tích mã nguồn;

• sinh trường hợp kiểm thử và dữ liệu kiểm thử.
• đo độ tin cậy của các ứng dụng thông qua việc áp dụng các kỹ thuật kiểm
thử được đề xuất trong luận án.
o Sử dụng kỹ thuật mơ hình hóa trực quan bằng đồ thị để báo cáo và đánh giá các
hoạt động kiểm thử thăm dò theo cách tiếp cận kiểm thử hướng ngữ cảnh.
o Sử dụng phương pháp học máy và vận dụng vào trong hoạt động kiểm thử
thông qua kỹ thuật nhận diện đối tượng, tạo công cụ hỗ trợ triểm thử ứng dụng
web di động.
o Phương pháp lấy ý kiến chuyên gia, sử dụng trí tuệ của đội ngũ chuyên gia để
xem xét nhận định, đánh giá các phương pháp, các cách tiếp cận được đề xuất
để từ đó giúp nghiên cứu sinh hoàn thiện các giải pháp một cách hiệu quả.
o Thực hiện nhiều thực nghiệm khác nhau để thu thập dữ liệu, đánh giá kết quả
nghiên cứu, so sánh các kết quả của các kỹ thuật, phương pháp được đề xuất
để chứng minh các giải pháp đề xuất là hiệu quả và có ý nghĩa thực tiễn.

7


4. Đối tượng nghiên cứu và phạm vi thực hiện
Đối tượng nghiên cứu:
o Các phương pháp, các kỹ thuật kiểm thử ứng dụng trên điện thoại thông minh
chạy trên nền tảng Android như tối ưu hóa mã nguồn, tiết kiệm năng lượng,
nâng cao hiệu năng, tìm lỗi tiềm ẩn của sản phẩm.
o Các phương pháp sinh dữ liệu kiểm thử, kịch bản kiểm thử, kiểm thử thăm dò
và sử dụng học máy trong kiểm thử phần mềm.
o Qui trình phát triển phần mềm lịnh hoạt Agile Scrum và giải pháp vận dụng
các kỹ thuật được đề xuất trong luận án.
o Phương pháp đo lường, đánh giá độ tin cậy của ứng dụng di động.
Phạm vi nghiên cứu trong trong luận án:
o Kỹ thuật phân tích mã nguồn (kiểm thử tĩnh):

-

Tối ưu hóa mã nguồn để nâng cao hiệu năng, tiết kiệm năng lượng cho ứng
dụng Android,

-

Phân tích mã nguồn để tìm lỗi tiềm ẩn và phát hiện lỗi trong các phương
thức của lớp của ngơn ngữ Java (lập trình ứng dụng di động).

o Kỹ thuật kiểm thử động:
-

Sinh trường hợp kiểm thử và dữ liệu kiểm thử từ câu chuyện người dùng
(User story – US) và điều kiện chấp nhận (Acceptance Criteria).

-

Đồ thị hóa hoạt động và dữ liệu dữ kiểm thử thăm dò theo cách tiếp cận
kiểm thử hướng ngữ cảnh (Graph visualization)

-

Ứng dụng học máy trong kiểm thử ứng dụng web di động (mobile web
application)

o Qui trình ứng dụng và đánh giá chất lượng, độ tin cậy ứng dụng khi sử dụng
các kỹ thuật, phương pháp kiểm thử ở trên.
Nghiên cứu của luận án tập trung thực hiện kiểm thử trên điện thoại Android mã
nguồn mở, kho ứng dụng mã nguồn FOSS; và trường hợp thực nghiệm cho ứng dụng

ACM app, các công cụ xây dựng cũng phục vụ cho ngôn ngữ Java, các IDE hỗ trợ
plug-in Java.

8


5. Cấu trúc của luận án
Luận án được trình bày trong 3 chương, cụ thể như sau:
Chương 1. Tổng quan kiểm thử ứng dụng di động và phương pháp phát triển
linh hoạt
Luận án trình bày tổng quan về kiểm thử cho ứng dụng di động, phân tích các vấn
đề về kiểm thử, chiến lược, qui trình, thách thức kiểm thử ứng dụng di động, các cơng
trình nghiên cứu liên quan kiểm thử ứng dụng di động. Từ đó, nghiên cứu sinh đặt
vấn đề về các nhiệm vụ cần giải quyết trong luận án:
-

(1) Kỹ thuật tối ưu hóa, tái cấu mã nguồn, phân tích mã nguồn tìm lỗi tiềm ẩn để
nâng cao hiệu năng, giảm tiêu thụ năng lượng, nâng cao chất lượng cho ứng dụng
di động Android;

-

(2) Các kỹ thuật kiểm thử và giải pháp tích hợp trong mơi trường phát triển linh
hoạt

-

(3) Đánh giá độ tin cậy của ứng dụng khi sử dụng các kỹ thuật (1) và (2) để chứng
minh các kỹ thuật và phương pháp đề xuất là hiệu quả và có giá trị.
Chương 2. Các kỹ thuật tối ưu hóa, tái cấu trúc mã nguồn và tìm lỗi tiềm ẩn


cho ứng dụng di động
Luận án trình bày các kỹ thuật phân tích mã nguồn, tối ưu hóa mã nguồn và phân
tích mã nguồn tìm lỗi tiềm ẩn trong ứng dụng di động bao gồm:
-

Các kỹ thuật tối ưu hóa mã nguồn nâng cao hiệu năng và tái cấu trúc mã nguồn
để tối ưu tiêu thụ năng lượng của ứng dụng (cơng bố ở cơng trình CT1, CT3).

-

Kỹ thuật phân tích mã nguồn tìm lỗi tiềm ẩn trong chương trình nhằm nâng cao
chất lượng mã nguồn cho ứng dụng (cơng bố ở cơng trình CT2).
Chương 3. Các kỹ thuật kiểm thử và xây dựng giải pháp tích hợp trong mơi

trường phát triển linh hoạt
Luận án trình bày các kỹ thuật kiểm thử cho ứng dụng di động, bao gồm:
-

Kỹ thuật sinh trường hợp kiểm thử và dữ liệu kiểm thử tự động dựa trên câu
chuyện người dùng (User story) và điều kiện chấp nhận (Acceptance criteria) (kết
quả cơng bố ở cơng trình CT6).

-

Phương pháp đồ thị hóa kỹ thuật kiểm thử thăm dị trong kiểm thử hướng ngữ
cảnh (CDT) (cơng bố ở cơng trình CT4).
9



-

Phương pháp ứng dụng heuristics và học máy trong kiểm thử cho ứng dụng web
và web di động (công bố ở cơng trình CT5).

-

Giải pháp tích hợp các kỹ thuật đã được trình bày ở Chương 2 và Chương 3, đề
xuất qui trình ứng dụng trong mơi trường phát triển linh hoạt Agile Scrum. Từ đó
áp dụng đánh giá thử nghiệm thực tế cho lớp phần mềm ứng dụng Android dựa
trên 2 trường hợp: các ứng dụng tại kho mã nguồn FOSS sử dụng để đánh giá các
kỹ thuật kiểm thử tĩnh; tổ chức xây dựng dự án thực tế ACMpp để đánh giá kỹ
thuật kiểm thử động về độ tin cậy của ứng dụng (cơng bố ở cơng trình CT7).
Kết luận và hướng phát triển.
Đánh giá các kết quả đạt được, những hạn chế của luận án và các vấn đề tiếp tục

nghiên cứu phát triển để hoàn thiện hướng đi của luận án.

6. Các đóng góp khoa học của luận án
Thứ nhất: Xây dựng và thử nghiệm các kỹ thuật tối ưu và tái cấu trúc mã nguồn
nhằm nâng cao hiệu năng cho ứng dụng di động: sử dụng bộ nhớ hiệu quả, đa luồng
và đồng bộ hóa, xây dựng các luật sử dụng Programming Mistake Detector và
Android Lint để tối ưu mã nguồn nhằm tiết kiệm năng lượng, nâng cao hiệu năng cho
ứng dụng (PMDLint); xây dựng và thử nghiệm mơ hình kiểm thử hộp trắng cho
phương thức trong một lớp để tìm lỗi tiềm ẩn nhằm nâng cao chất lượng mã nguồn
và độ tin cậy cho ứng dụng (UniTest).
Trình bày trong chương 2, có 3 bài báo liên quan (CT1, CT2, CT3), trong đó có
01 cơng trình Hội nghị Scopus.
Thứ hai: Xây dựng và thử nghiệm các kỹ thuật kiểm thử, phương pháp kiểm thử
cho phát triển ứng dụng di động: sinh trường hợp kiểm thử và dữ liệu kiểm thử tự

động dựa trên câu chuyện người dùng và tiêu chí chấp nhận (AgileUATM); sử dụng
phương pháp đồ thị hóa hoạt động kiểm thử thăm dị (One2Explore), phương pháp
heuristics và học máy trong kiểm thử ứng dụng web và web di động (Shinobi) . Đề
xuất giải pháp AgileScrum+ tích hợp các kỹ thuật trong mơi trường phát triển Agile
Scrum.
Trình bày trong chương 3, có 4 bài báo liên quan (CT4, CT5, CT6, CT7), trong đó
có 02 cơng trình Hội nghị Scopus và 01 Tạp chí ISI (Q3).
10


CHƯƠNG 1. TỔNG QUAN KIỂM THỬ ỨNG DỤNG
DI ĐỘNG VÀ PHƯƠNG PHÁP PHÁT TRIỂN LINH HOẠT
Trong chương này, luận án trình bày các số liệu thống kê, các khảo sát về ứng
dụng di động, xu hướng phát triển và người dùng ứng dụng di động; phân loại ứng
dụng di động, các thách thức trong việc kiểm thử cho ứng dụng di động. Ngồi ra,
chương này cũng trình bày các khái niệm, các thuật ngữ liên quan đến kiểm thử ứng
dụng di động, phương pháp phát triển và qui trình phát triển ứng dụng theo cách tiếp
cận linh hoạt (Agile development).

1.1. Giới thiệu tổng quan
Ngày nay, điện thoại di động thông minh đã trở thành một phần không thể thiếu
của nhiều người trong cuộc sống hàng ngày. Tiến bộ của công nghệ và trải nghiệm
người dùng đang thúc đẩy sự phát triển của thị trường ứng dụng di động. Cứ mỗi bản
cập nhật hệ điều hành mới cũng sẽ tạo ra những cải tiến mới về thiết kế ứng dụng di
động để đáp ứng nhu cầu của người dùng trong thời đại công nghệ.
Theo nghiên cứu của Research and Markets [92], thị trường đám mây di động dự
kiến đạt trị giá 46,90 tỷ USD vào năm 2019. Kết quả nghiên cứu của Markets and
Markets [65] cho thấy thị trường điện toán và xử lý di động sẽ có giá trị 61,70 tỷ USD
vào năm 2020. Theo những số liệu mới nhất từ Gartner, trong năm 2018, hai hệ điều
hành phổ biến nhất trên điện thoại di động đang là iOS và Android khi đang chiếm

tới 99.9% thị phần. Trong khi các hệ điều hành khác gần như không đáng kể, chỉ
chiếm tỷ lệ 0.01%.
Hệ điều hành Android vẫn tiếp tục chiếm ưu thế với khoảng 88% thị phần, trong
khi đó iOS là 11.9% ở quý 2 năm 2018. So với năm 2017, con số này có thay đổi
khơng đáng kể. Android tăng thêm hơn 0.2%, iOS giảm 0.3% [39]. Trong khi thị
trường điện thoại thơng minh trên tồn thế giới dự kiến sẽ giảm 3% trong năm 2018,
IDC tin rằng thị trường sẽ có mức tăng trưởng một chữ số từ năm 2019 đến hết dự
báo vào năm 2022 [49][102].
Từ năm 2017, nền kinh tế ứng dụng đã tiếp tục phát triển nhờ vào bối cảnh kỹ thuật
số theo sau. Phần lớn các công ty và doanh nhân nhận ra rằng các ứng dụng di động

11


khơng cịn là một tiện ích giá trị gia tăng mà là sự cần thiết để duy trì và phát triển
doanh nghiệp. Các tổ chức lớn đang sử dụng các ứng dụng di động để xây dựng
thương hiệu, tiếp thị trực tiếp, tăng sự tham gia của khách hàng, các doanh nghiệp
vừa và nhỏ cũng đang đi theo cùng xu hướng để có chỗ đứng trên thị trường. Nền
kinh tế ứng dụng tiếp tục mở rộng, phát triển với tốc độ cao được minh chứng bởi số
lượng ứng dụng miễn phí được tải xuống đã tăng lên tới 253,91 tỷ trong năm 2017,
so với 57,33 tỷ lượt tải xuống vào năm 2012. Tương tự, số lượng ứng dụng được trả
tiền đã tải xuống tăng lên 14,78 tỷ trong năm 2017 so với 2,89 tỷ ứng dụng trong năm
2011. Doanh thu ứng dụng được dự đoán sẽ tăng lên tới 188,9 tỷ đô la vào năm 2020,
từ mức 69,7 tỷ đô la trong năm 2015 [78,79].

Hình 1.1. Thị trường của ứng dụng trên điện thoại thông minh [79]

Thống kê của Statista về số lượng ứng dụng có sẵn để tải xuống trong các cửa hàng
ứng dụng kể từ quý 3 năm 2018, người dùng Android có thể chọn giữa 2,1 triệu ứng
dụng. App Store của Apple vẫn là cửa hàng ứng dụng lớn thứ hai với gần 2 triệu ứng

dụng có sẵn (xem Hình 1.1).
Thực tế, tính đến tháng 3 năm 2018, Google Play có khoảng 3,6 triệu ứng dụng,
nhiều hơn 100 nghìn so với tháng 12 của năm trước. Apple Store đã tăng từ 800 ứng
dụng trong tháng ra mắt vào tháng 7 năm 2008 lên 2,2 triệu vào tháng 1 năm 2017.

12


Apple ước tính rằng vào tháng 9 năm 2016, các ứng dụng từ Apple App Store đã
được tải xuống tích lũy 140 tỷ lần. Tuy nhiên, dữ liệu năm 2016 cho thấy nhiều ứng
dụng đã tải xuống không được sử dụng nhiều hơn một lần trong sáu tháng đầu tiên.
Danh mục App Store phổ biến nhất là chơi game với khoảng 25% các ứng dụng có
sẵn thuộc danh mục này [79].
Các ứng dụng di động ngày nay không chỉ phát triển để phục vụ cho giải trí hay
lĩnh vực truyền thơng xã hội, mà cịn nhắm mục tiêu đến các lĩnh vực cần sự an tồn
và tính tốn quan trọng như hệ thống thanh tốn, chính phủ, qn đội, sức khỏe, và
nhiều lĩnh vực khác [50]. Người dùng di động đang sử dụng các ứng dụng cài đặt trên
điện thoại thơng minh thay cho các máy tính cá nhân hay máy tính để bàn và họ hồn
tồn hy vọng rằng ứng dụng như vậy là dễ dùng, đáng tin cậy và an toàn để sử dụng.
Người dùng mong đợi các giải pháp dựa trên thiết bị di động đáp ứng hầu hết các tác
vụ tính tốn của họ. Ứng dụng di động cần phải được tích hợp tốt, thiết kế tốt, dễ tiếp
cận, hiệu năng cao và đáng tin cậy. Tuy nhiên, điều này dẫn đến các giải pháp phát
triển ứng dụng di động không chỉ phức tạp hơn mà còn thách thức cho việc phát triển
cũng như kiểm thử, đánh giá tính đúng đắn, độ tin cậy cho ứng dụng [5].

1.2. Phân loại ứng dụng di động
Các ứng dụng di động được phân thành 3 nhóm:
Native Applications: Các ứng dụng bản địa được phát triển cho một nền tảng cụ
thể và được cài đặt trên thiết bị di động. Các ứng dụng Android được phát triển bằng
Java, trong khi iOS ứng dụng được viết bằng Objective-C hoặc Swift. Các ứng dụng

này có quyền truy cập vào tất cả các thư viện nền tảng cụ thể và các API để tận dụng
lợi thế của tất cả các tính năng của một điện thoại thông minh hiện đại đã cung cấp
như có thể truy cập trực tiếp vào máy ảnh, GPS và tất cả các cảm biến khác.
Web Based Applications: ứng dụng được truy cập thơng qua trình duyệt của bên
thứ 3 được cài trên thiết bị di động. Một ứng dụng Web di động là một trang web mà
có thể được truy cập từ trình duyệt web của điện thoại. Trang web đó được tối ưu hóa
cho việc sử dụng trình duyệt di động và độc lập với các nền tảng di động. Các ứng
dụng Web di động đang phát triển với các công nghệ web như HTML và JavaScript,
đặc biệt là với HTML5, CSS3 và JavaScript.
13


×