Generating web service tests during behavior-driven development
Web servis testlerinin davranış-odaklı geliştirme esnasında üretilmesi
- Tez No: 445039
- Danışmanlar: YRD. DOÇ. DR. TOLGA OVATMAN
- Tez Türü: Yüksek Lisans
- Konular: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol, Computer Engineering and Computer Science and Control
- Anahtar Kelimeler: Belirtilmemiş.
- Yıl: 2016
- Dil: İngilizce
- Üniversite: İstanbul Teknik Üniversitesi
- Enstitü: Fen Bilimleri Enstitüsü
- Ana Bilim Dalı: Bilgisayar Mühendisliği Ana Bilim Dalı
- Bilim Dalı: Belirtilmemiş.
- Sayfa Sayısı: 89
Özet
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.
Özet (Çeviri)
A web service is a software solution for machine-to-machine communication over a network. Web services provide a very crucial role since a lot of applications work over the Web and interoperate with each other. Thus, web services are commonly used in exchanging data over the internet. Web services exchange data in a well formed format over the web. This format is generally XML (Extensible Markup Language) or sometimes JSON. Both XML and JSON documents contain structured data in a way which is both human-readable and machine-readable. The protocol used in exchanging data is HTTP (Hypertext Transfer Protocol). HTTP is the underlying World Wide Web protocol, which specifies the format and the transmission of the messages and defines the responsive actions of web servers and browsers. Trust is a big consideration during the design of a web service. As all software, a web service should work correctly every time it is executed. Tests and certification are the only ways to achieve such trust. It is best to apply different approaches to test a web service other than just from the client side execution. To fully test a web service, the following functionalities should be tested: Basic web service functionality, web service interoperability, SOA functionalities, quality of service and load/stress testing. Conformance and performance testing of web services may be achieved by the use of testing tools. Today, JMeter is one of the most accepted testing tools in software industry. By the use of this tool, test plans are created to run a variety of tests on software. The approach used in this work to test a web service is Behavior-Driven Development (BDD). Behavior-Driven Development (BDD) is a software development process, in which the requirements and the expected behavior of the system are specified in a human readable, ubiquitous language to be able to perform acceptance tests. This language is defined as a common language between developers and domain experts to understand business specifications. In BDD, the expected behavior of the system is defined before the actual development and unit testing stages. The most known example to such a language is Gherkin. Gherkin is a business readable, domain specific language created specifically for behavior descriptions. In this work, a new tool is presented to ease the creation of web service test scenarios and test software. The suggested tool uses the Behavior-Driven Development concept with the Gherkin language to generate JMeter test scripts dynamically. By doing this, several benefits are achieved. First benefit is; any domain expert without software knowledge can create and run web service tests, since Gherkin is a domain specific language. Second, unit tests are not written manually by developers, since the use of powerful testing tool JMeter. In addition, the time required to create and run the tests are greatly reduced for repetitive tests. It is believed that similar BDD testing approaches will become more popular in the near future.
Benzer Tezler
- Bilgiişlem ortamı sunan bulut hizmetlerinde kötücül davranışların saptanması
Classifying malicious behavior in paas services
CEMİLE DİLER ÖZDEMİR
Yüksek Lisans
Türkçe
2018
Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrolİstanbul Teknik ÜniversitesiBilgisayar Mühendisliği Ana Bilim Dalı
DR. ÖĞR. ÜYESİ YUSUF YASLAN
- Online mağazaların web sitelerine yönelik kalite faktörlerinin algılanan eğlenebilirlik ve online satın alma niyeti ile ilişkisi ve bir araştırma
The relationship between online stores' website quality factors and perceived playfulness and online purchase intention and a research
HATİCE MELİS AKA
- Instrument development to evaluate the usability of OTT platforms
OTT platformlarının kullanılabilirliğinin değerlendirilmesi için enstrüman geliştirme
MUHAMMED ÇAĞRI COŞKUN
Yüksek Lisans
İngilizce
2023
Endüstri ve Endüstri Mühendisliğiİstanbul Teknik ÜniversitesiEndüstri Mühendisliği Ana Bilim Dalı
DOÇ. DR. ÇİĞDEM ALTIN GÜMÜŞSOY
DR. ÖĞR. ÜYESİ AYCAN PEKPAZAR
- Teknoloji destekli öğrenme ortamlarında çoklu görev yapmanın öğrenmeye etkisi
The effects of multitasking on learning in technology enhanced learning environments
MUHTEREM DİNDAR
Doktora
Türkçe
2015
Eğitim ve ÖğretimAnadolu ÜniversitesiBilgisayar ve Öğretim Teknolojileri Eğitimi Ana Bilim Dalı
DOÇ. DR. YAVUZ AKBULUT
- Bulut üretim için endüstri 4.0'da bir kolektif farkındalık sistemi
A collective awareness system for cloud manufacturing in industry 4.0
GÖZDE KIRAN
Yüksek Lisans
Türkçe
2018
Endüstri ve Endüstri MühendisliğiHacettepe ÜniversitesiEndüstri Mühendisliği Ana Bilim Dalı
PROF. DR. MURAT CANER TESTİK