Bu, Qubole Teknik Personeli üyesi Monika Khandelwal’ın konuk postasıdır.

Qubole, kurumsal sınıf, bulut tabanlı büyük veri analizi platformu sunar ve müşterilerimize en yüksek kalitede hizmet sunmamızı sağlamak için her zaman iyileştirmeler yapıyoruz.

Bu blog yazısında, TestNG’den Salatalık’a geçme motivasyonumuzu özetledik. Salatalık genellikle bir belirtim aracı ve bir test çerçevesi olarak kabul edilse bile, bu hareketin mükemmel olduğu ortaya çıktı . Buna ek olarak, müşterilerimiz tarafından işlenen analizlerin ve iş akışlarının çoğunluğu karmaşık ve alan adı temelli yürütülmekte olduğundan, işbirlikçi bir test aracı kullanma ihtiyacı çok önemlidir.

TestNG ile Karşılaşılan Zorluklar

UI testi için başlangıçta Fonksiyonel Test Paketi’nin bir parçası olarak yaklaşık 250-300 test vakası çalıştıran Selenyum TestNG çerçevesini kullanıyorduk. TestNG’nin gruplama, sipariş verme, paralel yürütme vb. Gibi tüm mevcut yararlarını kullanıyorduk.

Az sayıda ölçekte, ürünün daha az test durumu ve küçük bir ekiple sınırlı özellikleri vardığında, TestNG’nin bakımı kolaydır. Ancak ürün ve ekip büyümeye devam edince iletişim boşlukları yaşamaya başladık. Sorulan sık sorulardan bazıları şunlardı:

  1. Hangi testleri uyguluyoruz?
  2. Kayıp senaryoları nasıl bulacağız?
  3. Sınav kapsamı ne kadardır?
  4. Herkes test ekleyebilir / düzeltebilir mi?
  5. Testleri nasıl hata ayıklayabiliriz / analiz edebiliriz?
  6. Kullanıcılar raporları nasıl okuyor?

Raporlar, genellikle, teknik olmayan bir geçmişe sahip olmayan tüm ekip üyeleri tarafından çözülmesi zor olan yığın izlerini içeriyordu. Bu sebeple, bir ölçüde kullanılabilirlik eklemek istedik.

Salatalık altına geçme

Onun içinde blogunda , Aslak Hellesøy Salatalık bir biçime kabul testleri, fonksiyonel gereksinimleri ve yazılım belgelerine otomatik hale fikri doğdu yazıyor.

Salatalık, son kullanıcılar, paydaşlar ve mühendislik ekibi dahil olmak üzere ekipteki herkes tarafından iyi anlaşılan bir iş kelime bilgisini kullanıyor. Raporların okunabilirliğini, ne olup bittiğini ve neyin eksik olduğunu net bir şekilde görerek artırır.

Teknik detaylar

Selenium WebDriver framework’ümüzü Sayfa Nesnesi Modeli tasarım kalıbı izleyerek tekrar kullanabiliriz. Ek çalışmalar, tüm TestNG ile ilgili dosyaları ortadan kaldırmak ve salatalıka özgü Özellik ve Adım Tanımı dosyalarını tanıtmaktı.

Untitled2
İşte TestNG’den salatalıka dönüşüme bir örnek

Aşağıda, bir kovan sorgusu çalıştırmak ve sonucu doğrulamak için bir TestNG test durumu bulunmaktadır:

@Test(groups = { "analyze.hive" }, priority = 1) public void test_RunHiveQuery() throws Exception {
    homePage.goToAnalyze().compose().selectHiveCommand().hiveStatementOrPath("Query Path").enterHivePath(AnalyzeV2DataProvider.generateCommandDetails(CommandTypes.HIVE, QueryType.valueOf(dataType), "").get("query")).runQuery().waitForQueryToComplete(CommandStatus.SUCCESS).assertForEmptyResultQuery();
}

Salatalık kullanarak, aynı test durumunu herkesin anlayabileceği bir iş kullanımı davasına dönüştürdük. Test durumlarımız, aşağıda gösterildiği gibi düz İngilizce olarak yazılan kullanım davalarına dönüşmüştür:

#1 Run a Hive Query and verify various Parameters Scenario: Given User is on Analyze Page When User enters path "HIVE_QUERY_PATH_PRODUCING_EMPTY_RESULTS" and run Then Verify results are empty

Salatalık senaryoları, yürütülebilir bir test şekli değildir. Çalışması için Adım Tanımı destekleyici kodu içerir. Özellik dosyası ile taban kodu arasındaki çevirmen gibi davranır ve bunlar şu şekilde yazılabilir:

public class HiveSteps
{
    CommonResourcesSetup commonDeclaration = CommonResourcesSetup.getInstance();

    @Given("^User is on Analyze Page$")
    public void navigateToAnalyzePage() throws Throwable
    {
        commonDeclaration.homePage.goToAnalyze();
    }

    @When("^User enters path \"([^\"]*)\" and run$")
    public void selectHiveQueryPath(String dataType) throws Exception
    {
        commonDeclaration.analyzeCommon.compose().selectHiveCommand().hiveStatementOrPath("Query Path").enterHivePath(AnalyzeV2DataProvider.generateCommandDetails(CommandTypes.HIVE, QueryType.valueOf(dataType), "").get("query")).runQuery().waitForQueryToComplete(CommandStatus.SUCCESS);
    }

    @Then("^Verify results are empty$")
    public void verifyResultsAreEmpty() throws Exception
    {
        commonDeclaration.analyzeCommon.assertForEmptyResultQuery();
    }
}

JUnit koşucu sınıfı testleri tetiklemek için kullanılır. Alınacak ve yürütülecek özellik dosyasını gösterir.

@RunWith(Cucumber.class)
@CucumberOptions(format = { "pretty", "html:target/cucumber", "json:target/cucumber-analyze.json" }, glue = { "commonsteps", "analyzev2" }, features = "src/test/resources/Features/AnalyzeV2", tags = { "~@toBeAutomated", "~@newaccount", "~@smoke" })
public class AnalyzeTest
{
}

Varsayılan olarak Salatalık, test paketi işlemek ve yönetmek için arka plan ve kanca gibi yerleşik bir çok işlevsellik sağlar. TestNG’deki gruplara benzer şekilde, Salatalıkta bir etiket altında bir grup test oluşturabilir ve yürütme sırasında bunları dahil etmeyi veya hariç tutmayı seçebiliriz.

Uçtan uca test

Endtoend.feature adlı bir özellik dosyası oluşturduk ve sıklıkla kullanılan iş akışlarını ve yeni bir kullanıcının ürünü nasıl kullanacağını içeren yaklaşık 20 senaryoyu belgeledik. Herhangi bir yeni kiralama için, bu Senaryoları elden geçirmek bir ürün dolaşımı olarak hareket eder. Onu serbest bırakma oturumumuzun temeli olarak kullanıyoruz.

katkı

Salatalık 60’dan fazla konuşulan dili destekleme yeteneğine sahiptir. Kullanıcı dostu bir araç olarak, geliştiricileri özellik dosyasına katkıda bulunmaya, senaryoları gözden geçirmeye ve eksik testleri belirlemeye teşvik etti.

Raporlama

Raporlama için Cucumber Reports Plugin’i jenkins işimize yükledik ve işi bir gece çalışmasına ekledik. Ekip ve paydaşlar arasında değerlendirilen düzgün bir tablo ve grafik rapor yayınlar. Aşağıda, geçilen bir test durumunun örneği verilmiştir:

İş Değeri ile Veri Analizi

Başarısız olması durumunda, bir ekran görüntüsü bağlantısı ekler ve aşağıda gösterilen başarısızlıktaki URL’yi ekler:

Değerli Veri Analizi

Özetle

Salatalık kullanıcı arayüzünün işlevsel testlerine dahil edilmesi, müşterilerimizin ürünü nasıl kullandığı hakkında daha geniş bir resim elde ettiğinizde genel işletme değerini artırdı. Özellik dosyaları, gereksinimler dondurulduktan sonra yazılır, böylece iş paydaşları erken bir aşamada geribildirim verebilir.

Test kodu bakımı düşük ve dağıtıldı, çünkü herkesin yeni bir özellik dosyası eklemek ya da mevcut bir dosyayı güncellemesi kolaydır. Sonuçta, ” kalite herkesin sorumluluğu !” Olduğunu unutmamalıyız.

Leave a Reply

Your email address will not be published. Required fields are marked *