Robotium Öğretici: Android Örnekli Test Çerçevesi

⚡ Akıllı Özet

Robotium açık kaynaklı Android Yerel ve hibrit uygulamaları kullanıcı arayüzleri üzerinden yönlendiren, test uzmanının işlevsel, sistem ve kabul senaryolarını yazmasına olanak tanıyan bir test otomasyon çerçevesi. Bu senaryolar çeşitli katmanları kapsayabilir. Android faaliyetleri.

  • 🔘 Temel ders: Solo, her kullanıcının kullandığı tıklama, arama, sürükleme ve doğrulama yöntemlerini ortaya koyuyor. Robotium test senaryosu çağrıları.
  • ☑️ Kara kutu dostu: Testler, çalışma zamanında kullanıcı arayüzü bileşenlerine bağlanır, bu nedenle uygulamanın kaynak koduna dair minimum düzeyde bilgi gereklidir.
  • Dört aşamalı işlem: Test spesifikasyonunu tasarlayın, test programını yazın, bir cihazda çalıştırın ve ardından sonucu toplayın.
  • 🧪 Çalışılmış örnek: Tam bir merhabaAndroidTest sınıfı, görünür metni, geçerli etkinliği ve Başlat düğmesini kontrol eder.
  • İki çalışma modu: Testleri IDE'den veya terminalden `adb shell am instrument` komutuyla başlatın.
  • ⚙️ Şu anki durum: Robotium 5.6.3 son sürüm olmaya devam ediyor, bu yüzden yeni sürümler henüz yayınlanmadı. Android projeler genellikle onu ile eşleştirir veya onun yerine kullanır. Espresso.

Robotium Klavuz

Nedir? Robotium?

Robotium bir Android Yerel ve hibrit uygulamalar için test senaryolarını otomatikleştiren bir test çerçevesi. RobotiumBir geliştirici, aşağıdakiler için sağlam otomatik GUI test senaryoları oluşturabilir: Android Geliştirici ayrıca, çeşitli uygulamaları kapsayan fonksiyonel, sistem ve kabul test senaryoları da yazabilir. Android faaliyetleri.

Robotium Test Çerçevesi

Standart Android Test çerçevesi aşağıda listelenen sınırlamaları içermektedir.

  • Birden fazla aktiviteyi gerçekleştiremiyorum
  • Test yürütme performansı yavaş
  • Test senaryoları karmaşık ve uygulanması zor.

MKS Robotium Bu çerçeve, bir cihaz üzerinde test yapmak için daha iyi bir seçimdir. Android uygulama.

Robotium Açık kaynaklı bir çerçevedir ve 'nin bir uzantısı olarak kabul edilir. Android test çerçevesi. Kullanarak. RobotiumBir geliştirici, aşağıdakiler için sağlam otomatik GUI test senaryoları oluşturabilir: Android Dahası, bir geliştirici birden fazla uygulamayı kapsayan işlevsel, sistem ve kabul testi senaryoları yazabilir. Android faaliyetleri.

Aşağıdaki tablo, farklı özelliklere sahip gelişmiş özellikleri özetlemektedir. Robotium Basit enstrümantasyon çerçevesinden.

gelişmiş özellikleri Robotium standartla karşılaştırıldığında Android enstrümantasyon çerçevesi

gelişmiş özellikleri Robotium

Robotium Test Senaryosu Sınıfları

Robotium Test amaçlı küçük bir sınıf kümesi içerir ve makaledeki örnek eski sürümü içe aktarır. com.jayway.android.robotium.solo Bu paket, birden fazla etkinliği kapsayan test senaryolarını destekleyen sınıfları içerir. Solo ile entegre ActivityInstrumentationTestCase2.

Not: akım Robotium Yayınlar, daha kısa süre içinde aynı sınıfı ortaya çıkarıyor. com.robotium.solo Maven koordinatı aynı kalırken paket aynı kaldı. com.jayway.android.robotium:robotium-soloİçe aktarma ayarlarını, projeye eklediğiniz JAR sürümüyle eşleşecek şekilde düzenleyin.

Aşağıdaki diyagram, Solo sınıfının enstrümantasyon test senaryosunun üzerinde nasıl konumlandığını göstermektedir.

Solo sınıfı, ActivityInstrumentationTestCase2 ile entegre edilmiştir. Robotium test durumu

Entegrasyonu Robotium ve AktiviteEnstrümantasyonTestVakası2

Bir test uzmanı, uygulamanın tasarımına dair bilgi sahibi olmadan test senaryoları yazabilir; bu da bu yaklaşımı bir test biçimi haline getirir. kara kutu testiBu, sıradan olana kıyasla olağanüstü bir avantajdır. Android test senaryosu sınıfları.

Nasıl Kullanılır? Robotium

Kullanmak için Robotium Cihazınızda Android Test projesi için aşağıdaki adımları izlemeniz gerekiyor.

Ekleme ve kullanma için gerekli adımlar Robotium içinde bir Android test projesi

Nasıl kullanılır? Robotium

Ürünlerinizin kalitesini garanti altına almak için Android Başvuru için lütfen aşağıdaki dört aşamalı prosedürü izleyin.

  • Test spesifikasyonunu tasarlayın.
  • Test programını geliştirin.
  • Test senaryosunu hedef cihazda çalıştırın.
  • Test sonucunu alın.

Aşağıdaki akış şeması bu dört aşamayı sırasıyla göstermektedir.

Dört aşamalı sürecin akış şeması Android uygulama test prosedürü

Android uygulama test prosedürü

ADIM 1) Tasarım Testi Spesifikasyonu

Bu, uygulamanızı test etmenin ilk adımıdır. Bu adımda test edilecek hedefi tanımlarsınız. Android Uygulamanın, kullanıcı arayüzü, etkinlikler, bileşenler ve servisler gibi test edilmesi gereken birçok hedefi vardır. Hedefi net bir şekilde tanımlamak, geniş bir test kapsamı elde etmenize yardımcı olur.

  • Gerçekleştirilmesi gereken test türlerini planlayın (birim testi, fonksiyonel test, sistem testi).
  • Her birini tasarlayın test durumu maksimum kapsama alanı sağlarkenping Test senaryolarının sayısı az olmalıdır. Ne kadar çok kod test ederseniz, hataların erken tespit edilme olasılığı o kadar yüksek olur.

ADIM 2) Test Programını Yazın

Bu bölüm, bir yazı yazma sürecinde size rehberlik eder. Android kullanarak test programı Android JUnit testler ve RobotiumVarsayalım ki zaten bir şey geliştirmişsiniz. Android Hello adlı programAndroidBu program aşağıda açıklanan işlevlere sahiptir.

  • Ekranda “Merhaba dünya!” metnini görüntüleyin.
  • Merhaba'yı gösterAndroid Kullanıcı "Başlat" düğmesine bastığında bir mesaj görüntülenir.

Aşağıdaki ekran görüntüsü, test edilen uygulamanın bir cihazda çalışırkenki halini göstermektedir.

MerhabaAndroid Test edilen uygulamada "Merhaba dünya" metni ve "Başlat" düğmesi görüntüleniyor.

MerhabaAndroid uygulama

Sistem Gereksinimleri

  • MKS Android Platform, önceden entegre edilmiş bir özellikle birlikte gönderilir. JUnit 3 çerçeve, yani bu ActivityInstrumentationTestCase2 üzerine inşa edilir.
  • Oluşturmak için Android test projesinden EclipseMakinenizin çalışır durumda olması gerekiyor. Android SDK kurulumu.
  • Mevcut olanı yükleyin. Android Sabitlenmiş eski bir sürüm yerine platform SDK'sı.

Bu kılavuzdaki ekran görüntüleri şu şekildedir: Eclipse Örnek yazıldığı sırada standart araç zinciri olan ADT eklentisiyle birlikte. Eclipse ADT artık desteklenmiyor, bu nedenle modern bir bilgisayarda şunları yapmanız gerekir: indir Android Studio bunun yerine aynı test kodunu yeniden kullanın. Gradle modülü.

Için Robotium test çerçevesini indirin Robotium kütüphaneden Robotium proje sayfası.

Bir oluşturma Android Test Projesi

  • Dosya -> Yeni -> Diğer'i tıklayın
  • Klinik Android -> Android Aşağıdaki şekilde gösterildiği gibi Test Projesi'ni seçin, ardından İleri'yi seçin.

Eclipse Yeni Proje sihirbazı ile Android Seçilen Test Projesi

Yeni bir tane oluştur Android test projesi

Test projenizin adını yazın. Adlandırma kuralına göre, test projesi "Merhaba" olarak adlandırılmalıdır.AndroidÖlçek".

Eclipse Hello adlı test projesiyle diyalogAndroidAdlandırma kuralına uygun olarak test edin.

Test projesinin adını adlandırma kuralına göre ekleyin.

Test edilecek hedef uygulamayı seçin. Bu durumda hedef uygulama Hello'dur.Android, ardından Bitir'e tıklayın.

Eclipse Sihirbaz adımında "Merhaba"yı seçmeAndroid test edilen hedef uygulama olarak

Test edilecek hedef uygulamayı seçin.

Test Paketleri Oluşturun

Test spesifikasyonunuza bağlı olarak, test programınız için test paketleri oluşturabilirsiniz. Çeşitli seçenekler arasından seçim yapabilirsiniz. yazılım testi Bu eğitimde standart çerçeveler kullanılmaktadır. Android test çerçevesi ActivityInstrumentationTestCase2. ile test etmek için Robotium, ekle Robotium kütüphane dosyasını bir libs Proje klasörünüzün içindeki dizin.

Bir test senaryosu, birden fazla testi çalıştırmak için kullanılan test ortamını tanımlar. Bir test senaryosu tanımlamak için aşağıdaki program yapısını izleyin.

  • TestCase sınıfının bir alt sınıfını uygulayın.
  • Deney düzeneğinin durumunu saklayan örnek değişkenler tanımlayın.
  • setUp() yöntemini geçersiz kılarak fikstür durumunu başlatın.
  • Testten sonra temizleme işlemini tearDown() yöntemini geçersiz kılarak gerçekleştirin.

Aşağıdaki diyagram, bu yapıyı yazacağınız test programına yansıtmaktadır.

Yapısı Robotium Kurulum, test yöntemleri ve sonlandırma işlemlerini gösteren test programı.

Test programı yapısı

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);
    }

	

}

Test Senaryoları Ekleme

  • Test paketiyle aynı pakette TestCase sınıflarını oluşturun.
  • Örneğin, belirli bir etkinliği test etmek için, "Merhaba"AndroidActivityInstrumentationTestCase2'yi genişleten bir test durumu oluşturun.Android>.
  • Bu sınıfın içinde, test eden kişi getActivity() metodu aracılığıyla test edilecek aktiviteyi elde eder.
  • “test + orijinal metot adı” şeklinde bir metot ekleyerek etkinlik için serbestçe bir test oluşturun.
  • Test metodu içinde, test uzmanı şunları kullanabilir: Android JUnit Gerçek değeri beklenen değerle karşılaştırmak için kullanılan fonksiyonlar aşağıda gösterilmiştir.

Aşağıdaki tabloda, iki çerçevede en sık kullanılan doğrulama ve etkileşim yöntemleri listelenmiştir.

Örnek yöntemler Robotium Solo sınıfı ve Android test çerçevesi

Örnek yöntemler Robotium ve Android test çerçevesi

Yukarıdaki test paketi, uygulamanın grafik kullanıcı arayüzünde "Merhaba Dünya!" metninin görüntülendiğini ve "Başlat" adlı bir düğmenin bulunduğunu doğrular.

ADIM 3) Testi Çalıştırın

Test programınızı yazmayı bitirdikten sonra, aşağıdaki adımları kullanarak testi çalıştırın.

  • Bağlayın Android Gerçek bir cihaz yoksa, cihazı bilgisayarınıza bağlayın veya bir emülatör başlatın.
  • IDE'nizde test projesine sağ tıklayın ve "Farklı Çalıştır" seçeneğini seçin → Android Birim Testi.

Aşağıdaki ekran görüntüsü, IDE'den başlatılan test çalışmasını göstermektedir.

Başlatılması Robotium test programı olarak Android IDE'den Birim Testi

Test programını çalıştırma

Testi IDE üzerinden çalıştırmanın yanı sıra, komut satırından da çalıştırabilirsiniz. Bu test programında test paketi şudur: com.example.helloandroid.testLinux terminalinde, söz konusu paketteki tüm testleri çalıştırmak için aşağıdaki komutu kullanın.

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

ADIM 4) Test Sonucunu Alın

Test tamamlandıktan sonra test sonuçlarını toplarsınız.

Bu test programında dört test metodu çalıştırılmaktadır. Aşağıdaki çalıştırmada tüm test durumları başarılı olmuştur.

Dört test sonucunun tamamını gösteren çıktı Robotium test senaryoları başarılı bir şekilde geçiyor

Tüm test senaryoları başarılı olduğunda test sonucu çıktısı

Bir test senaryosu başarısız olursa, çıktı görüntülenir ve hangi test senaryolarının başarısız olduğu gösterilir.

Test sonucu çıktısı listesi Robotium başarısız olan test durumları

Bir test senaryosu başarısız olduğunda test sonucu çıktısı

Kaynak Code Örnekler

Bu makale, öğreticiyi daha net bir şekilde takip etmenize ve teknik ayrıntıları hızlıca kavramanıza yardımcı olacak kaynak kod örnekleri içermektedir.

karşılaştırmak istersen Robotium Bu alandaki diğer seçenekler için şunlara bakın: mobil uygulama testi rehber, Appium öğretici ve özet mobil uygulama test araçları.

SSS

Robotium 5.6.3, yayınlanan son sürüm olmaya devam ediyor ve aktif geliştirme yıllar önce durduruldu. Çerçeve hala çalışıyor ve yapıt hala Maven Central'da mevcut, ancak yeni sürümler eklendi. Android projeler normalde seçer Espresso, Hangi Google korur.

Robotium Çalışma zamanında bileşenlere bağlanan ve kaynak kod hakkında çok az bilgiye ihtiyaç duyan, kara kutu bir çerçevedir. Espresso is GoogleKullanıcı arayüzü iş parçacığıyla senkronize olan ve uygulama koduna erişim bekleyen, beyaz kutu bir araçtır.

Robotium Tek seferde yalnızca bir uygulamayı çalıştırır, WebView dışında Flash veya web içeriğini güvenilir bir şekilde işleyemez, açık kaynaklı JAR dosyasında yerleşik kayıt özelliği sunmaz ve kullanımdan kaldırılmış enstrümantasyon sınıflarına bağımlılığı modern uygulamaları karmaşıklaştırır. Gradle oluşturur.

bildirmek androidTestImplementation 'com.jayway.android.robotium:robotium-solo:5.6.3' modül derleme dosyasında veya silin robotium-solo JAR içine libs ve bunu dosya bağımlılığı olarak belirtin.

Evet. Robotium Testler sıradan enstrümantasyon testleridir, bu nedenle aynı APK bir emülatörde veya fiziksel bir cihazda çalışır. Hareket, sensör ve performans kontrolleri için gerçek donanım tercih edilir, çünkü emülatördeki zamanlama farklılık gösterebilir.

Robotium Kullanıcı arayüzü seviyesinde fonksiyonel, sistem ve kullanıcı kabul senaryolarına uygundur. JVM üzerinde daha hızlı çalışan birim testlerinin veya daha geniş kapsamlı testlerin yerini tutmaz. yazılım testi türleri Bir sürümün hala yayınlanması gerekiyor.

Makine öğrenimi, yerleşim değişikliklerinden etkilenmeyen kendi kendini onaran konum belirleyiciler, işleme hatalarını işaretleyen görsel karşılaştırma ve tekrarlanan çalıştırmaları sıralayan kararsız test tespiti için kullanılır. Bu araçlar bakım maliyetlerini azaltır, ancak hangi davranışın önemli olduğuna yine de bir insan karar verir.

GitHub Yardımcı Pilotu Bir etkinlik sınıfından Solo kurulum, sonlandırma ve doğrulama yöntemlerini oluşturabilir. RevÖneriyi dikkatlice inceleyin, çünkü uygulamanın asla karşılamadığı eski paket içe aktarma işlemlerini veya onaylamaları tetikleyebilir.

Bu yazıyı şu şekilde özetleyin: