Ana içeriğe atla

Kayıtlar

Cypress Notlar -2

Cypress'te Sayfalar Arası İleri Geri Komutu Cypress'te sayfada ileri gitmek aşağıdaki gibi;  cy . go (- 1 ) cy . go ( "back" ) cy . go ( "forward" ) cy . go ( 1 )  Tek bir test dosyasıyla bütün testleri koşturma Cypress'te bütün testleri çalıştırmak için bir cy.js dosyası oluşturup test dosyalarının yolunu verebilirsin ve sadece o dosyayı çalıştırabilirsin. import "./demoBlazeLoginTest.cy" import "./demoBlazePom.cy" Terminal Scripti Oluşturma Testlerini komut satırından çalıştırmak için package.json dosyasına istediğin komutları ekleyebilirsin. Bunları tarayıcısız olarak da ekleyebilirsin (--headless) ile. Mavi renkli yere istediğini yazabilirsin. "scripts" : { "cy:run:chrome" : "cypress run --browser chrome" , "cy:run:firefox" : "cypress run --browser firefox" , "alltestsrun" : "npx cypress run cypress/e2e/runAllTests.cy.js" , "cypress:multi:...

Postman-1

API stands for Application Programming Interface. Sometimes it is also called Application Program Interface. An interface can be thought of as a contract because it defines a set of rules that must be followed in order for two entities to communicate or interact with each other. An API defines a set of rules and protocols for how one system can access and make use of the functionality and data provided by another system . A web API is a set of rules and protocols that define how two systems can communicate with each other over the internet. It allows one system (such as a server) to expose certain functionality or data to other systems (such as mobile application). Web APIs are typically accessed over HTTP or HTTPS, and they can use a variety of data formats (such as JSON or XML) to exchange information. They are often used to enable integrations between different systems, or to allow developers to build applications that interact with a web-based service or platform. The API docume...

Cypress Notlar-1

 Notlar npm (node package manager), javascript betik dili için geliştirilmiş olan ve Node.js'in standart olarak kabul ettiği bir paket yönetim sistemidir. npm komut satırından çalıştırılır ve uygulamalar için bağımlılık yönetimi sağlar.   npm'yi yükleyip cypress'i yüklemeyi tavsiye ediyorlar. Cypress'i yazdığınız kodun içine yükleyin. npm install -D cypress   Yüklendikten sonra cypress npx cypress open, cypress in test runner ını açıyor.    Cypress için hangi IDE'yi kullandığınız önemli değil ama genelde Visual Studio Code kullanılıyor.   Cypress la test yaparken güvenlikle alakalı hata alırsan cypress.json dosyasına aşağıdaki yazılır. { "chromeWebSecurity" = false }    Buraya hep aynı url ye gideceksen baseURL olarak tanımlama yapabilirsin. Açılacak tarayıcının boyutunu buradan ayarlayabilirsin.    Fixtures klasörüne kodunda kullanacağın sabit veriyi yazabilirsin. Yeni bir json dosyası oluşturup aşağıdaki gibi ekleyebilirsin. (swagla...

TestNG - Listeners

TestNG raporlarını ya da çıktılarını özelliştirmek için kullanılan bir interface. 12 tane listener bulunmakta. IAnnotationTransformer , IAnnotationTransformer2 , IConfigurable , IConfigurationListener , IExecutionListener, IHookable , IInvokedMethodListener , IInvokedMethodListener2 , IMethodInterceptor , IReporter, ISuiteListener, ITestListener Herhangi bir listener kullanılmak istenildiğinde, bunu yapmanın çoğunlukla kullanılan iki yolu vardır.  İlki; ilgili listener'ı implement edecek class'ı oluşturmak gerekir. Class'ın içine kullandığınız IDE ilgili listener'ın fonksiyonları getirir. Kullanmak istediklerinize kodunuzu eklersiniz. Daha sonra ise asıl test kodunuzun olduğu class koduna, class kısmından önce @Listeners(paketIsmi.listenerSınıfınınAdi.class) eklemesi yapmanız gerekir.   Diğeri ise, eğer bu listener'i birden fazla sınıf için kullanacaksanız bu yolu kullanmanız gerekir karışıklığı önlemek için, o da testng.xml'de önceki ma...

TestNG - Bağımlılık (Dependency)

Bazı durumlarda yazdığınız test kodunda birbirine bağımlı test metotları olabilir. TestNG, bu bağımlılıkları xml dosyanızda ya da kodunuzda belirtmenize (annotation ile) olanak sağlar. TestNG'de iki çeşit bağımlılık vardır: Hard dependency 'de testinizin bağımlı olduğu diğer testlerin hepsinin başarılı olması gerekir. Eğer bir tanesi bile başarısız olduysa bağımlı olan testler çalışmaz, atlanır.  Soft dependency 'de ise bağımlı olunan testlerden başarısız olan olsa bile diğer testler çalışır. Bu bağımlılık çeşidini kullanmak için @Test (alwaysRun=true) ifadesini eklemek gerekir. Aşağıda, Hard dependency'nin kodda belirtilmesine örnek kod bulunmaktadır. Hem metota bağımlılık hem gruba bağımlılık belirtilebilir. @Test public void serverStartedOk() {} @Test( dependsOnMethods = { "serverStartedOk" }) public void method1() {} Bu örnekte, method1() ,serverStartedOk() metoduna bağımlı olarak belirtilmiştir, bu durumda ilk serverStartedOk()...

Selenium - Paralel Execution

Paralel testte, farklı modülleri ya da uygulamaları aynı anda farklı tarayıcılarda çalıştırabiliriz. Seri çalıştırmaya göre testiniz daha kısa sürede koşacaktır. Testng.xml dosyasına paralel olarak çalıştıracağınız kısmı aşağıdaki örnekler gibi yazmalısınız. Thread-count ile test koşturumu için kaç tane thread'in çalışacağını belirtebilirsiniz. <suite name="..." parallel="methods" thread-count="5"> <suite name="..." parallel="tests" thread-count="5"> <suite name="..." parallel="classes" thread-count="5"> <suite name="..." parallel="instances" thread-count="5"> "methods": TestNG farklı thread'lerde bütün test metotlarını çalıştırır. Birbirine bağımlı testler ayrıca farklı threadlerde sıraya uygun olarak çalışır.  "tests": TestNG, xml de belirttiğiniz  <test> etiketindeki bütün metotları aynı threa...

TestNG - Gruplar

TestNG'deki grup özelliği istediğiniz fonksiyonları istediğiniz gruba ayırmanızı ya da toplamanızı sağlar. Bu özellik JUnit'de bulunmamaktadır.  Grup özelliğiyle istediğiniz gruptaki fonksiyonları çalıştırabilirsiniz. Grup içinde grup da tanımlayabilirsiniz.  Bu özelliği kullanabilmek için kendiniz aşağıdaki gibi bir xml dosyası oluşturmalısınız.  Kodu çalıştırırken de bu xml dosyasını koşturmanız gerekmektedir. <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">         <suite name="Suite">                     <test name="Demo">                              <groups>                                         <run>       ...

TestNG Groups - NullPointerException

Eğer TestNG grup özelliğini kullanırken xml'i çalıştırdığınızda NullPointerException alıyorsanız; setUp metodunuzdan önce kullandığınız grupları @BeforeGroups annotation ı ile tanımlayabilirsiniz. @BeforeGroups (groups ={"giris","dogrulama"}) gibi.

TestNG - Öncellikler

TestNG'de çalıştıracağınız kodda birbirine bağımlı @Test ler varsa öncelik kullanarak çalışacak testin sırasına karar verebilirsiniz. TestNG'de herhangi bir öncelik kullanmazsanız alfabetik sıraya göre testleri çalıştırır. @Test (priority=2) gibi bir öncelik ifadesi kullanırsanız, öncelik değeri düşük olandan koşturmaya başlar. Aynı öncelik değerine sahip iki test varsa, alfabetik olarak sıralamaya koyar ve testi koşturur. Koşturacağınız testte hem öncelik değeri olan hem de olmayan testler varsa; önce öncelik değeri olmayan testleri alfabetik sıraya göre daha sonra öncelik değeri düşük olandan başlayarak koşturur. Yine aynı öncelik değeri olan testleri alfabetik sırayla koşturur. TestNG'de büyük/küçük harf duyarlılığı olduğu için "priority" 'nin küçük yazılması gerekir yoksa hata verir. Örnek: Koşturacağımız testte iki grup olduğunu varsayalım. Testleri hem gruplara ayıralım hem öncelik verelim. TestNG'nin bu testleri çalıştırma sırası aşağıda...

TestNG - Notasyonlar (Annotations), Doğrulamalar (Assertions)

TestNG, JUnit ve NUnit kütüphanelerinden etkilenen ve onlara göre daha fazla yetkinlik barındıran bir test kütüphanesidir. TestNG ait özellikler ve kolaylıklar için şunları örnek verebiliriz: Notasyonlar (Annotations) Testlerin kendine has Thread’lerde koşabilmesi testng.xml dosyasıyla testlerin önceliklendirilmesi, gruplandırılması vb. kolaylıklar Kendi içerisinde loglama, raporlama desteği Notasyonlar sayesinde kodun ve oluşturulan raporun kolaylıkla anlaşılması @DataProvider notasyonu sayesinde veriye dayalı test desteği (Data Driven Test) Maven, Jenkins vb. ide ler için eklenti desteği Parametre desteği Notasyonlar: @Test Notasyonu Yazılan otomasyon kodunda test olarak çalışmasını istediğimiz kod parçasının önüne bu notasyonu ekleriz. Bu notasyonu birden fazla kez kullanabiliriz. Eğer herhangi bir parametre tanımlanmadıysa testler alfabetik olarak çalışır.  Aşağıdaki parametreler, hangi testin hangi sırayla çalışacağının, koşturulup koşturulmayacağın...

HttpUrlConnection ile Link Doğrulama - Selenium WebDriver

Burada web sayfasındaki bütün metin olarak belirtilen linkleri "a" etiketiyle listeye atıyoruz. Her link için Http isteği gönderip gelen http cevabına göre linkin kırık mı, boş mu, bu web sitesine ait mi vs. olduğunu yazdırıyoruz. Bu kodda HttpUrlConnection sınıfının openConnection yöntemini kullanıyoruz.  Burada "HEAD" kullanılmasının sebebi bütün sayfanın getirilmek istenmemesidir.     @Test     public void verifyLinks() {         String homepage = "http://sinemayk.blogspot.com/";         driver.get(homepage);         String url ="";         HttpURLConnection httpURLConnection = null;         List<WebElement> links = driver.findElements(By.tagName("a"));         Iterator<WebElement> it = links.iterator();         while(it.hasNext()){             url = it.next(...

Tooltips - Selenium WebDriver

Birçok web sayfasında, bazı bağlantıların, metinlerin veya bazen resimlerin üzerine gelindiğinde çıkan yazılara tooltips denir. Bu metin genellikle nesnenin işlevselliğinin kısa bir açıklamasıdır veya bazı durumlarda nesnenin ayrıntılı bir açıklamasını görüntüler. Birçok durumda, test yaparken bu metin açıklamasının beklendiği gibi görüntülenip görüntülenmediğini doğrulamak gerekir. Bu, tooltip'in HTML’e nasıl girdiğine bağlı olarak iki farklı yolla yapılabilir. Tooltip, Html kodunda, herhangi bir elementin ‘title’ bilgisi olarak kullanıldığında. Burada tooltip'in metnini getAttribute() yöntemiyle alabiliriz. Tooltip, Html kodunda, ‘div’de jquery ile mevcut olduğunda. Burada, Actions sınıf yöntemlerini kullanarak tooltip'in metnini alabiliriz.  Örnek: //Burada getAttribute yöntemiyle title olarak verilen tooltip metnini buluyoruz. @Test     public void toolTipStatik() throws InterruptedException{         driver.ge...

Desired Capabilities

Her test senaryosu, belirli bir test ortamında gerçekleştirilmelidir. Test ortamı bir web tarayıcısı, mobil cihaz, mobil emülatör, mobil simülatör vb. olabilir. Desired capabilities, test senaryomuzda hangi ortamı kullanacağımızı web sürücüsü olarak söylememize yardımcı olur. Desired capabilities, tarayıcının çalışma sırasındaki davranışını belirlemek için tarayıcı adı, tarayıcı sürümü, tarayıcı sürücüsünün sistemi vb. gibi tarayıcı özelliklerini saklayan bir anahtar / değer çifti dizisidir. Desired Capabilities, aşağıdaki gibi durumlarda daha çok kullanılır: Mobil uygulama otomasyonunda, tarayıcı özellikleri ve cihaz özellikleri ayarlamada, Selenyum Grid'de, test durumlarını farklı işletim sistemleri ve sürümleriyle farklı bir tarayıcıda çalıştırmak istediğimizde. Bazı Desired Capabilities yöntemleri: getBrowserName() setBrowserName() getVersion() setVersion() getPlatform() setPlatform() getCapabilityMethod() setCapabilityMethod() Methodların hepsi...

Selenium WebDriver - Dinamik Web Tablolarla Kod Örnekleri

Verisi sürekli değişen tablolarda XPath kullanılması gerekir. Bunu da tablonun satır ve sütun sayı bilgileriyle yapmak daha doğru olur. Tablo 1: Şirket Grup Kapanış Şimdiki Ücret % Değişim IL&FS Transportation A 337.4 66.5 + 5.4 GRUH Finance Li A 383.8 998.9 + 2.3 IDFC Bank A 351.4 715.9 + 5.1 YES Bank Ltd. A 697.9 669.3 + 3.2 IRB Infrastructure A 271 724.8 + 3.1 Escorts Ltd. A 113.4 890.3 + 5.1 Cox & Kings L A 867 900.8 + 5.5 Bharat Electroni A 176.5 849 + 7.5 Nestle India A 64.8 187.3 + 7.6 Cox & Kings L A 749.4 729.5 + 9.5 JK Tyre & Industries A 687 601.4 + 6 Navin Fluorine Inter A 416.7 865.3 + 8.9 NIIT Technologies A 966.9 117.2 + 9.4 DCB Bank A 853.2 760.2 + 2.4 UCO Bank A 358 719.6 + 9 Coffee Day Enterpris A 53.8 538.6 + 4.1 Kirloskar Oil Engine A 134.1 102.8 + 7.7 Repco Home Finance L A 96.2 449.9 + 8.9 Ajanta Pharma Lt A 161.3 838 + 4.4 CESC Ltd. A 817 490.5 + 4.7 JaiprakashAssociates A 247.3 961.1 + 7.1 Vakrangee A 888.3 652.9 ...