Graph Walker ile Model Tabanlı Test

Ismail Ozturk
Fiba Tech Lab
3 min readAug 23, 2021

--

İşlevsel testler, testciler olarak çok fazla zamanımızı alır. Bu süreyi mümkün olduğunca azaltmak için farklı yaklaşımlar kullanmaya çalışıyoruz.

Model tabanlı testler daha etkili olmamıza nasıl yardımcı olabilir?

Bu soruyu cevaplamak için önce genel olarak model tabanlı testin ne olduğunu görelim.

Model tabanlı test, yazılım testi veya sistem testi gerçekleştirmek için yapay yapıların tasarlanması ve isteğe bağlı olarak yürütülmesi için model tabanlı tasarımın bir uygulamasıdır. Modeller, test edilen bir sistemin (SUT) istenen davranışını temsil etmek veya test stratejilerini ve bir test ortamını temsil etmek için kullanılabilir.

Test Neden Model Tabanlı Olmalıdır?

Test, sorun arama problemi olarak görülebilir. Trilyonlarca hataya ulaşacak, onları tetikleyecek ve yayacak o birkaç girdi ve durum kombinasyonunu arıyoruz. Bu ölçekte kaba kuvvet etkisizdir. Ortalığı kurcalayarak test etmek, yersiz güvene yol açan bir zaman kaybıdır.

Bunun yerine, çalışmalarımız sistematik, odaklanmış ve otomatik olmalıdır.

Kaynak koddaki kusurları ortaya çıkarmak bazen çok zor olabilir. Başarımızı artırmak için önce insan hataları, yazılım kusurları ve yazılım hataları arasındaki bağlantıyı anlamalıyız.

Model nedir?

* Model, sistem davranışının açıklamasıdır.

* Modeller tanımladıkları sistemden daha basittir.

* Modeller, sistemin davranışını anlamamıza ve tahmin etmemize yardımcı olur.

Modelin Elemanları

* Konu

  • Bir modelin iyi tanımlanmış bir konusu olmalıdır.

* Bakış açısı

  • Bir model, ilgili konuların ve bilgilerin belirlenmesine rehberlik edebilecek bir referans çerçevesine ve ilkelere dayanmalıdır.

* Temsil/Gösterim

  • Bir modelleme tekniği, bir modeli ifade etmek için bir araca sahip olmalıdır

* Teknik

  • Modeller, karmaşık yapıtlardır ve modelleyici konuların becerileridir.

Yönlendirilmiş Grafik nedir?

Yönlendirilmiş grafik (veya digraf), kenarların kendileriyle ilişkili bir yöne sahip olduğu, kenarlarla birbirine bağlanan bir dizi köşe olan bir grafiktir.

GraphWalker

GraphWalker, test otomasyonu için açık kaynaklı bir Model tabanlı test aracıdır.

Yönlendirilmiş grafikler kullanarak testlerinizi tasarlamayı kolaylaştırmak için hazırlanmıştır.

Graphwalker Model Örneği

Olabilecek tüm olası olayları/durumları düşünelim

Graphwalker Proje

Şimdi maven projesi oluşturma zamanı öncesinde gerekli isterleri paylaşalım.

Ön koşullar:

* JDK 8 +

* Apache Maven 3.5+

* InteliJ IDE

<dependency>

<groupId>org.graphwalker</groupId>

<artifactId>graphwalker-core</artifactId>

<version>4.3.1</version>

</dependency>

Uygulanabilir arayüz oluşturmak için terminalde aşağıdaki komutu yazıyoruz.

mvn graphwalker:generate-sources

Bu komutu yazdıktan sonra graphwalker bize kullanacağımız bir akış diyagramı oluşturmaktadır.

Örneğin, bu uygulamanın e_StartBrowser edge:

WebDriver driver = null;

public void e_StartBrowser() {

driver = new FirefoxDriver();

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

driver.get(“http://fibabanka.com.tr");

}

Model Tabanlı Testin Faydaları

* Kolay test durumu bakımı

* Erken hata tespiti

* Artan hata sayısı

* Zaman tasarrufu

* Web/Mobil/Web Servisleri için kullanılabilir

Model Tabanlı Testin Önündeki Engeller

* Konfor faktörü

* Beceri setleri

* Tasarım yapabilecek test uzmanlarına ihtiyacınız vardır

* Beklentiler

* Farklı metrikler

Kaynaklar:

https://graphwalker.github.io/

https://github.com/GraphWalker/graphwalker-project/wiki

https://groups.google.com/g/graphwalker

--

--