evcil.net noktanın egemenliği

3004 / 080

Yazılım Test Mühendisi Hata Yapar mı?

Yazılım testi için ayrı test ekipleri olmayan firmalarda genel bir saplantı vardır. Bir gün, gerçekten bu iş için oluşturulmuş bir ekip ile yazılım testlerini gerçeklerlerse, yazılımlarının daha kaliteli olacağını düşünürler. Hali hazırda yazılım testi ekibine sahip firmalar, bu saptamanın doğru olduğunu görürler, fakat küçük bir detayı da eklemeden duramazlar.

Yazılım testi konusunda çalışan o işe has bir ekibinizin olması, her zaman geliştirdiğiniz uygulamaların daha kaliteli olacağı anlamına gelmez. Çünkü yazılım kalitesini test mühendisleri değil, tüm ekip beraber sağlar.

Test mühendisleri bir ürünü test eder ve hataları raporlar. Raporlanan hataların bir kısmı gerçekten ürün üzerinde düzeltilir ama bir kısmı düzeltilmez yada düzeltilemez. Yazılım kalitesini sadece geliştirici arkadaşlara hata raporlayarak, maalesef elde edemeyiz. Yazılımın kalitesinden şunu anlarız;

  1. En baş şart olan müşteriş istekleri
  2. O yazılımı geliştirme işine bir şekilde katılmış herkesin sorumlu olması

Test mühendisleri, ürün ile ilgili sürekli, anlaşılır ve kantitatif bilgiler üreten bir ekiptir. Bu sayede yazılımcılar geliştirdikleri ürüne ait hataları minimum hata ile öğrenirler ve düzeltirler. Yönetim tarafına gelince, sürekli olarak ürünün ne kadar hazır olduğu ile ilgili bilgiler edinirler.

Test ekibinin yaptığı hataların ürün kalitesine doğrudan yansıyacağı yadsınamaz bir gerçektir. Atlanan bir test case ya da unutulan bir konfigürasyon, sakıncalı anormallikler barındıran bir ürünün müşterilere gitmesine sebep olabilir.

Test Mühendisleri Her Zaman Hatasız Değildir

Fakat bu durum, yazılımcıların kodlarında hatalar olması, yapılan tasarımın eksik olması ya da ürün dokümantasyonundaki genel hatalar kadar normal bir durumdur. Tabi ki bizler test mühendisi olarak durumun bu tarafının farkında olsak da denetimde son kademe olduğumuzdan dolayı, takım içerisindeki herkesten daha sistematik çalışmak zorundalığını hissetmekteyiz.

Test mühendisleri, bir ürün geliştirilirken sistematik gözlem ve deneylerle, ürün ile ilgili şeffaf, objektif ve doğru amaca hizmet eden bilgileri üretir ve tüm ekip ile paylaşırlar. Bu oldukça zorlu bir iştir ve birden fazla disiplinde yaklaşıma ve deneyime sahip olunmasını gerektirir.

Bu bilgi ve deneyimleri sağlayan kişiler, üretilen ürünün kalitesinden sorumlu tutulamaz. Fakat ekibin ürettiği bilgiler olmadan da, geliştirilen yazılımın kalitesinin pek de yüksek seviyelerde olmayacağı unutulmamalıdır.

Kısım: Test Yorum yok
2904 / 080

Ne Yapacağımızı Bulduk

Değerli okuyucu,

Yazılımcıların içerik üretimindeki tembelliği dillere destandır mâlum. Bir sürü akıllı sistemler yazıp da kendi kendine içerik oluşturan sistemler yazamamışızdır. Müşteriler için içerik yönetim sistemleri hazırlarız da kendimize geldiğimizde bir hazır blog servisini bile canlı tutamamışızdır.

Nedendir bu atalet?

Bizim dünyaya haykıracağımız şeyler yok mudur?

Dünya, bizsiz de dönüyor elbette. Ama o dönen dünyanın içinde biz de olduğumuz sürece üstünde yaşananlardan payımızı alacağız. Ağzımızın payı da olabilir bu.

Neden denemeyelim bu serüvende bir paydaş olmayı?

Şu güzelim ana dilimizde, yazılım üzerine okuyucuyu germeden, mide spazmına yol açmadan bir iki kelâmın sarfedildiği kaç yer gördünüz efendim, samimi olun.

Yok.

Bu eksiği tespit ettik önce. Sonrası işe koyulmak.

Evcil.NET olarak ne yapacağımıza karar verdik. Daha önce alanında ilk defa Türkçe makaleler yazıp tarihe geçtik ama o tarih çok eski bir tarihti. Şimdi söylediklerimizin neredeyse hükmü kalmadı. Hâni bir şâirin ve Devletşah'ın dediği gibi: Artık yeni şeyler söylemek lâzım.

Unutun kanser olmuş projeleri. Gergin müşterileri. Eve dönüş yolunu.

Burada, bir sıcak kahvenin yanına, webden, koddan, debug'tan, etrafta olanlardan ve hepsinin ortasında - ekranın karşısında nefes alan bir varlık olan yazılımcıdan bahsedeceğiz. Ne yapacağımız budur.

Siz de ne yapacağınıza karar verin. Hemen RSS adresimizi gümletin. Yorumlarınızla söze katılın. Canınız çekerse ve zor gelmezse, siz de yazmayı deneyin.

Artık Türkiye'de yazılımcı olmak daha zevkli olacak!

1804 / 080

Test Araçları – 1

Quality Assurance (QA) aktiviteleri üç önemli bileşenden oluşur.

  • Yeterli kalifikasyona ulaşmış insan kaynağı
  • Doğru Metodoloji
  • Uygun Test Araçları

Test teknik yoğun bir aktivitedir. Gerek test aktivitelerinin planlanması gerekse de uygulanması için farklı bir bakış açısına sahip insan kaynakları gerekmektedir. Bunları göz önüne alarak test otomasyonu satan firmaları ile ilgili kısa bir analiz yapabilir ayrıca test araçlarının bir can simidi olup olmadıklarına karar verebiliriz.

Günümüzde test otomasyonu araçları satan firmalar, araçlarını neredeyse kendi kendine test eden robotlar olarak ifade ediyor. Bazı "test mühendisliği eğitimcileri" gereksinimlerin bire bir test edilerek ürünün kalitesi ile ilgili tam bir resmin çizilebileceğini işaret etmektedir. Kimi firmalar, hedefleri olmayan ve içi boş yük testleri yaparak, yazılım geliştiren firmaları göz göre göre kandırmaktan bir an olsun bile çekinmemektirler.

Gerçek hayatta, otomasyon çatısını kurmak ve sürekli değişen bir uygulamayı sürdürmek zorunda olmak, hazır olmayan firmalara çok ama çok pahalıya mal olmaktadır. Bu firmaların büyük çoğunluğu şimdi, per-seat lisansına onbinlerce dolar ödedikleri ürünler ile otomatik bir kaosa sahiplerdir.

Çoğu test mühendisi, tam olmayan gereksinimler ile geliştirilen ürünlerde, kimi testleri gerçeklemeyi reddediyor ya da daha kötüsü, kullanıcı beklentilerini es geçiyorlar.

Birçok ürünün, onbinlerce dolar ödenerek yaptırılan yük testleri ardından, performans tabanlı sorunlar sebebiyle, yarı yolda kaldığını görüyoruz ki bu büyük bir sorundur.

Ekipler belki iyi niyetle bu pratikleri alıp uygulama kararı veriyorlar fakat kısa sürede başladıkları noktadan daha da geri bir yerde buluveriyorlar kendilerini.

Bu sebeple, yapısal olarak test yapmak isteyen her ekibin gümüş kurşunları bir kenara bırakarak, yazılım geliştirme biçimleri ve kalite ihtiyaçlarına odaklanmaları gerekmekte.

Bir firma ya da ekip için en iyi yazılım testi, ihtiyaca uygun olarak planlanmış yazılım testidir. Metodolojiniz yoksa şablonlar arasında kaybolup gitmek kaçınılmaz olacaktır.

Sizin ihtiyaçlarınız, o alıntıların ve grafiklerin çok ötesinde ve size en uygun biçimiyle gerçeklenen test aktiviteleri olacaktır.

Kısım: Test Yorum yok
1104 / 080

Uzaktaki GAC’ı Kurcalamak

Bugünkü makalemiz, GAC üzerine. Nâm-ı diğer "Global Assembly Cache". Âşina olmayanlar için ufak bir girizgâhımız (iştah açıcı) olacak.

GAC Nedir?

.NET'in çıkış noktasını hatırlayınız. Windows'un birincil bileşen yapısına deva olarak ilan edildiği günleri hatırlayınız. O günlerde artık uygulamaların Registry'ye ihtiyaç duymadığı, XCOPY ile kopyalanarak eşeysiz üreyebildiği ve ürediği her yerde de kendi başına çalışabildiği söylenmişti. .NET hayatımıza, kendi bilgisini (metadata) üzerinde taşıyan "assembly"leri kazandırmıştı. Bir assembly, kendini tarif etmek için başka bir varlığa ihtiyaç duymuyordu. Versiyonu, kültürü, benzersiz anahtarı üzerindeydi. Assembly'ler bu özelliklerinden dolayı, birbirine karışmadan çalışabiliyordu. Herkesin kullanacağı ortak assembly'leri birbirine karışmadan atacağımız yer ise tam orasıydı işte: GAC.

GAC, ortak assembly'leri bulunduran özel bir klasör yapısı. %SYSTEMROOT\%assembly deyincesi çıkan dümdüz liste biraz kandırıyor bizi. Arka planda daha karmaşık bir dizinleme yapısı var ve atılan her assembly'yi ayrıntılı olarak depoluyor.

GAC Nasıl Yönetilir?

GAC,

  • .NET 1.1 ve .NET 2.0 için ayrı ayrı sunulan yapılandırma snap-in'leriyle:
    gac1
  • Gacutil.exe isimli ufak bir konsol programcığıyla:
    gac2
  • Windows Explorer'da assembly klasörü üzerine giydirilmiş "shell extension" aracılığıyla:
    gac3

yönetilebilir.

GAC'ı yönetmekten kasdımız, içine yeni assembly'ler atıp, mevcutları silebilmek vs.dir.

Bu alternatiflerden ilk ikisi Microsoft SDK'larıyla bilgisayarımıza yüklendiği için üretim ortamı bir makinede yokluğu hissedilecek şeylerdir. O durumda başvuracağımız çözüm sonuncu maddeki Windows Explorer olacaktır.

Hepsinden önemlisi bu saydığımız maddelerin hepsi yerel makinedeki GAC'ın yönetimini sağlıyor. Bir makinenin GAC'ını kurcalayacaksak ve illaki bu aletleri kullanacaksak mecburen makineye giriş yapıp üzerindeki bu araçları çalıştırmamız gerekiyor.

İşte mesele de bu. Neden uzaktaki makinenin GAC'ına müdahale edemiyoruz?

"Deployment" Öyküleri

Genelde uzaktaki bir sistem üzerine assembly'lerimizin dağıtımını yapıyorsak ve bu sistemin de GAC'ını kullanmak istiyorsak az önce "mesele" dediğimiz noktaya gelmişiz demektir. Elimizdeki assembly'leri şu uzaktaki makinenin GAC'ına nasıl atacağızdır? Hep gidip RDP ile masaüstüne bağlanıp el ile gacutil mi çalıştıracağızdır? Ya da sürükle bırak ile C:WindowsAssembly'ye dosya mı atacağızdır?

Microsoft buna bir şey yapması lazım değil midir?

Eğer meseleyle ilgili bir "arama motoru" tecrübesi yaşarsanız, size MSI yapmayı tavsiye olunur. İşiniz gücünüz yok, her çıkacağınız assembly için kütür kütür MSI yapacaksınız dostlar. Bu çözüm sizi tatmin ediyorsa yazının devamını boşverin.

Ya Remote Gacutil?

Yok böyle bir şey. Olmalı ama yok.

Ancak biraz kafa yorunca, uzaktaki makinede komut çalıştırma konseptinden gacutil'i tetikleyebileceğimizi buluruz. Bunun için piyasaya doğru bir salınım yaptığımızda en adam akıllı aracın harikalar diyarı SysInternals'ın PsExec'i olduğunu idrak ediyoruz.

Uzakları Yakın Eyleyen Program: PsExec

PsExec ile yeterli haklara sahip olduğunuz bir makine üzerinde komut işletebiliyorsunuz. Bu aleti kullanarak, karşı makinenin üzerinde gacutil'i tetikleyip assembly listesini düzenleyebiliriz ve güncelleyebiliriz demektir. Tam olarak bir Remote Gacutil yazmayı başaramasak da ona yaklaşabiliyoruz. Ne mutlu!

gac4

Gerisi kodlamayı seven programcılara kalmış. Yazsınlar kendi GAC-deployer araçlarını ve oturdukları yerden keyifle "deployment" yapsınlar. Microsoft, eminim zaman içerisinde MSI'dan daha makul çözümler de sunacaktır. O sunana kadar bizim yan yolumuz (workaround) da bu olsun.

Hadi bakalım. GAC ile.

Sayfalar

Kısımlar

Desteklediklerimiz

Ay bazında arşiv

Haberleşme