Robotium กวดวิชา: Android กรอบการทดสอบพร้อมตัวอย่าง

⚡ สรุปอย่างชาญฉลาด

Robotium เป็นโอเพ่นซอร์ส Android เฟรมเวิร์กสำหรับการทดสอบอัตโนมัติที่ขับเคลื่อนแอปพลิเคชันแบบเนทีฟและไฮบริดผ่านทางส่วนติดต่อผู้ใช้ ช่วยให้ผู้ทดสอบสามารถเขียนสคริปต์สถานการณ์การทดสอบด้านฟังก์ชัน ระบบ และการยอมรับ ซึ่งครอบคลุมหลายด้าน Android กิจกรรม.

  • 🔘 วิชาหลัก: Solo เปิดเผยวิธีการคลิก ค้นหา ลาก และยืนยันข้อมูล ซึ่งเป็นสิ่งที่ทุกคนใช้กัน Robotium การเรียกใช้กรณีทดสอบ
  • ☑️ เป็นมิตรกับระบบกล่องดำ: การทดสอบจะเชื่อมโยงกับส่วนประกอบ UI ในระหว่างการทำงาน ดังนั้นจึงไม่จำเป็นต้องมีความรู้เกี่ยวกับซอร์สโค้ดของแอปพลิเคชันมากนัก
  • ขั้นตอนการดำเนินการสี่ขั้นตอน: ออกแบบข้อกำหนดการทดสอบ เขียนโปรแกรมทดสอบ รันโปรแกรมบนอุปกรณ์ จากนั้นรวบรวมผลลัพธ์
  • 🧪 ตัวอย่างการทำงาน: สวัสดีอย่างสมบูรณ์Androidคลาสทดสอบจะตรวจสอบข้อความที่มองเห็นได้ กิจกรรมปัจจุบัน และปุ่มเริ่ม
  • 🛠️ มีโหมดการทำงานสองโหมด: เริ่มการทดสอบจาก IDE หรือจากเทอร์มินัลโดยใช้คำสั่ง adb shell am instrument
  • ⚙️ สถานะปัจจุบัน: Robotium 5.6.3 ยังคงเป็นเวอร์ชันล่าสุด ดังนั้นจึงไม่มีเวอร์ชันใหม่ Android โดยปกติแล้วโปรเจกต์ต่างๆ มักจะใช้ควบคู่หรือแทนที่ด้วย Espresso.

Robotium การกวดวิชา

ความหมายของ Robotium?

Robotium เป็น Android เฟรมเวิร์กสำหรับการทดสอบที่ทำการทดสอบอัตโนมัติสำหรับแอปพลิเคชันแบบเนทีฟและไฮบริด โดยใช้ Robotiumนักพัฒนาสามารถสร้างกรณีทดสอบ GUI อัตโนมัติที่มีประสิทธิภาพได้ Android แอปพลิเคชันต่างๆ นักพัฒนาสามารถเขียนสถานการณ์ทดสอบการทำงาน ระบบ และการยอมรับ ซึ่งครอบคลุมหลายด้านได้เช่นกัน Android กิจกรรม.

Robotium กรอบการทดสอบ

มาตรฐาน Android กรอบการทดสอบมีข้อจำกัดดังที่ระบุไว้ด้านล่าง

  • ไม่สามารถจัดการหลายกิจกรรมได้
  • ประสิทธิภาพการดำเนินการทดสอบช้า
  • กรณีทดสอบมีความซับซ้อนและยากต่อการนำไปใช้

การขอ Robotium เฟรมเวิร์กเป็นตัวเลือกที่ดีกว่าสำหรับการทำการทดสอบบน Android แอพลิเคชัน

Robotium เป็นเฟรมเวิร์กโอเพนซอร์สและถือเป็นส่วนขยายของ Android เฟรมเวิร์กการทดสอบ โดยใช้ Robotiumนักพัฒนาสามารถสร้างกรณีทดสอบ GUI อัตโนมัติที่มีประสิทธิภาพได้ Android แอปพลิเคชันต่างๆ นอกจากนี้ นักพัฒนาสามารถเขียนสถานการณ์ทดสอบการทำงาน ระบบ และการยอมรับที่ครอบคลุมหลายด้านได้ Android กิจกรรม.

ตารางด้านล่างนี้สรุปคุณสมบัติขั้นสูงที่แตกต่างออกไป Robotium จากกรอบการทำงานของเครื่องมือวัดแบบพื้นฐาน

คุณสมบัติขั้นสูงของ Robotium เมื่อเทียบกับมาตรฐาน Android กรอบเครื่องมือวัด

คุณสมบัติขั้นสูงของ Robotium

Robotium คลาสกรณีทดสอบ

Robotium บทความนี้ได้นำเข้าคลาสจำนวนเล็กน้อยสำหรับการทดสอบ และตัวอย่างในบทความนี้ได้นำเข้าคลาสรุ่นเก่า com.jayway.android.robotium.solo แพ็คเกจ คลาสเหล่านี้รองรับกรณีทดสอบที่ครอบคลุมกิจกรรมหลายอย่าง และ Solo ถูกรวมเข้ากับ ActivityInstrumentationTestCase2.

หมายเหตุ ปัจจุบัน Robotium การเผยแพร่เผยให้เห็นคลาสเดียวกันภายใต้รูปแบบที่สั้นกว่า com.robotium.solo แพ็คเกจ ในขณะที่พิกัด Maven ยังคงอยู่ com.jayway.android.robotium:robotium-soloปรับการนำเข้าให้ตรงกับเวอร์ชัน JAR ที่คุณเพิ่มลงในโปรเจ็กต์จริง

แผนภาพด้านล่างแสดงให้เห็นว่าคลาส Solo อยู่เหนือเคสทดสอบการวัดประสิทธิภาพอย่างไร

คลาส Solo ที่ผสานรวมกับ ActivityInstrumentationTestCase2 ใน Robotium กรณีทดสอบ

การบูรณาการ Robotium และ ActivityInstrumentationTestCase2

ผู้ทดสอบสามารถเขียนกรณีทดสอบได้โดยไม่ต้องมีความรู้เกี่ยวกับการออกแบบแอปพลิเคชัน ซึ่งทำให้แนวทางนี้เป็นรูปแบบหนึ่งของ การทดสอบกล่องดำนั่นเป็นข้อได้เปรียบที่โดดเด่นเมื่อเทียบกับแบบธรรมดา Android คลาสกรณีทดสอบ

วิธีใช้ Robotium

ในการใช้งาน Robotium ในของคุณ Android สำหรับโปรเจ็กต์ทดสอบ คุณต้องทำตามขั้นตอนด้านล่างนี้

ขั้นตอนที่จำเป็นในการเพิ่มและใช้งาน Robotium ภายใน Android โครงการทดสอบ

วิธีใช้ Robotium

เพื่อรับประกันคุณภาพของคุณ Android หากต้องการสมัคร ให้ทำตามขั้นตอนทั้งสี่ด้านล่างนี้

  • ออกแบบข้อกำหนดการทดสอบ
  • พัฒนาโปรแกรมทดสอบ
  • ดำเนินการทดสอบบนอุปกรณ์เป้าหมาย
  • รวบรวมผลการทดสอบ

แผนผังด้านล่างแสดงขั้นตอนทั้งสี่ตามลำดับ

แผนผังแสดงขั้นตอนทั้งสี่ Android ขั้นตอนการทดสอบแอปพลิเคชัน

Android ขั้นตอนการทดสอบแอปพลิเคชัน

ขั้นตอนที่ 1) ออกแบบข้อกำหนดการทดสอบ

นี่คือขั้นตอนแรกในการทดสอบแอปพลิเคชันของคุณ ในขั้นตอนนี้ คุณจะกำหนดเป้าหมายที่จะทดสอบ Android แอปพลิเคชันมีเป้าหมายหลายอย่างที่ต้องทดสอบ เช่น ส่วนติดต่อผู้ใช้ (UI), กิจกรรม (Activity), ส่วนประกอบ (Component) และบริการ (Service) การกำหนดเป้าหมายอย่างชัดเจนจะช่วยให้คุณครอบคลุมการทดสอบได้อย่างกว้างขวาง

  • วางแผนประเภทของการทดสอบที่ควรดำเนินการ (การทดสอบหน่วย การทดสอบฟังก์ชัน การทดสอบระบบ)
  • ออกแบบแต่ละชิ้น กรณีทดสอบ เพื่อให้ครอบคลุมสูงสุดในขณะที่รักษาping จำนวนกรณีทดสอบน้อย ยิ่งคุณทดสอบโค้ดมากเท่าไหร่ โอกาสที่จะตรวจพบข้อผิดพลาดตั้งแต่เนิ่นๆ ก็ยิ่งสูงขึ้นเท่านั้น

ขั้นตอนที่ 2) เขียนโปรแกรมทดสอบ

ส่วนนี้จะแนะนำขั้นตอนการเขียนให้คุณ Android ทดสอบการใช้งานโปรแกรม Android JUnit การทดสอบและ Robotiumสมมติว่าคุณได้พัฒนา... Android โปรแกรมชื่อ HelloAndroidโปรแกรมนี้มีฟังก์ชันต่างๆ ดังที่อธิบายไว้ด้านล่าง

  • แสดงข้อความ “Hello world!” บนหน้าจอ
  • แสดงข้อความสวัสดีAndroid ข้อความจะปรากฏขึ้นเมื่อผู้ใช้กดปุ่ม "เริ่ม"

ภาพหน้าจอต่อไปนี้แสดงแอปพลิเคชันที่กำลังทดสอบทำงานอยู่บนอุปกรณ์

สวัสดีAndroid แอปพลิเคชันที่กำลังทดสอบแสดงข้อความ "Hello world" และปุ่ม "Start"

สวัสดีAndroid ใบสมัคร

ความต้องการของระบบ

  • การขอ Android แพลตฟอร์มนี้จัดส่งมาพร้อมกับระบบที่ผสานรวมไว้ล่วงหน้า JUnit กรอบงาน 3 ข้อ ซึ่งคืออะไร ActivityInstrumentationTestCase2 สร้างขึ้นบน
  • เพื่อสร้าง Android โครงการทดสอบจาก Eclipseเครื่องของคุณต้องการการทำงาน Android การติดตั้ง SDK
  • ติดตั้งเวอร์ชันปัจจุบัน Android ใช้ SDK ของแพลตฟอร์มแทนที่จะใช้เวอร์ชันเก่าที่ตรึงไว้

ภาพหน้าจอในคำแนะนำนี้ใช้ Eclipse โดยใช้ปลั๊กอิน ADT ซึ่งเป็นชุดเครื่องมือมาตรฐานในขณะที่เขียนตัวอย่างนี้ Eclipse ADT ไม่ได้รับการสนับสนุนอีกต่อไป ดังนั้นในเครื่องคอมพิวเตอร์รุ่นใหม่ คุณจะต้อง... ดาวน์โหลด Android Studio แต่ให้นำโค้ดทดสอบเดียวกันมาใช้ซ้ำภายใน Gradle โมดูล.

สำหรับ Robotium ดาวน์โหลดเฟรมเวิร์กการทดสอบ Robotium ห้องสมุดจาก Robotium หน้าโครงการ.

สร้าง Android โครงการทดสอบ

  • คลิกไฟล์ -> ใหม่ -> อื่น ๆ
  • Choose Android -> Android ทดสอบโปรเจ็กต์ตามที่แสดงในรูปด้านล่าง จากนั้นเลือก ถัดไป

Eclipse วิซาร์ดสร้างโปรเจ็กต์ใหม่พร้อม Android โครงการทดสอบได้รับการคัดเลือกแล้ว

สร้างใหม่ Android โครงการทดสอบ

เขียนชื่อโปรเจ็กต์ทดสอบของคุณ ตามหลักการตั้งชื่อ โปรเจ็กต์ทดสอบควรมีชื่อว่า “Hello”Androidทดสอบ".

Eclipse บทสนทนากับโปรเจกต์ทดสอบชื่อ HelloAndroidทดสอบตามหลักเกณฑ์การตั้งชื่อ

เพิ่มชื่อโปรเจ็กต์ทดสอบตามหลักเกณฑ์การตั้งชื่อ

เลือกแอปพลิเคชันเป้าหมายที่ต้องการทดสอบ ในกรณีนี้คือแอปพลิเคชัน HelloAndroidจากนั้นคลิก เสร็จสิ้น

Eclipse ขั้นตอนตัวช่วยสร้าง การเลือก สวัสดีAndroid เนื่องจากเป็นแอปพลิเคชันเป้าหมายที่อยู่ระหว่างการทดสอบ

เลือกแอปพลิเคชันเป้าหมายที่ต้องการทดสอบ

สร้างชุดทดสอบ

จากข้อกำหนดการทดสอบของคุณ คุณจะต้องสร้างชุดทดสอบสำหรับโปรแกรมทดสอบของคุณ คุณสามารถเลือกจากตัวเลือกต่างๆ ได้ การทดสอบซอฟต์แวร์ เฟรมเวิร์ก บทช่วยสอนนี้ใช้เฟรมเวิร์กมาตรฐาน Android กรอบการทดสอบ ActivityInstrumentationTestCase2เพื่อทดสอบด้วย Robotiumเพิ่ม Robotium ไฟล์ไลบรารีไปยัง libs ไดเร็กทอรีภายในโฟลเดอร์โปรเจ็กต์ของคุณ

กรณีทดสอบกำหนดชุดข้อมูลที่ใช้ในการรันการทดสอบหลายรายการ ในการกำหนดกรณีทดสอบ ให้ทำตามโครงสร้างโปรแกรมด้านล่าง

  • สร้างคลาสย่อยของ TestCase
  • กำหนดตัวแปรอินสแตนซ์ที่ใช้เก็บสถานะของฟิกซ์เจอร์
  • เริ่มต้นสถานะฟิกซ์เจอร์โดยการเขียนทับเมธอด setUp()
  • ทำความสะอาดหลังจากการทดสอบโดยการเขียนทับเมธอด tearDown()

แผนภาพด้านล่างแสดงการแมปโครงสร้างดังกล่าวลงบนโปรแกรมทดสอบที่คุณกำลังจะเขียน

โครงสร้างของ Robotium โปรแกรมทดสอบแสดงขั้นตอนการตั้งค่า วิธีการทดสอบ และการยกเลิกการตั้งค่า

โครงสร้างโปรแกรมทดสอบ

package com.example.helloandroid.test;

import com.example.helloandroid.HelloAndroid;
import com.jayway.android.robotium.solo.Solo;
import android.test.ActivityInstrumentationTestCase2;
import android.widget.TextView;

public class HelloAndroidTest extends ActivityInstrumentationTestCase2 <HelloAndroid> {
    
	private HelloAndroid mActivity;
	private TextView mView;
	private String resourceString;
	private Solo solo;
	
	public HelloAndroidTest () {
		// TODO Auto-generated constructor stub
		super("com.example.helloandroid",HelloAndroid.class);	
	}
	
	 @Override
	protected void setUp() throws Exception {
		// TODO Auto-generated method stub
	//	super.setUp();
		 
	 	mActivity = this.getActivity();
		solo = new Solo(getInstrumentation(),getActivity());
		mView = (TextView) mActivity.findViewById(com.example.helloandroid.R.id.textview2);
		resourceString = mActivity.getString(com.example.helloandroid.R.string.hello_world);
		
	}
	 
	 @Override
	protected void tearDown() throws Exception {
		// TODO Auto-generated method stub
		//super.tearDown();
		solo.finishOpenedActivities();
	}
	
	public void testPrecondition() {
		assertNotNull(mView);
	}
	
	/* test Target application contains a text display "Hello World!"*/
	public void testSearchText() {
		assertEquals(resourceString,(String) mView.getText());
	}
	
	/* test HelloAndroid Activity on target application is exist*/
	public void testCurrentActivity() throws Exception  {
    	solo.assertCurrentActivity("wrong activity", HelloAndroid.class);
    }
    
	/* test Application UI contains "Start" button */
	/* send event click button to target application */
    public void testSearchButton() throws Exception {
    	boolean found = solo.searchButton("Start");
    	solo.clickOnButton("Start");
    	assertTrue(found);
    }

	

}

การเพิ่มกรณีทดสอบ

  • สร้างคลาส TestCase ในแพ็กเกจเดียวกันกับชุดทดสอบ
  • เพื่อทดสอบการทำงานบางอย่าง เช่น การทักทายAndroidสร้างกรณีทดสอบที่ขยายจาก ActivityInstrumentationTestCase2Android>.
  • ภายในคลาสดังกล่าว ผู้ทดสอบจะได้รับกิจกรรมที่ต้องการทดสอบผ่านทางเมธอด getActivity()
  • สร้างการทดสอบสำหรับกิจกรรมได้อย่างอิสระโดยการเพิ่มเมธอดชื่อ “test + ชื่อเมธอดเดิม”
  • ภายในวิธีการทดสอบ ผู้ทดสอบสามารถใช้ได้ Android JUnit ฟังก์ชันที่ใช้เปรียบเทียบค่าจริงกับค่าที่คาดหวัง วิธีการเหล่านี้แสดงไว้ด้านล่าง

ตารางด้านล่างแสดงรายการวิธีการยืนยันและการโต้ตอบที่ใช้บ่อยที่สุดในทั้งสองเฟรมเวิร์ก

ตัวอย่างวิธีการของ Robotium คลาสเดี่ยวและ Android กรอบการทดสอบ

ตัวอย่างวิธีการของ Robotium และ Android กรอบการทดสอบ

ชุดทดสอบข้างต้นตรวจสอบว่า GUI ของแอปพลิเคชันแสดงข้อความ “Hello World!” และมีปุ่มชื่อ “Start”

ขั้นตอนที่ 3) เรียกใช้การทดสอบ

หลังจากเขียนโปรแกรมทดสอบเสร็จแล้ว ให้รันการทดสอบโดยทำตามขั้นตอนด้านล่าง

  • เชื่อมต่อ a Android เชื่อมต่ออุปกรณ์เข้ากับพีซีของคุณ หรือเริ่มใช้งานโปรแกรมจำลองหากไม่มีอุปกรณ์จริง
  • ใน IDE ของคุณ คลิกขวาที่โปรเจ็กต์ทดสอบ แล้วเลือก Run As → Android การทดสอบหน่วย (Unit Test)

ภาพหน้าจอด้านล่างแสดงการเริ่มการทดสอบจาก IDE

การเปิดตัว Robotium โปรแกรมทดสอบในฐานะโปรแกรมทดสอบ Android การทดสอบหน่วยจาก IDE

กำลังเรียกใช้โปรแกรมทดสอบ

นอกจากการรันการทดสอบจาก IDE แล้ว คุณยังสามารถรันจากบรรทัดคำสั่งได้อีกด้วย ในโปรแกรมทดสอบนี้ แพ็กเกจทดสอบคือ com.example.helloandroid.testในเทอร์มินัล Linux ให้ใช้คำสั่งต่อไปนี้เพื่อเรียกใช้การทดสอบทั้งหมดในแพ็กเกจนั้น

$ adb shell am instrument -w -e package com.example.helloandroid.test

ขั้นตอนที่ 4) รับผลการทดสอบ

หลังจากทำการทดสอบเสร็จสิ้น คุณจะต้องรวบรวมผลการทดสอบ

ในโปรแกรมทดสอบนี้ มีการเรียกใช้เมธอดทดสอบสี่เมธอด ในการทดสอบด้านล่างนี้ กรณีทดสอบทั้งหมดผ่านหมด

ผลการทดสอบที่แสดงผลลัพธ์ทั้งสี่รายการ Robotium กรณีทดสอบผ่าน

ผลลัพธ์การทดสอบเมื่อผ่านการทดสอบทุกกรณี

หากกรณีทดสอบใดล้มเหลว ระบบจะแสดงผลลัพธ์และระบุว่ากรณีทดสอบใดบ้างที่ล้มเหลว

รายการผลลัพธ์การทดสอบที่แสดง Robotium กรณีทดสอบที่ล้มเหลว

ผลลัพธ์การทดสอบที่แสดงเมื่อกรณีทดสอบล้มเหลว

แหล่ง Code ตัวอย่าง

บทความนี้มีตัวอย่างโค้ดต้นฉบับที่จะช่วยให้คุณทำตามบทช่วยสอนได้ชัดเจนยิ่งขึ้นและเข้าใจรายละเอียดทางเทคนิคได้อย่างรวดเร็ว

ถ้าอยากเปรียบเทียบ Robotium สำหรับตัวเลือกอื่นๆ ในพื้นที่นี้ โปรดดูที่ การทดสอบแอปพลิเคชันมือถือ มัคคุเทศก์ Appium เกี่ยวกับการสอน และการสรุปโดยรวมของ เครื่องมือทดสอบแอพมือถือ.

คำถามที่พบบ่อย

Robotium 5.6.3 ยังคงเป็นเวอร์ชันสุดท้ายที่เผยแพร่ และการพัฒนาอย่างจริงจังได้หยุดลงไปหลายปีแล้ว เฟรมเวิร์กยังคงทำงานได้ และไฟล์ต้นฉบับยังคงอยู่ใน Maven Central แต่เวอร์ชันใหม่นั้น... Android โดยปกติแล้วโครงการต่างๆ จะเลือก Espressoซึ่ง Google รักษา

Robotium เป็นเฟรมเวิร์กแบบกล่องดำที่เชื่อมต่อกับวิดเจ็ตในระหว่างการทำงาน และไม่จำเป็นต้องมีความรู้เกี่ยวกับซอร์สโค้ดมากนัก Espresso is Googleเครื่องมือไวท์บ็อกซ์ที่ซิงโครไนซ์กับเธรด UI และคาดหวังการเข้าถึงโค้ดแอปพลิเคชัน

Robotium รองรับการทำงานทีละแอปพลิเคชันเท่านั้น ไม่สามารถจัดการ Flash หรือเนื้อหาเว็บภายนอก WebView ได้อย่างน่าเชื่อถือ ไม่มีฟังก์ชันการบันทึกในตัวในไฟล์ JAR แบบโอเพนซอร์ส และการพึ่งพาคลาสการวัดผลที่ล้าสมัยทำให้การใช้งานในยุคปัจจุบันซับซ้อนขึ้น Gradle สร้าง

ประกาศ androidTestImplementation 'com.jayway.android.robotium:robotium-solo:5.6.3' ในไฟล์สร้างโมดูล หรือลบออก robotium-solo JAR เข้าไป libs และอ้างอิงถึงไฟล์นั้นในฐานะไฟล์ที่ต้องพึ่งพา

ใช่. Robotium การทดสอบเหล่านี้เป็นการทดสอบเครื่องมือวัดทั่วไป ดังนั้นไฟล์ APK เดียวกันจึงทำงานบนอีมูเลเตอร์หรือโทรศัพท์มือถือจริง การตรวจสอบท่าทาง เซ็นเซอร์ และประสิทธิภาพบนฮาร์ดแวร์จริงนั้นเหมาะสมกว่า เนื่องจากเวลาในการประมวลผลบนอีมูเลเตอร์อาจแตกต่างออกไป

Robotium เหมาะสำหรับสถานการณ์การทดสอบการทำงาน ระบบ และการยอมรับของผู้ใช้ในระดับ UI ไม่ใช่สิ่งที่จะมาทดแทนการทดสอบหน่วย (unit test) ซึ่งทำงานได้เร็วกว่าบน JVM หรือการทดสอบที่ครอบคลุมกว่านั้น ประเภทของการทดสอบซอฟต์แวร์ ยังคงต้องมีการเผยแพร่เวอร์ชันใหม่

การเรียนรู้ของเครื่องถูกนำมาใช้สำหรับตัวระบุตำแหน่งที่สามารถแก้ไขตัวเองได้แม้มีการเปลี่ยนแปลงเค้าโครง การเปรียบเทียบภาพที่ช่วยระบุข้อผิดพลาดในการแสดงผล และการตรวจจับการทดสอบที่ไม่เสถียรซึ่งจัดอันดับการทดสอบซ้ำ เครื่องมือเหล่านี้ช่วยลดการบำรุงรักษา แต่สุดท้ายแล้วมนุษย์ก็ยังคงเป็นผู้ตัดสินใจว่าพฤติกรรมใดมีความสำคัญ

นักบิน GitHub สามารถสร้างโครงสร้างพื้นฐานสำหรับการตั้งค่า Solo, การยกเลิกการตั้งค่า และเมธอดการตรวจสอบจากคลาสกิจกรรมได้ Revโปรดพิจารณาคำแนะนำอย่างรอบคอบ เนื่องจากอาจทำให้เกิดการนำเข้าแพ็กเกจแบบเก่าหรือการตรวจสอบเงื่อนไขที่แอปไม่เคยตอบสนองได้

สรุปโพสต์นี้ด้วย: