Monkey ตัวดำเนินการของ UI/แอปพลิเคชัน

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 ไม่ให้ดำเนินการจนกว่าจะแนบโปรแกรมแก้ไขข้อบกพร่องเข้ามา