ฉันต้องใช้เครื่องมือทดสอบ UI อัตโนมัติและฉันสับสนระหว่างการใช้ Robotium กับ Google Espresso
อะไรคือความแตกต่างที่สำคัญระหว่างทั้งสอง? มีคุณสมบัติที่มีอยู่ในตัวเดียว แต่ไม่มีคุณสมบัติอื่น ๆ หรือไม่?
ฉันต้องใช้เครื่องมือทดสอบ UI อัตโนมัติและฉันสับสนระหว่างการใช้ Robotium กับ Google Espresso
อะไรคือความแตกต่างที่สำคัญระหว่างทั้งสอง? มีคุณสมบัติที่มีอยู่ในตัวเดียว แต่ไม่มีคุณสมบัติอื่น ๆ หรือไม่?
คำตอบ:
การเปิดเผยข้อมูลทั้งหมด: ฉันเป็นหนึ่งในผู้เขียนของ Espresso
ทั้งเอสเพรสโซ่และ Robotium กรอบวัดตามความหมายที่พวกเขาใช้Android Instrumentationในการตรวจสอบและมีปฏิสัมพันธ์กับกิจกรรมภายใต้การทดสอบ
ที่ Google เราเริ่มต้นด้วยการใช้ Robotium เพราะสะดวกกว่าเครื่องมือวัดสต็อก (สำหรับผู้พัฒนา Robotium ในการทำเช่นนั้น) อย่างไรก็ตามมันไม่ได้ตอบสนองความต้องการของเราสำหรับกรอบการทำงานที่ทำให้การเขียนแบบทดสอบที่เชื่อถือได้เป็นเรื่องง่ายสำหรับนักพัฒนา
ความก้าวหน้าที่สำคัญใน Espresso เหนือ Robotium:
การประสานข้อมูล ตามค่าเริ่มต้นตรรกะการทดสอบเครื่องมือวัดจะรันบนเธรด (เครื่องมือวัด) ที่แตกต่างจากการดำเนินการของ UI (ประมวลผลบนเธรด UI) หากไม่มีการซิงโครไนซ์การดำเนินการทดสอบกับการอัปเดต UI การทดสอบจะมีแนวโน้มที่จะเกิดรอยแตก - นั่นคือจะล้มเหลวแบบสุ่มเนื่องจากปัญหาเรื่องเวลา ผู้เขียนทดสอบส่วนใหญ่ไม่สนใจข้อเท็จจริงนี้บางคนเพิ่มกลไกการพัก / ลองใหม่และแม้แต่ใช้รหัสความปลอดภัยเธรดที่ซับซ้อนน้อยกว่า สิ่งเหล่านี้ไม่เหมาะ เอสเปรสโซดูแลความปลอดภัยของด้ายด้วยการซิงโครไนซ์การทดสอบและการยืนยันกับ UI ของแอปพลิเคชันที่อยู่ระหว่างการทดสอบ Robotium พยายามแก้ไขปัญหานี้ด้วยกลไกการนอนหลับ / การลองใหม่ซึ่งไม่เพียง แต่ไม่น่าเชื่อถือ แต่ยังทำให้การทดสอบทำงานช้ากว่าที่จำเป็น
API Espresso มี API ขนาดเล็กที่กำหนดไว้อย่างดีและคาดเดาได้ซึ่งเปิดให้ปรับแต่งได้ คุณบอกกรอบวิธีค้นหาองค์ประกอบ UI โดยใช้ตัวจับคู่แฮมเครสต์มาตรฐานจากนั้นสั่งให้ดำเนินการหรือตรวจสอบการยืนยันองค์ประกอบเป้าหมาย คุณสามารถเปรียบเทียบสิ่งนี้กับ API ของ Robotium ซึ่งคาดว่าผู้เขียนทดสอบจะเลือกวิธีการคลิกมากกว่า 30 วิธี นอกจากนี้ Robotium ยังเปิดเผยวิธีการที่เป็นอันตรายเช่น getCurrentActivity (ปัจจุบันหมายความว่าอย่างไร) และ getView ซึ่งช่วยให้คุณสามารถดำเนินการกับวัตถุนอกเธรดหลัก (ดูประเด็นด้านบน)
ล้างข้อมูลความล้มเหลว เอสเปรสโซมุ่งมั่นที่จะให้ข้อมูลการแก้ไขข้อบกพร่องที่ครบถ้วนเมื่อเกิดความล้มเหลว นอกจากนี้คุณสามารถปรับแต่งวิธีจัดการความล้มเหลวโดย Espresso ด้วยตัวจัดการความล้มเหลวของคุณเอง ฉันไม่ได้ลองใช้มาระยะหนึ่งแล้ว แต่ Robotium เวอร์ชันก่อนหน้าต้องทนทุกข์ทรมานจากการจัดการความล้มเหลวที่ไม่สอดคล้องกัน (เช่นเมธอด clickOnView จะกลืน SecurityExceptions)
ตรงกันข้ามกับคำตอบก่อนหน้านี้ Espresso ได้รับการสนับสนุนในเวอร์ชัน API ทั้งหมดที่มีผู้ใช้จำนวนมาก (ดู: http://developer.android.com/about/dashboards/index.html ) ใช้งานได้กับเวอร์ชันเก่าบางเวอร์ชัน แต่การทดสอบเวอร์ชันเหล่านั้นจะเป็นการสิ้นเปลืองทรัพยากร การพูดเกี่ยวกับการทดสอบ ... Espresso ได้รับการทดสอบในทุกการเปลี่ยนแปลงโดยชุดทดสอบที่ครอบคลุม (ครอบคลุมมากกว่า 95%) รวมถึงแอปพลิเคชัน Android ส่วนใหญ่ที่พัฒนาโดย Google
Espresso เร็วกว่า Robotium มาก แต่ใช้ได้กับ SDK บางเวอร์ชันเท่านั้น
ดังนั้นหากคุณต้องการการทดสอบที่ใช้ได้กับทุกอุปกรณ์ให้ไปที่ Roboitum ถ้าไม่ให้ไปหาเอสเปรสโซและอย่าลืมว่าคุณจะเป็นผู้ทดสอบเบต้าในบางครั้ง