Yazılım Testi Nasıl Yapılır?


Web ve Mobil uygulamalarının testi için bilmeniz gereken teknolojiler şöyledir:

  1. Web Uygulamalarının Testi için Selenium
  2. Mobil Uygulamalarının Testi için Appium
  3. Gerçek cihazlar üzerinde test için BrowserStack, AWS Device Farm veya Firebase Test Lab

Gerçek cihazlar üzerinde test ücretlidir, ve ücret; kullandığınız cihaz sayısına ve süresine göre değişebilir.

Selenium, Appium vb. teknolojilerle end-to-end test otomasyonu geliştirmek mümkündür. Yani yazılımı buton ve linklere manuel tıklamak yerine, formları manuel doldurmak yerine test yazılımı buton ve linklere tıklayarak formları otomatik doldurarak sonuçları loglar.

Böylece test otomatikleştirilir ve sonraki testler daha hızlı yapılabilir.

Test otomasyon kodunu yerel bilgisayarınızda Python, Java, C# gibi bildiğiniz programlama dilleri ile geliştirebilirsiniz. Mesela AWS Device Farm üzerinde test otomasyonu yazmak isterseniz, Python ya da Java kullanmanız önerilir.

AWS Device Farm Üzerinde Selenium ile Desktop Browser Testi Nasıl Yapılır?

AWS Device Farm’da Desktop Browser Testi yapmak için AWS SDK’ya ihtiyacımız var. Ayrıca Pytest ve Selenium kütüphaneleri de gerekiyor.

Örnek kod şu şekilde:

import boto3
from selenium.webdriver import DesiredCapabilities
from selenium.webdriver import Remote
from time import sleep
from selenium.webdriver.common.by import By
import os
class TestClass():
    def setup_method(self, method):
        # step 2: Set up a client for boto3
        # The AWS_ACCESS_KEY and AWS_SECRET_KEY will be inferred from the environment.
        devicefarm_client = boto3.client("devicefarm", region_name="us-west-2")
        testgrid_url_response = devicefarm_client.create_test_grid_url(
        projectArn= "arn:aws:devicefarm:us-west-2:test-grid-project-arn-copy&paste-from-aws",
        expiresInSeconds=300
        )
        desired_capabilities = DesiredCapabilities.CHROME
        desired_capabilities["platform"] = "windows"
        self.driver = Remote(testgrid_url_response['url'], desired_capabilities)

    def teardown_method(self, method):
        self.driver.quit()

    def test_devicefarm(self):
        self.driver.maximize_window()
        self.driver.get(
            'https:// web sayfanızın adresi')
        sleep(5)
        self.driver.find_element(By.XPATH, ".//*[contains(@class, 'btn btn-default btn-lg')]").click()
        sleep(5)
        screenshot_folder = os.getenv('SCREENSHOT_PATH', '/tmp')
        self.driver.save_screenshot(screenshot_folder + '/devicefarm.png')
        sleep(5)

Not: AWS Key ve AWS Secret bilgisini ortam değişkeni olarak ayarlamayı unutmayın.

Çalıştırdığınızda şöyle bir çıktı alırsınız:

awsdevicefarmtest % python3 -m pytest test_class.py
============================================================================================================ test session starts =============================================================================================================
platform darwin -- Python 3.7.6, pytest-6.2.5, py-1.11.0, pluggy-1.0.0
rootdir: /Users/muratdemirci/Projects/awsdevicefarmtest
collected 1 item                                                                                                                                                                                                                             

test_class.py .                                                                                                                                                                                                                        [100%]

============================================================================================================== warnings summary ==============================================================================================================
test_class.py::TestClass::test_devicefarm
  /Users/muratdemirci/Projects/awsdevicefarmtest/test_class.py:18: DeprecationWarning: desired_capabilities has been deprecated, please pass in an Options object with options kwarg
    self.driver = Remote(testgrid_url_response['url'], desired_capabilities)

-- Docs: https://docs.pytest.org/en/stable/warnings.html
================================================================================================== 1 passed, 1 warning in 82.75s (0:01:22) ===================================================================================================
awsdevicefarmtest %    

Sonrasında AWS Device Farm altındaki projenizden ekran kaydını izleyebilirsiniz.

Bu örnekte Python/Selenium kodunu açıklayacak olursak:

  1. setup method ile AWS Device Farm’a bağlandık ve Selenium Remote Driver’ımızı oluşturduk. Windows’ta Chrome tarayıcıyı kullanacağımızı belirttik.
  2. teardown_method ile driver’ı kapattık. Bunu yazmayı unutmayın, testler bittiğinde driverı kapatmalıyız.
  3. test_devicefarm ile bir test yaptık. Testimizde tarayıcıyı tam ekran yapıp belirttiğimiz web sayfasını açmasını söylüyoruz. Sonra XPATH ile class’ında btn btn-default btn-lg olan HTML etiketini bulup tıklamayı söylüyoruz. Butona tıklandığında bizim web sayfamız ikinci sayfaya geçiyor ve orada ekran görüntüsü alıyoruz. Tüm işlem 82 sn sürdü.

Device Farm tüm bu süreci video olarak kaydediyor ve test sonrasına izleyebiliyorsunuz.

Bu makalemizde Python, Pytest, Selenium ve AWS Device Farm kullanarak web uygulamamızı uzaktaki Chrome tarayıcıda nasıl test edebildiğimizi gördük. Yazdığımız test otomasyonu belirttiğimiz web sayfasını açıyor ve butona tıklayarak ikinci sayfaya gitmeyi sağlıyor. Sorularınız olursa yorum bırakabilirsiniz.

Mutlu kodlamalar 🙂

Posted in Genel

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s