Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 93 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
93
Dung lượng
1,12 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 đề .7 Chương Nền tảng Android 1.1 Giới thiệu chung Android .9 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 là gı?̀ 20 2.1.2 Cá c giai đoan củ a kiêm̉ thử Fuzz 21 2.1.3 Phân loaị kiểm thử Fuzz .26 2.1.4 Các lỗ hổng đươc 2.1.5 Ưu nhươc phat́ hiên bở i kiểm thử Fuzz 27 điểm của 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ôṭ 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 cứ u thư c nghiêm 4.1 Thiết lâp 52 môi trườ ng thực nghiệm 52 4.1.1 Chuẩn bị công cụ kiểm thử 52 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 haǹ h kiểm thử 55 4.4 Kết quả thưc ngh iêm 58 4.5 Phân tích – đánh gia.́ 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 Đặ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 Để các thiết bi ̣di đơ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ơí iOS và Microsoft vớ i Windows Phone Cać công ty naỳ 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à ứ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 bỏ qua phần mềm nói chung ứng dụng Android nói riêng 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 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 q 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 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): 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)