Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 24 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
24
Dung lượng
316,47 KB
Nội dung
Mu ̣c lu ̣c Mu ̣c lu ̣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 1.2.1 Hoạt động (activity) 1.2.2 Dịch vụ (service) 1.2.3 Bộ nhận quảng bá (Broadcast Receiver) 1.2.4 Trình cung cấp nội dung (Content Provider) Chương Sinhđầuvàokiểmthửtựđộng 2.1 Phươngphápkiểmthử Fuzz (Fuzzing) 2.1.1 Kiểmthử Fuzz là gı̀?? 2.1.2 Các giai đoa ̣n của kiể m thử Fuzz 2.1.3 Phân loa ̣i kiểmthử Fuzz 2.1.4 Các lỗ hổ ng đươ ̣c phát hiê ̣n bởi kiểmthử Fuzz 2.1.5 Ưu nhươ ̣c điể m của kiể m thử Fuzz 2.1.6 Mộtsố công cụ kiể m thử Fuzz 2.2 Phươngpháp dựa mơ hình (Model based Testing)9 2.2.1 Kiểmthử dựa mơ hình gì? 2.2.2 Các loại MBT 10 2.2.3 Các mô hình khác kiểmthử 10 2.2.4 Tiến trình kiểmthử dựa mơ hình 10 2.2.5 Ưu nhược điểm kiểmthử dựa mơ hình 12 2.2.6 Mộtsố cơng cụ kiểmthử dựa mơ hình 12 Chương Mô ̣t số công cụ sinhđầuvàokiểmthửtựđộngcho ứng dụng Android 13 3.1 Công cu ̣ kiể m thử ngẫu nhiên – Monkey tool 13 3.1.1 Tổ ng quan chung về Monkey tool 13 3.1.2 Kiểmthử Fuzz với Monkey 13 3.2 Công cu ̣ kiể m thử dựa mô hı̀nh – DroidBot 14 3.2.1 Tổng quan chung về DroidBot 14 3.2.3 Kiểmthử dựa mơ hình với DroidBot 15 Chương 4: Nghiên cứu thực nghiê ̣m 17 4.1 Thiế t lâ ̣p môi trường thực nghiệm 17 4.1.1 Chuẩn bị công cụ kiểmthử 17 4.1.2 Chuẩn bị thiế t bi ̣kiể m thử 17 4.2 Xây dựng ứng du ̣ng kiể m thử 17 4.3 Tiế n hành kiểmthử 18 4.4 Kế t quả thực nghiê ̣m 18 4.5 Phân tích – đánh giá 18 4.5.1 Tính hiệu việc phát lỗi 18 4.5.2 Tính hiệu chiến lược khám phá 18 4.5.3 Tính khả dụng 19 Kết luận 20 Tài liệu tham khảo 22 Đặ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 bị 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ới iOS và Microsoft với Windows Phone Các công ty này 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ở, Androidthu 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ểmthử 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 độngkiểmthử 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ươngphápkiểm thử, hoạt độngkiểmthửthủ cơng khơng thể thực Do đòi hỏi phải có hình thức kiểmthửtựđộng hỗ trợ Tuy nhiên kiểmthử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ểmthử viên vào trình Kiểmthử viên phải xây dựng kịch kiểmthử hồn tồn thủ cơng để cơng cụ kiểmthử 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 độngkiểmthử hoàn toàn tự động, từ thao tác sinh kịch kiểmthử việc thực thi kịch kiểmthử Đã có nhiều nghiêncứu kỹ thuật sinh liệu kiểmthửtựđộng Và nội dung luận văn tìm hiểu kỹ thuật sinh liệu kiểmthửtự động, cụ thể áp dụng vào trình kiểm tra tựđộngcho ứng dụng Android Chương Nền tảng Android 1.1 Giới thiệu chung AndroidAndroid 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 bao gồ m thành phầ n chın ́ h: - Tầng hạt nhân Linux - Lớp trừu tượng phần cứng (Hardware Abstraction Layer - HAL) - Thời gian chạy Android (Thời gian chạy Android – ART) - Tầng thư viện C/C++ - Tầng khung Java API 1.2 Bản kê khai ứng dụng AndroidManifest 1.2.1 Hoạt động (activity) Hoạt động thành phần phụ trách giao diện người dùng ứng dụng Một hoạt động giao diện người dùng trực quan mà người dùng thực kích hoạt Một ứng dụng có nhiều hoạt động chúng gọi đến chuyển hoạt động với Mỗi hoạt android.app.Activity động dẫn xuất lớp 1.2.2 Dịch vụ (service) Một dịch vụ (service) đoạn mã thực thi ngầm hệ thống mà người sử dụng không thấy Mỗi dịch vụ mở rộng từ lớp sở dịch vụ gói android.app 1.2.3 Bộ nhận quảng bá (Broadcast Receiver) Bộ nhận quảng bá thành phần khơng làm nhận phản hồi lại thơng báo quảng bá 1.2.4 Trình cung cấp nội dung (Content Provider) Trình cung cấp nội dung có chức cung cấp tập hợp phương thức cho phép ứng dụng lưu trữ lấy liệu quản lý trình cung cấp nội dung Chương Sinhđầuvàokiểmthửtựđộng 2.1 Phươngphápkiểmthử Fuzz (Fuzzing) 2.1.1 Kiểmthử Fuzz là gı?̀ ? Kiểmthử Fuzz kỹ thuật phát lỗi phần mềm cách tựđộng bán tựđộng sử dụng phươngpháp lặp lại thao tác sinh liệu sau chuyển cho hệ thống xử lý 2.1.2 Các giai đoa ̣n của kiể m thử Fuzz - Bước 1: Xác đinh ̣ mu ̣c tiêu (Indentify target) - Bước 2: Xác đinh ̣ đầ u vào (Indentify inputs) - Bước 3: Sinh dữ liê ̣u mờ hay còn go ̣i là ta ̣o các ca kiể m thử (generate fuzzed data) - Bước 4: Thực thi dữ liê ̣u mờ (execute fuzzed data) - Bước 5: Giám sát dữ liê ̣u mờ (monitor for execution fuzzed data) - Bước 6: Xác đinh ̣ khả khai thác (determine exploitability) 2.1.3 Phân loa ̣i kiểmthử Fuzz - Kiểm thử Fuzz dựa đô ̣t biế n (Mutation based Fuzzing) - Kiểm thử mờ dựa ̣ (Generation based Fuzzing) 2.1.4 Các lỗ hổ ng đươ ̣c phát hiêṇ bởi kiểmthử Fuzz Kiểmthử Fuzz làm viê ̣c tố t nhấ t đố i với các vấ n đề mà gây lỗi chương trình là: tràn bơ ̣ nhớ (buffer overflow), kịch hóa chéo trang(XSS), từ chối dịch vụ (DoS), lỗi chuỗi định da ̣ng (Format String Errors), chèn câu truy vấ n (SQL Injection) v.v Vı̀ thế với kiểmthử Fuzz người ta có thể kiểm tra an toàn trình, dịch vu ̣, thiết bị, hệ thống, mạng máy tı́nh v.v… 2.1.5 Ưu nhươ ̣c điể m của kiể m thử Fuzz 2.1.6 Mộtsố công cụ kiể m thử Fuzz 2.2 Phươngpháp dựa mơ hình (Model based Testing) 2.2.1 Kiểmthử dựa mơ hình gì? 2.2.1.1 Mơ hình gì? 2.2.1.2 Kiểmthử dựa mơ hình Kiể m thử dựa mơ hình kỹ thuật kiểm tra, nơi mà hành vi thời gian chạy phần mềm kiểmthửkiểm tra để chống lại dự đoán thực đặc tả mơ hình thức 2.2.2 Các loại MBT - Offline/ a priori: Sinh kiể m thử trước thực thi chúng Bộ kiể m thử chı́nh là tâ ̣p hơ ̣p các ca kiể m thử - Online/ on-the-fly: Sinhkiểm thử thực thi kiể m thử 2.2.3 Các mơ hình khác kiểmthử 2.2.1.1 Máy trạng thái hữu hạn 2.2.1.2 Biểu đồ trạng thái 2.2.1.3 Ngôn ngữ mơ hình hóa thống (UML) 2.2.4 Tiến trình kiểmthử dựa mơ hình Hı̀nh 2.12: Các bước kiể m thử dựa mô hı̀nh 2.2.4.1 Mô hình hóa Tiến hành việc xây dựng mơ hình cho hệ thống kiểmthử dựa tảng yêu cầu 2.2.4.2 Lựa chọn yêu cầu kiểm thử: Các thao tác thực bước là: - Các tiêu chí lựa chọn trường hợp kiểmthử xác định - Các tiêu chí lựa chọn trường hợp kiểmthử sau chuyển đổi thành đặc tả ca kiểmthửMộtsố tiêu chí bao phủ sử dụng để đánh giá chokiểmthửsinh ra: - Tiêu chí bao phủ cấu trúc - Tiêu chí bao phủ liệu - Tiêu chí dựa lỗi - Tiêu chí bao phủ yêu cầu 2.2.4.3 SinhkiểmthửMột mô hình đặc tả ca kiểmthử xác định, kiểmthử trừu tượng tạo 2.2.4.4 Cụ thể hóa kiểmthử (chuyển đổi) Trong bước này, thực cụ thể hóa kiểmthử trừu tượng sinh bước thành kịch kiểmthử thực thi công cụ 2.2.4.5 Thực thi kiểmthử Thực thi kịch kiểm thử, kết thực tế đầuso sánh với kết mong đợi từ mà đưa kết Pass, Fail cho kịch kiểmthử 2.2.5 Ưu nhược điểm kiểmthử dựa mơ hình 2.2.6 Mộtsố cơng cụ kiểmthử dựa mơ hình Chương Mô ̣t số công cụ sinhđầuvàokiểmthửtựđộngcho ứng dụng Android 3.1 Công cu ̣ kiể m thử ngẫu nhiên – Monkey tool 3.1.1 Tổ ng quan chung về Monkey tool Monkey mô ̣t phầ n của Android SDK đươ ̣c phát triể n bởi Google sử du ̣ng cho việc kiểmthử tự động các ứng du ̣ng Android Với việc tích hơ ̣p sẵn Android Studio, Monkey mô ̣t công cụ hữu ích cho lâ ̣p trình viên viê ̣c kiể m tra ứng dụng quá trı̀nh phát triể n Nó sử du ̣ng kỹ thuâ ̣t ngẫu nhiên/ mờ việc sinh sự kiện người dùng làm đầ u vào cho quá trı̀nh kiể m thử 3.1.2 Kiểmthử Fuzz với Monkey Bước 1: Xác định hệ thống mục tiêu: truyền tham số gói danh mục ứng dụng cần thực thi kiểmthửvào lệnh chạy Bước 2: Xác định đầu vào: lựa chọn thiết lập tỉ lệ kiện mong muốn sinh trình thực thi kiểmthử Bước 3: Sinh liệu kiểm thử: Monkey tiến hành việc sinhđầuvàokiểmthử kiện tương ứng với yêu cầu đưa Bước 4: Thực thi kiểm thử: Các lệnh ADB truyền tới thiết bị kiểmthử Bước 5: Giám sát hành vi hệ thống: kiện sinh lưu lại dạng tệp tin log Bước 6: Đăng lỗi phân tích 3.2 Cơng cu ̣ kiể m thử dựa mô hın ̀ h – DroidBot 3.2.1 Tổng quan chung về DroidBot DroidBot công cụ sinhđầuvàokiểmthử mã nguồn mở dạng nhẹ dựa UI cho ứng dụng Android, phát triển Yuanchun Li, nghiêncứusinh Học viện phần mềm, Đại học Bắc Kinh DroidBot cung cấp sinhđầuvào theo hướng dẫn UI dựa mơ hình chuyển đổi trạng thái tạo chạy Sau sinhđầuvàokiểmthử theo hướng dẫn UI dựa mơ hình chuyển tiếp Thành phần DroidBot mô đun Adapter dùng để cung cấp tính trừu tượng thiết bị ứng dụng kiểmthử Mô đun Brain nhận thông tin thiết bị ứng dụng tạo từ Adapter thời gian chạy gửi đầuvàokiểmthửsinh đến Adapter Hình 3.3 Kiến trúc tổng quan DroidBot 3.2.3 Kiểmthử dựa mơ hình với DroidBot Bước 1: Mơ hình hóa Để thực việc mơ hình hóa, DroidBot lấy thông tin GUI từ ứng dụng kiểm thử: UI, DroidBot ghi lại ảnh chụp hình phân cấp UI Bước 2: Lựa chọn u cầu kiểmthử DroidBot tích hợp bốn thuật tốn thăm dò khác naive depth-first, naive breadth-first, greedy depth-first greedy breadth-first bên cạnh lựa chọn khám phá Monkey Bước 3: Sinhkiểmthử Các loại đầuvàokiểmthử DroidBot hỗ trợ bao gồm đầuvào UI, intent, tài liệu tải lên liệu cảm biến (tín hiệu GPS, v.v…) Bước 4: Cụ thể hóa kiểmthử DroidBot tìm nạp thơng tin thiết bị/ ứng dụng từ thiết bị gửi đầuvàokiểmthử tới thiết bị thông qua ADB Bước 5: Thực thi kiểmthử Các kiện sinh DroidBot thông qua ADB thực thi thiết bị kiểmthử Chương 4: Nghiên cứu thực nghiêm ̣ Trong chương này, tiến hành thực thực nghiệm nhỏ: kiểmthửsố ứng dụng Android với công cụ kiểmthửtựđộng giới thiệu chương Monkey DroidBot kiểmthửthủ cơng 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ểmthử Cài đặt Monkey DroidBot, chuẩn bị kiểmthửthủ công 4.1.2 Chuẩn bị thiế t bi kiể ̣ m thử Samsung Galaxy Note (N920I), hệ điều hành Android Nougat 7.0 4.2 Xây dựng ứng du ̣ng kiể m thử Bước 1: Tải mã nguồn ứng dụng Các ứng du ̣ng đươ ̣c lấ y mã nguồ n từ https://fdroid.org/ Bước 2: Sử dụng Jacoco, build lại apk để đo độ bao phủ mã nguồn 4.3 Tiế n hành kiểmthử Bước 1: Cài đặt ứng du ̣ng và lầ n lươ ̣t thực hiê ̣n kiể m tra tựđộng với Monkey và Droidbot, kiểm tra thủ công người dùng Bước 2: lấ y tâ ̣p tin ec và sinh báo cáo cho độ bao phủ mã nguồn Bước 3: Tổ ng hơ ̣p số liê ̣u phân tı́ch kế t 4.4 Kế t quả thực nghiêm ̣ 4.5 Phân tích – đánh giá 4.5.1 Tính hiệu việc phát lỗi Droibot Monkey hiệu việc tìm lỗi so với kiểmthửthủ cơng 4.5.2 Tính hiệu chiến lược khám phá Khi thực thi với số lượng kiện nhỏ khả bao phủ mã nguồn Monkey tốt so với DroidBot 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 yêu cầu đặc biệt ĐỘ BAO PH Ủ M Ã NG UỒ N INSTRUCTIONS 38% 29% 24% 55% 43% 39% Droidbot BRANCHES 4.5.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 Kết luận Sau trình nghiêncứu tìm hiểu đề tài “Nghiên cứusốphươngphápsinhđầuvàokiểmthửtựđộngcho 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ểmthửtựđộng dành cho phần mềm nói chung kiểmthửtựđộngcho ứng dụng Android nói riêng Từ nhìn tổng quan kiểmthửtự động, luận văn giúp đưa khái niệm chi tiết sinhđầuvàokiểmthửtựđộng với kỹ thuật phổ biến sử dụng để sinhđầuvàokiểmthửtự động: phươngphápkiểmthử Fuzz phươngphápkiểmthử dựa mơ hình Đưa ưu, nhược điểm phươngpháp để từ giúp người đọc có đánh giá, so sánh đưa lựa chọn phươngphá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ươngpháp áp dụng cho ứng dụng Android Để có nhìn cụ thể chi tiết hai phươngphápsinhđầuvàokiểmthử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ươngphá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ểmthử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ươngphápkiểmthử Tuy nhiên luận văn có hạn chế việc tiến hành thực nghiệm: số lượng cơng cụ kiểmthử 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êncứ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 - 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ểmthử phần mềm cho ứng dụng Android Samsung Tài liệu tham khảo [1] [2] [3] [4] [5] [6] [7] [8] [9] "Statista," [Online] Available: https://www.statista.com/statistics/266136/global-marketshare-held-by-smartphone-operating-systems/ "Android Developer," [Online] Available: https://developer.android.com/guide/platform/index.html "Android Developer," [Online] Available: https://developer.android.com/reference/android/app/Activity html "Android Developer," [Online] Available: https://developer.android.com/guide/components/services.htm l "Android Developer," [Online] Available: https://developer.android.com/guide/topics/manifest/receiverelement.html "Android Developer," [Online] Available: https://developer.android.com/guide/topics/providers/contentproviders.html Abel Méndez-Porras, Christian Quesada-López, and Marcelo Jenkins, "Automated Testing of Mobile Applications: A Systematic Map and Review," p Hitesh Tahbildar, Bichitra Kalita, "Automated software test data generation: Direction of research," in International Journal of Computer Science & Engineering Survey (IJCSES) Vol.2, 2011, pp 2-3 WANG Tao, LI Yanling,MA Yingli,GUO Wei, "Research and Application of a New Fuzz-test Framework," p [10] “VIBLO,” [Trực tuyế n] Available: https://viblo.asia/p/timhieu-ve-fuzz-testing-YWOZrDzv5Q0 [11] "Guru99," [Online] Available: https://www.guru99.com/fuzztesting.html [12] P Garg, "Fuzzing - mutation vs generation".INFOSEC Institute [13] "Tutorials point," [Online] Available: https://www.tutorialspoint.com/software_testing_dictionary/fu zz_testing.htm [14] “Khoa CNTT, Đại học Duy Tân,” [Trực tuyế n] Available: http://kcntt.duytan.edu.vn/Home/ArticleDetail/vn/128/2461/ba i-01-so-luoc-ve-fuzzing-testing [15] "OWASP," [Online] Available: https://www.owasp.org/index.php?title=File:CLASP_Vulnera bilities_SDLC_Phases.gif&setlang=en [16] "Guru99," [Online] Available: https://www.guru99.com/fuzztesting.html [17] R T M N Aravind MacHiry, "Dynodroid: An Input Generation System for Android Apps" [18] J R Raimondas Sasnauskas, "Intent Fuzzer: Crafting Intents of Death" [19] ANTOJOSEPH, "DROID-FF – THE ANDROID FUZZING FRAMEWORK" [20] "Guru99," [Online] Available: https://www.guru99.com/model-based-testing-tutorial.html [21] Zoltan Micskei, Istvan Majzik, "Model-based test generation," Software and Systems Verification (VIMIMA01), pp 13-17 [22] E Karaman, "Model Based Software Testing," SWE550 Boaziỗi University, pp 7-17 [23] P Ana, "Model – based testing," MDSE – Model Driven Software Engineering, pp 3-12 [24] Shauvik Roy Choudhary, Alessandra Gorla, Alessandro Orso, "Automated Test Input Generation for Android: Are We There Yet?" [25] "Android Developer," [Online] Available: https://developer.android.com/studio/test/monkey.html [26] Yuanchun Li, Ziyue Yang, Yao Guo, Xiangqun Chen, "DroidBot: A Lightweight UI-Guided Test Input Generator for Android" [27] [Online] Available: https://f-droid.org/ ... 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 để... 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. .. nhiên, với số lượng kiện, thời gian thực DroidBot lớn nhiều so với Monkey 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