1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu một số phương pháp sinh đầu vào kiểm thử tự động cho android

71 1 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 71
Dung lượng 1,8 MB

Nội dung

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TRẦN THỊ HỒNG SIM NGHIÊN CỨU MỘT SỐ PHƯƠNG PHÁP SINH ĐẦU VÀO KIỂM THỬ TỰ ĐỘNG CHO ANDROID LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN Hà Nội – 2017 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TRẦN THỊ HỒNG SIM NGHIÊN CỨU MỘT SỐ PHƯƠNG PHÁP SINH ĐẦU VÀO KIỂM THỬ TỰ ĐỘNG CHO ANDROID Ngành: Công Nghệ Thông Tin Chuyên ngành: Kỹ thuật Phần mềm Mã số: 60480103 LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS TS TRƯƠNG ANH HOÀNG Hà Nội – 2017 Lời cam đoan Tôi xin cam đoan nội dung luân văn vớ i đề tài “Nghiên cứu số phương pháp sinh đầu vào kiểm thử tự động cho Android” cơng trình nghiên cứu thân, xuất phát từ yêu cầu phát sinh công việc để hình thành hướng nghiên cứu Các số liệu có nguồn gốc rõ ràng tuân thủ nguyên tắc, kết thực nghiệm trình bày luận văn thu thập trình nghiên cứu trung thực, chưa công bố trước Hà Nội, Ngày 12 tháng 12 năm 2017 Tác giả luận văn Trần Thị Hồng Sim Lời cảm ơn Đầu tiên, em xin gửi lời cảm ơn chân thành biết ơn sâu sắc tới PGS.TS Trương Anh Hoàng, giảng viên môn Kỹ thuật Phần mềm, khoa Công Nghệ Thông Tin, trường Đại học Công Nghệ, Đại học Quốc Gia Hà Nội Trong suốt trình học tập thực luận văn này, thầy người trực tiếp hướng dẫn đưa định hướng quý báu cho q trình nghiên cứu Chính nhờ nhiệt tình bảo, dành thời gian quý báu thầy suốt q trình hướng dẫn mà em hồn thành việc nghiên cứu Em xin gửi lời cảm ơn chân thành đến thầy giáo, cô giáo giảng viên trường Đại học Công Nghệ giảng dạy, truyền đạt kiến thức cho em hai năm học trường Những kiến thức mà thầy cô truyền thụ tảng cho em công việc sau kiến thức tiên việc nghiên cứu tìm hiểu đề tài luận văn Và cuối cùng, xin gửi lời cảm ơn đến bạn bè, đồng nghiệp đặc biệt gia đình, người ln bên động viên, giúp đỡ, tạo điều kiện tốt cho suốt trình học tập thực luận văn Hà Nội, tháng 12/2017 Trần Thị Hồng Sim Mục lục Mục lục Đặt vấn đề Chương Nền tảng Android 1.1 Giới thiệu chung Android 1.2 Bản kê khai ứng dụng AndroidManifest 12 1.2.1 Hoạt động (activity) 12 1.2.2 Dịch vụ (service) .15 1.2.3 Bộ nhận quảng bá (Broadcast Receiver) 16 1.2.4 Trình cung cấp nội dung (Content Provider) 17 Chương Sinh đầu vào kiểm thử tự động 18 2.1 Phương pháp kiểm thử Fuzz (Fuzzing) 20 2.1.1 Kiểm thử Fuzz gı̀? 20 2.1.2 Các giai đoan của kiêm ̉ thử Fuzz 21 2.1.3 Phân loai ̣ kiểm thử Fuzz 26 2.1.4 Các lỗ hổ ng đươc phát hiên bở i kiểm thử Fuzz 27 2.1.5 Ưu nhươc điể m kiể m thử Fuzz 29 2.1.6 Một số công cụ kiể m thử Fuzz 29 2.2 Phương pháp dựa mơ hình (Model based Testing) 29 2.2.1 Kiểm thử dựa mơ hình gì? 29 2.2.2 Các loại kiểm thử dựa mơ hình 31 2.2.3 Các mơ hình khác kiểm thử 31 2.2.4 Tiến trình kiểm thử dựa mơ hình 33 2.2.5 Ưu nhược điểm kiểm thử dựa mơ hình 41 2.2.6 Một số công cụ kiểm thử dựa mơ hình 42 Chương Môt ̣ số công cụ sinh đầu vào kiểm thử tự động cho ứng dụng Android 43 3.1 Công cu ̣ kiể m thử ngâu nhiên – Monkey tool 43 3.1.1 Tổ ng quan chung về Monkey tool 43 3.1.2 Kiểm thử Fuzz với Monkey .44 3.2 Công cu ̣ kiể m thử dưa mô hı̀nh – DroidBot 47 3.2.1 Tổng quan chung về DroidBot 47 3.2.3 Kiểm thử dựa mơ hình với DroidBot 49 Chương 4: Nghiên u thưc nghiêm 52 4.1 Thiế t lâp môi trườ ng thực nghiệm 52 C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an 4.1.1 Chuẩn bị công cụ kiểm thử 52 Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an 4.1.2 Chuẩn bị thiế t bi ̣kiể m thử 53 4.2 Xây dựng ứng dung kiể m thử 53 4.3 Tiế n hành kiểm thử .55 4.4 Kế t thưc nghiêm 58 4.5 Phân tích – đánh giá .60 4.4.1 Tính hiệu việc phát lỗi 60 4.4.2 Tính hiệu chiến lược khám phá 60 4.4.3 Tính khả dụng 62 Kết luận 63 Tài liệu tham khảo 65 Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Đặt vấn đề Như biết nhu cầu sử dụng thiết bị di động thông minh người ngày cao, số lượng nhà sản xuất thiết bị ngày nhiều đa dạng chủng loại, mẫu mã Mỗi điện thoại thông minh ngày không đơn để nghe, gọi nhắn tin trước, mà giống máy tính để bàn thu nhỏ, lướt web, chat wifi, mua hàng trực tuyến, tìm kiếm thơng tin, xử lý thơng tin mạng, kết nối thiết bị ngoại vi, điều khiển ô tô, điều khiển robot, giải công việc với đối tác nơi đâu vơ vàn lợi ích lớn lao khác Để thiế t bi ḍ i đơng có sức mạnh trướ c hế t nhờ công ty phát triển phần mềm mà cụ thể Google vớ i Android, Apple với iOS Microsoft vớ i Windows Phone Các công ty tập trung lớn nguồn lực họ vào việc phát triển tảng di động kể để đưa chúng lên tầm cao trước đây, mà ngày thường hay gọi “HỆ ĐIỀU HÀNH” Trong số hệ điều hành cho thiết bị di động, Android hệ điều hành phổ biến lớn mạnh Với tính chất nguồn mở, Android thu hút nhiều nhà sản xuất thiết bị giới Sony, Samsung, LG, HTC, v.v… Ngày Android không sử dụng hệ điều hành điện thoại thông minh máy tính bảng, mà cịn ứng dụng vào dự án khác như: đồng hồ thông minh (smartwatch), nhà thông minh (smart home), tivi thông minh (smart tivi), robot, điều khiển tơ, kính thực thể ảo … Theo số liệu thống kê, Android nắm giữ 86% [1] tổng thị phần cho hệ điều hành di động Sự phổ biến ngày tăng thiết bị Android có tác động trực tiếp đến cửa hàng ứng dụng Google Play Đây cửa hàng ứng dụng lớn giới có 3.3 triệu ứng dụng (tháng 9/2017) có sẵn để tải xuống Chỉ riêng quý năm 2017, có gần 17 tỷ lượt tải xuống ứng dụng từ Google Play Với số thống kê trên, thấy việc xây dựng ứng dụng cho thiết bị Android đã, xu hướng phát triển mạnh mẽ bền vững Trong vòng đời phát triển phần mềm, kiểm thử hoạt động quan trọng khơng thể bỏ qua đối với phần mềm nói chung ứng dụng Android nói riêng Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Hoạt động kiểm thử tiến hành cách thủ công nhiên điều thời gian, tốn chi phí đơi khơng mang lại hiệu cao Thậm chí vài phương pháp kiểm thử, hoạt động kiểm thử thủ công khơng thể thực Do địi hỏi phải có hình thức kiểm thử tự động hỗ trợ Tuy nhiên kiểm thử tự động có nhiều kỹ thuật khác vớ i các mứ c đô ̣ tư ̣ đông khác Đối với nhiều cơng cụ kiểm thử, cần có tham gia kiểm thử viên vào trình Kiểm thử viên phải xây dựng kịch kiểm thử hồn tồn thủ cơng để cơng cụ kiểm thử thực thi từ kịch Đây công việc không đơn giản, tốn thời gian nhân lực Vậy câu hỏi đặt ra, để hoạt động kiểm thử hoàn toàn tự động, từ thao tác sinh kịch kiểm thử việc thực thi kịch kiểm thử Đã có nhiều nghiên cứu kỹ thuật sinh liệu kiểm thử tự động Và nội dung luận văn tìm hiểu kỹ thuật sinh liệu kiểm thử tự động, cụ thể áp dụng vào trình kiểm tra tự động cho ứng dụng Android Cụ thể luận văn xây dựng bao gồm chương với chi tiết sau: - Chương 1: Trình bày tổng quan hệ điều hành Android bao gồm tầng Android cấu trúc tập tin Manifest tập tin kê khai thông tin thiết yếu ứng dụng với hệ thống - Chương 2: sâu vào tìm hiểu hai phương pháp sinh đầu vào kiểm thử tự động phương pháp kiểm thử Fuzz (Fuzzing) phương pháp kiểm thử dựa mơ hình (model-based testing) - Chương 3: tìm hiểu hai cơng cụ kiểm thử tự động cho Android đại diện cho hai phương pháp kiểm thử Fuzz kiểm thử dựa mơ hình Monkey DroidBot - Chương 4: tiến hành nghiên cứu thực nghiệm cách sử dụng hai công cụ Monkey DroidBot để kiểm tra cho danh sách ứng dụng Android, đồng thời đo lại kết số lượng lỗi tìm được, độ bao phủ mã nguồn, từ đưa phân tích đánh giá cho kết thực nghiệm đạt Cuối kết luận tài liệu tham khảo Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Chương Nền tảng Android 1.1 Giới thiệu chung Android Android hệ điều hành mã nguồn mở, dựa Linux, tạo cho loạt thiết bị yếu tố hình thức Sơ đồ hình 1.1 cho biết thành phần tảng Android [2]: - Tầng hạt nhân Linux: tảng hệ điều hành Android hạt nhân Linux Tất hoạt động thiết bị phải thực thi tầng Tầng bao gồm tiến trình quản lý nhớ (memory management), giao tiếp với phần cứng (driver model), bảo mật (security), quản lý tiến trình (process) Sử dụng hạt nhân Linux cho phép Android tận dụng tính bảo mật then chốt cho phép nhà sản xuất thiết bị phát triển trình điều khiển phần cứng cho hạt nhân tiếng - Lớp trừu tượng phần cứng (Hardware Abstraction Layer - HAL): cung cấp giao diện chuẩn để phần cứng thiết bị giao tiếp với tảng Java API cấp cao Lớp trừu tượng phần cứng bao gồm nhiều mô đun thư viện, mô đun lại thực thi giao diện cho loại thành phần phần cứng cụ thể, chẳng hạn mô đun máy ảnh mô đun Bluetooth Khi khung API (API framework) thực gọi để truy cập phần cứng thiết bị, hệ thống Android tải mô đun thư viện cho thành phần phần cứng - Thời gian chạy Android (Android Runtime – ART): đối với thiết bị chạy Android phiên 5.0 (API 21) trở lên, ứng dụng chạy tiến trình với thể thời gian chạy Android Thời gian chạy Android viết để chạy nhiều máy ảo thiết bị có nhớ thấp cách thực thi tập DEX, định dạng byte-code thiết kế đặc biệt cho Android, tối ưu hóa cho nhớ tối thiểu Xây dựng công cụ, chẳng hạn Jack, biên soạn nguồn Java vào mã DEX byte-code, chạy tảng Android Một số tính thời gian chạy Android bao gồm:  Biên dịch trước thời hạn (Ahead-Of-Time - AOT) thời hạn (Just-InTime - JIT)  Tối ưu hóa thu gom rác (Garbage Collection - GC) Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn 10 C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Chương 4: Nghiên u thưc nghiêm Trong chương này, tiến hành thực thực nghiệm nhỏ: kiểm thử số ứng dụng Android với công cụ kiểm thử tự động giới thiệu chương Monkey DroidBot kiểm thử thủ cơng Trong q trình thực nghiệm tiến hành việc đo đạc số liệu thời gian thực hiện, số lỗi tìm được, độ bao phủ mã nguồn, từ giúp đưa ưu, nhược điểm phương pháp Các bước tiến hành thực nghiệm thể hình 4.1 Hình 4.1: Quy trình tiến hành thực nghiệm 4.1 Thiế t lâp môi trường thực nghiệm 4.1.1 Chuẩn bị cơng cụ kiểm thử Về phía kiểm thử tự động, hai công cu ̣ đươc lưa chon cho thưc nghiêm Monkey đai diên ̣ cho kỹ thuâṭ kiể m thử ngâu nhiên/ kiểm thử mờ DroidBot đai ̣diên kỹ thuât kiểm thử dưa mơ hình Kiểm thử thủ cơng: thực người dùng Cài đăt Monkey: Do Monkey tích hợp phát triển phầ n mềm Android (Android SDK) nên để chay đươc Monkey trướ c hế t cần tiế n hành cài đăt ̣ Android SDK Tiế p theo đo cài đăt ̣ biế n môi trườ ng: Taọ biế n ANDROID_HOME = ~/Android/Sdk Tao biế n Path = %PATH%; %ANDROID_HOME%\tools; %ANDROID_HOME%\platformtools Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn 57 C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Cài đăt DroidBot Cài đăt ̣ Python 2.7.14 Cài đặt gói liên quan: - Androguard 3.0.1 - Networkx 2.0 - Pillow 4.3.0 Cài đăt Droidbot: cheṕ mã nguồ n từ: https://github.com/honeynet/droidbot Thưc hiên cài đăt Droidot bằ ng lên ̣ h: pip install –e droidbot ̣ Kiểm thử thủ công Người dùng cài đặt ứng dụng thiết bị kiểm thử, tiến hành thao tác ứng dụng cách ngẫu nhiên theo kịch người dùng thông thường khoảng thời gian ~ phút cho ứng dụng 4.1.2 Chuẩn bị thiế t bi kiểm thử Sử dun ̣ g Samsung Galaxy Note (N920I), hệ điều hành Android Nougat 7.0 để cài đăt ̣ ứ ng dụng tiến hành kiểm thử 4.2 Xây dựng ứng dung kiểm thử Bước 1: Tải mã nguồn ứng dụng: STT TÊN ỨNG DỤNG LINK MÃ NGUỒN AAT A Photo Manager https://f-droid.org/en/packages/ch.bailu.aat/ AnyMemo https://f-droid.org/en/packages/org.liberty.android.fantastischmemo/ Calculator https://f-droid.org/en/packages/com.xlythe.calculator.material/ Camera https://f-droid.org/en/packages/com.simplemobiletools.camera/ Catan Dice Game https://f-droid.org/en/packages/com.ridgelineapps.resdicegame/ Clear List https://f-droid.org/en/packages/douzifly.list/ FreeShisen https://github.com/knilch0r/freeshisen Giggity https://f-droid.org/en/packages/net.gaast.giggity/ 10 Glucosio https://f-droid.org/en/packages/org.glucosio.android/ 11 Good Weather 12 Inbox Pager 13 Internet Radio 14 Clip Stack https://f-droid.org/en/packages/de.k3b.android.androFotoFinder/ https://f-droid.org/en/packages/org.asdtm.goodweather/ https://f-droid.org/en/packages/net.inbox.pager/ https://f-droid.org/en/packages/community.peers.internetradio/ https://f-droid.org/packages/com.catchingnow.tinyclipboardmanager/ Bảng 4.1: Danh sách ứng dụng thực nghiệm Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn 58 C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Danh sách ứ ng dung lưa chon cho thưc nghiêm thể bảng 4.1 Các ứng dung đươc lây ́ mã nguồ n từ https://f-droid.org/ [27], cửa hàng ứng dụng Android mã nguồn mở Bước 2: Sử dụng Jacoco, build lại apk để đo độ bao phủ mã nguồn: Sau có mã nguồn ứng dụng, sử dung Jacoco để xây dựng lai apk, phuc vu ̣ cho việc đo độ bao phủ mã nguồn Các bước xây dựng lại apk sử dụng Jacoco Gradle: - Xây dựng môt thư viên CoverageLib để lấ y tâp tin ec a thơng tin bao phủ mã nguồn Hình 4.2: Thư viện CoverageLib - Cấ u hình tâp tin build.gradle:  Á p dun ̣ g Jacoco bât ̣ tı́nh đo độ bao phủ: apply plugin: 'jacoco' buildTypes { debug{ testCoverageEnabled true } }  Tao task sinh báo cáo bao phủ mã nguồn task jacocoTestReportAndroidTest(type: JacocoReport) { def coverageSourceDirs = [ "${rootDir}/covData/src/main/java" ] group = "Reporting" description = "Generates Jacoco coverage reports" reports { csv.enabled true Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn 59 C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an xml{ enabled = true destination "${rootDir}/covData/reportcov/jacoco/jacoco.xml" } html{ enabled true destination "${rootDir}/covData/reportcov/jacocoHtml" } } classDirectories = fileTree( dir: "${rootDir}/covData/classfiles", excludes: ['**/R.class', '**/R$*.class', '**/BuildConfig.*', '**/Manifest*.*', ] ) sourceDirectories = files(coverageSourceDirs) additionalSourceDirs = files(coverageSourceDirs) //poiter to coverage data executionData=fileTree("${rootDir}/covData/covfiles") } 4.3 Tiến hành kiểm thử Bướ c 1: Cài đăt ứ ng dun ̣ g lầ n lươt thưc hiên kiểm tra tự động vớ i Monkey Droidbot, kiểm tra thủ công người dùng STT TÊN ỨNG DỤNG CHẠY DROIDBOT 1000 5000 10000 CHẠY MONKEY 1000 5000 10000 KIỂM THỬ THỦ CÔNG ~ phút AAT O O O A Photo Manager O O O AnyMemo O O O O O O O Calculator O O O O O O O Camera O O O O O Catan Dice Game O O Clear List O FreeShisen O O O Giggity O O O 10 Glucosio O 11 Good Weather 12 Inbox Pager 13 14 O O O O O O O O O O O O O O O O O O O O O O O Internet Radio O O O O O Clip Stack O O O O O Ghi O O O Thực thi kiểm thử Bảng 4.2: Danh sách ứng dụng thực thi kiểm thử Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn 60 C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Với việc kiểm tra tự động, mỡi ứng dụng thực môṭ lầ n hoăc nhiêu ̀ lần với số kiên lầ n kiểm tra khác (1000 sự kiên, 5000 sự kiên ̣ , 10000 kiên ̣ ) Với việc kiểm thử thủ công, ứng dụng kiểm tra khoảng thời gian từ ~ phút, chi tiế t bảng 4.2 Vớ i Monkey, thưc hiên chay lên ̣ h: adb shell monkey -p throttle ignore-crashes -ignore-timeouts ignore-security-exceptions -v > log.txt Vớ i Droidbot, thưc chay lên ̣ h: droidbot –a -o -count -grant_perm Kiểm thử thủ công: thao tác với ứng dụng kiểm tra tay, thực kịch người dùng thông thường cách ngẫu nhiên, không theo kịch có sẵn Người dùng khám phá chức ứng dụng nhiều khoảng thời gian từ ~ phút Đồng thời với trı̀nh kiểm tra Monkey, Droidbot kiểm tra thủ công, chay lênh để lấ y tâp tin ec sau khoảng thờ i gian 30 giây: :lable timeout -t 30 adb shell am broadcast -a SQA.COM.ACTION.GETCOVERAGE.DATA goto lable Bướ c 2: lấ y tâp tin ec sinh báo cáo cho độ bao phủ mã nguồn - Các tâp tin ec sinh sau mỗi lầ n lên ̣ h SQA.COM.ACTION.GETCOVERAGE.DATA adb shell am broadcast -a đươc thưc hiên ̣ Các tâp tin đươc lưu thiết bi,̣ môt thư muc đươc có tên chı́nh tên gói (package) tương ứ ng mà tập tin ec đươc sinh Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn 61 C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Hình 4.3: Thư mục chứa tập tin ec - Các tâp tin ec đươc đưa vào thư muc covfiles tao trướ c đo Hình 4.4: Cây thư mục covData - Chay lên ̣ h reporting Gradle Android Studio để sinh báo cáo Hình 4.5: Sinh báo cáo bao phủ mã nguồn Gradle Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn 62 C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an - Sau Gradle hoàn thành viêc chạy build, báo cáo mức độ bao phủ đươc sinh thư muc reportcov, cho ta thông tin về kết bao phủ mã nguồn: Hình 4.6: Báo cáo bao phủ mã nguồn Bướ c 3: Tổng hơp số liêu phân tı́ch kế t - Phân tıć h các tâp tin log, thố ng kê số lươn g lỗi tı̀m đươc - Tổng hơp số liêu kế t đo độ bao phủ 4.4 Kết thưc nghiêm Sau trı̀nh kiểm tra ứng dụng hai công cụ DroidBot, Monkey kiểm tra thủ công, kết thu từ thực nghiệm sau: Thời gian kiểm tra ứng dụng trung bình thể bảng 4.3 DROIDBOT MONKEY PHƯƠNG THỨC KIỂM THỬ KIỂM THỬ THỦ CƠNG THỜI GIAN TRUNG BÌNH 1000 5000 10000 1000 5000 10000 117 phút 610 phút 1210 phút 3.55 phút 14.04 phút 28.69 phút ~ phút Bảng 4.3: Thời gian thực thi kiểm thử Số lượng lỗi crash phát phương thức kiểm thử thể bảng 4.4 DROIDBOT STT KIỂM THỬ THỦ CÔNG MONKEY TÊN ỨNG DỤNG 1000 5000 10000 1000 5000 10000 ~ phút AAT O O O A Photo Manager O O O AnyMemo O O O O O O O Calculator O O O O O O O Camera O O O O O Catan Dice Game O Clear List O O O O O O Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn O 63 O O C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an FreeShisen O Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn O 64 O C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Giggity O 10 Glucosio O 11 Good Weather 12 Inbox Pager 13 14 O O O O O O O O O O O O O O O O O O Internet Radio O O O O O Clip Stack O O O O O Thực thi kiểm thử O O O Có lỗi xảy Bảng 4.4: Danh sách số lượng lỗi crash Mức độ bao phủ mã nguồn phương thức kiểm thử: DROIDBOT TÊN ỨNG DỤNG 1000 5000 Instructions Branches AAT A Photo Manager AnyMemo Calculator Camera Catan Dice Game Clear List FreeShisen Giggity Glucosio Good Weather Inbox Pager Internet Radio Clip Stack 18% 10% 26% 32% 46% 77% 47% 30% 50% 10% 31% 7% 92% 61% 10% 6% 18% 19% 33% 25% 23% 11% 38% 7% 16% 2% 74% 44% Trung bình 38% 23% 10000 Instructions Branches Instructions Branches 26% 36% 18% 21% 40% 38% 26% 23% 47% 23% 47% 22% 14% 10% 13% 8% 62% 45% 67% 51% 37% 23% 41% 26% Bảng 4.5: Độ bao phủ mã nguồn DroidBot MONKEY TÊN ỨNG DỤNG AAT A Photo Manager AnyMemo Calculator Camera Catan Dice Game Clear List FreeShisen Giggity Glucosio Good Weather 1000 5000 Instructions Branches 31% 18% 12% 39% 45% 85% 44% 66% 51% 9% 20% 20% 11% 9% 27% 32% 51% 15% 54% 37% 6% 8% 10000 Instructions Branches Instructions Branches 26% 51% 55% 18% 38% 38% 19% 57% 56% 14% 45% 42% 43% 15% 53% 28% 9% 63% 7% 35% 19% 69% 12% 41% Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn 65 C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Inbox Pager Internet Radio Clip Stack 2% 37% 43% 0% 13% 32% 2% 92% 49% 1% 73% 40% 13% 94% 65% 5% 78% 52% Trung bình 36% 23% 43% 29% 49% 35% Bảng 4.6: Độ bao phủ mã nguồn Monkey KIỂM THỬ THỦ CÔNG TÊN ỨNG DỤNG ~ phút Instructions Branches AAT A Photo Manager AnyMemo Calculator Camera Catan Dice Game Clear List FreeShisen Giggity Glucosio Good Weather Inbox Pager Internet Radio Clip Stack 48% 35% 35% 55% 65% 88% 54% 90% 21% 29% 75% 12% 94% 69% 32% 24% 23% 40% 45% 54% 33% 75% 11% 16% 48% 5% 78% 54% Trung bình 55% 38% Bảng 4.7: Độ bao phủ mã nguồn kiểm thử thủ cơng 4.5 Phân tích – đá nh giá 4.4.1 Tính hiệu việc phát lỗi Dựa số liệu lỗi bảng 4.4 ta thấy hai cơng cụ Droibot Monkey hiệu việc tìm lỗi so với kiểm thử thủ công Tuy nhiên Monkey chạy với số lượng kiện lớn việc phát lỗi cao so với DroidBot 4.4.2 Tính hiệu chiến lược khám phá Monkey sinh kiện cách ngẫu nhiên, không theo luồng định Do vậy, thực chạy với số lượng kiện nhỏ có khả khám phá nhiều chức khác ứng dụng Trong DroidBot sinh kiện dựa mơ hình UI, sử dụng chiến lược tham ăn thuật tốn duyệt theo chiều rộng, kiện sinh theo luồng định Chính thực thi với số lượng kiện nhỏ khả bao phủ mã nguồn Monkey tốt so với DroidBot Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn 66 C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Mặc dù vậy, công cụ tự động có hạn chế gặp phải giao diện có trường nhập thơng tin chứa u cầu đặc biệt, giao diện mà thành phần thơng tin khơng hiển thị sẵn hình, cần phải qua thao tác gạt sang phải/ trái lên/ xuống để hiển thị Trong trường hợp này, hai cơng cụ gặp khó khăn để vượt qua, chí mắc kẹt Hình 4.7: Màn hình bắt đầu ứng dụng quản lý bệnh tiểu đường Hình 4.7 giao diện bắt đầu ứng dụng quản lý bệnh tiểu đường Chỉ nhập thông tin đầy đủ hợp lệ, chạm vào “GET STARTED” mới bắt đầu sử dụng ứng dụng Tuy nhiên, vấn đề xảy trường thông tin nhập tuổi hợp lệ số nhập vào nhỏ 100 Điều hoàn tồn gây khó khăn cho hai cơng cụ tự động, không may mắn để nhập thông tin tuổi hợp lệ, việc kiểm tra bị tắc khám phá ứng dụng sâu thêm Chính hạn chế mà ta thấy kết bao phủ mã nguồn hai công cụ tự động thấp so với việc kiểm thử thủ công Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn 67 C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an ĐỘ BAO PHỦ MÃ NGUỒN Monkey Kiểm thử thủ công 38% I NS T R UC T I O N S 29% 24% 39% 43% 55% Droidbot B R A N C HE S Biểu đồ 4.1: Độ bao phủ mã nguồn 4.4.3 Tính khả dụng Cả Monkey DroidBot công cụ chạy dịng lệnh, việc cài đặt sử dụng khơng phức tạp Tuy nhiên, với số lượng kiện, thời gian thực DroidBot lớn nhiều so với Monkey Có chênh lệch lớn phần với kiện, DroidBot lưu lại kịch thực hiện, ảnh chụp hình lưu lại luồng giao diện qua Mặc dù với khoảng thời gian phải bỏ nhiều tại, hiệu suất DroidBot chưa thực tốt so với Monkey Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn 68 C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Kết luận Sau trình nghiên cứu tìm hiểu đề tài “Nghiên cứu số phương pháp sinh đầu vào kiểm thử tự động cho Android”, kết mà luận văn đạt là: Đầu tiên, luận văn giúp đưa nhìn tổng quan kiểm thử tự động dành cho phần mềm nói chung kiểm thử tự động cho ứng dụng Android nói riêng Từ nhìn tổng quan kiểm thử tự động, luận văn giúp đưa khái niệm chi tiết sinh đầu vào kiểm thử tự động với kỹ thuật phổ biến sử dụng để sinh đầu vào kiểm thử tự động: phương pháp kiểm thử Fuzz phương pháp kiểm thử dựa mơ hình Đưa ưu, nhược điểm phương pháp để từ giúp người đọc có đánh giá, so sánh đưa lựa chọn phương pháp phù hợp cho mục đích sử dụng Luận văn đưa tìm hiểu số hướng tiếp cận phương pháp áp dụng cho ứng dụng Android Để có nhìn cụ thể chi tiết hai phương pháp sinh đầu vào kiểm thử tự động trình bày trên, luận văn lựa chọn hai công cụ tự động tiêu biểu tương ứng cho hai phương pháp DroidBot Monkey để tìm hiểu Bên cạnh việc tìm hiểu lý thuyết, tiến hành làm thực nghiệm để so sánh với đồng thời so sánh với việc kiểm thử thủ công Sau thực nghiệm thu kết số lượng lỗi, độ bao phủ mã nguồn, thời gian thực thi công cụ Từ kết thu giúp đưa so sánh, phân tích đánh giá cho tính hiệu phương pháp kiểm thử Tuy nhiên luận văn cịn có hạn chế việc tiến hành thực nghiệm: số lượng cơng cụ kiểm thử cịn hạn chế, số lượng ứng dụng lựa chọn chưa phong phú Với hạn chế nêu trên, số hướng mở rộng nghiên cứu tìm hiểu tương lai: - Mở rộng thực nghiệm với số lượng công cụ lựa chọn lớn hơn, tiến hành kiểm tra với số lượng ứng dụng nhiều có độ phức tạp cao hơn, đồng thời kiểm tra với số lượng kiện lớn Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn 69 C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an - Có kế hoạch cho việc lựa chọn cơng cụ thích hợp để cải tiến phát triển, để áp dụng thực tế vào công việc kiểm thử phần mềm cho ứng dụng Android Samsung Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn 70 C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn

Ngày đăng: 24/07/2023, 01:09

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w