OOAD - Test ve Kalite Güvencesi
Bir program kodu yazıldıktan sonra, içindeki tüm hataları tespit etmek ve ardından işlemek için test edilmelidir. Test amaçlı bir dizi şema kullanılmaktadır.
Bir diğer önemli husus, programın amaçladığı amaca hizmet edip etmediğini tespit eden bir programın amacına uygunluğudur. Uygunluk, yazılım kalitesini tanımlar.
Nesne Tabanlı Sistemlerin Test Edilmesi
Test, yazılım geliştirme sırasında sürekli bir faaliyettir. Nesne yönelimli sistemlerde test, birim testi, alt sistem testi ve sistem testi olmak üzere üç seviyeyi kapsar.
Birim Testi
Birim testinde, bireysel sınıflar test edilir. Sınıf özniteliklerinin tasarıma göre uygulanıp uygulanmadığı ve yöntemlerin ve arabirimlerin hatasız olup olmadığı görülür. Birim testi, yapıyı uygulayan uygulama mühendisinin sorumluluğundadır.
Alt Sistem Testi
Bu, belirli bir modülü veya bir alt sistemi test etmeyi içerir ve alt sistem liderinin sorumluluğundadır. Alt sistem içindeki ilişkilerin ve alt sistemin dışarıyla etkileşiminin test edilmesini içerir. Alt sistem testleri, alt sistemin yeni yayınlanan her sürümü için regresyon testleri olarak kullanılabilir.
Sistem Testi
Sistem testi, sistemin bir bütün olarak test edilmesini içerir ve kalite güvence ekibinin sorumluluğundadır. Ekip, yeni sürümleri bir araya getirirken genellikle sistem testlerini regresyon testleri olarak kullanır.
Nesne Tabanlı Test Teknikleri
Gri Kutu Testi
Nesneye yönelik programları test etmek için tasarlanabilen farklı test senaryoları, gri kutu test durumları olarak adlandırılır. Gri kutu testinin önemli türlerinden bazıları şunlardır:
State model based testing - Bu, eyalet kapsamını, durum geçiş kapsamını ve durum geçiş yolu kapsamını kapsar.
Use case based testing - Her kullanım durumundaki her senaryo test edilir.
Class diagram based testing - Her sınıf, türetilmiş sınıf, ilişkilendirmeler ve toplamalar test edilir.
Sequence diagram based testing - Sıra diyagramlarında yer alan mesajlardaki yöntemler test edilir.
Alt Sistem Test Teknikleri
Alt sistem testinin iki ana yaklaşımı şunlardır:
Thread based testing - Bir alt sistemde tek bir kullanım durumunu gerçekleştirmek için gereken tüm sınıflar entegre edilir ve test edilir.
Use based testing- Her hiyerarşi düzeyindeki modüllerin arayüzleri ve hizmetleri test edilir. Test, bireysel sınıflardan sınıflardan oluşan küçük modüllere, kademeli olarak daha büyük modüllere ve son olarak tüm ana alt sistemlere kadar başlar.
Sistem Testi Kategorileri
Alpha testing - Bu, yazılım geliştiren organizasyon içindeki test ekibi tarafından gerçekleştirilir.
Beta testing - Bu, seçilmiş işbirliği yapan müşteriler grubu tarafından gerçekleştirilir.
Acceptance testing - Bu, teslimatları kabul etmeden önce müşteri tarafından gerçekleştirilir.
Yazılım kalite güvencesi
Yazılım Kalitesi
Schulmeyer ve McManus, yazılım kalitesini “toplam yazılım ürününün kullanımına uygunluk” olarak tanımladı. Kaliteli bir yazılım tam olarak yapması gerekeni yapar ve kullanıcı tarafından belirlenen gereksinim spesifikasyonunun karşılanması açısından yorumlanır.
Kalite güvencesi
Yazılım kalite güvencesi, bir yazılım ürününün ne ölçüde kullanıma uygun olduğunu belirleyen bir metodolojidir. Yazılım kalitesini belirlemek için dahil edilen faaliyetler şunlardır:
- Auditing
- Standartların ve yönergelerin geliştirilmesi
- Raporların üretimi
- Kalite sisteminin gözden geçirilmesi
Kalite Faktörleri
Correctness - Doğruluk, yazılım gereksinimlerinin uygun şekilde karşılanıp karşılanmadığını belirler.
Usability - Kullanılabilirlik, yazılımın farklı kullanıcı kategorileri (yeni başlayanlar, teknik olmayanlar ve uzmanlar) tarafından kullanılıp kullanılamayacağını belirler.
Portability - Taşınabilirlik, yazılımın farklı donanım cihazlarıyla farklı platformlarda çalışıp çalışamayacağını belirler.
Maintainability - Sürdürülebilirlik, hataların düzeltilme ve modüllerin güncellenme kolaylığını belirler.
Reusability - Yeniden kullanılabilirlik, modüllerin ve sınıfların diğer yazılım ürünlerini geliştirmek için yeniden kullanılıp kullanılamayacağını belirler.
Nesne Tabanlı Metrikler
Ölçütler genel olarak üç kategoriye ayrılabilir: proje ölçütleri, ürün ölçütleri ve süreç ölçütleri.
Proje Metrikleri
Proje Metrikleri, bir yazılım proje yöneticisinin devam eden bir projenin durumunu ve performansını değerlendirmesini sağlar. Aşağıdaki ölçütler nesne yönelimli yazılım projeleri için uygundur -
- Senaryo komut dosyası sayısı
- Anahtar sınıfların sayısı
- Destek sınıfı sayısı
- Alt sistem sayısı
Ürün Metrikleri
Ürün ölçümleri, geliştirilen yazılım ürününün özelliklerini ölçer. Nesne yönelimli sistemler için uygun ürün ölçümleri şunlardır:
Methods per Class- Bir sınıfın karmaşıklığını belirler. Bir sınıfın tüm yöntemlerinin eşit derecede karmaşık olduğu varsayılırsa, daha fazla yönteme sahip bir sınıf daha karmaşıktır ve dolayısıyla hatalara daha duyarlıdır.
Inheritance Structure- Birkaç küçük kalıtım kafesine sahip sistemler, tek bir büyük kalıtım kafesine sahip sistemlerden daha iyi yapılandırılmıştır. Genel bir kural olarak, bir miras ağacının 7'den (± 2) fazla sayıda seviyesi olmamalı ve ağaç dengelenmelidir.
Coupling and Cohesion - Düşük kuplaj ve yüksek kohezyona sahip modüller, daha fazla yeniden kullanılabilirlik ve bakım kolaylığı sağladıkları için daha iyi tasarlanmış olarak kabul edilir.
Response for a Class - Sınıfın örnekleri tarafından çağrılan yöntemlerin verimliliğini ölçer.
Süreç Ölçüleri
Süreç ölçümleri, bir sürecin nasıl performans gösterdiğini ölçmeye yardımcı olur. Uzun süreler boyunca tüm projelerde toplanırlar. Uzun vadeli yazılım süreci iyileştirmeleri için gösterge olarak kullanılırlar. Bazı süreç ölçümleri -
- KLOC Sayısı (Kilo Kod Satırları)
- Kusur giderme verimliliği
- Test sırasında tespit edilen ortalama arıza sayısı
- KLOC başına gizli kusurların sayısı