Luận án Tiến sĩ Khoa học máy tính: 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ượt xem 7
download
Mục tiêu của luận án là 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 dụng di động; và 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.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Luận án Tiến sĩ Khoa học máy tính: 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Ộ 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 PGS, TS. Huỳnh Quyết Thắng Nguyễn Đức Mận 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 toàn bộ quá 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à luôn 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 hoà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 Đỗ Hoà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 hoà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 hoà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 toá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 Quá 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 xuyên 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 ngoà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 toà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 toá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 toà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 toà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
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Luận án Tiến sĩ Khoa học Giáo dục: Quản lý hoạt động tự học của lưu học sinh Nước Cộng hòa Dân chủ Nhân dân Lào tại Việt Nam
224 p | 160 | 31
-
Luận án Tiến sĩ Khoa học giáo dục: Vận dụng quan điểm sư phạm tương tác vào dạy học Sinh học 9 trường THCS
165 p | 155 | 23
-
Luận án Tiến sĩ Khoa học Giáo dục: Hình thành cho sinh viên kĩ năng đánh giá năng lực khoa học của học sinh theo quan điểm PISA trong dạy học Sinh học ở trường phổ thông
167 p | 160 | 18
-
Luận án Tiến sĩ Khoa học giáo dục: Quản lý chuyển đổi số trong hoạt động đào tạo ở trường đại học
270 p | 22 | 12
-
Luận án Tiến sĩ Khoa học giáo dục: Quản lý đội ngũ giáo viên trung học phổ thông ngoài công lập thành phố Hà Nội theo tiếp cận năng lực trong bối cảnh hiện nay
239 p | 12 | 9
-
Luận án Tiến sĩ Khoa học giáo dục: Giáo dục khởi nghiệp từ nghề truyền thống cho thanh niên nông thôn các tỉnh Đồng bằng Sông Hồng đáp ứng yêu cầu xây dựng nông thôn mới
277 p | 18 | 8
-
Luận án Tiến sĩ Khoa học giáo dục: Tổ chức dạy học trải nghiệm trong môn Giáo dục công dân cấp trung học cơ sở ở Hà Nội
231 p | 24 | 8
-
Luận án Tiến sĩ Khoa học giáo dục: Dạy học viết văn bản thuyết minh dựa trên tiến trình viết cho học sinh trung học phổ thông theo tiếp cận phát triển năng lực
244 p | 15 | 8
-
Luận án Tiến sĩ Khoa học vật liệu: Nghiên cứu chế tạo nón xuyên trong thiết bị nổ lõm bằng đồng kim loại và composite W-Cu có cấu trúc siêu mịn
126 p | 20 | 6
-
Luận án Tiến sĩ Khoa học giáo dục: Phát triển năng lực thực hành thí nghiệm hóa học cho sinh viên ngành Sư phạm Hóa học theo tiếp cận CDIO
272 p | 13 | 6
-
Luận án Tiến sĩ Khoa học giáo dục: Phát triển năng lực thẩm mĩ cho học sinh trung học cơ sở trên địa bàn thành phố Hà Nội thông qua dạy học môn Mĩ thuật
224 p | 10 | 5
-
Luận án Tiến sĩ Khoa học giáo dục: Phát triển năng lực khám phá tự nhiên cho học sinh trong dạy học chủ đề Vật sống, môn Khoa học tự nhiên 6
238 p | 10 | 5
-
Luận án Tiến sĩ Khoa học giáo dục: Dạy học xác suất và thống kê cho sinh viên ngành kỹ thuật mỏ và kỹ thuật địa chất theo hướng gắn với thực tiễn nghề nghiệp
166 p | 13 | 5
-
Luận án Tiến sĩ Khoa học môi trường: Nghiên cứu tài nguyên đất gò đồi phục vụ định hướng phát triển nông nghiệp bền vững tỉnh Bắc Giang
293 p | 14 | 5
-
Luận án Tiến sĩ Khoa học giáo dục: Quản lí hoạt động đánh giá kết quả học tập của sinh viên các trường đại học, học viện công an nhân dân theo tiếp cận năng lực
285 p | 10 | 4
-
Luận án Tiến sĩ Khoa học giáo dục: Dạy học hình học ở trường trung học cơ sở theo hướng phát triển chương trình ở cấp độ lớp học
226 p | 12 | 4
-
Luận án Tiến sĩ Khoa học giáo dục: Quản lí liên kết đào tạo của trường đại học tư thục với doanh nghiệp tại thành phố Hồ Chí Minh đáp ứng yêu cầu thị trường lao động
248 p | 14 | 4
-
Luận án Tiến sĩ Khoa học máy tính: Nghiên cứu một số giải pháp tối ưu hóa hiệu năng trong mạng điện toán biên di động
166 p | 5 | 1
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn