Selenyum Otomasyon Testleri Yazmak İçin En İyi 10 Uygulama
Yayınlanan: 2023-04-26Selenium otomasyon testleri, yazılım geliştirme yaşam döngüsünün çok önemli bir parçasıdır ve uygulamaların işlevsel, güvenilir ve hatasız olmasını sağlamaya yardımcı olur. Selenium otomasyon testinden en iyi şekilde yararlanmak için, test betiklerinizin kalitesini ve etkililiğini sağlayan en iyi uygulamaları takip etmeniz çok önemlidir.
Selenyum Otomasyon Testleri Yazmak İçin En İyi Uygulamalar
1. Sayfa Nesne Modeli (POM) tasarım modelini kullanın
Sayfa Nesne Modeli (POM), Selenium'da otomatik testler oluşturma ve sürdürme sürecini basitleştiren güçlü bir tasarım modelidir. POM, tüm web öğelerini depolamak için bir nesne deposu oluşturmayı içerir ve kod tekrarını azaltmaya yardımcı olarak testlerin bakımını kolaylaştırır.
Bir uygulamanın her web sayfası, POM'da bir sınıf dosyası olarak kabul edilir. Bu sınıf dosyaları, yalnızca ilgili web sayfası öğelerini içerir ve test uzmanlarının test edilen web sitesinde işlemler gerçekleştirmesine olanak tanır. Bu, geliştirilmiş test durumu bakımıyla sonuçlanır ve hataları azaltır. POM'un bir başka avantajı da kodun yeniden kullanılabilirliğidir. Her ekran bağımsız olduğundan ve kendi Java dosyasına sahip olduğundan, test uzmanları test kodunu bir ekran için kullanabilir ve başka bir test durumunda yeniden kullanabilir, bu da zamandan ve emekten tasarruf sağlar.
Betiklerin okunabilirliği ve güvenilirliği de POM ile geliştirilmiştir. Her ekranın kendi Java dosyası vardır, test uzmanlarının dosyada gezinerek belirli bir ekranda gerçekleştirilen eylemleri hızlı bir şekilde tanımlamasına olanak tanır. Belirli bir kod bölümünde değişiklik yapılması gerekiyorsa, diğer dosyaları etkilemeden verimli bir şekilde yapılabilir.
2. Sabit kodlama bekleme süreleri yerine bekleme yöntemlerini kullanın
Selenyum otomasyon testlerini yazarken dikkate alınması gereken en önemli faktörlerden biri testin zamanlamasıdır. Test çok hızlı yürütülürse, yüklenmeden önce sayfadaki web öğeleriyle etkileşime giremeyebilir. Öte yandan, test çok uzun süre beklerse test paketinin yürütme süresini yavaşlatarak gecikmelere ve kaynak israfına neden olabilir.
Bu sorunu çözmek için, testlerinizde sabit bekleme süreleri yerine bekleme yöntemlerinin kullanılması önerilir. Selenium, bir sonraki eylemi gerçekleştirmeden önce sayfa öğelerinin yüklenmesini beklemek için kullanılabilecek birkaç yerleşik bekleme yöntemi sağlar. Selenium tarafından sağlanan en yaygın üç bekleme yöntemi Örtülü Bekleme, Açık Bekleme ve Akıcı Bekleme'dir. Bu yöntemlerin her birinin kendine özgü özellikleri ve kullanım durumları vardır.
Örtülü Bekleme: Örtük Bekleme yöntemi, web sürücüsüne bir istisna atmadan önce bir web öğesinin yüklenmesi için belirli bir süre beklemesini söyler. Bu bekleme yöntemi, komut dosyasındaki tüm web öğelerine uygulanır ve tüm oturum için bir kez ayarlanır. Bu, web sürücüsünün sayfadaki herhangi bir web öğesiyle etkileşime geçmeden önce belirtilen süreyi bekleyeceği anlamına gelir.
Örtülü Bekleme, web sitesinin web öğeleri için tutarlı bir yükleme süresine sahip olduğu durumlarda iyi bir seçenektir. Ancak, web sitesinin tutarsız yükleme süreleri olduğunda gereksiz gecikmelere neden olabileceğinden etkili olmayabilir.
Açık Bekleme: Açık Bekleme yöntemi, web sürücüsünün bir sonraki eylemi gerçekleştirmeden önce belirli bir web öğesinin yüklenmesini beklemesine olanak tanır. Bu bekleme yöntemi, komut dosyasındaki belirli web öğelerine uygulanarak bekleme süresi üzerinde daha ayrıntılı kontrol sağlar.
Açık Bekleme, web sitesindeki web öğeleri için tutarsız yükleme sürelerine sahip olduğunda kullanışlıdır. Açık Bekleme'yi kullanarak, test uzmanları belirli bir web öğesi için belirli bir bekleme süresi belirleyebilir ve komut dosyasının o öğe yüklenene kadar devam etmemesini sağlayabilir.
Akıcı Bekleme: Akıcı Bekleme yöntemi, Açık Beklemeye benzer, ancak test edicinin yoklama aralığının yanı sıra bir maksimum bekleme süresi tanımlamasına olanak tanır. Fluent Wait yöntemi, web öğesini belirtilen aralıkta yoklayarak belirtilen maksimum süreyi bekleyecektir. Bu bekleme yöntemi, web sitesinde tutarsız yükleme süreleri olduğunda ve test cihazının bekleme süresi üzerinde daha fazla kontrole ihtiyacı olduğunda kullanışlıdır.
Selenium otomasyon testlerinde bekleme yöntemlerinin kullanılması, web öğelerinin bir sonraki eylemi gerçekleştirmeden önce yüklenmesini sağlayarak testlerin daha güvenilir olmasına yardımcı olabilir. Gereksiz gecikmelerden kaçınarak test paketinin genel yürütme süresini azaltmaya da yardımcı olabilir. Kullanım durumunuz için uygun bekleme yöntemini seçerek testlerinizin verimli ve etkili bir şekilde yürütülmesini sağlayabilirsiniz.
3. Açıklayıcı test yöntemi adları kullanın
Açıklayıcı test yöntemi adları, Selenyum otomasyon testleri yazmanın önemli bir yönüdür. Bu adlar, her testin neyi test ettiğine dair net ve öz bir anlayış sağlayarak geliştiricilerin ve testçilerin testin amacını anlamasını kolaylaştırır.
Tanımlayıcı test yöntemi adlarının kullanılması, testlerin okunabilir ve bakımının kolay olmasını sağlamak açısından çok önemlidir. Test yöntemi adı, girdi verileri ve beklenen sonuç dahil olmak üzere testin ne yaptığını doğru bir şekilde tanımlamalıdır. Bu, hangi testlerin başarısız olduğunu ve nelerin düzeltilmesi gerektiğini belirlemeyi kolaylaştırır.
Örneğin, bir web sitesinin oturum açma işlevini kontrol eden bir test durumu düşünün. Test yöntemini "test1" veya "loginTest" olarak adlandırmak yerine, "testLoginWithValidCredentials" gibi açıklayıcı bir ad kullanılması önerilir. Bu ad, testin oturum açma işlevini geçerli kimlik bilgileriyle kontrol ettiğini açıkça gösterir.
4. Anlamlı iddialar kullanın
İddialar, bir testin beklenen sonuçlarının gerçek sonuçlarla eşleştiğini doğrulayarak Selenium otomasyon testinde kritik bir rol oynar. Başka bir deyişle, test edilen uygulamanın beklendiği gibi çalıştığını doğrulamak için iddialar kullanılır. Selenyum otomasyon testleri yazarken, testleri daha anlamlı ve güvenilir kılmak için anlamlı iddialar kullanmak önemlidir. Selenium'da kullanılan iki yaygın iddia, iddiaEquals ve iddiaTrue'dur.
iddiaEquals iddiası, bir testin beklenen değerini uygulama tarafından döndürülen gerçek değerle karşılaştırır. Örneğin, test bir web sayfasının başlığının doğru olup olmadığını kontrol ediyorsa, iddia şu şekilde yazılabilir: assertEquals(“Beklenen Sayfa Başlığı”, driver.getTitle()). Bu iddia, beklenen sayfa başlığını sürücü tarafından döndürülen gerçek sayfa başlığıyla karşılaştırır ve aynı değilse test başarısız olur.
AssertTrue iddiası, bir koşulun doğru olduğunu doğrular. Bu iddia, bir sayfada bir web öğesinin varlığını doğrulamak veya belirli bir eylemin başarıyla gerçekleştirilip gerçekleştirilmediğini kontrol etmek için kullanılabilir. Örneğin, test bir web sayfasındaki bir düğmenin etkinleştirilip etkinleştirilmediğini kontrol ediyorsa, onaylama şu şekilde yazılabilir: assertTrue(driver.findElement(By.id(“button-id”)).isEnabled()). Bu onaylama, düğmenin etkin olup olmadığını kontrol edecek ve etkin değilse test başarısız olacaktır.
Selenyum otomasyon testlerinde anlamlı iddialar kullanmak, testlerin güvenilir sonuçlar vermesini sağlamak için çok önemlidir. Anlamlı iddialar, sorunları tanımlamaya ve uygulamanın beklenen sonuçlarının gerçek sonuçlarla tutarlı olmasını sağlamaya yardımcı olur.
5. TestNG veya JUnit test çerçevelerini kullanın
TestNG ve JUnit test çerçeveleri, Selenium otomasyon test dünyasında yaygın olarak kullanılmaktadır. Bu çerçeveler, test uzmanlarının yazılım uygulamalarının işlevselliğini ve davranışını doğrulayan otomatikleştirilmiş testler oluşturmasına ve yürütmesine olanak tanır. TestNG, JUnit üzerinden veriye dayalı testler gerçekleştirme, testleri gruplama, parametreleştirme ve testlerin paralel yürütülmesi gibi ek özellikler sağlar. Ayrıca, test uzmanlarının birden çok test sınıfını birlikte gruplandırmasına ve çalıştırmasına olanak tanıyan bir test paketleri konsepti de vardır.
JUnit, TestNG'ye kıyasla daha basittir ve birim testine odaklanır. Birim testleri yazmak ve çalıştırmak için kullanılan ek açıklamalar, iddialar ve test yürütücüleri gibi özellikler sağlar. Hem TestNG hem de JUnit, her test yönteminden önce ve sonra çalıştırılan test fikstürlerini veya kurulum ve sökme yöntemlerini destekleyerek testlerin yalıtılmış olarak yürütülmesini sağlar.
6. Veriye dayalı testi kullanın
Veriye dayalı test, aynı test senaryosunun farklı test verileri kümeleriyle birden çok kez yürütüldüğü bir yazılım test tekniğidir. Bu yaklaşım, bir uygulamanın çeşitli girdilerle doğru şekilde çalışmasını sağlamaya yardımcı olur ve aksi takdirde fark edilmeyebilecek hataların veya kusurların ortaya çıkarılmasına yardımcı olabilir.
Veriye dayalı testte, test uzmanları, belirli bir uygulama özelliğini veya işlevini test etmek için kullanılacak, hem geçerli hem de geçersiz verileri içeren bir dizi test verisi oluşturur. Veriler bir dosyada veya veritabanında saklanabilir ve çalışma zamanında test komut dosyaları tarafından erişilebilir. Test betikleri, test veri kümesini kullanarak farklı girdilerle aynı adım kümesini yürütmek üzere tasarlanmıştır. Her test çalışmasının çıktısı daha sonra beklenen sonuçla karşılaştırılır ve herhangi bir fark veya hata kusur olarak kaydedilir.
Veriye dayalı test, test kapsamının iyileştirilmesine yardımcı olur, testleri yazmak ve yürütmek için gereken süreyi azaltır ve test komut dosyalarının bakımını kolaylaştırır. Özellikle büyük miktarda veri girişi gerektiren uygulamaları test ederken veya giriş verilerine karşı oldukça hassas olan uygulamaları test ederken kullanışlıdır.
7. Testleriniz için sürüm kontrolünü kullanın
Sürüm kontrolü, zaman içinde dosyalarda yapılan değişiklikleri izleyen, geliştiricilerin ve test uzmanlarının kodu ve diğer dosyaları etkili bir şekilde yönetmesine ve bunlar üzerinde işbirliği yapmasına olanak tanıyan bir sistemdir. Selenium test otomasyonu söz konusu olduğunda, test betiklerindeki değişiklikleri yönetmek ve test paketinin geçmişini izlemek için sürüm kontrolü zorunlu hale gelir.
Git, en popüler sürüm kontrol sistemlerinden biridir ve yazılım geliştirme endüstrisinde yaygın olarak kullanılmaktadır. Test uzmanlarının, ana kod tabanını veya test paketini etkilemeden yeni test özellikleri veya hata düzeltmeleri üzerinde çalışacak dallar oluşturmasına olanak tanır. Değişiklikler tamamlandıktan sonra, test uzmanları dallarını tekrar ana kod tabanında birleştirerek, değişikliklerin yayınlanmadan önce entegre edilmesini ve test edilmesini sağlayabilir.
Git gibi sürüm kontrol sistemleri, test uzmanlarının test otomasyonu projelerinde etkili bir şekilde işbirliği yapmasına da olanak tanır. Test kullanıcıları, farklı dalları kullanarak ve değişikliklerini merkezi bir depoda birleştirerek, çakışmaları önleyerek veya diğer değişikliklerin üzerine yazarak, test paketinin farklı bölümlerinde aynı anda çalışabilir.
8. Testlerinizi bağımsız tutun
Testleri bağımsız tutmak, test otomasyonunda kritik bir ilkedir. Bağımsız testler, her test senaryosunun ayrı ayrı yürütülmesini ve bir testin sonuçlarının başka bir testin sonuçlarını etkilememesini sağlar. Bu, test paketinde hata ayıklamayı ve bakımını kolaylaştırır ve test sonuçlarının güvenilirliğini ve doğruluğunu sağlar.
Testler bağımsız olmadığında, hangi testin başarısızlığa neden olduğunu belirlemek zorlaşır. Başarısızlık, test ortamını veya verileri etkileyen önceki bir testteki bir hatadan kaynaklanıyor olabilir. Bu, gereksiz hata ayıklama çabalarına ve artan bakım çabalarına yol açabilir. Testleri bağımsız tutmak için test uzmanları, her test senaryosunun bağımsız olduğundan ve diğer testlerin sonuçlarına dayanmadığından emin olmalıdır.
Test uzmanları ayrıca, diğer testler tarafından değiştirilebilecek önceden tanımlanmış verilere güvenmek yerine kurulum ve ayırma yöntemlerini kullanarak test verilerini dinamik olarak oluşturmalıdır. Diğer bir temel uygulama, harici sistemler veya veritabanları gibi test ortamına bağımlılıklardan kaçınmaktır. Test uzmanları, harici sistemlerin davranışını simüle etmek için sahte nesneleri veya taslakları kullanabilir ve testlerin tutarlı ve ortamdan bağımsız olarak yürütülmesini sağlar.
9. Testlerinizi açıklamak için yorumları kullanın
Testleri açıklamak için yorumları kullanmak, test otomasyonunda iyi bir uygulamadır. Yorumlar, belirli bir testin ne yaptığını, neden var olduğunu ve testle ilgili diğer bilgileri açıklayan, koda eklenen notlardır. Test uzmanları, testlerde yorumları kullanarak diğer ekip üyelerinin testin amacını, varsayımlarını ve beklenen sonuçlarını kolayca anlamasını sağlayabilir. Bu, özellikle ekip üyelerinin gelecekte test komut dosyalarını sürdürmesi veya değiştirmesi gerektiğinde önemlidir.
Yorumlar, belirli bir test senaryosunun arkasındaki mantığı veya neden belirli bir yaklaşımın benimsendiğini açıklamak için kullanılabilir. Testte kullanılan test verileri için bağlam sağlamak veya belirli test bağımlılıklarını veya gerekliliklerini vurgulamak için de kullanılabilirler. Test kullanıcıları, testlere yapı ve okunabilirlik sağlayan tutarlı bir yorum stili kullanabilir. Örneğin, test kullanıcıları, test senaryosuna genel bir bakış sağlamak için bir başlık yorumu ve ardından testte atılan belirli adımları açıklayan yorumlar kullanabilir.
10. Kod kalitesi araçlarını kullanın
Test komut dosyalarının bakım yapılabilir, okunabilir ve kodlama standartlarına uygun olmasını sağlamak için test otomasyonunda kod kalitesi araçları çok önemlidir. SonarQube ve CodeClimate, test komut dosyaları da dahil olmak üzere kodun kalitesini analiz etmek ve değerlendirmek için kullanılabilen iki popüler kod kalitesi aracıdır.
SonarQube, kod kalitesini analiz eden ve kod hataları ve güvenlik açıkları gibi sorunlar hakkında raporlar sağlayan web tabanlı bir araçtır. Ayrıca kod kapsamı ve çoğaltma hakkında bilgi sağlayarak, test uzmanlarının test paketinin iyileştirilmesi gereken alanlarını belirlemesine olanak tanır.
CodeClimate, kod kalitesi ve sürdürülebilirliği hakkında bilgi sağlayan başka bir araçtır. Kod stilini, karmaşıklığı ve sürdürülebilirliği analiz eder ve kod kalitesini iyileştirmek için geri bildirim sağlar. CodeClimate ayrıca Git gibi sürüm kontrol sistemleriyle entegre olarak değişiklikleri izlemeyi ve kod kalitesi üzerindeki etkisini izlemeyi kolaylaştırır.
Çözüm
Selenyum otomasyon testleri yazmaya yönelik en iyi uygulamaları takip etmek, test takımınızın kalitesini, güvenilirliğini ve etkinliğini sağlamak için çok önemlidir. Test uzmanları, yukarıda tartışılan uygulamaları uygulayarak, uygulamanın işlevselliği hakkında doğru ve değerli geri bildirim sağlayan, bakımı yapılabilir, yeniden kullanılabilir ve kolay anlaşılır test komut dosyaları oluşturabilir.
LambdaTest, Selenium otomasyon testinin önemini anlar ve test uzmanlarının Selenium otomasyon testlerini ölçeklenebilir, güvenli ve güvenilir bir altyapı üzerinde yürütmesine olanak tanıyan bulut tabanlı bir test platformu sağlar. LambdaTest, tarayıcılar arası test, otomatikleştirilmiş ekran görüntüleri ve hata ayıklama araçları dahil olmak üzere çok çeşitli özellikler sunarak yüksek kaliteli Selenium otomasyon testleri oluşturmayı ve yürütmeyi kolaylaştırır.