ฉันต้องการทดสอบแอปพลิเคชันของฉันสำหรับกรณีการเชื่อมต่อเครือข่ายเหลือน้อย วิธีที่ดีที่สุดในการทำเช่นนี้นอกจากยืนอยู่ในลิฟต์คืออะไร? ฉันลองห่อโทรศัพท์ด้วยอลูมิเนียมฟอยล์ แต่มันก็ไม่ได้ช่วยอะไรมาก
ฉันต้องการทดสอบบนอุปกรณ์จริงไม่ใช่ในอีมูเลเตอร์
ฉันต้องการทดสอบแอปพลิเคชันของฉันสำหรับกรณีการเชื่อมต่อเครือข่ายเหลือน้อย วิธีที่ดีที่สุดในการทำเช่นนี้นอกจากยืนอยู่ในลิฟต์คืออะไร? ฉันลองห่อโทรศัพท์ด้วยอลูมิเนียมฟอยล์ แต่มันก็ไม่ได้ช่วยอะไรมาก
ฉันต้องการทดสอบบนอุปกรณ์จริงไม่ใช่ในอีมูเลเตอร์
คำตอบ:
คุณสามารถใช้โปรแกรมจำลองการทำงานนี้ ลองดูที่หน้าเว็บนี้: Android Emulator ให้ความสนใจกับข้อโต้แย้งสองข้อถัดไป:
-netdelay <delay>
ตั้งค่าการจำลองเวลาแฝงของเครือข่ายเป็น ค่าเริ่มต้นคือไม่มี ดูตารางใน Network Emulation Delay Emulation สำหรับค่าที่รองรับ
-netspeed <speed>
ตั้งค่าการจำลองความเร็วเครือข่ายเป็น ค่าเริ่มต้นเต็มแล้ว ดูตารางในการจำลองความเร็วเครือข่ายสำหรับค่าที่รองรับ
ความเร็วสำหรับการอ้างอิงในการเพิ่ม kbps:
UP DOWN
-------- ----------
gsm GSM/CSD 14.4 14.4
hscsd HSCSD 14.4 57.6
gprs GPRS 28.8 57.6
umts UMTS/3G 384.0 384.0
edge EDGE/EGPRS 473.6 473.6
hsdpa HSDPA 5760.0 13,980.0
lte LTE 58,000.0 173,000.0
evdo EVDO 75,000.0 280,000.0
full No limit ∞ ∞
tc
คำสั่ง (จาก busybox)
นี่อาจฟังดูบ้าไปหน่อย แต่เตาไมโครเวฟทำหน้าที่เป็นเกราะป้องกันไมโครเวฟ ดังนั้นการวางอุปกรณ์ของคุณไว้ในเตาไมโครเวฟ (อย่าเปิดเตาอบไมโครเวฟในขณะที่อุปกรณ์ของคุณอยู่ด้านใน!) จะทำให้ความแรงของสัญญาณลดลงอย่างมีนัยสำคัญ แน่นอนว่ามันจะเต้นอยู่ในลิฟต์ ...
เนื่องจากตัวเลือกผู้พัฒนาiPhonesใช้กับการปล่อยสัญญาณ wifi คุณจะได้รับ iPhone ที่มีiOS 6
และสูงกว่า (และได้รับการตั้งค่าuse for developments
ด้วยxcode
) ตั้งค่าให้เลียนแบบโปรไฟล์เครือข่ายที่ต้องการเชื่อมต่ออุปกรณ์Androidของคุณไปยังฮอตสปอต
อัปเดตสำหรับ Android Studio v 1.5 ขึ้นไป
ตามที่ @LouMorda พูดถึงในความคิดเห็นด้านล่างว่าEmulator
แท็บที่กล่าวถึงในโพสต์ต้นฉบับถูกลบออกใน Android Studio v 1.5
AVD Manager
ตอนนี้พวกเขาได้วางตั้งค่าเหล่านี้ในการตั้งค่าใน Simulator
วิธีเข้าถึงการตั้งค่าเหล่านี้:
Tools -> Android -> AVD Manager
Edit AVD
ปุ่ม (ไอคอนดินสอ)Network Settings
สามารถเข้าถึงได้หลังจากคลิกที่Show Advanced Settings
ปุ่ม นี่คือภาพหน้าจอที่แสดงให้เห็น:
โพสต์ต้นฉบับ
สำหรับทุกคนที่ใช้ Android Studio IDE:
Run -> Edit Configurations
Android Application -> [Your App]
Emulator
แท็บNetwork Speed
และNetwork Latency
เพื่อจำลองความเร็วและเวลาแฝงต่าง ๆ เป็นต้น หรือคุณสามารถป้อนอาร์กิวเมนต์ต่าง ๆ ในAdditional command line options
ฟิลด์ข้อความตามที่ระบุไว้ในคำตอบของ @ inazaruk
ภาพหน้าจอด้านล่างอธิบายRun Configuration
ลักษณะหน้าจอนี้:
ฉันรู้ว่ามันสายไปหน่อยที่จะตอบคำถามนี้ แต่ฉันหวังว่าสิ่งนี้จะช่วยให้ผู้อื่นประสบปัญหาที่คล้ายกัน!
แก้ไข
สำหรับทุกคนที่ใช้ eclipse โปรดดูคำตอบของ @ Abhiด้านล่าง
ฉันรู้ว่ามันเป็นคำถามเก่า แต่ ...
โทรศัพท์บางรุ่นในปัจจุบันมีการตั้งค่าให้ใช้ 2G เท่านั้น มันสมบูรณ์แบบสำหรับการจำลองอินเทอร์เน็ตช้าบนอุปกรณ์จริง
อายุ แต่เฮ้ฉันจะพูดสอดกับวิธีที่เข้าใจผิดของฉันกับ Genymotion
ดาวน์โหลดชุดทดลองใช้ฟรีของ Charles: http://www.charlesproxy.com/download/
ติดตั้ง
คลิกProxy -> Throttle Settings
ตั้งค่าความเร็วควบคุม HTTP ของคุณ
ปิดหน้าต่างนั้น
คลิกProxy -> Throttling
เพื่อเปิดใช้งานเค้น
เปิดเครื่องจำลองแบบ Genymotion
เปิดการตั้งค่า wifi
ลองกดการเชื่อมต่อ wifi ที่เปิดใช้งาน
คลิก Modify Network
คลิก Show Advanced Options
ตั้งค่าProxy
เป็นManual
ตั้งค่าProxy hostname
การ10.0.3.2
ตั้งค่าPort
การ8888
คลิก Save
และตอนนี้เครือข่ายของคุณจะถูกควบคุม!
คุณยังสามารถทดสอบการเชื่อมต่ออินเทอร์เน็ตที่ช้าบนอุปกรณ์ Android จริง:
ทดสอบกับ Samsung Galaxy S8 + Android 8.0.0
ไปที่การตั้งค่า -> การเชื่อมต่อ -> เครือข่ายมือถือ -> และภายใต้โหมดเครือข่ายคุณสามารถเลือกที่จะใช้การเชื่อมต่อ2Gหรือ3G เท่านั้น
ฉันมีกลยุทธ์หนึ่งที่จะแก้ไขปัญหาของคุณ คุณสามารถใช้แอปพลิเคชันของพร็อกซีเพื่อแก้ไขหรือตรวจสอบสถานะสุทธิของคุณ เช่นชาร์ลส์
คุณควรเปลี่ยนการตั้งค่าเริ่มต้นของ Charles เช่นภาพที่ฉันโพสต์ต่อไปนี้
และในที่สุดคุณจะค้นพบสถานะสุทธิได้รับการกำหนดเป็นก้าวที่ต่ำกว่า
วิธีทดสอบแอปพลิเคชันของคุณด้วยการเชื่อมต่อต่ำ / ไม่ดีในโปรแกรมจำลอง:
ไปเรียกใช้ > เรียกใช้การกำหนดค่าเลือกแอปพลิเคชัน Androidของคุณแล้วไปที่แท็บเป้าหมาย ดูพารามิเตอร์การเปิดตัว Emulator ที่นี่คุณสามารถปรับเปลี่ยนความเร็วเครือข่ายและความหน่วงเครือข่ายได้อย่างง่ายดาย
มีวิธีง่ายๆในการทดสอบความเร็วต่ำบนอุปกรณ์จริงที่ดูเหมือนจะถูกมองข้าม มันต้องใช้การเชื่อมต่อเครือข่าย Mac และอีเธอร์เน็ต (หรือสายอื่น ๆ )
เปิดการแชร์ Wifi บน Mac เปลี่ยนคอมพิวเตอร์ของคุณให้เป็นฮอตสปอตไร้สายเชื่อมต่ออุปกรณ์ของคุณเข้ากับสิ่งนี้ ใช้ Netlimiter / Charles Proxy หรือ Network Link Conditioner (ซึ่งคุณอาจติดตั้งไว้แล้ว) เพื่อควบคุมความเร็ว
สำหรับรายละเอียดเพิ่มเติมและเพื่อทำความเข้าใจว่าคุณควรทดสอบความเร็วเท่าไร: http://opensignal.com/blog/2016/02/05/go-slow-how-why-to-test-apps-on-poor -connections /
ใน Android Studio ในขณะที่รันโปรแกรมจำลอง:
1- ปุ่มการตั้งค่า Hit ที่ด้านล่างของแถบด้านข้างเครื่องจำลอง
2- ไปที่มือถือ
3- ตั้งค่าประเภทเครือข่าย
Facebook สร้างสิ่งที่เรียกว่าการควบคุมการจราจร Augmented สรุปสั้น ๆ จากหน้า GitHub ของพวกเขา:
Augmented Traffic Control (ATC) เป็นเครื่องมือในการจำลองสภาพเครือข่าย อนุญาตให้ควบคุมการเชื่อมต่อที่อุปกรณ์เชื่อมต่อกับอินเทอร์เน็ต นักพัฒนาสามารถใช้ ATC เพื่อทดสอบแอปพลิเคชันของพวกเขาในสภาพเครือข่ายที่แตกต่างกันเลียนแบบความเร็วสูงมือถือและเครือข่ายที่มีความบกพร่องอย่างรุนแรง ลักษณะของการเชื่อมต่อที่สามารถควบคุมได้ ได้แก่ :
- แบนด์วิดธ์
- ความแอบแฝง
- การสูญเสียต
- แพ็คเก็ตที่เสียหาย
- การสั่งซื้อแพ็คเก็ต
เพื่อให้สามารถกำหนดปริมาณการรับส่งข้อมูลเครือข่าย ATC ต้องทำงานบนอุปกรณ์ที่กำหนดเส้นทางการรับส่งข้อมูลและดูที่อยู่ IP ที่แท้จริงของอุปกรณ์เช่นเกตเวย์เครือข่ายของคุณเป็นต้น นอกจากนี้ยังช่วยให้อุปกรณ์ใด ๆ ที่ผ่าน ATC สามารถกำหนดปริมาณการใช้งาน ทราฟฟิกสามารถกำหนดรูปแบบ / ไม่ใช้รูปแบบได้โดยใช้เว็บอินเตอร์เฟสช่วยให้อุปกรณ์ใด ๆ ที่มีเว็บเบราว์เซอร์สามารถใช้ ATC โดยไม่จำเป็นต้องมีแอปพลิเคชันไคลเอนต์
คุณสามารถค้นหาได้ที่นี่ใน GitHub: https://github.com/facebook/augmented-traffic-control
พวกเขายังเขียนโพสต์บล็อกเกี่ยวกับมัน: https://code.facebook.com/posts/1561127100804165/augmented-traffic-control-a-tool-to-simulate-network-conditions/
ฉันประหลาดใจที่ไม่มีใครพูดถึงเรื่องนี้ คุณสามารถโยงผ่านบลูทู ธ และแยกออกเป็นสิบเมตร (หรือน้อยกว่าพร้อมอุปสรรค) คุณมีการเชื่อมต่อที่ไม่ดีจริง ไม่มีไมโครเวฟไม่มีลิฟท์ไม่จำเป็นต้องใช้ซอฟต์แวร์
หรือบนอุปกรณ์จริงคุณสามารถไปที่การตั้งค่า -> เครือข่ายมือถือ -> ประเภทเครือข่ายที่ต้องการและเลือกช้าที่สุดที่มีอยู่ ... แน่นอนว่ามันมีข้อ จำกัด มาก แต่สำหรับการทดสอบบางอย่างมันอาจจะเพียงพอ
อัปเดตบนสตูดิโอ Android AVD:
ไม่มีไมโครเวฟหรือลิฟต์ขึ้น :)
สำหรับและผู้ใช้ mac OS คุณสามารถใช้ Network Link Conditioner ซึ่งสามารถดาวน์โหลดได้จาก apple ตั้งเป็น AP บน mac และ divices สามารถเชื่อมต่อได้
คุณสามารถใช้เครื่องมือโอเพนซอร์ส Facebook ATC http://facebook.github.io/augmented-traffic-control/
คุณต้องการทดสอบว่าไม่มีการเชื่อมต่อเครือข่ายหรือเพียงแค่การเชื่อมต่อเครือข่ายที่ช้าหรือไม่ หากก่อนหน้านี้คุณสามารถไปที่Settings > Wireless & networks > Airplane mode
และเปิดโหมดเครื่องบิน ที่จะช่วยให้คุณทดสอบความพร้อมใช้งานของเครือข่ายบนอุปกรณ์จริง
ไปเรียกใช้> เรียกใช้การกำหนดค่าเลือกแอปพลิเคชัน Android ของคุณแล้วไปที่แท็บเป้าหมาย ทำการเปลี่ยนแปลงตามที่แสดงในรูป
ฉันดิ้นรนกับปัญหานี้มาครึ่งวันแล้วในที่สุดฉันก็มาหาวิธีแก้ปัญหานี้:
การทดสอบบนอุปกรณ์จริงนั้นไม่มีความหมายโดยรวมเนื่องจากคุณต้องผ่านหลาย ๆ อย่างเพื่อให้มันใช้งานได้ วิธีเดียวที่จะทำให้ได้การทดสอบจริงคือการทำให้โทรศัพท์ของคุณเชื่อมต่อกับเครือข่ายเซลลูลาร์คุณภาพต่ำเช่น EDGE หาก บริษัท โทรศัพท์ของคุณเป็นผู้จัดหา คุณสามารถลองทำสิ่งนี้ได้โดยกดหมายเลข*#*#4636#*#*
ในแอพโทรศัพท์
Android emulator ดั้งเดิมนั้นช้าเกินไปสำหรับการทดสอบและไม่ประสบความสำเร็จมากกว่าวิธีแก้ปัญหาข้างต้น
วิธีที่ดีที่สุดที่จะทำเช่นนี้คือการใช้Genymotion มันเป็นอีมูเลเตอร์ Android ที่มีประสิทธิภาพที่ดีกว่า AVD ดั้งเดิมและรุ่นสำหรับใช้ส่วนตัวฟรี
หลังจากที่คุณสร้างอุปกรณ์เสมือนใน Genymotion ให้ทำตามบทช่วยสอนนี้เพื่อตั้งค่าพร็อกซีสำหรับอุปกรณ์
เรียกใช้พร็อกซีเซิร์ฟเวอร์บนเครื่องโฮสต์ของคุณที่จำลองสภาพเครือข่ายที่ไม่ดีเช่นCrapifyหรือToxiproxy (ฉันทดสอบเฉพาะในอดีต) และคุณก็พร้อมที่จะไป
ปรับปรุง:
ฉันเพิ่งรู้ว่าคุณสามารถเลือกกลยุทธ์เดียวกันกับอุปกรณ์จริงด้วย ฉันรู้สึกเหมือนคนงี่เง่าที่ไม่ได้รู้ตัวเร็วกว่านี้ เพียงเริ่มพร็อกซี Crapify บนคอมพิวเตอร์ของคุณตั้งค่าพร็อกซีโทรศัพท์ของคุณไปยังที่อยู่ในเครื่องคอมพิวเตอร์ของคุณและข้อความเสียงคุณจะได้รับอินเทอร์เน็ตเร็ว ๆ นี้บนโทรศัพท์ของคุณ
ตามที่แนะนำโดย @VicVu Charles (หรือเครื่องมือพร็อกซีอื่น ๆ ) เป็นวิธีที่ง่ายกว่าในการไป แต่ฉันต้องการเพิ่มว่าคุณสามารถทำได้ด้วยอุปกรณ์ของคุณด้วยไม่ใช่แค่จีโนมหรืออีมูเลเตอร์อื่น ๆ กระบวนการจะเหมือนกัน:
แก้ไขการตั้งค่า wifi ของอุปกรณ์ / ตัวจำลองเพื่อใช้พรอกซีด้วยตนเอง จากนั้นตั้งค่าชื่อโฮสต์และพอร์ต a ตั้งชื่อโฮสต์เป็น ip ของระบบของคุณ (รับ ip ของ pc / mac โดยใช้ ifconfig / ifconfig) b ตั้งค่าหมายเลขพอร์ตของ genymotion (ตรวจสอบการตั้งค่าพร็อกซีใน charles)
PS:อุปกรณ์ / อีมูเลเตอร์ของคุณต้องใช้ wifi เดียวกันเนื่องจาก IP ที่คุณใช้จะเป็นไอพีส่วนตัวมากที่สุด
เปิดเทอร์มินัลในแอนดรอยด์สตูดิโอแล้วไปที่ ../../Android/sdk/tools ปฏิบัติการ 'emulator' ควรอยู่ที่นี่
เรียกใช้. /emulator -netdelay "delay_in_millis" -avd "emulator_device_name"
ตัวอย่าง: ./emulator -netdelay 60000 -avd Nexus_5_API_21
ตอนนี้สร้างแอพของคุณและติดตั้งในอีมูเลเตอร์
ตรวจสอบให้แน่ใจว่าคุณมีการเปลี่ยนแปลงรหัสในแอปที่ตั้งค่าการหมดเวลาตามคำขอของคุณและจัดการกับสิ่งนั้น
เพียงไปที่การตรวจสอบอุปกรณ์ Android จากสตูดิโอ Android จากนั้น DDMS -> Emulator Control จะมีคุณสมบัติความเร็วและความหน่วงแฝง
ฉันพบว่า netlimiter4 เป็นทางออกที่ดีที่สุดสำหรับการควบคุมปริมาณข้อมูลไปยังอีมูเลเตอร์ มันให้การควบคุมอย่างละเอียดผ่าน gui ที่เหมาะสมและให้ข้อเสนอแนะกราฟิกกับทรูพุตข้อมูลในแต่ละกระบวนการ ขณะนี้อยู่ในรุ่นเบต้าฟรี ภาพหน้าจอ
http://www.netlimiter.com/products/nl4
มีแอพที่มีอยู่ใน play store เพื่อเร่งความเร็วไปยังอุปกรณ์จริง แต่พวกเขาต้องการรูท
ค้นหา bradybound บน play store ฉันไม่สามารถโพสต์มากกว่าหนึ่งลิงก์ ..
คุณเคยลองสิ่งนี้หรือไม่? การตั้งค่า - เครือข่าย - อื่น ๆ - เครือข่ายมือถือ - โหมดเครือข่าย - เลือกเครือข่ายที่ต้องการ (เช่น 2G)
อีกวิธีที่ฉันใช้ถูกกล่าวถึงข้างต้น เชื่อมต่อผ่านฮอตสปอตของ iPhone หวังว่านี่จะช่วยได้
ฉันใช้พร็อกซีmitmproxy HTTPS https://mitmproxy.org/
Mitmproxy เป็นแอปพลิเคชันพร็อกซี่โอเพนซอร์สที่อนุญาตให้มีการสกัดกั้นการเชื่อมต่อ HTTP และ HTTPS ระหว่างไคลเอนต์ HTTP (S) ใด ๆ จะช่วยให้การตรวจสอบการจับภาพและแก้ไขการเชื่อมต่อเหล่านี้ในเวลาจริง เปลี่ยนคำขอตอบกลับส่วนหัว ... นอกจากนี้คุณสามารถดักจับคำขอที่แตกต่างกันได้
เช่นresponse_delay.py :
from mitmproxy import http
from time import sleep
def response(flow: http.HTTPFlow) -> None:
sleep(5.0)
จากนั้นการดำเนินการความคิดเห็นนี้จะชะลอการตอบสนองทั้งหมดจากเซิร์ฟเวอร์:
mitmproxy --cert \*.asdf.at=./cert.pem --scripts response_delay.py
ในแอพของฉันฉันกำลังใช้การปักหมุดใบรับรองดังนั้นคุณต้องเพิ่มใบรับรอง (ส่วนตัว + สาธารณะ)
cat private.key public.key> cert.pem
โพสต์เก่ามาก แต่ฉันจะเพิ่มสองเซ็นต์ของฉัน ฉันมีความสุขมากกับผลิตภัณฑ์ฮาร์ดแวร์นี้ ( https://apposite-tech.com/products/linktropy-mini/ ) ซึ่งช่วยให้เราสามารถจำลองสถานการณ์ต่างๆในโลกแห่งความจริงได้มากมาย เป็นเวลานานเรามีความท้าทายในการแก้ไขปัญหาต่าง ๆ ที่จะทำงานในโปรแกรมจำลองหรือโหมดเครื่องบิน
เรามีการตั้งค่าโปรไฟล์ที่แตกต่างกันตั้งแต่การเชื่อมต่อแบบศูนย์ไปจนถึงขั้นตอนต่าง ๆ ของการเชื่อมต่อแบบไร้ขอบโดยมีระดับความหน่วงแฝงที่แตกต่างกันการสูญเสียแพ็กเก็ตและข้อผิดพลาดบิต สิ่งที่ยอดเยี่ยมเกี่ยวกับมันคือเราสามารถเปลี่ยนสิ่งเหล่านี้ได้ทันทีโดยไม่ต้องเปิดใช้งานแอปใหม่ในอีมูเลเตอร์ ราคานี้คุ้มค่ากับร้านค้าของเราทั้งหมดและใช้งานง่ายมาก
ฉันจำเป็นต้องเร่งความเร็วอินเทอร์เน็ตต่ำบนอุปกรณ์เนทีฟ AndroidTV และตามสิ่งที่ฉันได้อ่านวิธีที่เหมาะสมที่สุดคือ จำกัด การเข้าถึงอินเทอร์เน็ตโดยตรงในเราเตอร์ของฉัน
ไปที่การตั้งค่าเราเตอร์ (ในเครื่องมีความเหมือน 192.168.0.1) -> ตั้งค่าเซิร์ฟเวอร์ DHCP (หากไม่ได้ทำงาน) -> เลือกที่อยู่ IP ของอุปกรณ์และตั้งข้อ จำกัด