Android - การทดสอบ UI

Android SDK มีเครื่องมือต่อไปนี้เพื่อรองรับการทดสอบ UI อัตโนมัติที่ใช้งานได้บนแอปพลิเคชันของคุณ

  • uiautomatorviewer
  • uiautomator

uiautomatorviewer

เครื่องมือ GUI สำหรับสแกนและวิเคราะห์ส่วนประกอบ UI ของแอปพลิเคชัน Android

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

ในการวิเคราะห์ส่วนประกอบ UI ของแอปพลิเคชันที่คุณต้องการทดสอบให้ทำตามขั้นตอนต่อไปนี้หลังจากติดตั้งแอปพลิเคชันที่ให้ไว้ในตัวอย่าง

  • เชื่อมต่ออุปกรณ์ Android ของคุณกับเครื่องพัฒนาของคุณ
  • เปิดหน้าต่างเทอร์มินัลแล้วไปที่ <android-sdk> / tools /
  • เรียกใช้เครื่องมือด้วยคำสั่งนี้
uiautomatorviewer

คำสั่งจะเป็นไปตามที่แสดงด้านล่าง

คุณจะเห็นหน้าต่างต่อไปนี้ปรากฏขึ้น เป็นหน้าต่างเริ่มต้นของ UI Automator Viewer

  • คลิกที่ไอคอนอุปกรณ์ที่มุมบนขวา มันจะเริ่มถ่ายสแนปชอต UI XML ของหน้าจอที่เปิดอยู่ในอุปกรณ์ คงจะเป็นอะไรประมาณนี้

หลังจากนั้นคุณจะเห็นภาพรวมของหน้าจออุปกรณ์ของคุณในหน้าต่าง uiautomatorviewer

ทางด้านขวาของหน้าต่างนี้คุณจะเห็นสองพาร์ติชั่น พาร์ติชันด้านบนอธิบายโครงสร้างโหนดวิธีการจัดเรียงและบรรจุส่วนประกอบ UI การคลิกที่แต่ละโหนดจะให้รายละเอียดในพาร์ติชันด้านล่าง

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

UI Automator Viewer ยังช่วยให้คุณตรวจสอบ UI ของคุณในทิศทางต่างๆ ตัวอย่างเช่นเพียงแค่เปลี่ยนการวางแนวอุปกรณ์ของคุณเป็นแนวนอนแล้วจับภาพหน้าจออีกครั้ง ดังแสดงในรูปด้านล่าง -

uiautomator

ตอนนี้คุณสามารถสร้างกรณีทดสอบของคุณเองและเรียกใช้ด้วย uiautomatorviewer เพื่อตรวจสอบ ในการสร้างกรณีทดสอบของคุณเองคุณต้องทำตามขั้นตอนต่อไปนี้ -

  • จาก Project Explorer คลิกขวาที่โปรเจ็กต์ใหม่ที่คุณสร้างขึ้นจากนั้นเลือก Properties> Java Build Path และทำสิ่งต่อไปนี้ -

  • คลิกเพิ่มไลบรารี> JUnit จากนั้นเลือก JUnit3 เพื่อเพิ่มการสนับสนุน JUnit

  • คลิก Add External JARs ... และไปที่ไดเร็กทอรี SDK ภายใต้ไดเรกทอรีของแพลตฟอร์มให้เลือกเวอร์ชัน SDK ล่าสุดและเพิ่มทั้งไฟล์ uiautomator.jar และ android.jar

  • ขยายชั้นเรียนของคุณด้วย UiAutomatorTestCase

  • แก้ไขกรณีทดสอบที่จำเป็น

  • เมื่อคุณเขียนโค้ดการทดสอบแล้วให้ทำตามขั้นตอนเหล่านี้เพื่อสร้างและปรับใช้ JAR ทดสอบกับอุปกรณ์ทดสอบ Android เป้าหมายของคุณ

  • สร้างไฟล์คอนฟิกูเรชันบิลด์ที่ต้องการเพื่อสร้างเอาต์พุต JAR ในการสร้างไฟล์คอนฟิกูเรชันบิลด์ให้เปิดเทอร์มินัลและรันคำสั่งต่อไปนี้:

<android-sdk>/tools/android create uitest-project -n <name> -t 1 -p <path>
  • <name> คือชื่อของโปรเจ็กต์ที่มีไฟล์ต้นฉบับการทดสอบ uiautomator ของคุณและ <path> คือพา ธ ไปยังไดเร็กทอรีโปรเจ็กต์ที่เกี่ยวข้อง

  • จากบรรทัดคำสั่งตั้งค่าตัวแปร ANDROID_HOME

set ANDROID_HOME=<path_to_your_sdk>
  • ไปที่ไดเร็กทอรีโปรเจ็กต์ที่มีไฟล์ build.xml ของคุณและสร้าง JAR ทดสอบของคุณ
ant build
  • ปรับใช้ไฟล์ JAR ทดสอบที่คุณสร้างขึ้นกับอุปกรณ์ทดสอบโดยใช้คำสั่ง adb push
adb push <path_to_output_jar> /data/local/tmp/
  • เรียกใช้การทดสอบของคุณโดยทำตามคำสั่ง -
adb shell uiautomator runtest LaunchSettings.jar -c com.uia.example.my.LaunchSettings

ตัวอย่าง

ตัวอย่างด้านล่างแสดงให้เห็นถึงการใช้ UITesting มันเป็นแอพพลิเคชั่นพื้นฐานที่สามารถใช้สำหรับ uiautomatorviewer

ในการทดลองกับตัวอย่างนี้คุณต้องเรียกใช้สิ่งนี้บนอุปกรณ์จริงจากนั้นทำตามขั้นตอน uiautomatorviewer ที่อธิบายไว้ในตอนต้น

ขั้นตอน คำอธิบาย
1 คุณจะใช้ Android studio เพื่อสร้างแอปพลิเคชัน Android ภายใต้แพ็คเกจ com.tutorialspoint.myapplication
2 แก้ไขไฟล์ src / MainActivity.java เพื่อเพิ่มรหัสกิจกรรม
3 แก้ไขไฟล์ XML เค้าโครง res / layout / activity_main.xml เพิ่มคอมโพเนนต์ GUI หากจำเป็น
4 สร้างไฟล์ src / second.java เพื่อเพิ่มรหัสกิจกรรม
5 แก้ไขไฟล์ XML เค้าโครง res / layout / view.xml เพิ่มคอมโพเนนต์ GUI หากจำเป็น
6 เรียกใช้แอปพลิเคชันและเลือกอุปกรณ์ Android ที่ใช้งานอยู่และติดตั้งแอปพลิเคชันบนแอปพลิเคชันและตรวจสอบผลลัพธ์

นี่คือเนื้อหาของ MainActivity.java.

package com.tutorialspoint.myapplication;

import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends ActionBarActivity {
   Button b1;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      b1=(Button)findViewById(R.id.button);
      b1.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            Intent in =new Intent(MainActivity.this,second.class);
            startActivity(in);
         }
      });
   }
}

นี่คือเนื้อหาของ second.java.

package com.tutorialspoint.myapplication;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class second extends Activity {
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.view);
      Button b1=(Button)findViewById(R.id.button2);
      
      b1.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            Toast.makeText(second.this,"Thanks",Toast.LENGTH_LONG).show();
         }
      });
   }
}

นี่คือเนื้อหาของ activity_main.xml

ในรหัสต่อไปนี้ abc ระบุโลโก้ของ tutorialspoint.com
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
   android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
   
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="UI Animator Viewer"
      android:id="@+id/textView"
      android:textSize="25sp"
      android:layout_centerHorizontal="true" />
      
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Tutorials point"
      android:id="@+id/textView2"
      android:layout_below="@+id/textView"
      android:layout_alignRight="@+id/textView"
      android:layout_alignEnd="@+id/textView"
      android:textColor="#ff36ff15"
      android:textIsSelectable="false"
      android:textSize="35dp" />
      
   <ImageView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/imageView"
      android:src="@drawable/abc"
      android:layout_below="@+id/textView2"
      android:layout_centerHorizontal="true" />
      
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Button"
      android:id="@+id/button"
      android:layout_marginTop="98dp"
      android:layout_below="@+id/imageView"
      android:layout_centerHorizontal="true" />

</RelativeLayout>

นี่คือเนื้อหาของ view.xml.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical" android:layout_width="match_parent"
   android:layout_height="match_parent">

   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text=" Button"
      android:id="@+id/button2"
      android:layout_gravity="center_horizontal"
      android:layout_centerVertical="true"
      android:layout_centerHorizontal="true" />
</RelativeLayout>

นี่คือเนื้อหาของ Strings.xml.

<resources>
   <string name="app_name">My Application</string>
</resources>

นี่คือเนื้อหาของ AndroidManifest.xml.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.tutorialspoint.myapplication" >
   
   <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
      
      <activity
         android:name=".MainActivity"
         android:label="@string/app_name" >
         
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
         
      </activity>
      
      <activity android:name=".second"></activity>
      
   </application>
</manifest>

มาลองเรียกใช้แอปพลิเคชันทดสอบ UI ของคุณ ฉันถือว่าคุณได้เชื่อมต่ออุปกรณ์มือถือ Android จริงกับคอมพิวเตอร์ของคุณ หากต้องการเรียกใช้แอปจาก Android studio ให้เปิดไฟล์กิจกรรมของโครงการแล้วคลิก

ไอคอนเรียกใช้จากแถบเครื่องมือ ก่อนเริ่มแอปพลิเคชัน Android studio จะแสดงหน้าต่างต่อไปนี้เพื่อเลือกตัวเลือกที่คุณต้องการเรียกใช้แอปพลิเคชัน Android ของคุณ

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