iOS XCUITest Nedir?

Sebahat Selvi
4 min readDec 27, 2020

--

XCUITest, Apple tarafından native UI testler için geliştirilmiş bir test çerçevesidir. XCode idesinde çalışır ve Swift veya Objective-c kullanılarak testler yazılabilir.

Kurulum ve Örnek Proje Oluşturma

Xcode, kullanıcıların uygulamayla etkileşimini yansıtan UI testleri kolayca geliştirmemize olanak tanıyan XCUITest çerçevesiyle birlikte gelir , bu nedenle herhangi bir kurulum yapmadan XCUITest yazılabilir.

XCUITest yazabilmek için 2 farklı yöntem bulunmaktadır bunlardan birincisi uygulamanın developer koduna erişmek bir diğer yöntem ise mevcut test edilecek uygulamanın bundleIdentifieri ile uygulamaya erişip uygulama üzerinde testlerimiz yapmaktır bu makalede ilk yöntemi kısaca göstereceğim.

Şimdi sıfırdan bir proje oluşturup bu proje üzerinde testimizi yazalım, ben burada Xcode’un sağladığı hazır şablonlardan birini kullanacağım.

  1. Adım: File>New>Project seçiyoruz

2. Adım: iOS seçeneğini seçip, Tabbed App şablonunu seçiyoruz ve Next butonuna basıyoruz

Burada gerekli bilgileri dolduruyoruz , Include UI Tests seçeneğini seçmemiz durumunda Xcode bizim için örnek UITest hedefini oluşturacaktır ancak ben hedefi kendim eklemek istediğim için şimdilik bu seçeneği seçmiyorum. Next butonuna tıkladıktan sonra projemizi başarıyla oluşturuyoruz, artık elimizde UITest yazmak için örnek bir developer kodumuz var.

Test Hedefi Oluşturma

Projemizi başarıyla oluşturduktan sonra sırada test hedefini oluşturmak var.

  1. Adım File>New>Target seçerek test hedefini oluşturmaya başlayalım.

2. Adım : Hedef platformu ve hangi testi yapacağımıza dair bundle seçimi yapıyoruz ve Next butonuna basıyoruz ve ardından “Finish” butonuna basarak hedefimizi belirliyoruz.

Test hedefini oluşturduktan sonra Xcode bizim için örnek bir test oluşturuyor.

setUp() fonksiyonu her testi çalıştırmadan önce çalışır, tearDown() fonksiyonu ise testin sonunda çalışır. Test fonksiyonlarını isimlendirirken fonksiyon isminin “test” ile başlaması test tanımlaması için yeterlidir.

Erişilebilirlik ve Accessibility Inspector Kullanımı

Erişilebilirlik, engelli kullanıcılara diğer kullanıcıların aldığı iOS ve macOS için aynı zengin deneyimi sağlayan temel teknolojidir. Kullanıcıların uygulamanızı kullanarak onlara rehberlik etmek için kullanabilecekleri kullanıcı arayüzü hakkında zengin bir anlamsal veri kümesi içerir. UI test, işlevlerini gerçekleştirmek için bu verileri(test nesneleri) kullanır.

Peki testi nasıl yazacağız? XCUITest yapabilmek için önce test nesnelerine ulaşmalı, bu nesnelere bir aksiyon uygulamalı ve aksiyon sonunda da yapılan işlemin doğrulunu kontrol etmeliyiz. Belli başlı test nesneleri;

app.buttons.element
app.staticTexts.element
app.navigationBars.element
app.textFields.element
app.textViews.element
app.collectionViews.element
app.images.element
app.maps.element
app.pickers.element
app.progressIndicators.element
app.scrollViews.element
app.segmentedControls.element
app.alerts.element
app.switches.element
app.tabBars.element
app.tables.element
app.webViews.element

Nesnelere ulaşmak için Xcode’un bize sunduğu Accessibility Inspector kullanılabilir. Accessbility Inspector sayesinde elementin türünü, identifierini ,uygulanabilecek aksiyonları ve hiyerarşideki yerini görebiliriz.

Burada işaretçi ile “First” butonunu işaretledikten sonra inspector ekranında tipinin “button” ve title’ın da First olduğunu görüyoruz

Test Aksiyonları

Belirlenen nesnelere aşağıdaki aksiyonlar uygulanabilir.

tap()
doubleTap()
twoFingerTap()
tap(withNumberOfTaps:numberOfTouches:)
press(forDuration:)
swipeLeft(), swipeRight(), swipeUp(), swipeDown()
pinch(withScale:velocity:)
rotate(_: withVelocity:)

Test Assertions

Yapılan testin doğruluğunu kontrol etmek için ise yine XCTestin bize sağladığı assertionları kullanabiliriz.

XCTAssert()
XCTAssertEqual()
XCTAssertFalse()
XCTAssertNil()
XCTAssertThrowsError()
object.waitForExistence()

Örnek Test

Şimdi örnek testimize başlayalım. Test senaryomuz

Step 1: Uygulama launch edilir

Step 2: Second butonuna basılır

Step 3: Açılan ekranda “Second View” yazıldığı görülür

Buraya kadar XCUITest ile kısaca anlatmaya çalıştım, bir sonraki yazımda XCUITest ve Page Object Model implementasyonu hakkında bilgi vereceğim, iyi okumalar.

--

--