Web servis testlerinin davranış-odaklı geliştirme esnasında üretilmesi
Is this your thesis?
This record came from a bulk archive import. If it’s yours, link it to your profile.
Abstract (TR)
Web servis, bir ağ üzerinden makineler arası iletişimi sağlayan bir yazılım çözümüdür. Web üzerinde birçok uygulama web servisler aracılığıyla birbirine entegre olur. Bu sebeple web servisler kritik önem taşır. Web servisler günümüzde internet üzerinden veri alışverişi amacıyla sıkça kullanılmaktadır. Web servisler web üzerinde veri alışverişini yaparken standart bir format kullanırlar. Bu format genellikle XML (Extensible Markup Language) ya da JSON olarak geçer. XML ve JSON dokümanları hem insanlar hem de makineler tarafından okunabilir yapıda veri tutarlar. Veri alışverişinde kullanılan protokol HTTP (Hypertext Transfer Protocol) olarak geçer. HTTP web'in altyapısını oluşturur, mesajların formatını ve iletişim şeklini belirler ve web sunucuları ve tarayıcıların bu mesajlara karşı nasıl davranması gerektiğini inceler. Web servis tasarımı sırasında dikkate alınması gereken konulardan biri de güvendir. Tüm yazılım ürünleri gibi, web servisler de denemelerin tamamında doğru çalışmalıdır. Bunu garanti etmenin tek yolu ise test ve sertifikasyondan geçer. Bir web servisi yalnızca kullanıcı tarafından test etmek yerine, farklı yaklaşımlar uygulamak çok daha iyidir. Bir web servisin tam anlamıyla test edilmesi için şu fonksiyonlar test edilmelidir: temel web servis fonksiyonları, web servislerin birbiriyle entegre olabilmesi, Servis-Odaklı Mimari özellikleri, servis kalitesi ve yük testleri. Yazılım testinin iki ayrı amacı vardır. İlki, yazılımın gereksinimleri karşılayıp karşılamadığını anlamak, ikincisi ise yazılım içerisinde davranışı kabul edilemez kısımların keşfedilmesini sağlamaktır. Sistemdeki herhangi bir yanlış davranış çoğu zaman çok büyük masraflar çıkarabilir, hatta ender durumlarda hayat kaybına sebebiyet verebilir. Örneğin; ameliyat yapan robotlardaki ya da vinç Operasyon yazılımındaki bir hata, can kaybıyla sonuçlanabilir. Bu sebeple yazılımların doğrulanması çok önemlidir. Yazılımlardaki hataların bulunması ise ancak testler ile sağlanabilir. Yazılım testlerinin yapılması amacıyla farklı yaklaşımlar geliştirilmiştir. Bu yaklaşımlardan en standart olan, geleneksel yazılım test süreci dört aşamadan oluşmaktadır. Bu aşamalar sırasıyla şunlardır: test olaylarının oluşturulması, test verilerinin hazırlanması, programın test verilerinin kullanarak çalıştırılması ve test sonuçlarının, test olaylarıyla kıyaslanması. Yazılım geliştirme ve testlerinde kullanılan bir başka popüler yaklaşım ise Test Odaklı Geliştirme (Test Driven Development) yöntemidir. Geleneksel yazılım testlerinde, yazılım geliştirme süreci tamamlandıktan sonra testler yapılır. Test Odaklı Geliştirme yönteminde ise testler, kod yazılmaya başlamadan oluşturulur. Bu süreç üç aşamada gerçekleşir. İlk olarak yazılımcılar, yazılacak yeni bir fonksiyon ya da güncellenecek bir işlem için başlangıçta başarısız olacak bir test hazırlarlar. Daha sonra, bu testin başarıyla sonuçlanması için gereken minimal tutarda kod yazılır. Son olarak da eğer tüm testler başarılı oluyorsa, kodda üretim ortamında çalışacak halde gerekli düzenlemeler yapılır. Test Odaklı Geliştirme yöntemi genelde hız ve sonuç odaklı çözümlerin etkili olduğu geliştirme ortamlarında tercih edilir. Yazılım geliştirme süreçlerinden bir başkası da Davranış Odaklı Geliştirme (Behavior Driven Development) yöntemidir. Davranış Odaklı Geliştirme, Test Odaklı Geliştirme yönteminden türemiştir. Davranış Odaklı Geliştirme, sistem gereksinimlerini ve sistemin beklenen davranışını, herkes tarafından anlaşılabilir bir dille belirterek yazılım kabul testlerini tamamlama sürecidir. Bu dil, yazılımcılar ve ilgili uzman kişiler arasında ortak kabul görür ve iş gereksinimlerinin belirtilmesi amacıyla kullanılır. Davranış Odaklı Geliştirme'de, sistemin beklenen davranışı, asıl geliştirmeden ve birim testlerinden önce tanımlanır. Kabul testleri sırasında, sistem gereksinimleri, testler ve kod tekrar düzenlenebilir. Sonuç olarak yazılımla ilgisi olmayan, ilgili alan uzmanları da yazılım geliştirme sürecine katılmış olur ve yazılım testlere göre geliştirilirken, testler de sistem gereksinimlerine göre geliştirilmiş olur. Davranış Odaklı Geliştirme sürecinin, Test Odaklı geliştirme sürecinden temel farkı, Davranış Odaklı Geliştirme yönteminin alana özgü bir dil kullanarak testleri tanımlamasıdır. Test Odaklı Geliştirme yöntemiyle tanımlanan testler, aynı zamanda ortak bir dil kullanarak sistemin beklenen davranışını da tanımlamalıdır. Kullanılan bu ortak dil, yanlış anlaşılmaların önüne geçmek amacıyla, mümkün olduğunca minimize edilmiştir. Bu sayede alanın uzmanları, iş birimleri, yazılımcılar, testçiler ve analistler aynı seviyede buluşur. Davranış Odaklı Geliştirme sürecinde kullanılan iş okunaklı, alana özgü ortak dillere verilebilecek en genel örnek Gherkin dilidir. Gherkin dilinin kullanımı, Davranış Odaklı Geliştirme sürecinde olduça önem taşır. Örneğin; ilk aşamada analiz yapılarak sistemin tüm gereksinimleri elde edilir. Daha sonra yazılacak olan kabul testleri, sistemin beklenen davranışı test edecek şekilde yazılmalıdır. Bu davranış Gherkin dilinde, ilgili alanın uzmanı kişiler tarafından belirtilir. İlgili uzman kişilerin sürece dahil olmasıyla da, birim testler yazılımcılar tarafından oldukça kolay bir şekilde yazılabilir. Web servislerin uygunluk ve performans testleri, test araçları kullanılarak yapılabilir. Günümüzde yazılım endüstrisi tarafından kabul gören test araçlarının başında JMeter gelir. Bu aracı kullanarak test planları oluşturulabilir ve yazılım üzerinde çeşitli testler yapılabilir. İstenilen testi elde etmek için, JMeter arayüzü aracılığıyla bir test planı oluşturulmalıdır. Her test planı bir JMeter scripti olarak kaydedilir (xml). Bu test planları birden fazla sayıda süreç, http istekleri, servis yanıt validasyonları ve grafikleri, database sorguları vb. içerebilir. Test planları hazırlandıktan sonra arayüz aracılığıyla veya bir terminal komutuyla çalıştırılabilir. Test sonrası sonuçlar, test planına eklenen dinleyici araçlar sayesinde izlenebilir. Bu çalışmada, web servis test senaryolarının ve test yazılımlarının oluşturulması kolaylaştırmak amacıyla bir araç sunulmuştur. Tavsiye edilen araç, Gherkin dilini ve Davranış-Odaklı Geliştirme prensibini kullanarak, JMeter test senaryolarını dinamik olarak üretir. Bunun çeşitli faydaları olmuştur. İlk olarak, Gherkin'in alana özgü bir dil olması sayesinde, yazılım bilgisi olmayan herhangi bir alan uzmanı web servis test senaryoları oluşturup, çalıştırabilir. İkincil olarak, güçlü test aracı JMeter kullanıldığı için, yazılımcıların birim testleri kendilerinin oluşturmasına ihtiyaç kalmaz. Ek olarak, özellikle tekrarlanan testler için test senaryolarını oluşturmak ve çalıştırmak için gerekli süre oldukça kısalır. JMeter test planlarının oluşturulmasında Gherkin dili ve bir konfigurasyon dosyası kullanılmıştır. Bunu elde etmek amacıyla, uygun Gherkin ifadesini ve konfigurasyon dosyasını girdi olarak alan ve çıktı olarak JMeter test planı üreten bir Gherkin işleme aracı geliştirilmiştir. Konfigurasyon dosyası, web servis yöntemleri hakkında teknik bilgileri içeren basit bir xml dosyasıdır. Bu bilgiler; yöntem adı, web servis adresi, web servis operasyonu, web servis girdi xml'i, paralel işlem sayısı, sonuç validasyonları, çağrıda kullanılacak parametreler, veritabanı konfigurasyonu ve veritabanı sorgularından oluşur. Sonuç olarak; konfigurasyon dosyası web servis hakkındaki teknik bilgileri içerirken, Gherkin ifadesi de test senaryolarını içerir. Testlerde elde edilen sonuçlar sırasıyla şu sorulara cevap verebilir: web servisin çalışır durumda olup olmadığı, web servisin beklene süre içerisinde yanıt verip vermediği ve web servis'ten alınan yanıtın beklenen şekilde olup olmadığı. Bu çalışmada önerilen araç kullanılarak tüm performans ve konformans testleri farklı parametre ve değerlerle kolay bir şekilde tekrarlanabilir. Bu sayede, farklı testler oluşturmak için harcanan efor oldukça düşürülmüştür. Aynı zamanda Gherkin dilini kullanarak farklı performans ve konformans testlerinin oluşturulması, çalıştırılması ve sonuçlarının görüntülenmesi aynı arayüz üzerinden yapılmıştır. Bu da kullanım kolaylığı sağlamıştır. Yine bu testlerin hazırlanma süresi, JMeter kullanılarak elle hazırlanma süresine kıyasla oldukça düşüktür. Bu da önerilen aracın efektif olduğunu göstermektedir. Bu çalışmanın sonucu olarak, web servis testlerinin oluşturulmasını kolaylaştırmak amacıyla yeni bir araç sunulmuştur. Önerilen araç, Davranış Odaklı Geliştirme yöntemini, Gherkin dilinin gücüyle birlikte kullanarak web servis testlerinin daha kolay ve efektif bir şekilde hazırlanmasına olanak sağlamıştır. Çalışmanın sağladığı faydaların başında, Gherkin dilinin alana özgü bir dil olması sebebiyle, yazılım bilgisi olmayan ilgili alan uzmanlarının da web servis testleri oluşturup çalıştırabilmesi gelmektedir. İkincil olarak, JMeter kullanılması sebebiyle, yazılımcıların ayrı bir test yazılımı geliştirmesine gerek kalmamıştır. Ek olarak, tekrarlı testlerin oluşturulması için gereken süre ve efor minimize edilmiştir. Benzer Davranış Odaklı Geliştirme yöntemini kullanan test yaklaşımlarının yakın gelecekte oldukça artması beklenmektedir.
Author
Ahmet Furkan Oruç
Institution
How to Cite
Ahmet Furkan Oruç (Yüksek Lisans Tezi). Web servis testlerinin davranış-odaklı geliştirme esnasında üretilmesi, 2016, İstanbul Technical University.
Keywords
License
Tüm Hakları Saklıdır
This work is shared under the specified license terms.
More theses from İstanbul Technical University
- Investigation Of Stretching Effect With Mixed Finite Element Formulations For Laminated Beams And Plates(2023)
- Moebius elektrolizi anot çamurlarından platin grubu metallerin uzaklaştırılması ve geri kazanımı(2015)
- Metrolarda yangın güvenlik önlemleri(2015)
- Birincil ve ikincil kaynaklardan farklı yöntemlerle altın ve gümüş kazanımı(2015)
- Bir eylem/eğlen[ce] laboratuvarı olarak fun palace: Mekansal deneyim açılımları ve yansımaları(2015)
- Dynamic analysis of adaptive aircraft wings modelled as thin-walled composite beams(2015)
