Test Mühendisliğine Giriş Eğitimi - Bölüm 1Mesut Günes
ISTQB ve ISEB Foundation level gibi "Test Uzmanlığı" ile ilgili yapılan sınavlara hazırlık olarak tüketilecek dökümandır. Ayrıca yazılım test mühendisliği ile ilgili bilgi edinmek isteyenlerin okuyabileceği Türkçe kaynaktır.
Test Mühendisliğine Giriş Eğitimi - Bölüm 2Mesut Günes
ISTQB ve ISEB Foundation level gibi "Test Uzmanlığı" ile ilgili yapılan sınavlara hazırlık olarak tüketilecek dökümandır. Ayrıca yazılım test mühendisliği ile ilgili bilgi edinmek isteyenlerin okuyabileceği Türkçe kaynaktır.
Yazılım Ürünü, yazılım tasarımı, modelleme nedir?
Tasarım kalıpları nedir, tarihçesi,
Yazılım Kalitesi, Kötü Tasarım Belirtileri
Yazılım Tasarım prensipleri,
Kohezyon (Cohesion), Ayrıştırma (Decomposition), Fonksiyonel Ayrıştırma, Zayıf Bağlaşım Prensibi (Low Coupling Principle),
Single REsponsibility Principle
Bölüm 1: Giriş (Introduction)
Bölüm 2: Hata Ne Zaman Tespit Edilebilir? (When Can a Defect be Detected?)
Bölüm 3: Hata Raporu Alanları (Defect Report Fields)
Bölüm 4: Hata Sınıflandırma ( Defect Classification)
Bölüm 5: Kök Neden (Ana Neden) Analizi (Root Cause Analysis)
Bölüm 6: Soru Örnekleri
Test Mühendisliğine Giriş Eğitimi - Bölüm 1Mesut Günes
ISTQB ve ISEB Foundation level gibi "Test Uzmanlığı" ile ilgili yapılan sınavlara hazırlık olarak tüketilecek dökümandır. Ayrıca yazılım test mühendisliği ile ilgili bilgi edinmek isteyenlerin okuyabileceği Türkçe kaynaktır.
Test Mühendisliğine Giriş Eğitimi - Bölüm 2Mesut Günes
ISTQB ve ISEB Foundation level gibi "Test Uzmanlığı" ile ilgili yapılan sınavlara hazırlık olarak tüketilecek dökümandır. Ayrıca yazılım test mühendisliği ile ilgili bilgi edinmek isteyenlerin okuyabileceği Türkçe kaynaktır.
Yazılım Ürünü, yazılım tasarımı, modelleme nedir?
Tasarım kalıpları nedir, tarihçesi,
Yazılım Kalitesi, Kötü Tasarım Belirtileri
Yazılım Tasarım prensipleri,
Kohezyon (Cohesion), Ayrıştırma (Decomposition), Fonksiyonel Ayrıştırma, Zayıf Bağlaşım Prensibi (Low Coupling Principle),
Single REsponsibility Principle
Bölüm 1: Giriş (Introduction)
Bölüm 2: Hata Ne Zaman Tespit Edilebilir? (When Can a Defect be Detected?)
Bölüm 3: Hata Raporu Alanları (Defect Report Fields)
Bölüm 4: Hata Sınıflandırma ( Defect Classification)
Bölüm 5: Kök Neden (Ana Neden) Analizi (Root Cause Analysis)
Bölüm 6: Soru Örnekleri
Vengono affrontate e discusse le caratteristiche principali dell'illuminismo nella cultura italiana, attraverso tre dei suoi più grandi rappresentanti: Carlo Goldoni, Vittorio Alfieri e Giuseppe Parini
Yazılım Güvenliği Yönetimi Eğitimimiz aşağıdaki konu başlıklarını içermektedir:
Güvenli Yazılım Geliştirme Modelleri
-TOUCHPOINTS
-Secure Development Lifecycle (Microsoft)
-CLASP (Comprehensive, Lightweight Application Security Process)
Risk Yönetimi
Güvenlik Gereksinim Analizi
Teknik Riskler
Sızma Testi ve Statik Kod Analizi
Güvenlik Operasyonu
Sge Technology (SGE Teknoloji Tanıtım Sunumu)SGE Technology
Bize göre dünyada yaygın olan mega trendler gelişmenin küresel, sürekli ve makro ekonomik güçleridir. İşletmeleri, ekonomiyi, toplumu ve kültürleri ya da kişisel yaşamları etkileyerek geleceğin dünyasını ve artan değişimini tanımlarlar. Teknolojinin bizim ilgilendiğimiz kısmındaki en önemli megatrendler:
1- Smart (akıllı) şehirler ve smart altyapı
2- Smart bulutlar: bulut bilişimden sonraki trendler
3- Sanal dünya
4- IOT ile beraber tüketici elektroniğinin geleceği
5- Geleceğin geniş bant uygulamaları
6- Geleceğin inovatif teknolojileri
7- E-mobilite
Bu trendlere baktığımızda “tamam, bunlar çok tanıdık” diye düşünebilirsiniz , tabii ki trend oldukları için çok tanıdık gelecekler. Biz, bu trendlerin kurumların inovasyon için duyulan ihtiyacı harekete geçirmede nasıl bir araya geldiklerini anlamanın çok önemli olduğunu düşünüyoruz. Bu trendlere en büyük işletmelerin bile ileriye gitmede başarılı olmak için uyum sağlamak zorunda olduğunu biliyor ve çalışmalarımızı bunun üzerine yürütüyoruz. .
E-ticarette Yazılım ve Altyapı
Startup Heroes, Developers
We Made IT Possible
Software and Hardware Help Desk Saving %40 Time for IT teams
Hazır Yazılım Deri ceket gibidir, hep birşeylerin ekliğini hisedersin.
Before going down Proactive Monitoring
‘Mükemmel iyinin düşmanıdır’, Voltaire
‘Engineering is nothing but optimization’
Yazılım, yaşayan bir organizmadır... İhmale gelmez.
In IT Complete Solution means, Agile Swat Teams
Silk Test Framework Kurulumu ve Yazılım Test Otomasyon Mimarisine GirişBurak AVCI, MEM, PSM I®
Silk Test Framework Kurulumu ve Yazılım Test Otomasyon Mimarisine Giriş
Yazılım Test Otomasyonu son yılların popüler konularından biri olup piyasada hem ücretsiz Open Source, hemde ücretli ama Trial versiyonu olan birçok Framework mimarisini kendi lokal bilgisayarınıza kurarak ürünlerinizin testlerini otomatik hale getirebilirsiniz. Bu yazıyı yazma sebeplerimden biride Yazılım Test Otomasyonu konusuna meraklı kişilerin kişisel bilgisayarlarında tek başlarına bu işe nasıl başlayacağını ve otomasyon mantığını anlatmaktır.
Gartner EEE - Yazılım Geliştirme - SoftTech Deneyimleri
Sunum tdd
1. Test Driven Development
Test Driven Development Nedir ?
TDD'nin Tercih Edilmeme Nedenleri ?
TDD Zaman Kullanımı
TDD'nin Maddi Acidan Tercih Edilmeme Nedeni ?
TDD'nin Bize Getirileri
TDD'nin Cesitleri
2. Test Driven Development
Nedir ?
Test Driven Development diğer adlarıyla Test First Development, Test Driven Design olarak
anılmaktadır. İlk olarak Extreme Programming (XP) yazılım sürecinin oluşturucusu üstad Kent
Beck tarafından ortaya atılmıştır.Extreme programming(XP) ve günümüzdeki birçok Agile(çevik)
modern yazılım geliştirme süreçlerinin kodlama bakımından bel kemiğini oluşturmaktadır.
Test Driven Development’ın dışarıdan adını ilk duyduğunuzda geliştirdiğiniz yazılımı test etme ile
ya da yazılım ekibindeki Tester arkadaşlarla alakalı olduğunu düşünebilirsiniz fakat gerçekte
geliştirilmiş yazılımı test etmekten ziyade onu geliştirirken kullanılan yöntemidir. Kısaca
tanımlarsak kodu yazmadan önce testlerini yazıyoruz ardından bu testleri geçecek kodu
yazıyoruz.TDD bu şekilde devam eden bir yazılım geliştirme yöntemidir.Bu testleri kim yazacak?
Tabi ki kodu geliştiren yazılımcılar yani biz. Yeni bir fonksiyon ya da geliştirmeyi tanımlamak için
fail eden otomatik test yazma tekniği büyük ya da küçük birçok firmanın sundukları servislerin
kalitesini arttırmak ve geliştirme yapmak için mükemmel yöntemlerden biridir.
3. TDD'nin Tercih Edilmeme
Nedenleri
Test kodu yazmak genelde gereksiz, çok zaman alan, maliyetli ve
öğrenmesi/uygulaması zor olarak görülür. Bu yüzden bir çok kişi/şirket
TDD’den kaçınmayı tercih ediyor. Aslında düşünüldüğünde, TDD
uygulandığında az önce saydığım etkenlerden uzun vadede daha karlı
çıkılacağı artık bilinmeyen birşey değil.
Günümüzde kurumsal projelerin büyük bir bölümü geleneksel yazılım metotları ile
gerçekleştirilmektedir. Müşteri gereksinimleri en son detayına kadar kağıda döküldükten sonra,
programcılar dokumente edilen gereksinimler doğrultusunda yazılımı gerçekleştirmektedirler. Eğer
proje bütçesi yeterli ise, yazılım süreci sona erdikten sonra testler hazırlanarak, yazılım sistemi tes
edilmektedir. çoğu zaman hiçbir unit testin yapılmadığı sistemlerin firmalar tarafından kritik iş
alanlarında kullanıldığını görmek mümkündür. Bu tür yazılım sistemlerinde oluşan hatalar (Bug)
firmanın sunduğu hizmetleri kısıtlamakta ve en kötü ihtimalle firmanın para kaybetmesine sebep
olmaktadır
4. TDD Zaman Kullanimi
''TDD bize zaman kaybettiriyor. Deadline’a yetişmesi
gereken bir sürü iş var.''
Bu anti-TDD’cinin en önemli savunma mekanizmasıdır.
Kendisi bir konuda haklıdır. TDD ile yazdığınız kodun 2-3
katı kadar (belki daha çok) test kodu yazarsınız. Ancak
gözden kaçırdığı ise, kendisinin sadece günü kurtardığıdır.
Yazdığınız kodda değişiklik yaptığınızda diğer parçaların
hala beklenen bir şekilde çalıştığından emin olabilir misiniz?
TDD ile olabilirsiniz. Çünkü her bir birimin kendine özgü testi
vardır. Kod değiştiğinde tek yapmanız gereken daha
önceden hazır olan testleri bir kez daha çalıştırmak. Kısa
vadede günü kurtarıyorsunuz, ancak yazılımınız belki yıllarca
çalışacak.
5. TDD'nin Maddi Acidan Tercih
Edilmeme Nedeni ?
Geleneksel tarzda oluşturulan yazılım sistemlerinde oluşan hataları gidermek çok
pahalıya mal olabilmektedir, çünkü yazılım bittikten sonra tespit edilen hatalar
yazılım sistemindeki tasarım açıklarını gözler önüne serebilir ve bu gibi kardinal
hataların ortadan kaldırılması ya imkansız yada çok zor olabilir. Bunun yanı sıra
yazılım sona erdikten sonra oluşturulan testlerin test kapsama alanı geniş olmadığı
için kodun bazı bölümleri test edilememekte ve böylece hata tespiti zorlaşmaktadır.
Bu şekilde yazılım esnasında ortaya çıkmayan hatalar, daha sonra sistem
kullanıcıları tarafından keşfedilmektedirler. Bu aşamada geç kalınmıştır: ya sistem
çalışmaz durumdadır, yada sistem kullanıcısı istediği işlemi doğru olarak
gerçekleştirememiştir. Durumu kısaca şöyle özetleyebiliriz: “yazılım sistemi
müşterinin gereksinimlerini tatmin edecek kaliteye sahip değildir”.
Ne yazık ki birçok firma için kullandıkları yazılım sistemlerindeki kalite problemleri
firmaya zarar verici durumdadır. Bu kalite problemleri bir taraftan oluşan sistem
hataları, diğer taraftan kodun bakımı ve geliştirilmesinin zor olmasından
kaynaklanmaktadır. Oluşan sistem hataları firmanın giderlerini artırmakta ve yazılım
sisteminin istikrarsız ve güvenilmez olmasına sebep vermektedir. Bu sorunların
temelinde test konseptlerinin bir yazılım sistemi için hayat sigortası olduğunun
anlaşılamamış olması yatmaktadır
6. TDD'nin Bize Getirileri Maddeler Halinde Sunlardir;
●
Sadece ilgili birim testlerin yapılarak kodun güvenli hale getirilmesi.
● Kod tasarımından kaynaklanabilecek problemlerin ortadan kaldırılması.
●
Testlerin bir bütün haline getirilerek, geriye dönük testlerin sürecin önemli bir parçası haline getirilmesi.
● Yeni eklenen kodlar, ya da değiştirilen kodlarda mevcut kodların işlevlerinin bozulmaması.
●
Kodların güvenli ortamda nesneye yönelik tasarı mimarisine uygun üretilmesini azami ölçüde
kolaylaştırması.
●
Kodların dokümantasyon yerine, test senaryolarından daha kolay anlaşılabilir olması.
● Sağlanan güvenli ortam sayesinde, refactoring işlemlerinin güvenli hale getirilmesi.
●
Bug oluşması ihtimalinin azaltılması.
● Her an live ortama geçilebilecek kodların çıkarılması.
●
Gereksiz kod kalabalığının ortadan kaldırılması.
● Test ekibinin gerçek test işlemlerine odaklanmasının sağlanması.
● Proaktif çalışma sayesinde, sıkıcı bir geliştirme ortamı yerine, eğlenceli ve güvenli bir ortamda
motivasyonu yüksek ekiplerin oluşturulabilmesi.
7. TDD'nin Cesitleri
Unit Testing (Birim Testler)
Bir yazılımın her bir biriminin kendine özgü testler ile dışa bağımlı olmadan test edilmesi
anlamına geliyor. Yani bir kullanıcı login mekanizmasını test ediyorsanız, veritabanı ve
cookielere bağlı olmadan kodunuzun beklendiği aşamaları kaydedip kaydetmediğinize
bakıyorsunuz.
Functional Testing (Fonksiyon Testi)
Adından da anlaşılabileceği üzere, bir işlevin gerektiği gibi çalışıp çalışmadığını test
etmemize yarıyor. Az önce unit testte veritabanı ve cookie’ye bağlı olmadan login
mekanizmasını test etmiştik. Functional testler ile veritabanı ile bağlantıya geçtiğinde
gerçekten doğru bir şekilde login olup cookieleri doğru bir şekilde kaydedip
kaydetmediğini de test ediyoruz.
8. Tümleyim Testi (Integration Testing) : Bir uygulamanın farklı bileşenlerinin beraberce
uyum içinde çalışıp çalışmadığını sınamak için yapılan bir testtir. Bileşenler, modüller,
bağımsız uygulamalar, istemci/sunucu uygulamaları biçiminde olabilirler. Bu tür testlere,
özellikle istemci/sunucu uygulamaları ve dağıtık sistemlerin testinde başvurulmaktadır.
Bunun yanısıra uygulamaya yeni işlevsel elemanlar ya da program modülleri eklendikçe
sürekli test edilmesi işlemine de “Artımsal Tümleyim Testi” adı verilir. Test uzmanları
ve/veya programcılar tarafından gerçekleştirilen testlerdir.
Regresyon Testi (Regression Testing) : Uygulamada ve uygulama ortamlarında
gerekli değişiklikler ve sabitlemeler yapıldıktan sonra yeniden yapılan testlere çekilme
(regresyon) testi denilir. Böylece, önceki testlerde belirlenen sorunların giderildiğinden ve
yeni hatalar oluşmadığından emin olunur. Uygulamanın kaç kez yeniden test edilmesi
gerektiğini belirlemek güçtür ve bu nedenle, özellikle uygulama geliştirme döneminin
sonlarına doğru yapılır.
Zorlanım – Performans Testi (Performance Testing) : Bu test, çoğu kez "yük testi" ile
aynı anlamda kullanılmaktadır. Aynı zamanda, beklenmedik (normal olmayan) ağır
yükler, belirli eylemler ve taleplerin çok fazla artışı, çok yoğun sayısal işlemler, çok
karmaşık sorgulamalar vb. ağır koşullar altında olan bir sistemin işlevsellik testi (iş
yapabilme testi) olarak da tanımlanabilmektedir. Bir web sitesi için sistem tepkisinin
hangi noktada azaldığı veya yanıt veremez olduğunu belirlemek için yapılan testler,
performans testine örnek teşkil edebilir.
9. Kullanıcı Kabul Testi (User Acceptance Testing) : Son kullanıcı veya müşteri
siparişine (veya isteklerine) dayanan son test işlemidir. Kullanıcıların, uygulamayı
“kabul” etmeden önce, söz konusu uygulamanın gereksinimlerini ne ölçüde
karşılayıp karşılamadığını belirleyip, geri dönüş yapabileceği testlerdir.
Beyaz Kutu Test Tekniği (White Box Testing Technic) : Beyaz kutu test
tekniğinin en genel tabiri kod testidir. Projenin hem kaynak kodu, hem de derlenmiş
kodu test edilir. Bu tür testler, uygulama kodunun iç mantığı üzerindeki bilgiye
bağlıdır. Yazılım kodundaki deyimler, akış denetimleri, koşullar vb. elemanlar
sınanır.
Kara Kutu Test Tekniği (Black Box Testing Technic ) : Test ekipleri tarafından en
çok kullanılan teknik olan kara kutu test tekniği adından da anlaşılacağı gibi
uygulamanın sadece derlenmiş kodu üzerinden test edilmesi olarak bilinir. Bu test
tekniğinde, yazılımın programatik yapısı, tasarımı veya kodlama tekniği hakkında
herhangi bir bilgi olması gerekli değildir. Yazılımın gereksinimine duyulan şeylere
yanıt verip veremediği ve işlevselliği sınanmaktadır.