<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>PTP-Vision: Bankacılık Uygulamaları için Proxy Tabanlı Kişisel Yazılım Test Eforu Tahmin Metodu</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Gizem Kahveci</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Gizem Kahveci</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Hacettepe University</institution>
          ,
          <addr-line>Ankara, TR</addr-line>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>İstanbul Gelişim University</institution>
          ,
          <addr-line>İstanbul, TR</addr-line>
        </aff>
      </contrib-group>
      <fpage>344</fpage>
      <lpage>356</lpage>
      <abstract>
        <p>Özet. Bu çalışmada özel bir bankanın yazılım proje yöneticilerine yönelik olarak, kodlama ve birim testleri tamamlanan yazılım birimlerinin fonksiyonel testleri için gerekecek test süresi/eforunu tahmin ederlerken kullanabilecekleri özgün bir yöntem geliştirilmesi amaçlanmıştır. PTP-Vision adı verilen bu yöntem ile, bir test analistine atanan her bir yazılım birimi için gerekecek test çalıştırma kişisel eforunun (dolayısıyla süresini) test sürecinin ön safhalarında iken doğru bir şekilde tahmin edilebilmesi sağlanmıştır. Geliştirilen yöntemin temelinde, test analistinin kendi kişisel test sürecini Humphrey'in Kişisel Yazılım Süreci'nde (Personal Software Process - PSP) tanımlandığı gibi modelleyerek ölçümlemesi ve bu ölçümlerin analizi suretiyle kişisel tahmin veritabanını oluşturması bulunmaktadır. Bu yöntemin geliştirme ve sınama çalışmaları için bankanın yazılım uygulamalarından elde edilen gerçek veriler kullanılmıştır. Geliştirilen yöntemin çalışabilirliği ve hassasiyeti test sürecinin ön safhalarında yapılan tahminler ile gerçekleşen efor/süre değerleri karşılaştırılmak suretiyle değerlendirilmiştir. Ortam ve uygulama ile ilgili belli parametrelerin aynı kalması durumunda tahmin hatalarının %12 bandını aşmadığı, çoğunlukla çok daha küçük olduğu görülmüştür. Anahtar Kelimeler: Test süresi tahmini, Test eforu tahmini, Proxy-tabanlı tahmin, Kişisel test süreci, Bankacılık yazılım uygulamaları.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>method allows the project manager to predict the required test run effort (hence
duration) of a test analyst for an assigned software unit at the initial test stages.
On the basis, the test analyst models and measures her personal test process (PTP)
as described in Humphrey's Personal Software Process (or PSP) and generate a
personal estimation database by analyzing these measurements. For the
development and testing of this method, real data from the bank's software development
projects were used. The feasibility and sensitivity of the developed method were
evaluated by comparing the estimations made at the earlier stages of the test
process with the actual values of test effort. It has been found that if certain
parameters related to environment and application remain stable, prediction errors do
not exceed 12% band, and in most cases much smaller.
1</p>
    </sec>
    <sec id="sec-2">
      <title>Giriş</title>
      <p>Proje yöneticileri açısından yazılım test faaliyetleri için harcanacak zaman ve eforun
doğru ve tutarlı bir şekilde tahmini oldukça önemlidir. Gerçekleşen değerlerin tahmin
edilen değerler ile örtüşmemesi projenin ciddi manada başarısız olmasına sebep
olabilir. Örneğin geçmişte Denver Havaalanı Otomatik Bagaj Sistemi Projesi’ndeki
öngörülemeyen gecikmenin maliyetinin 340 milyon doları bulduğu hesaplanmıştır [1]. Bu
bağlamda, eldeki belli kaynaklar ile test için ayrılacak süre hakkında tutarlı bir tahmin
yapabilme önemli yönetim işlevlerinden birisi olmasına rağmen bunu başarabilmek
özellikle erken safhalarda kolay değildir. Yazılım test süresinin projenin diğer planlama
parametreleriyle karmaşık alakası dolayısıyla, proje yöneticisinin karar verme
mekanizmalarını destekleyecek yöntem ve araçlara ihtiyaç duyulmaktadır.</p>
      <p>Forrester Research şirketinin dünya çapında yaptığı araştırmaya göre [2] finans
sektöründeki kuruluşların yazılım giderleri diğer sektörlere göre daha fazladır, dolayısıyla
test süresine yönelik etkin bir tahmin metodu bu maliyetlerin kontrolünde katkı
sağlayacaktır. İş birliği yaptığımız özel bankanın yazılım merkezinde yaşanan problem proje
yöneticileri tarafından test analistlerine atanan test işleri – test projesi olarak
adlandırılmaktadır– için başlangıçta uzman görüşüne bağlı olarak belirlenen sürelerin gerçekçi
olmaması ve sürekli uzatılmak zorunda kalınmasıdır. Bu problemin çözümüne yönelik
olarak üniversite-sanayi iş birliği ile test süreci iyileştirme çalışması yapılmıştır.</p>
      <p>Literatüre bakıldığında test süresinin tahmini için yapılmış çalışmaların bankanın
probleminin çözümü için yetersiz kaldığı görülmüştür. Burada test analistinin kişisel
bazda ihtiyaç duyacağı süreyi daha test analiz ve tasarım safhasında iken tutarlı bir
şekilde tahmin edebilmesi ve gecikmeden ek süre gereksinimini proje yöneticisine
bildirebilmesi hedeflenmiştir.</p>
      <p>İkinci bölümde test süresi tahmini için mevcut yöntemler incelenmiştir. Üçüncü
bölümde bankada uygulanan test süreci anlatılmıştır. Dördüncü bölümde Kişisel Yazılım
Süreci ve Proxy Tabanlı Tahmin Yöntemi ile ilgili bilgi verilmiştir. Beşinci bölümde
geliştirilen Proxy tabanlı tahmin yöntemi tanımlanmıştır. Altıncı ve son bölümde ise
yapılan pilot çalışma ve çalışmanın sonuçlarına yer verilmiştir.</p>
      <p>İlgili Çalışmalar
Literatürde yazılım testi eforu tahmini alanında yapılmış çalışmaların genellikle
yazılım geliştirme eforu tahmin yöntemleri uyarlanarak türetilmiş olduğu görülmüştür.
Jayakumar ve Abran [3] yazılım testi eforu tahmin etmeye yönelik metotları beş ana
grupta toplamaktadır: Uzman görüşüne dayalı yöntemler, Analoji ve iş kırılım
yöntemleri, Faktör ve Ağırlık tabanlı yöntemler, Yazılım Büyüklüğüne dayalı yöntemler,
Bulanık mantık ve diğer modellere dayalı yöntemler.</p>
      <p>M. Chemuturi [4] yazılım testi eforunu tahmin etmek için uzman görüşüne dayalı
olan Delfi Metodunu test efor tahmini için uyarlamıştır. Geniş Bant Delfi ve Başparmak
Kuralı da benzeri diğer yöntemlerdir.</p>
      <p>
        Yapılan diğer bir çalışmada, yazılım eforu tahmini için yaygın kullanıma sahip olan
İşlev Noktası Analiz Yöntemine dayalı olarak Test Noktası Analiz Yöntemi [
        <xref ref-type="bibr" rid="ref5">6</xref>
        ]
geliştirilmiştir. Bu yöntemde statik test noktaları ISO 9126 [5] uyarınca belirlenir.
Hesaplanan test noktalarının toplamı üretimsel ve çevresel faktörler göz önünde bulundurularak
efor olarak ifade edilir.
      </p>
      <p>
        Nageswaran Kullanım Noktaları yöntemini geliştirmiştir [
        <xref ref-type="bibr" rid="ref6">7</xref>
        ]. Kerstner ise İşlev
Noktası Analiz yöntemini test eforunu tahmin etmek için uyarlamıştır [
        <xref ref-type="bibr" rid="ref7">8</xref>
        ]. Bu yöntemler
gerekli özellikler tamamlanamadığında hatalı sonuçlar üretmektedir. Aranha ve Borba
Test Çalıştırma Noktası yöntemini geliştirmişlerdir [9]. İhtiyaç Analizi Dokümanından
ölçülerek elde edilen test büyüklüğü ve çalıştırma karmaşıklığı bilgilerine dayalı olan
bir otomatik tahmin modelinin geliştirilmesi hedeflenmiştir.
      </p>
      <p>Analoji Tabanlı Kestirim yöntemi ile organizasyonlarda gerçekleşmiş birbirine
benzer olan projelerden elde edilen veriler vasıtasıyla yazılım testi efor tahmini
yapılmaktadır [4]. Chemuturi yaptığı diğer çalışmalarda bu yönteme benzer olan Görev Tabanlı
Tahmin ve Test Senaryosu Sayma Tabanlı Tahmin Yöntemlerini geliştirmiştir.
Matematiksel olarak bu yöntemler ile edilen sonuçlar doğrulanabilirdir. Ancak testin ilk
safhalarında büyüklük hesaplanamamaktadır ve tahmin yapma süresi uzundur [4].</p>
      <p>Yazılım büyüklüğüne dayalı tahmin yöntemleri olan Test Büyüklüğüne Dayalı
Tahmin, COCOMO ve Slim, Seer and Knowledge Plan gibi yöntemler gerçeğe yakın sonuç
üretebilmekte olup ve farklı organizasyonlarda yapılan tahminlerin birbiri ile
kıyaslanmasına olanak tanımaktadır [3]. Literatürde bu yöntemler dışında bulanık mantık ve
yapay sinir ağları yaklaşımlarına dayalı olarak geliştirilen yöntemlere rastlanmıştır.
3</p>
    </sec>
    <sec id="sec-3">
      <title>Bankaya Özel Yazılım Test Süreci</title>
      <p>
        Test faaliyetleri bu çalışmanın yapıldığı bankada V Modeline uygun olarak
gerçekleşmektedir. Modelin sağ tarafında yer alan aktiviteler sol tarafında yer alan aktivitelerin
çıktılarını doğrulamakta veya geçerlemektedir [
        <xref ref-type="bibr" rid="ref8">10</xref>
        ]. Bankada çalışan test analistleri V
modelindeki Sistem Entegrasyon Testini uygulamaktadırlar. Test analisti geliştirilen
uygulama özelliklerinin kullanıcı tarafında talep edilen fonksiyonel gereksinimleri
karşılayıp karşılamadığını görmek amacıyla [11] kara kutu test yaklaşımı ile fonksiyonel
testler yapmaktadır. Bu testler kullanıcının taleplerine bağlı olarak uygunluk, tamlık,
birlikte çalışma ve hatalı girdi kontrollerini kapsamaktadır.
      </p>
      <p>
        Bankanın test süreci dışarıdan alınan bir danışmanlık sonucunda tanımlanan sürece
ve kullanılan yazılım yaşam döngüsü otomasyon araçlarına bağlı olarak [12]’ye göre
tanımlanmıştır:
1. Test Planlama ve Kontrol – Proje planlaması ile aynı anda gerçekleşir ve test kapanış
işlemleri tamamlanana kadar devam eder. Test Yöneticisi tarafından yürütülmekte
olup, bu safhada Test Analistinin aktif rolü bulunmamaktadır.
2. Test Analizi ve Tasarımı – Yazılımcı birim testleri ile paralel yürütülür ve genel test
hedefleri somut test koşullarına ve test senaryolarına dönüştürülür [
        <xref ref-type="bibr" rid="ref9">13</xref>
        ]. Test
analistleri yazılım geliştirme sürecindeki temel kaynak olan İhtiyaç Analiz Dokümanlarını
kullanarak test analizi ve tasarımı yaparlar. Bu dokümanlar her bir yazılım ürününe
ilişkin süreçleri, bu süreçlerdeki normal, alternatif ve sıra dışı akışları, bu akışları
yönlendiren iş kurallarını (hesaplama, kısıtlama, tetikleme ve şart ifadeleri), süreç
rolleri ile bu rollerin sistem ile etkileşimini, süreçlerde iletişim kurulan yani entegre
olunan diğer sistemlere ilişkin tüm bilgileri içeren dokümanlardır.
      </p>
      <p>
        Test Analistlerinin bu safhada, İhtiyaç Analiz Dokümanında yer alan girdiler,
olaylar veya aksiyonlar ile bunların sonucunda oluşması beklenenlerin
gerçekleştirilmesi için gerekli adımların açıklandığı dokümantasyonu [15] hazırlamaları
gerekmektedir. Bir test senaryosu aşağıdaki bilgileri içermelidir:
• Seviye: Test senaryosunu önceliklendirmek için kullanılan değer. Örneğin 7.4.
• Test Adımı: Test senaryosunun gerçekleştirilmesi için gerekli adımlar. Test
nesnesinin analizine, özelliklerine, davranışına ve yazılımın yapısına dayanmalıdır.
Örneğin, Kullanıcıya DYBDXXX yetkisi verilmez + Birimi ilgili işlem
referansını almaya yetkili olur + Yeni referans alma yetkisi verilir + İşlem Tipi
Tanımlama Ekranında tanımlı olan bir referansı alır.
• Doğruluk Kriteri: Bir test nesnesinin (fonksiyon) veya özelliğin başarılı veya
başarısız olup olmadığını belirlemek için kullanılan karar verme kurallarıdır.
Örneğin, B. D. Ekranı / D. R. İşlemleri referansı alamadığı görülür.
• Case Özelliği: Pozitif veya negatif olarak iki değerden birini alabilir. Pozitif
olması durumunda test senaryosu sonunda başarılı bir işlem gerçekleşmiş, negatif
olması durumunda ise başarısız bir işlem gerçekleşmiş olması beklenir. Örneğin,
Pozitif.
3. Test Uyarlama ve Yürütme/Çalıştırma – Yazılımcının birim testlerini tamamlanması
ile başlar ve test çıkış kriterleri karşılanana kadar devam eder. Test Uyarlaması
testlerin çalıştırılmaya hazırlanmasını, test verilerinin ve test senaryosunun yürütülmeye
başlayabilmesi için test ortamının nihai hale getirilmesini, test senaryolarını
desteklemek için test verisi belirlenmesini ve kaynak tahsisini içeren test çalıştırma
çizelgesinin hazırlanmasını kapsar [
        <xref ref-type="bibr" rid="ref9">13</xref>
        ]. Testin Çalıştırılması safhasında, her bir test
senaryosunun içerdiği test adımlarına karşılık gelen doğruluk kriterinin sağlandığı
teyit edilir. Her bir test senaryosu çalıştırılmasında görsel olarak elde edilen sonuçlar
(örneğin hata mesajları, proxy yanıtları) ve her bir çıkış değerinin (örneğin reel bir
sayı) bulunduğu yer, başarılı veya başarısız sonuçlar için ekran görüntüsü ile birlikte,
kayıt altına alınır [15]. Başarısız sonuçlar, gereksinimden, tasarımdan, kullanıcı
dokümanından, standartlardan, beklenti, tecrübe veya algıdan sapma durumudur.
Bankada testlerde tespit edilen başarısız sonuçlar bulgu olarak adlandırılmaktadır.
Bankacılık alanında yaygın olarak teste gelen yazılımcı çıktısı test nesnesi (test object)
olarak ifade edilmektedir [16]. Bu çalışmada test nesnesi, test çalıştırma safhasında
test analistine gelen kullanılabilir çalışan bir yazılım anlamına gelmektedir.
4. Raporlama ve Test Kapanış Faaliyetleri – Sistem test çıkış kriterleri karşılandıktan
ve yürütmesinin tamamlandığı beyan edildikten sonra gerçekleştirilir. Ancak bazı
durumlarda, kullanıcı kabul testi bitene ve tüm proje faaliyetleri son bulana kadar
gecikebilir. Ürünün ihtiyaçlara uygun hale gelmesi, tespit edilen bulguların
giderilmesi, gerçek ortama alındığında risk içermemesi halinde test planındaki test çıkış
kriterlerine de uygunluğu kontrol edilerek Test Kapanış Raporu hazırlanır ve test
sonlandırılır. Test Kapanış Raporu gerçek ortama alınacak uygulamadaki hataların
ve yazıların test senaryolarının durumlarını gösteren rapordur. Senaryoların kaç
tanesinin çalıştırıldığının bilgisi ve grafiğini içerir. Çözülmemiş bulguların riski
hakkında bilgi verilir. Bulguların kaç tanesi kapatıldı vb. bilgisi ve grafiğini içerir.
4
      </p>
    </sec>
    <sec id="sec-4">
      <title>PSP ve Proxy Yöntemi</title>
      <p>
        Yazılım geliştirme projelerinde çalışan kişilerin yetenek ve çalışma disiplinleri kaliteli
ürün ortaya koyabilmek için büyük önem arz etmektedir. Watts S. Humphrey, PSP
(Personel Software Process - Bireysel Yazılım Geliştirme Süreci) konusundaki
çalışmaları ile kişisel çalışma sonuçlarını iyileştirmek için tanımlanmış bir süreci izleyerek
disiplin içinde yazılım geliştirmeyi sağlayan bir çerçeve sunar [
        <xref ref-type="bibr" rid="ref10">17</xref>
        ]. Kişisel disiplini ve
performansı artırmak için PSP kişilere sürdürülebilir, kesin ve açık plan yapma; çalışma
performansını ölçme ve izleme; ölçülen performansı artırıcı işlemler yapma; en az hata
ile çalışma gibi yetenekleri kazandırmayı hedefler.
      </p>
      <p>
        PSP kullanan yazılım geliştiricileri bireysel yazılım geliştirme süreçlerinin
performansını topladıkları ölçümlere (büyüklük, geliştirme süresi, hata sayısı gibi) dayalı
olarak analiz edebilirler. Buna bağlı olarak kendi geliştirme süreçlerini iyileştirebilir ve
geliştirme işleriyle ilgili Proxy tabanlı kestirim yöntemi (PROBE - Proxy Based
Estimating Method) ile hassas tahminler yapabilirler [
        <xref ref-type="bibr" rid="ref10">17</xref>
        ]. PROBE, büyüklüğü tarif
edebilmek için kullanılan vekil nesnelere (proxy) dayalı olarak ürünü küçük parçalara
ayırarak geliştirme sürelerini öngörmeyi amaçlayan bir tahmin yöntemidir. PSP yöntemini
benimseyen yazılım geliştiricileri ürünlerini tip ve büyüklük olarak küçük parçalara
ayırarak kategorize ederler. Her bir parça için geçmişe yönelik ölçümlemeler yaparak
tahmin veritabanını oluştururlar. Yeni bir tahmin yapılması gerektiği zaman, yazılım
geliştiricisi oluşturmuş olduğu tahmin veritabanında yer alan kategorilere göre
geliştireceği ürünü küçük parçalara böler ve ilgili parça için tahmin veritabanından
büyüklüğünü seçerek tahmin yapar. Tahminlerin iyileştirilmesine yönelik olarak istatistik
yöntemleri kullanılmaktadır.
      </p>
    </sec>
    <sec id="sec-5">
      <title>PTP-Vision Yöntemi</title>
      <sec id="sec-5-1">
        <title>Kişisel Test Sürecindeki Temel Parametreler</title>
        <p>Bu çalışmada bankada çalışan bir test analistinin kişisel test çalıştırma süresinin testin
analiz ve tasarım safhasında iken öngörülebilmesi (tahmin edilebilmesi)
hedeflenmektedir. Kişisel Yazılım Süreci (PSP) ve PROBE Yöntemi test sürecine uyarlanarak yeni
bir kişisel test çalıştırma süresi tahmin metodu oluşturulmuştur.</p>
        <p>Ölçümlerin sağlıklı yapılabilmesi için PSP’nin yazılım geliştirme süreci için
önermekte olduğu Süre Kayıt Etme Formu (Time Recording Log) test sürecine
uyarlanmıştır. Test Analisti bu formu kullanarak her bir bileşenle ilgili harcadığı süreleri kendisine
atanan test projeleri için kayıt altına almaktadır.</p>
        <p>Test analistlerinin test çalıştırma safhasındaki faaliyetleri izlenmiş ve her bir test
projesinde toplam sürenin/eforun aşağıdaki faaliyetlerden/sürelerden oluştuğu tespit
edilmiştir:
• İdeal şartlarda test çalıştırma süresi – Test analistinin test nesnesine ait test için
bulgu çıkmadığı ve bilgi gereksinimi olmadığı bir durumda harcadığı süredir.
• Test çalıştırma süresi – Bir test senaryosunun çalıştırıldığı toplam süredir.
Yazılımcı tarafından bulgunun düzeltilme süresini ve geri gönderilmesi akabinde
yeniden test edilme süresini de içerisinde barındırmaktadır Bu süre, Test Süresi
Kayıt Formunda &lt;Test&gt; olarak işlenmektedir. Bir bulgu tespit edildiği zaman testin
doğruluğundan emin olmak için test dokümanlarının yeniden incelenmesi,
bulguların raporlanması, bilgi alışverişi ve mailleşmeler de – test nesnesine ilişkin bilgi
edinme gereksinimi çıkması durumu olarak adlandırılmaktadır.
• Bulgu düzeltme süresi – Bulgu çıkması durumunda yazılımcının ilgili test
senaryosunda çıkan bulguya ne kadar zamanda döndüğünü gösteren süredir. Bu süre
bulgu raporlandıktan yani yazılımcının eline ulaştıktan sonra başlatılmaktadır. Bu
süre, Test Süresi Kayıt Formuna &lt;Bulgu&gt; olarak işlenmektedir.
• Yeniden test etme süresi – Düzeltilen bulgu ile ilgili senaryonun yeniden test
edildiği süredir. Bu süre, Test Süresi Kayıt Formuna &lt;Re-test&gt; olarak
işlenmektedir.
• Kayıplar – Test çalıştırılırken yazılım ve analist ekipleri ile yapılan bilgi
alışverişleri, mailleşmeler, bulgu raporlanması kayıp süre olarak değerlendirilmektedir.</p>
        <p>Bu çalışmada her bir projenin tek bir yazılımcısı olduğu varsayılmaktadır. Test
Süresi Kayıt Formu her bir yazılımcı ve proje için ayrı tutulmakta ve her bir test senaryosu
için süreler ilgili forma kayıt edilmektedir.
5.2</p>
        <p>
          İdeal Şartlarda Test Çalıştırma Süresinin Tahmini
Bu sürenin tahmini için Humphrey’in PROBE yöntemi [
          <xref ref-type="bibr" rid="ref10">17</xref>
          ] test sürecine uyarlanmıştır.
Öncelikle test senaryolarının test sürecini temsil edebilecek belirli özellikleri [14]
sağlayan uygun vekil nesneler olacağına karar verilmiştir. Yani bir test senaryosunun
büyüklüğü ile bir test senaryosunun dakika olarak çalıştırılma süresi arasında bir ilişki
kurulur.
Tablo 1. Tahmin Veritabanı (Her bir senaryonun çalışma süresi (dakika))
        </p>
        <p>Kategori
Eşleşme (MK)
Birlikte Çalışabilirlik (BC)
Ekran Tasarımı (ET)
Ekran Fonksiyonları (EF)
Çıktıların Kontrolü (ÇK)
Uyarı ve Hata Mesajları (UHM)</p>
        <p>Test Süresi Kayıt Formu kullanılarak 18 projeye ilişkin 1598 adet test senaryosunun
(126 adet Eşleşme, 560 adet Birlikte Çalışabilirlik, 86 adet Ekran Tasarımı, 244 adet
Ekran Fonksiyonu, 91 adet Çıktıların Kontrolü, 222 adet Uyarı ve Hata Mesajları)
çalıştırma süreleri toplanmıştır. Akabinde her bir kategoride yer alan ölçüm sonuçları
tespit edilmiştir. Kategori bazında toplanan ölçüm sonuçlarının dağılımı analiz edilerek
test senaryo büyüklüklerinin Küçük (S), Orta (M) ve Büyük (L) olmak üzere 3
kategoriye ayrılmasına karar verilmiştir.</p>
        <p>Toplanan ölçüm sonuçlarının istatistiksel ortalama değer ve standart sapmasının
hesaplanması vasıtası ile her bir kategoride yer alan Tablo 1’de verilen Tahmin Veritabanı
elde edilmiştir.</p>
        <p>Geçmişe yönelik olarak toplanmış verilerin analiz edilmesi ile elde edilen Tahmin
Veritabanı kullanılarak, yeni gelen bir projenin İdeal Şartlarda Test Çalıştırma
Süresinin (P) tahmin edilebilmesi hedeflenmektedir. Bu doğrultuda her bir (S) senaryosunun
tipi (x) ve büyüklük kategorisi (y) belirlenir, hangi kategoriye girdiği belirlenen
senaryonun tahmini çalıştırılma süresi Tahmin Veritabanından bulunur. Bu işlem projedeki
tüm senaryolar (n adet senaryo) için tekrarlanır. İdeal Şartlarda Test Çalıştırma Süresi
(P) aşağıdaki gibi ifade edilmektedir:</p>
        <p>P = ()*+ S(x, y)</p>
        <p>Test çalıştırma süresi test senaryoları hazırlandıktan sonra tahmin edilebileceği gibi
bazı durumlarda ise test senaryoları hazırlanmasının bir adım öncesinde yani ihtiyaç
analiz dokümanı incelenirken öngörülmesi ihtiyacı doğmaktadır. Bu durumlarda test
analisti ihtiyaç analiz dokümanını incelerken kontrolü yapılacak durumları imgeleyerek
de tahmin yapabilmektedir. İmgeleyerek yapılan tahminlerde de test senaryoları
üzerinden tahmin yaparken izlenen aynı adımlar takip edilmektedir.</p>
        <p>Tablo 2. Proje Bazında Bulgu Adetleri ve Ortalama Bulgu Düzeltme Süreleri
Proje
Proje 1
Proje 2
Proje 3
Proje 4
Proje 5
Proje 6
Proje 7
Proje 8
Proje 9</p>
        <p>Yazılımcı</p>
        <p>Bulgu</p>
        <p>Adedi
Test çalıştırma süresi, yazılımcı tarafından bulgunun düzeltilme süresini ve geri
gönderilmesi akabinde yeniden test edilme süresini de içerisinde barındırmaktadır.</p>
        <p>Tespit edilen bulguların düzeltme sürelerinin test çalıştırma süresine etkisinin tespit
edilebilmesi için, bu çalışmada 18 tane test projesine ait tespit edilen bulguların
düzeltme süreleri kullanılmıştır (Tablo 2.) Bahsi geçen her bir projenin tek bir yazılımcısı
vardır. Geliştirilmekte olan model için de her bir projenin tek bir yazılımcısı olduğu
varsayımında bulunulmuştur. Çalışmada 18 proje için 7 farklı yazılımcı ile çalışılmıştır.</p>
        <p>Gözlemlenen değerlerden, yazılımcıların Tablo 3’deki bulgu yoğunlukları ve
ortalama bulguya dönüş süreleri çıkarılmıştır. Bulgular düzeltilip test analistine döndükten
sonra yapılan düzeltmelerin başarısını doğrulamak için ilgili test senaryolarının
tekrardan çalıştırılması (re-test) gerekmektedir. Yazılımcının bulgu yoğunluğu oranında,
yeniden test etme süresine ihtiyaç duyduğu varsayılmıştır. Düzenleme yapıldıktan sonra
koşulan test senaryolarından da m% oranında bulgu çıkabileceği ve bulgu çıkma
oranının 0.001’e yakınsayana kadar t iterasyon boyunca gerçekleyebileceği farz edilmiştir.
1</p>
        <p>Yeniden Test Etme Süresi (R) = )*+ λ ∗ P ∗ (0/++))
Çalışmada kayıt altına alınan senaryo başına yeniden test etme adetleri proje bazında
değerlendirilerek, yapılmakta olan çalışmada düzeltme yapılan senaryolardan %10
oranında (m=10) yeniden test etme ihtiyacı tespit edilmiştir.</p>
        <p>Yukarıda bahsedilen sürelere ek olarak, Kayıplar olarak tabir edilen sürelerin Test
Çalıştırma Süresine katkısı için sabit bir değer (K) vermek yerine, ideal şartlarda test
çalıştırma süreleri dikkate alınmıştır. Bu çerçevede, ideal şartlardaki test çalıştırma
sürelerinin [P] dağılımına göre kategoriye ayrılmış ve her bir kategori için K değerinin
katkısı olmadan hesaplanan test yürütme süresi [P+B+R] ve Gerçek Test Yürütme
sürelerinden de K değerleri hesaplanmıştır.</p>
        <p>Yapılan çalışmada, Tablo 2’de verilmekte olan 18 proje için ideal şartlardaki test
çalıştırma sürelerinin dağılımı incelendiğinde üç gruba ayrılabileceği öngörülmüştür.
Tablo 3. Yazılımcı Bulgu yoğunluğu ve ortalama bulgu düzeltme süresi</p>
        <p>Yazılımcı</p>
        <p>Bulgu Yoğunluğu (%)</p>
        <p>Bulguya Dönüş Süresi (saat)
Yazılımcı-1
Yazılımcı-2
Yazılımcı-3
Yazılımcı-4
Yazılımcı-5
Yazılımcı-6
Yazılımcı-7
Bu doğrultuda elde edilen K değerleri aşağıdaki gibidir;
• K=01,29 saat eğer P &lt; 3,50 saat
• K=14,57 saat eğer 3,50 &lt; P &lt; 13,28 saat
• K=27,84 saat eğer P &gt; 13,28 saat</p>
        <p>K değerleri 18 proje için elde edilmiş değerlerdir, toplanan verinin artması ile bu
değer değişecek olup iyileşeceği düşünülmektedir.</p>
        <p>Tablo 4’de Gerçek Test Yürütme Süresi, test analistinin Bankacılık Veritabanına her
bir yazılım testi projesi için girmiş olduğu aktivite bilgilerinden alınmaktadır. Söz
konusu süre sadece test faaliyetlerinin yapıldığı zamanı yansıtmaktadır. Proje sürecinde
yer alan test analistinin eğitimlerini, izinlerini, molalarını vb. içermemektedir.</p>
        <p>Yukarıda bahsedildiği gibi birbirini takip eden adımlardan oluşan ve paralelde başka
bir iş için efor sarf edilmediği varsayıldığında, Tahmini Test Çalıştırma Süresi (T)
aşağıdaki gibi elde edilmektedir:
1</p>
        <p>T= 32*+ S(x, y) + λ * q * n + )*+ λ ∗ P ∗ (0/++)) + K</p>
        <p>Tablo 4’de, geçmişe yönelik ölçümlerin elde ettiğimiz modele yerleştirilmesi
sonucunda her bir proje için elde edilen Tahmini Test Çalıştırma Süreleri verilmektedir.
Tabloda verilmekte olan sonuçlar analiz edildiğinde tahmin edilen ve gerçek süreler
arasında genelde doğrusal bir ilişkinin olduğu görülmektedir (Şekil 1.) 11 No’lu proje
değerlendirme dışı tutulduğunda tahmini ve gerçek süreler arasındaki ortalama bağıl
hata %6,27 olarak bulunmuştur. Bu çerçevede bakıldığında, incelenen çalışma için
model üzerinde oluşturulan tahminlerin gerçek süreler ile örtüştüğü gözlenmektedir.</p>
        <p>Proje 11’in sıradışı durumu ayrıca incelenmiştir. Yazılımcı bulguları geç düzelttiği
için test analistinin projeye ara verdiği ve başka bir iş aldığı anlaşılmıştır. Geliştirilen
modelde test analistinin sadece tek bir proje ile ilgilendiği varsayımında
bulunulmasından dolayı K değeri eklenmeden hesaplanan test çalıştırma süresinin, gerçek test
çalıştırma süresinden büyük olduğu gözlenmektedir. Yazılımcının bulguya dönüş süresinin
ortalamanın çok dışında olmasının hatalara yol açtığı sonucuna varılmıştır.
Proje Adı
Proje-01
Proje-02
Proje-03
Proje-04
Proje-05
Proje-06
Proje-07
Proje-08
Proje-09
Proje-10
Proje-11
Proje-12
Proje-13
Proje-14
Proje-15
Proje-16
Proje-17
Proje-18
posta gönderimlerinin banka çalışanları tarafından raporlanabilmesi amacı ile, mevcut
e-posta verilerinin raporlanabilir ortama aktarılması sağlanacaktır. Test projesi
kapsamında ise bu proje kapsamında tüm mevcut ve güncel e-posta verilerinin raporlanabilir
ortama aktarımının doğru bir şekilde tamamlandığı test edilecektir.</p>
        <p>Testi yapılacak olan projenin gereksinimleri İhtiyaç Analizi Dokümanında aşağıdaki
gibi tanımlanmıştır:
• E-posta gönderimlerinin raporlanabilir ortama taşınması için gerekli tablo
yapısının ve veri taşıma yöntemlerinin geliştirilmesi gerekmektedir.
• E-posta gönderimlerine ait verilerin Mars (Bankacılık Veritabanında e-posta
kayıtları ile müşteri ilişkisini sağlayan özgün bir değer) ile ilişkili olarak tutulması
için Mars bilgisinin mevcut tablo yapılarına eklenmesi gerekmektedir.</p>
        <p>Bu çerçevede bakıldığı zaman iki farklı sunucuda bulunan güncel verilerin tutulduğu
8 tabloya ve mevcut verilerin tutulduğu 5 tabloya ait toplamda 116 veri sahasının doğru
şekilde aktarılması beklenmektedir. Aktarımı sağlayacak olan 5 farklı program bileşeni
çalıştırılacaktır. Bu sahalardan 2 tanesi (biri güncel veri için diğeri de mevcut veri için)
Mars bilgisini tutmak için kullanılacak olup kontrolleri için farklı program
bileşenlerinin çalıştırılması ve farklı tabloların kontrol edilmesi gereksinimi doğmaktadır.
Şekil 1. Tahmini ve Gerçek Test Çalıştırma Süreleri
Aktarımın testi ile ilgili olarak;
• Çalıştırılacak olan 5 program bileşeninin doğru çalıştığının kontrol edilmesi için
birlikte çalışabilirlik kontrolü yapılacaktır. Bu kontrollerin büyüklüğünün
L(büyük) olacağı öngörülmektedir:</p>
        <p>5 * S(BC, L)
• 116 sahanın doğru beslendiğinin görülmesi için eşleşme kontrolü yapılacaktır, bu
sahalardan iki tanesinin kontrolü için farklı tabloların da kontrolüne ihtiyaç
duyulduğu için büyüklüğünün L (büyük) olacağı öngörülmektedir. Kalan sahalardan
44 tanesi için büyüklüğü M (orta) olacağı düşünülmektedir, geriye kalan 70
sahanın kontrolünün ise S (küçük) büyüklüğünde olması beklenmektedir:
2 * S(MK, L), 44 * S(MK, M), 70 * S(MK, S)</p>
        <p>Toplamda 119 kontrol yapılmakta olup buradan testin senaryo sayısının da 119
olabileceği tespit edilmiştir. Tahmin Veritabanı kullanılarak ideal şartlarda test çalıştırma
süresi 26,54 saat olarak hesaplanmaktadır.</p>
        <p>Projenin geliştiricisi Yazılımcı-7’dir. Yazılımcı-7’nin bulgu yoğunluğu ve bulgu
düzeltme süresi kullanılarak, bulgu düzeltme süresi 14,06 saat olarak ve yeniden test etme
süresi 54,53 saat olarak hesaplanmıştır.</p>
        <p>Elde edilen değerlerin toplanması ile Test Analistinin bahsedilen projeyi 71,27 saatte
yani günde 8 saat çalışarak yaklaşık 9 iş gününde bitirmesi öngörülmektedir. Test
Analistinin Bankacılık Veritabanına girmiş olduğu gerçekleşen aktivite süreleri
incelendiğinde projeyi toplam 84 saatte ve 10,5 iş gününde bitirmiş olduğu görülmüştür.</p>
        <p>Pilot çalışmada test çalıştırma süresinin %84,85 doğrulukta tahmin edilebildiği
gözlemlenmiştir. Her yeni projenin sağladığı veriler sayesinde gelişme yaşayan Tahmin
Veritabanının sağlam bir temele oturması beklenmektedir. Dolayısı ile test çalıştırma
süresi tahminindeki hatanın azalacağı düşünülmektedir.</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>Sonuçlar</title>
      <p>Bu çalışma kapsamında Watts Humphrey’in PSP ve PROXY tahmin yönteminden
esinlenilmiştir. Özel bir bankada çalışan test analistlerinin kişisel test süreci modellenmiş
ve geçmiş test projelerinden toplanan test süreci verilerinden bir tahmin veritabanı
oluşturulmuştur. Geliştirilen proxy tabanlı PTP-Vision yöntemi pilot projeye uygulanarak
test çalıştırma süresi tahmin edilmiştir. Veritabanının oluşturulması sırasında ve pilot
çalışmadan elde edilen sonuçlar tahmin ve gerçekleşme süresinin büyük oranda tutarlı
olması (%84,85), geliştirilen yöntemin belirli bir alanda belirli bir yazılımcı kümesi ile
çalışan ve test proje büyüklükleri birbirine yakın olan durumlarda bir test analisti için
uygulanabilir ve gerçekçi olduğunu göstermektedir.</p>
      <p>Test analistinin kişisel süreci için model üzerinden yapacağı tahminlerin gerçek
sonuçlar ile örtüşmesi beklenmektedir. Ancak sonuçların her duruma
genelleştirilebilmesi şu an için mümkün değildir. Yukarıda belirtildiği gibi tahmin veritabanında yer
alan değerler o ana kadar toplanan değerlerden oluşmakta olup, nihai değerler değildir.
Yeni projelere ait ölçüm sonuçlarının toplanması durumunda bu değerler değişecektir.
Şu an için her yeni proje için elde edilen ölçüm sonuçlarının daha iyi tahmin sonuçları
verip veremeyeceğine yönelik bir hata analizi yapılmamıştır. Bunun için çok daha uzun
bir süre ve banka yazılım merkezi genelinde bir çalışmanın yapılmasına ihtiyaç vardır.
Ancak eldeki bulgulara dayalı olarak ölçüm sonuçları çoğaldıkça Kişisel Tahmin
Veritabanının sağlamlaşacağı ve tutarlı tahminler vereceği beklenmektedir.</p>
      <p>
        Bankacılık yazılımları sektöründe zaman önemli bir kısıt olduğu için yöntemin farklı
alanda çalışan (mobil, özel projeler, nakit yönetimi, krediler vb.) birçok test analistine
yaygınlaştırılması aşamasında test analistlerinin kendi süreçlerini izlemeleri ve
verilerini bizim gibi kağıt ortamında kayıt altına almaları zor olacaktır. PSP’de veri toplamayı
kolaylaştıran bir kısım araçlar [
        <xref ref-type="bibr" rid="ref11">18</xref>
        ] olduğu gibi ileride bu yöntemin uygulaması için de
benzer araçlar geliştirilebilir.
      </p>
      <p>Çalışmanın devamında genel istatistik yöntemleri yerine Geri Yayılma Algoritması
(Backpropagation) kullanılarak ölçümlerin Tahmin Veritabanını beslemesinin
sağlanması amaçlanmaktadır. Geri yayılım algoritması hataları geriye doğru çıkıştan girişe
azaltmaya çalışmaktadır. Böylelikle yeni projeye ait ölçüm sonuçları ile Tahmin
Veritabanının iyileşip iyileşmediği tespit edilebilecektir. İyileştiren değerlerin Tahmin
Veritabanına beslenmesi yolu ile veritabanının sağlamlaştırılması hedeflenmektedir.</p>
      <sec id="sec-6-1">
        <title>Kaynakça</title>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <string-name>
            <surname>Akagündüz</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kurnaz</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Sari</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <string-name>
            <surname>Yazılım Proje Yönetiminde Proje Başarısını Getiren</surname>
          </string-name>
          <article-title>Faktörler (Factors that Make the Success of the Project in Software Project Management</article-title>
          .)
          <source>In: Akademik Bilişim</source>
          <year>2013</year>
          (
          <year>2013</year>
          ) Mai, H.: IT in Banks : What does it cost ? (
          <year>2012</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          <source>Eng. Appl</source>
          .
          <volume>6</volume>
          ,
          <fpage>47</fpage>
          -
          <lpage>52</lpage>
          (
          <year>2013</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          <string-name>
            <surname>Chemuturi</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Software Estimation Best Practices, Tools and Techniques: A Complete Guide for Software Project Estimators</article-title>
          .
          <source>Florida</source>
          (
          <year>2009</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          <string-name>
            <surname>ISO</surname>
          </string-name>
          /IEC: International
          <source>Standard ISO/IEC 9126-1 Software engineering - Product quality - Part</source>
          <volume>1</volume>
          :
          <string-name>
            <surname>Quality</surname>
            <given-names>model.</given-names>
          </string-name>
          (
          <year>2001</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          6.
          <string-name>
            <surname>Veenendaal</surname>
            ,
            <given-names>van EPWM</given-names>
          </string-name>
          (Erik); Dekkers,
          <string-name>
            <surname>T.</surname>
          </string-name>
          :
          <article-title>Test Point Analysis : a Method for Test Estimation</article-title>
          .
          <source>Proj. Control Softw. Qual</source>
          .
          <volume>1</volume>
          -
          <fpage>16</fpage>
          (
          <year>1999</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          7.
          <string-name>
            <surname>Nageswaran</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <source>Test Effort Estimation Using Use Case Points, Use Case Points. Quality Week</source>
          <year>2001</year>
          , San Francisco, pp.
          <fpage>1</fpage>
          -
          <lpage>6</lpage>
          (
          <year>2001</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          8.
          <string-name>
            <surname>Kerstner</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Software test effort estimation</article-title>
          .
          <source>SIGSOFT Softw. Eng. Notes</source>
          (
          <year>2011</year>
          )
          <article-title>9</article-title>
          .
          <string-name>
            <surname>Aranha</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Borba</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>Estimating manual test execution effort and capacity based on execution points</article-title>
          .
          <source>Int. J. Comput. Appl</source>
          .
          <volume>31</volume>
          ,
          <fpage>167</fpage>
          -
          <lpage>172</lpage>
          (
          <year>2009</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          10.
          <string-name>
            <surname>Firesmith</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          : SEI Blog:
          <article-title>Using V Models for Testing</article-title>
          . Carnegie Mellon University (
          <year>2013</year>
          )
          <article-title>11</article-title>
          . SWEBOK. Guide to the
          <source>Software Engineering Body of Knowledge</source>
          ,
          <year>2004</year>
          Version (
          <year>2004</year>
          )
          <fpage>12</fpage>
          .
          <string-name>
            <surname>Chan</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wei</surname>
            ,
            <given-names>J.J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Boyer</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Guo</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wang</surname>
            ,
            <given-names>H.Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Liu</surname>
            ,
            <given-names>H.L.</given-names>
          </string-name>
          :
          <article-title>IBM Business Process Manager testing methodology</article-title>
          ,
          <source>Part</source>
          <volume>1</volume>
           :
          <article-title>General testing guidelines</article-title>
          . (
          <year>2014</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          13.
          <string-name>
            <surname>ISTQB</surname>
          </string-name>
          .
          <source>Standard Glossary of Terms Used in Software Testing. Version 3.1 (March</source>
          <year>2016</year>
          )
          <volume>14</volume>
          .
          <string-name>
            <surname>Humphrey</surname>
            ,
            <given-names>W.:</given-names>
          </string-name>
          <article-title>A Discipline for Software Engineering</article-title>
          . Addison Wesley, Boston (
          <year>1995</year>
          )
          <article-title>15</article-title>
          . IEEE, “IEEE Std.
          <fpage>829</fpage>
          -
          <lpage>2008</lpage>
          :
          <article-title>Standard for Software and System Test Documentation</article-title>
          . (
          <year>2008</year>
          )
          <fpage>16</fpage>
          .
          <string-name>
            <surname>Hass</surname>
            ,
            <given-names>A.M.J.</given-names>
          </string-name>
          :
          <article-title>Guide to Advanced Software Testing</article-title>
          . Artech
          <string-name>
            <surname>House</surname>
          </string-name>
          (
          <year>2008</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          17.
          <string-name>
            <surname>Humphrey</surname>
            ,
            <given-names>W.:</given-names>
          </string-name>
          <article-title>PSP: A Self-Improvement Process for Software Engineers</article-title>
          .
          <source>SEI Series in Software Engineering, Edition</source>
          <volume>1</volume>
          (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          18.
          <string-name>
            <surname>Çalışkan</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Çetinkaya</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dinçer</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Yılmaz</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Çakıcı</surname>
          </string-name>
          , H.:
          <article-title>PSP Eğitimi için Kullanıcı Dostu bir Süreç Yönetim Aracı Geliştirme Denemesi (A Process Management Tool Development Trial for PSP Training)</article-title>
          .
          <source>In: Proceedings of the 9th Turkish National Software Engineering Symposium (UYMS</source>
          <year>2015</year>
          ). pp.
          <fpage>529</fpage>
          -
          <lpage>541</lpage>
          (
          <year>2015</year>
          ).
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>