Monkey เป็นโปรแกรมที่ทำงานบน โปรแกรมจำลองหรืออุปกรณ์และสร้างสุ่มเทียม สตรีมเหตุการณ์ของผู้ใช้ เช่น การคลิก การแตะ หรือท่าทางสัมผัส รวมถึงระดับระบบต่างๆ กิจกรรม คุณสามารถใช้ Monkey เพื่อทดสอบแอปพลิเคชันที่คุณกำลังพัฒนาแบบสุ่ม แต่ทำซ้ำได้
ภาพรวม
Monkey เป็นเครื่องมือบรรทัดคำสั่งที่คุณเรียกใช้ในโปรแกรมจำลองใดก็ได้ หรือในอุปกรณ์ ส่งสตรีมสุ่มเทียมของ เหตุการณ์ของผู้ใช้ในระบบ ซึ่งจะทำหน้าที่เป็นการทดสอบความเครียดกับซอฟต์แวร์แอปพลิเคชันที่คุณใช้ กำลังพัฒนา
Monkey มีตัวเลือกที่หลากหลาย แต่จะแบ่งออกเป็น 4 ตัวเลือกหลัก หมวดหมู่:
- ตัวเลือกการกำหนดค่าพื้นฐาน เช่น การตั้งค่าจำนวนเหตุการณ์ที่จะลอง
- ข้อจำกัดด้านการดำเนินการ เช่น การจำกัดการทดสอบให้อยู่ในแพ็กเกจเดียว
- ประเภทและความถี่กิจกรรม
- ตัวเลือกการแก้ไขข้อบกพร่อง
เมื่อ Monkey ทำงาน ก็จะสร้างเหตุการณ์และส่งไปยังระบบ และยังดู ระบบกำลังทดสอบและมองหาเงื่อนไข 3 ข้อที่พิจารณาเป็นพิเศษ ได้แก่
- หากคุณจำกัด Monkey ให้ทำงานในแพ็กเกจที่เฉพาะเจาะจงอย่างน้อย 1 แพ็กเกจ คอยดูความพยายามที่จะไปยังแพ็กเกจอื่นๆ และบล็อกแพ็กเกจเหล่านั้น
- หากแอปพลิเคชันของคุณขัดข้องหรือได้รับข้อยกเว้นใดๆ ที่ไม่มีการจัดการ Monkey จะหยุดและรายงานข้อผิดพลาด
- หากแอปพลิเคชันของคุณสร้างข้อผิดพลาดแอปพลิเคชันไม่ตอบสนอง ไอคอน Monkey จะหยุดและรายงานข้อผิดพลาด
นอกจากนี้คุณจะเห็นรายงานความคืบหน้าด้วย ทั้งนี้ขึ้นอยู่กับระดับการพูดรายละเอียดที่คุณเลือกไว้ ของลิงและเหตุการณ์ที่สร้างขึ้น
การใช้ Monkey ขั้นพื้นฐาน
คุณสามารถเปิดใช้งาน Monkey โดยใช้บรรทัดคำสั่งบนเครื่องในการพัฒนาซอฟต์แวร์หรือจากสคริปต์
เนื่องจาก Monkey ทำงานในสภาพแวดล้อมโปรแกรมจำลอง/อุปกรณ์ คุณจึงต้องเรียกใช้งานจาก Shell ใน
สภาพแวดล้อมดังกล่าว ซึ่งทำได้โดยเปิด adb shell
หน้าคำสั่งแต่ละรายการ
หรือด้วยการป้อน Shell และป้อนคำสั่ง Monkey โดยตรง
ไวยากรณ์พื้นฐาน ได้แก่
$ adb shell monkey [options] <event-count>
เมื่อไม่มีการระบุตัวเลือก Monkey จะเปิดขึ้นในโหมดเงียบ (ไม่มีรายละเอียด) และจะส่ง เหตุการณ์ใดๆ ก็ตามในแพ็กเกจ (และทั้งหมด) ที่ติดตั้งในเป้าหมายของคุณ ต่อไปนี้คือบรรทัดคำสั่งทั่วไป ซึ่งจะเรียกใช้แอปพลิเคชันของคุณและส่งเหตุการณ์แบบสุ่ม 500 รายการไปให้
$ adb shell monkey -p your.package.name -v 500
ข้อมูลอ้างอิงตัวเลือกคำสั่ง
ตารางด้านล่างแสดงรายการตัวเลือกทั้งหมดที่คุณสามารถรวมไว้ในบรรทัดคำสั่ง Monkey
หมวดหมู่ | ตัวเลือก | คำอธิบาย |
---|---|---|
ทั่วไป | --help |
พิมพ์คู่มือการใช้งานแบบง่าย |
-v |
-v แต่ละรายการในบรรทัดคำสั่งจะเพิ่มระดับการพูดรายละเอียด ระดับ 0 (ค่าเริ่มต้น) ให้ข้อมูลเพียงเล็กน้อยนอกเหนือจากการแจ้งเตือนให้เปิดเครื่อง การทดสอบเสร็จสมบูรณ์ และ ผลลัพธ์สุดท้าย ระดับ 1 จะให้รายละเอียดเพิ่มเติมเกี่ยวกับการทดสอบในขณะที่ดำเนินการ เช่น มีการส่งเหตุการณ์แต่ละรายการไปให้ กิจกรรมของคุณ ระดับ 2 จะให้ข้อมูลการตั้งค่าที่ละเอียดมากขึ้น เช่น กิจกรรมที่เลือกหรือไม่ได้เลือกไว้ การทดสอบ | |
กิจกรรม | -s <seed> |
ค่า Seed สำหรับเครื่องมือสร้างตัวเลขสุ่มเทียม หากคุณเรียกใช้ Monkey อีกครั้งด้วย Seed เดียวกัน ระบบจะสร้างเหตุการณ์ในลำดับเดียวกัน |
--throttle <milliseconds> |
แทรกการหน่วงเวลาคงที่ระหว่างเหตุการณ์ คุณสามารถใช้ตัวเลือกนี้เพื่อทำให้ Monkey ช้าลง หากไม่ระบุ จะไม่มีการหน่วงเวลาและระบบจะสร้างเหตุการณ์อย่างรวดเร็วที่สุดเท่าที่จะเป็นไปได้ | |
--pct-touch <percent> |
ปรับเปอร์เซ็นต์ของกิจกรรมการสัมผัส (เหตุการณ์การแตะเป็นเหตุการณ์แบบเลื่อนลงที่จุดเดียวบนหน้าจอ) | |
--pct-motion <percent> |
ปรับเปอร์เซ็นต์ของเหตุการณ์การเคลื่อนไหว (เหตุการณ์การเคลื่อนไหวประกอบด้วยเหตุการณ์ขัดข้องที่ใดที่หนึ่งบนหน้าจอ ซึ่งเป็นชุดการสุ่มเทียม การเคลื่อนไหว และเหตุการณ์ขาขึ้น) | |
--pct-trackball <percent> |
ปรับเปอร์เซ็นต์ของเหตุการณ์แทร็กบอล (เหตุการณ์แทร็กบอลประกอบด้วยการเคลื่อนไหวแบบสุ่มอย่างน้อย 1 ครั้ง ซึ่งบางครั้งตามด้วยการคลิก) | |
--pct-nav <percent> |
ปรับเปอร์เซ็นต์ของ "พื้นฐาน" เหตุการณ์การนำทาง (กิจกรรมการนำทางประกอบด้วย ขึ้น/ลง/ซ้าย/ขวา โดยเป็นการป้อนข้อมูลจากอุปกรณ์อินพุตตามทิศทาง) | |
--pct-majornav <percent> |
ปรับเปอร์เซ็นต์ของ "หลัก" เหตุการณ์การนำทาง (เหตุการณ์เหล่านี้คือเหตุการณ์การนำทางที่มักจะทำให้เกิดการทำงานต่างๆ ภายใน UI ของคุณ เช่น ปุ่มกลางในแป้นแบบ 5 ทิศทาง แป้นย้อนกลับ หรือแป้นเมนู) | |
--pct-syskeys <percent> |
ปรับเปอร์เซ็นต์ของ "ระบบ" เหตุการณ์สำคัญ (คีย์ที่โดยทั่วไปจะสงวนไว้สำหรับการใช้งานโดยระบบ เช่น Home, Back, Start Call, วางสาย หรือควบคุมระดับเสียง) | |
--pct-appswitch <percent> |
ปรับเปอร์เซ็นต์ของการเปิดแอป ในช่วงเวลาแบบสุ่ม Monkey จะออกการเรียก startActivity() เพื่อเพิ่มประโยชน์สูงสุด ครอบคลุมกิจกรรมทั้งหมดในแพ็กเกจของคุณ | |
--pct-anyevent <percent> |
ปรับเปอร์เซ็นต์ของเหตุการณ์ประเภทอื่นๆ รายการนี้จะเป็นแบบรับทั้งหมดสําหรับเหตุการณ์ประเภทอื่นๆ ทั้งหมด เช่น การกดแป้น กิจกรรมอื่นๆ ที่ใช้น้อย ปุ่มบนอุปกรณ์ และอื่นๆ | |
ข้อจำกัด | -p <allowed-package-name> |
หากคุณระบุแพ็กเกจอย่างน้อย 1 แพ็กเกจด้วยวิธีนี้ Monkey จะอนุญาตเฉพาะระบบเท่านั้น เข้าชมกิจกรรมภายในแพ็กเกจเหล่านั้น หากแอปพลิเคชันของคุณต้องมีสิทธิ์เข้าถึงกิจกรรมใน แพ็กเกจอื่นๆ (เช่น เพื่อเลือกรายชื่อติดต่อ) คุณจะต้องระบุแพ็กเกจเหล่านั้นด้วย หากคุณไม่ระบุแพ็กเกจใดๆ Monkey จะอนุญาตให้ระบบเรียกใช้กิจกรรม ในทุกแพ็กเกจ หากต้องการระบุหลายแพ็กเกจ ให้ใช้ตัวเลือก -p หลายครั้ง — 1 -p ตัวเลือกต่อแพ็กเกจ |
-c <main-category> |
หากคุณระบุหมวดหมู่อย่างน้อย 1 หมวดหมู่ด้วยวิธีนี้ Monkey จะอนุญาตเฉพาะหมวดหมู่ ระบบไปยังกิจกรรมที่มีหมวดหมู่ใดหมวดหมู่หนึ่งระบุไว้ หากคุณไม่ระบุหมวดหมู่ ลิงจะเลือกกิจกรรมที่ระบุไว้ในหมวดหมู่ Intent.CATEGORY_LAUNCHER หรือ Intent.CATEGORY_MONKEY หากต้องการระบุหลายหมวดหมู่ ให้ใช้เครื่องหมาย -c ตัวเลือกเดียวหลายครั้ง — หนึ่งตัวเลือก -c ต่อหมวดหมู่ | |
การแก้ไขข้อบกพร่อง | --dbg-no-events |
เมื่อระบุ Monkey จะทำการเปิดใช้งานครั้งแรกในกิจกรรมทดสอบ แต่ จะไม่สร้างเหตุการณ์เพิ่มเติมอีก เพื่อผลลัพธ์ที่ดีที่สุด ให้รวม -v, ข้อจำกัดแพ็กเกจอย่างน้อย 1 รายการ และการควบคุมที่ไม่ใช่ 0 เพื่อคง Monkey ไว้ ทำงานเป็นเวลา 30 วินาทีขึ้นไป ซึ่งจะเป็นสภาพแวดล้อมที่คุณตรวจสอบแพ็กเกจได้ การเปลี่ยนที่แอปพลิเคชันเรียกใช้ |
--hprof |
หากตั้งค่า ตัวเลือกนี้จะสร้างรายงานการทำโปรไฟล์ทันทีก่อนและหลังจาก Monkey ลำดับเหตุการณ์ การดำเนินการนี้จะสร้างไฟล์ขนาดใหญ่ (~5Mb) ในข้อมูล/กิจกรรมเบ็ดเตล็ด ดังนั้นโปรดใช้ด้วยความระมัดระวัง สำหรับ เกี่ยวกับการวิเคราะห์รายงานการสร้างโปรไฟล์ โปรดดูที่สร้างโปรไฟล์แอปของคุณ ประสิทธิภาพ | |
--ignore-crashes |
โดยปกติ Monkey จะหยุดทำงานเมื่อแอปพลิเคชันขัดข้องหรือพบปัญหา ข้อยกเว้นที่ไม่มีการจัดการ หากคุณระบุตัวเลือกนี้ Monkey จะยังคงส่งเหตุการณ์ไปยัง ระบบจนกว่าการนับจะเสร็จสิ้น | |
--ignore-timeouts |
โดยปกติ Monkey จะหยุดทำงานเมื่อแอปพลิเคชันพบข้อผิดพลาดการหมดเวลาแบบใดแบบหนึ่ง เช่น เป็น "แอปพลิเคชันไม่ตอบสนอง" กล่องโต้ตอบ หากคุณระบุตัวเลือกนี้ Monkey จะดำเนินการต่อไปนี้ ส่งเหตุการณ์ไปยังระบบจนกว่าการนับจะเสร็จสมบูรณ์ | |
--ignore-security-exceptions |
โดยปกติ Monkey จะหยุดทำงานเมื่อแอปพลิเคชันพบข้อผิดพลาดด้านสิทธิ์ประเภทใดก็ตาม เช่น เมื่อมีการพยายามเปิดกิจกรรมที่ต้องการสิทธิ์บางอย่าง หากระบุ ตัวเลือกนี้ Monkey จะส่งเหตุการณ์ไปยังระบบต่อไป จนกว่าการนับจะ เสร็จสมบูรณ์แล้ว | |
--kill-process-after-error |
โดยปกติ เมื่อ Monkey หยุดทำงานเนื่องจากเกิดข้อผิดพลาด แอปพลิเคชันที่ล้มเหลวจะถูกทิ้งไว้ วิ่งอยู่ เมื่อตั้งค่าตัวเลือกนี้ จะเป็นการส่งสัญญาณให้ระบบหยุดกระบวนการที่เกิดข้อผิดพลาด เกิดขึ้น โปรดทราบว่าภายใต้การดำเนินการให้เสร็จสมบูรณ์ตามปกติ (สำเร็จ) กระบวนการที่เปิดใช้งานจะไม่หยุดลง และ อุปกรณ์จะยังคงอยู่ในสถานะสุดท้ายหลังจากเหตุการณ์สุดท้าย | |
--monitor-native-crashes |
เฝ้าระวังและรายงานข้อขัดข้องที่เกิดขึ้นในโค้ดของระบบ Android หากมีการตั้งค่า --kill-process-after-error ระบบจะหยุด | |
--wait-dbg |
หยุด Monkey ไม่ให้ดำเนินการจนกว่าจะแนบโปรแกรมแก้ไขข้อบกพร่องเข้ามา |