CPE 310 SOFTWARE ENGINEERING_ week_13_Automated Testing

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 20

CPE 310 SOFTWARE ENGINEERING

Spring Semester-2021
Dr. Nesrin AYDIN ATASOY
Week 12: Automated Testing

Automated tests use software to perform tasks without the manual instruction of a tester.

In manual testing, the tester will write the code they want to execute or plan the software
path they want to check is working properly. Automated tests take care of such things on the
testers behalf. Here’s a quick list of automated software and QA tools that QA analysts
should know:

 Selenium
 Cucumber
 Katalon Studio

1. Selenium

Selenium, Web uygulamalarının testini otomatikleştirmek için kullanılan açık kaynaklı, esnek
yapıya sahip olan bir kütüphanedir. Selenium test komut dosyaları Java, Python, C# ve daha
pek çok farklı programlama dillerinde yazılabilir. Bu test komut dosyaları Chrome, Safari,
Firefox, Opera gibi çeşitli tarayıcılarda çalışabilir ve ayrıca Windows, Mac OS, Linux, Solaris
gibi çeşitli platformları da destekler.

Selenium ana olarak, test amaçlı web uygulamalarını otomatikleştirmek içindir, ancak
kesinlikle bununla sınırlı değildir. Seçtiğiniz bir tarayıcıyı açmanıza ve bir insanın yapacağı
gibi görevleri gerçekleştirmenize olanak tanır. Örneğin:
 Butonlara tıklama
 Formlara girme
 Web sayfalarda belirli bilgileri arama
 Gerekli verileri çekme
Şunu unutmamak gerekir ki Selenium gibi kütüphaneler ile veri kazıma, çoğu sitenin hizmet
şartlarına aykırı bir davranıştır. Çok sık veya kötü niyetli şekilde veri çekerseniz, IP adresiniz
o web sayfasından yasaklanabilir.

1.1. Selenium Araçları Nedir?

 Selenium IDE

Selenium IDE (Entegre Geliştirme Ortamı) bir Firefox eklentisidir. Selenium Suite’teki en
basit çerçevelerden biridir. Komut dosyalarını kaydetmemizi ve oynatmamızı sağlar.
Selenium IDE’yi kullanarak komut dosyaları oluşturmak, daha gelişmiş ve sağlam
test senaryoları yazmak istiyorsanız Selenium RC veya Selenium WebDriver kullanmanız
gerekir.

http://docs.seleniumhq.org/download/ linkine tıklayarak indirebilirsiniz.


Selenium IDE’nin özellikleri şöyledir:

 Normal bir kullanıcı gibi davranıp işlemleri ona göre yapıyor ve kaydediyor.
 Fonksiyonel testler yazmak için kullanılabilir.
 Firefox plug-in’i olarak çalışmaktadır.
 Bir çok dil desteği mevcut (Java, .NET, Python, Ruby, PHP,Perl)
 Selenium’un open source olması sayesinde bir çok platformda (Windows, Linux, IOS)
herhangi bir sorun yaşamadan çalışmaktadır.
 Bir çok dil desteği ve platform desteği sayesinde diğer test araçlarına göre daha çok
tercih edilmektedir. (UFT, QTP)

 Selenium RC

Selenium RC farklı programlama dillerinde web uygulaması testi yazmak için


geliştirilmiştir.Herhangi bir HTTP web sitesine karşı web uygulamaları için UI testlerini
otomatikleştirmek için bir QA veya bir geliştiricinin herhangi bir programlama dilinde test
senaryoları yazmasını sağlayan bir test çerçevesidir. Selenium RC, uygulamalarınız için daha
güçlü bir test paketinin cevabıdır. İstemci kitaplıklarının sunucu tarafından kontrol edilen bir
tarayıcıda testler yürütmesine izin veren bir istemci / sunucu modelini takip eder.Günümüzde
ise Selenium RC resmi olarak kullanımdan kaldırılmıştır.
 Selenium WebDriver

Selenium WebDriver, komutları kabul eden ve bunları bir tarayıcıya gönderen bir tarayıcı
otomasyon çerçevesidir. Tarayıcıya özgü bir sürücü aracılığıyla uygulanır. Doğrudan
tarayıcıyla iletişim kurar ve onu kontrol eder. Selenium WebDriver, Java, C#, PHP, Perl ve
JavaScript gibi çeşitli programlama dillerini destekler.
Örneğin test edeceğiniz bir sitenin en alt sayfasında bulunan yorum formunun çalışıp
çalışmadığını test etmeniz gerekiyor. Bunun için ilk olarak siteye gireriz ve bir sonraki
adımda scroll ile sayfanın en alt kısmında bulunan yorum formunun bulunduğu kısma
geliriz.Ama Selenium bize scroll işlemini kod çıktısı olarak verememektedir. Burada
WebDriver’ın özgürlükçü yapısı devreye girmektedir. WebDriver elementlerini kullanarak
test caselerimizi daha çalışılabilir ve kontrolünü sağlayabilir hale getirebilmemizi sağlıyor.

 Selenium Grid

Selenium Grid, Selenium RC ile birlikte kullanılan bir araçtır. Farklı makinelerde, farklı
tarayıcılara paralel olarak testler yapmak için kullanılır.
Selenium’un geliştirmiş olduğu ve geliştirmesi devam eden Selenium-Grid farklı sunucular

üzerinde farklı browserlar ile paralel bir şekilde çalıştırmaktadır. Buradaki asıl amaç farklı

işletim sistemi, donanım, cihaz gibi kombinasyonlar üzerinde test sonuçlarını görmek, dağıtık

ortamda paralel olarak test süreçlerini yürütmek ve test sonuçlarını hızlıca almaktır. Bu testler

paralel olarak çalıştığında süre olarak ciddi bir zaman kazancı gözükmektedir.

Selenium Hub ve Node yapısını kullanarak testlerini yapmaktadır.

Hub: Selenium’da kullanılan Hub tek bir tane olmak koşuluyla çalışmaktadır. Sunucu gibi

davranan bu yapı kendi üzerinde bir çok işlemi barındırarak farklı istemcilerden gelen

istekleri yanıtlayarak aynı kodu farklı platformlarda ve browserlarda test edebilirsiniz.

Node: Hub’a bağlı olan bir veya biden fazla istemciden oluşan yapıya node denir. Node’lar

ile selenium-grid kullanarak bir çok Node’tan tek bir Hub’a istekte bulunarak test

yapabilirsiniz.

1.2. Web Uygulamaları Test Yöntemleri

Web uygulama testleri, 8 farklı yöntem ile incelenebilmektedir:

• Fonksiyonel Test

• Oturum ve Çerez Testi

• Veritabanı Testi

• Arabirim Testi

• Kullanılabilirlik Testi

• Uyumluluk Testi,

• Performans Testi
• Güvenlik Testi

1. Fonksiyonel Test

Şekil 1 : Fonksiyonel Test

Sayfalardan diğer sayfalara giden bağlantı kontrolleri: Doğru sayfaya gidildiğinden veya

yönlendirildiğinden emin olunmalıdır. Bu şekilde ölü bir sayfa veya geçersiz yönlendirme

olmadığından emin olunabilmektedir.

Aynı sayfa üzerindeki bağlantılar: Sayfadaki bağlantılar tek tek kontrol edilmelidir. Varsa

e-posta linkleri, web formları da atlanmamalıdır.


Şekil 2 : URL / Link Testi

Homework: Selenium WebDriver ile Unit Test gerçekleştiriniz.

2. Cucumber

Cucumber is a widely used tool for Behaviour Driven Development because it provides an
easily understandable testing script for system acceptance and automation testing.

BDD (Behavioral Driven Development) is a software development approach that was


developed from Test Driven Development (TDD).

BDD includes test case development in the form of simple English statements inside a feature
file, which is human-generated. Test case statements are based on the system's behavior and
more user-focused.
BDD is written in simple English language statements rather than a typical programming
language, which improves the communication between technical and non-technical teams and
stakeholders.

In other words, "Cucumber is a software tool used by the testers to develop test cases for the
testing of behavior of the software."

Cucumber tool plays a vital role in the development of acceptance test cases for automation
testing. It is mainly used to write acceptance tests for web applications as per the behavior of
their functionalities.

In the Cucumber testing, the test cases are written in a simple English text, which anybody
can understand without any technical knowledge. This simple English text is called
the Gherkin language.

It allows business analysts, developers, testers, etc. to automate functional verification and
validation in an easily readable and understandable format (e.g., plain English).
We can use Cucumber along with Watir, Selenium, and Capybara, etc. It supports many other
languages like PHP, Net, Python, Perl, etc.

Uygulama kullanımı yukarıda ki resimde de anlaşılacağı üzerine iki kısımdan oluşmaktadır.


Bunlar; Features ve Glue Code’dır. Farklı bir programlama diline de kolayca
dönüştürülebilmektedir. Ayrıca Cucumber Terminolojisinde aşağıda yer alan başlıklara da yer
verilmektedir.

 Feature kısmında bir davranış tanımlıyoruz (örn : uygulama


Feature :
için ana sayfayı görüntüle, sayfanın yüklendiğine kullanıcı olarak emin
ol, ana sayfayı görmek istiyorum vb.)
 Scenario: feature kısmında yer alan isterimiz için uygun olan
senaryomuzu oluşturuyoruz.
 Given-When-Then : Given, ön koşul durumunu
tanımlar, When olayı Then ise when anahtar kelimesinde yer alan
olayı sonuçlandırır.
 And
 But

Şekil 3. Cucumber ile Behaviour Driven Development (BDD) – Örnek Senaryo

2.1. Cucumber ile BDD Testi

Testler neredeyse düz metin olarak yazılmış uygulama kullanım


senaryolarının Feature ve Scenario cümlelerinin Java ya da başka dillere
ait platformlarda koşulabilir birim testlere kolayca
dönüştürülebilmesidir. Uygulama senaryolarının ve feature dosyalarının
yazılması ve okunması için herhangi bir kodlama bilgisine gerek
duyulmamaktadır. Böylece, iş analistleri, domain uzmanları da testlerin
kapsamını ve sınırlarını belirlemek üzere featureları okuduklarında
kolaylıkla anlayabilmektedirler.
Peki Cucumber ile Behaviour driven development yöntemi nasıl
gerçekleşir?

1. Test edilecek kodun beklenen davranışı düz metin olarak


yazılır.
2. Testi gerçekleştirecek olan birkaç Step definition yazılır.
3. Teste tabi olacak kod yazılır.
4. Test çalıştırılır.

Cucumber test otomasyonu anlamında browser’ı ekrandan kontrol


etme gibi olanak sağlamıyor, bu tarz ihtiyaçlar için selenium web driver
gibi araçlardan faydalanmak gerekiyor.
Example:
Test senaryoları Feature ile başlar ve test edilecek senaryo isminin Scenario tarafında
belirtilmesi ile devam edilir. Ardından alt başlıklar ile Given, When, Then gibi
komutlar kullanılarak aşamalar yazılmaya devam eder.
Burada yukarıda bahsettiğimiz gibi bir sign up senaryosu (Cucumber Feature and
Scenario steps.) üzerinde ruby dilinde yazılmış bir test uygulamasından bahsedeceğiz.

İlk olarak testi, localimizde çalışan uygulamamıza yönlendiriyoruz daha sonra test
süresince tıklanacak olan linkler ve bunlara göre yönlendirilecek sayfaların url’lerini
veriyoruz.
Son olarak sign-in işlemi için gerekli olan email ve password validation işlemleri
yapılarak, sistemimizde olan forma gerekli bilgiler girilerek, senaryonun test edilmesi
sağlanmış olur.

 BDD Faydaları

Normalde bir proje yönetim süreci şu şekilde yürür;

 Planlama
 Tasarım
 Geliştirme
 Test
 Teslim

Bu yöntemde sorun olarak, Planlama evresinden Tasarım evresine kadar olan süreçte
müşteri ile iletişim kurmak problemdir. Sonuçta müşteriye kod okutamazsınız. Bu
yüzden arada bir BA (Business Analyst) kişisi olması gerekir.

BDD ile birlikte süreçte ufak bir yerdeğiştirme var;

 Planlama
 Tasarım
 Test
 Geliştirme
 Teslim

BDD, bu yer değiştirmeyle sağladığı fayda BA (Business Analyst) tarafından


oluşturulmuş hikayeler(story) üzerinden BDD senaryoları oluşturmak ve bu senaryolar
üzerinden müşteri ile ilişki kurmak daha kolay hale gelir.

Yukarıdaki şekilde görmüş olduğumuz Agile methodundan bahsedecek olursak Agile,


kullanıcıyı sürece dahil etmektedir. Agile, kullanıcıyla birlikte tüm organizasyon ve
sistemlerini müşteriye göre ayarlamaktadır.

“ Agile methodolojisi ile iş yapıyorsanız ve uygulama testi için BDD kullanmıyorsanız


kendinizle çelişiyorsunuzdur. ”
Tabii ki test sadece burada anlatıldığı gibi davranışların takibi değil, aynı zamanda
arka planda çalışan tüm unitlerin hem tekil (unit-testing) hem de
beraber (integration-testing) çalışmasının test edilmesi de olabilir.

3. Katalon
Katalon Platform is an automation testing software tool developed by Katalon, Inc. The
software is built on top of the open-source automation frameworks Selenium, Appium with a
specialized IDE interface for web, API, mobile and desktop application testing. Its initial
release for internal use was in January 2015. Its first public release was in September 2016. In
2018, the software acquired 9% of market penetration for UI test automation, according to
The State of Testing 2018 Report by SmartBear.

Katalon is recognized as a March 2019 and March 2020 Gartner Peer Insights Customers’
Choice for Software Test Automation.
Web, Mobil ve Desktop(latest version 7.0) uygulamalarınızı test
edebilir, bunun yanısıra backend servislerinizin test otomasyon
süreçlerinizde kullanabilirsiniz. Böylece tek bir platformda test
süreçlerinizi hibrit bir şekilde yönetebilirsiniz. Hazırlamış olduğunuz
scriptleri kolayca CI/CD süreçlerinize entegre edebilirsiniz böylelikle
yazılım kalite süreçlerinizi otomatize edebilirsiniz.

 Java tabanlı bir uygulamadır.


 Ek bir script yazılmadan hazırlanmış scriptler Chrome, Firefox,
Safari, Edge gibi birçok tarayıcıda ayrı ayrı yada aynı anda
çalıştırılabilmektedir.
 Record&Play özelliği sayesinde script yazma konusunda bilgi
sahibi olmadan da süreçler kolayca hazılanabilmektedir.
 Slack entegrasyonu ile gerçek zamanlı geri bildirim ve ekip
üyeleri arasında iletişim sağlanabilmektedir.
 Source control için git entegrasyonunu enable edebilirsiniz.
 Herhangi bir kurulum yapmadan çalıştırma dosyasını
çalıştırarak uygulamayı başlatabilir, içinde bulunan keywordler
ile hızlıca kullanmaya başlayabilirsiniz.
( https://katalon.com/download)
 Birçok özelliği ücretsiz olup yeni versionlarında ücretli
özellikleride kullanılmaya başlanmıştır.
 Katalon Studio,built-in keywords, custom keywords, objects
spying and recording ve kod sürecinizi kolaylaştıran code
refactoring gibi çok sayıda yardımcı programdan oluşmaktadır.

 Test bakımını iyileştirmeyi ve kod tekrarını ortadan kaldırmayı


hedefleyen Page Object Model (POM) tasarım modeli ile
çalışmaktadır.
 Web otomasyonu için arkaplanda selenium kütüphanesini,
mobil otomasyonu için ise appium kütüphanesini
kullanmaktadır.
 Test dataları için CSV dosyası, excel dosyası, ilişkisel database
gibi harici kaynaklardan gelen verileri sorgulayabilen bir data
file object sunar.
 Katalon Studio .feature uzantılı dosyalar ile BDD test yeteneği
sunar.
 Katalon Studio, testleri tamamen bulutta yürütmek ve
sonuçları otomatik olarak Katalon Analytics’e sunmak için Grid
— TestOps Cloud kullanıyor. Katalon Analytics, kullanıcılara
test executionları hakkında ayrıntılı dashboardlar ve raporlar
sunan yapay zeka destekli bir platformdur.

KAYNAKLAR
2. https://www.mobilhanem.com/web-uygulama-testleri-nelerdir/
3. https://teknoloji.org/selenium-kutuphanesi-nedir-nasil-kullanilir/
4. https://medium.com/@ilkebasalak/selenium-nedir-8c7d908c93e6
5. https://cucumber.io/
6. https://www.javatpoint.com/cucumber-testing
7. http://www.defnesarlioglu.com/cucumber-ile-behaviour-driven-development/
8. https://www.linkedin.com/pulse/cucumber-ile-behaviour-driven-development-bdd-
halil-bozan/?originalSubdomain=tr

You might also like