Modelden Testler Geliştirme
Microsoft Visual Studio Ultimate'te gereksinimleri ve mimari modelleri sisteminizin ve onun bileşenlerinin testlerini düzenlemenize yardımcı olması için kullanabilirsiniz.Bu uygulama, kullanıcılar ve diğer hissedarlar için önemli olan gereksinimleri test ettiğinizden emin olmanıza ve gereksinimler değiştiğinde testleri çabuk güncellemenize yardımcı olur.Eğer Microsoft Test Yöneticisi kullanıyorsanız modeller ve testler arasındaki bağlantıları da koruyabilirsiniz.
Sistem ve Alt Sistem Testi
Sistem testi, kabul testi olarak da bilinir, kullanıcıların gereksinimlerinin karşılanıp karşılanmadığınn test edilmesi anlamına gelir.Böyle testler iç tasarım yerine sistemin dışarıdan görünen davranışı hakkında duyarlıdır.
Sistem testleri sistemi genişletirken veya yeniden tasarlarken çok değerlidir.Kodu değiştirdiğinizde giriş hatalarından kaçınmanıza yardımcı olurlar.
Sistemde herhangi bir değişiklik veya uzantı planlarken varolan sistemde çalışan sistem testleri kümesi ile başlamak yararlıdır.Sonra yeni gereksinimleri sınamak için testleri genişletebilir ve ayarlayabilirsiniz, bunun için kodda değişiklikler yapın ve tüm test kümesini yeniden çalıştırın.
Yeni sistem geliştirirken geliştirme başlar başlamaz testleri oluşturmaya başlayabilirsiniz.Her özelliği geliştirmeden önce testleri tanımlayarak gereksinimler tartışmalarını çok özel bir şekilde yakalayabilirsiniz.
Alt sistem testi aynı ilkeleri sistemin ana bileşenlerine uygular.Her bileşen diğer bileşenlerden ayrı olarak test edilir.Alt sistem testleri bileşenin kullanıcı arabirimindeki veya API'daki görünür davranışına odaklanır.
Testleri çalıştırma hakkında daha fazla bilgi için bkz. Uygulamayı test etme.
Gereksinimler Modeli'nden Sistem Testleri Türetme
Sistem testleri ve gereksinimler modeli arasında ilişki oluşturabilir ve sürdürebilirsiniz.Bu ilişkiyi kurmak için gereksinimler modelinin ana öğelerine karşılık gelen testler yazarsınız.Visual Studio Ultimate testler ve model bölümleri arasında bağlantılar oluşturmanıza izin vererek ilişkiyi sürdürmenize yardım eder.Gereksinim modeli hakkında daha fazla bilgi için bkz. Kullanıcı Gereksinimlerini Modelleme.
Her Kullanım Örneği için Test Yazma
Eğer Microsoft Test Yöneticisi kullanıyorsanız gereksinimler modelinde tanımladığınız her kullanım örneği için bir grup test oluşturabilirsiniz.Örneğin, Sipariş Oluştur ve Siparişe Öğe Ekle'yi içeren Öğlen Yemeği Ismarla kullanım örneğiniz varsa hem tamamı hem de bu kullanım örneklerinin daha ayrıntılıları için testler oluşturabilirsiniz.Kullanım örnekleri hakkında daha fazla bilgi için bkz. UML Kullanım Durumu Diyagramları: Yönergeler.
Bu yönergeler yardımcı olabilir:
Her kullanım örneğinin ana yollar ve özel sonuçlar için birkaç testi olmalıdır.
Kullanım örneğini gereksinimler modelinde açıkladığınızda kullanıcının hedefi gerçekleştirmek için takip ettiği yordamları detaylı olarak açıklamaktan onun sonkoşulunu yani gerçekleştirilen hedefi tanımlamak daha önemlidir.Örneğin, Öğlen Yemeği Ismarla'nın sonkoşulu Restoran'ın Müşteri için yemeği hazırlaması ve Müşteri'nin ödeme yapması olabilir.Sonkoşul testlerinizin doğrulaması gereken ölçüttür.
Ayrı testleri sonkoşulun ayrı yan tümleciklerine dayandırın.Örneğin, siparişi restorana bildirmek ve müşteriden ödemeyi almak için ayrı testler oluşturun.Bu ayrımın şu faydaları vardır:
Gereksinimlerin farklı yönlerindeki değişiklikler sık sık bağımsız olarak gerçekleşir.Bu şekilde testleri farklı yönlere ayırarak gereksinimler değiştiğinde testleri güncellemeyi kolaylaştırırsınız.
Eğer geliştirme planı kullanım örneğinin bir yönünü diğerinden daha önce uygularsa geliştirme ilerledikçe testleri ayrı ayrı etkinleştirebilirsiniz.
Testleri tasarladığınızda test verilerinin seçimini koddan veya sonkoşulun gerçekleştirilip gerçekleştirilmediğine karar veren betikten ayırın.Örneğin, basit bir aritmetik işlevin testi şu şekilde olabilir: Giriş 4; çıkışın 2 olduğunu doğrulayın.Bunun yerine betiği şu şekilde tasarlayın: Bir girdi seçin, çıktıyı kendisiyle çarpın ve sonucun özgün giriş olduğunu doğrulayın.Bu stil, testin ana gövdesini değiştirmeden test girdilerini değiştirmenizi sağlar.
Testleri kullanım örneklerine bağlama
Testleri tasarlamak ve çalıştırmak için Test Yöneticisi kullanıyorsanız testlerinizi gereksinim, kullanım örneği veya kullanıcı hikayesi çalışma öğeleri altında düzenleyebilirsiniz.Bu çalışma öğelerini modelinizdeki kullanım örneklerine bağlayabilirsiniz.Bu, testler için gereksinim değişikliklerini hızlıca izlemenizi sağlar ve her kullanım örneğinin ilerlemesini izlemenize yardım eder.
Testleri kullanım örneğine bağlamak için
Test Yöneticisi'da gereksinim oluşturun ve test paketini ona dayandırın.Bunun nasıl yapıldığını öğrenmek için bkz. [çekildi] Ürün Biriktirme Listesi Öğeleri, Kullanıcı Yazıları veya Gereksinimler İçin Testler Oluşturma.
Oluşturduğunuz gereksinim Team Foundation Server'da çalışma öğesidir.Projenizin Team Foundation ile kullandığı işlem tablonuza bağlı olarak Kullanıcı Hikayesi, Gereksinim veya Kullanım Örneği çalışma öğesi olabilir.Daha fazla bilgi için bkz. Visual Studio ALM ve TFS ile çalışmayı izleme.
Gereksinim çalışma öğesini modelinizdeki bir veya daha fazla kullanım örneğine bağlayın.
Kullanım örneği diyagramında kullanım örneğine sağ tıklayın ve sonra Çalışma Öğesine Bağlantı'a tıklayın.Daha fazla bilgi için bkz. Model Öğelerini ve İş Öğelerini Bağlama.
Test paketine kullanım örneklerini doğrulayan test örneklerini ekleyin.
Genellikle, her kullanıcı hikayesi veya gereksinim çalışma öğesi modelinizdeki birçok kullanım örneğine ve her kullanım örneği birçok kullanıcı hikayesine veya gereksinimine bağlanacaktır.Çünkü her kullanıcı hikayesi veya gereksinimi birçok kullanım örneğini geliştiren görevler kümesini kapsar.Örneğin, projenizin erken yinelemelerinde müşterinin katalogtan öğe seçebildiği ve müşteriye öğelerin teslim edilebildiği basit kullanıcı hikayesi geliştirebilirsiniz.Sonraki yinelemede hikaye, sipariş tamamlandığında kullanıcının ödeme yapması ve tedarikçinin malları gönderdikten sonra parayı alması olabilir.Her hikaye Malları Ismarla kullanım örneğinin sonkoşuluna yan tümce ekler.
Kullanım örneği diyagramında yan tümceleri ayrı açıklamalara yazarak gereksinimlerden sonkoşul yan tümcelerine ayrı bağlantılar oluşturabilirsiniz.Her açıklamayı gereksinim çalışma öğesine ve o açıklamayı diyagramdaki kullanım örneğine bağlayabilirsiniz.
Gereksinim Türlerinde Temel Testler
Gereksinimler modelinin türleri; sınıflar, arabirimler ve sabit listeler; kullanıcıların işleri hakkında nasıl düşündükleri ve iletişim kurdukları açısından kavramları ve ilişkileri açıklar.Sistemin sadece iç tasarımı ile ilgili türleri dışlar.
Testlerinizi bu gereksinim türleri açısından tasarlayın.Bu yöntem, gereksinimlerdeki değişiklikler tartışıldığında değişiklikleri testlerdeki gerekli değişikliklerle ilişkilendirmenin kolay olmasını sağlayarak yardımcı olur.Bu, testler ve onların hedeflenen sonuçlarının doğrudan son kullanıcılar ve diğer hissedarlarla tartışılmasını mümkün kılar.Bu, kullanıcıların gereksinimlerinin geliştirme süreci dışında sürdürebilmesi anlamına gelir ve tasarımdaki olası eksiklikler etrafında testlerin yanlışlıkla yapılan tasarımını önler.
El ile testler için bu yöntem, test betikteki gereksinimler modeli sözlüğüne bağlılığı içerir.Otomatik testler için bu yöntem, gereksinimler sınıf diyagramını test kodunuz için temel olarak kullanmayı ve gereksinim modelini koda bağlamak için erişimci ve güncelleştirici işlevleri oluşturmayı içerir.
Örneğin, gereksinimler modeli Menü, Menü Öğesi, Sipariş türleri ve onlar arasındaki ilişkileri içerebilir.Bu model yemek ısmarlama sistemi tarafından depolanan ve ele alınan bilgileri gösterir ancak uygulamadaki karmaşıklıkları göstermez.Çalışma sisteminin içinde her türün veritabanlarında, kullanıcı arabirimlerinde ve API'lerde birkaç farklı gerçekleştirimi olabilir.Dağıtılmış sistemde aynı anda sistemin farklı bölümlerinde depolanan her nesnenin çeşitli türevleri olabilir.
Siparişe Öğe Ekle gibi bir kullanım örneğini test etmek için test yöntemi buna benzer kod içerebilir:
Order order = … ; // set up an order
// Store prior state:
int countBefore = order.MenuItems.Count;
// Perform use case:
MenuItem chosenItem = …; // choose an item
AddItemToOrder (chosenItem, order);
// Verify part of postcondition:
int countAfter = order.MenuItems.Count;
Assert (countAfter == countBefore = 1);
Bu test yönteminin gereksinimler modelinin sınıflarını kullandığına dikkat edin.İlişkilendirmeler ve öznitelikler .NET özelliği olarak gerçekleştirilirler.
Bu işi yapmak için sınıfların özellikleri, salt okunur işlevler veya sistemin mevcut durumu hakkında bilgi almak için sisteme ulaşan erişimciler olarak tanımlanırlar.SiparişeÖğeEkle gibi kullanım örneklerinin benzetimini yapan yöntemler sistemi API'siyle veya kullanıcı arabiriminin altındaki katmanla kullanmalıdır.Sipariş ve MenüÖğesi gibi test nesnelerinin kurucuları sistemi, sistem içinde karşılık gelen öğeleri oluşturmak için de kullanmalıdır.
Birçok erişimci ve güncelleyici uygulamanın normal API'si dolayısıyla zaten kullanılabilir olacaktır.Ancak testleri etkinleştirebilmek için bazı ek işlevlerin yazılması gerekebilir.Bazen bu ek erişimciler ve güncelleyiciler "test araçları" olarak bilinir.Çünkü sistemin iç tasarımına bağlıdırlar, onları sağlamak sistem geliştiricilerin sorumluluğudur oysa ki testçiler testlerin kodunu gereksinimler modeli açısından yazarlar.
Otomatik testler yazdığınızda erişimcileri ve güncelleyicileri sarmalamak için Genel Testler'i kullanabilirsiniz.Daha fazla bilgi için bkz. Genel Testleri Kullanarak Çalıştırılabilir Öğe Çalıştıran Bir Otomatik Test Oluşturma.
İş Kuralları için Testler
Bazı gereksinimler kullanım örneklerinin herhangi biriyle doğrudan ilişkili değildir.Örneğin, ŞimdiAkşamYemeği işi müşterilerin birçok Menü'den seçmesine izin verir ancak her Sipariş'de tüm seçili Öğeler'in tek bir Menü'den olması gerekir.Bu iş kuralı, gereksinimler sınıf modelindeki Siparişler, Menüler ve Öğeler arasındaki ilişkilendirmeler hakkındaki değişmez değer olarak ifade edilebilir.
Bu tür sabit bir kural sadece mevcut durumda tanımlanmış kullanım örneklerini değil daha sonra tanımlanacak diğer kullanım örneklerini de yönetir.Bu nedenle onu herhangi bir kullanım örneğinden ayrı olarak yazmak ve kullanım örneklerinden ayrı olarak test etmek yararlı olur.
Değişmez bir iş kuralını sınıf diyagramında açıklama olarak yazabilirsiniz.Daha fazla bilgi için bkz. UML Sınıf Diyagramları: Yönergeler.
Açıklamayı gereksinime veya Test Yöneticisi'daki test paketine bağlayabileceğiniz kullanıcı hikayesi çalışma öğesine bağlayarak testleri iş kuralına bağlayabilirsiniz.Daha fazla bilgi için bkz. Model Öğelere Test Örneklerini İliştirme.
Performans ve diğer hizmet gereksinimleri kalitesi kullanım örneklerindeki, etkinlikteki veya sıralı diyagramlarındaki açıklamalara kaydedilebilir.Ayrıca bunları gereksinimler çalışma öğelerine ve onların test paketlerine de bağlayabilirsiniz.
Testler için Dizi ve Etkinlik Diyagramları
Eğer gereksinimleriniz veya mimari modelleriniz dizi veya etkinlik diyagramları içeriyorsa diyagramları doğrudan izleyen testler yazabilirsiniz.
Bazen diyagramdaki dallar ve döngüler aracılığıyla dinamik olarak farklı yolları seçen testler tasarlamak yararlıdır.
Her ileti veya eylemden sonra sistem durumunu doğrulamayı deneyin.Bu ek araçlar gerektirebilir.
Modellerden Alt Sistem Testleri Türetme
Büyük bir sistemin üst düzey tasarımında bileşenleri veya alt sistemleri tanımlayabilirsiniz.Bunlar, ayrı olarak tasarlanabilen parçaları, farklı bilgisayarlarda bulunan parçaları veya birçok şekilde yeniden birleştirilebilen yeniden kullanılabilir modül parçalarını gösterir.Daha fazla bilgi için bkz. UML Bileşen Diyagramları: Yönergeler.
Her ana bileşene tam sistem için kullandığınız aynı ilkeleri uygulayabilirsiniz.Büyük bir projede her bileşenin kendi gereksinimler modeli olabilir.Daha küçük projelerde mimari model veya üst düzey tasarım, ana bileşenleri ve onların etkileşimlerini göstermek için oluşturulabilir.Daha fazla bilgi için bkz. Yazılım Sistem Mimarisi Modelleme.
Her iki durumda da, model öğeler ve alt sistem testleri arasında gereksinimler modeli ve sistem testleri arasındaki ile aynı şekilde bir ilişki kurabilirsiniz.
Bileşenleri Sağlanan ve Gerekli Arabirimler ile Yalıtma
Bileşenin sistemin diğer bölümlerindeki veya dış hizmetlerdeki tüm bağımlılıklarını tanımlamak ve bunları Gerekli Arabirimler olarak göstermek için yararlıdır.Bu alıştırma genellikle bileşeni tasarımınızın geri kalanından bağlantısı kesilmiş ve kolayca ayrılabilir olarak bırakan bazı yeni tasarımlar doğurur.
Bu ayrımın avantajı hizmetlerin genellikle kullandığı mock nesnelerini değiştirerek bileşenin test etmek için yürütülebilecek olmasıdır.Bunlar sınama amaçları için ayarlanan bileşenlerdir.Bir mock bileşeni sorgulara benzetimli verilerle yanıt vererek bileşeninizin gerektirdiği arabirimi sağlar.Mock bileşenleri, bileşenin tüm arabirimlerine bağlanabileceğiniz tam bir test donanımının parçasını oluşturur.
Mock sınamasının yararı, hizmetleri kullanılacak olan diğer bileşenler hala gelişme aşamasındayken sizin bileşeninizi geliştirebilmenizdir.
Testler ve Model Arasındaki İlişkileri Koruma
Her birkaç haftada bir yineleme gerçekleştiren tipik bir projede, gereksinimlerin gözden geçirilmesi her yinelemenin başlangıcına yakın tutulur.Toplantıda bir sonraki yinelemede teslim edilecek özellikler tartışılır.Gereksinimler modeli; kavramları, senaryoları ve geliştirilecek eylemler dizilerini tartışmanıza yardımcı olmak için kullanılabilir.İş hissedarları öncelikleri ayarlar, geliştiriciler tahmin yapar ve testçiler her özelliğin hedeflenen davranışının doğru olarak yakalandığını kesinleştirir.
Test yazmak gereksinim tanımlamak için ve ayrıca bir insanın gerekli olan şeyleri tam olarak anladığından emin olmak için en etkili yoldur.Buna rağmen, belirtim atölyesi sırasında test yazmak çok uzun zaman alırken modelleri oluşturma çok daha hızlı yapılabilir.
Test etme bakış açısından gereksinimler modeli testler için kestirme olarak görünebilir. Bu nedenle, sınamalar ve model arasındaki ilişkiyi proje boyunca korumak önemlidir.
Model Öğelere Test Örneklerini İliştirme
Eğer projeniz Test Yöneticisi kullanıyorsa testleri modelinizdeki öğelere bağlayabilirsiniz.Bu, gereksinimlerdeki değişikliklerden etkilenen testleri hızlı bir şekilde bulmanıza olanak verir ve gerçekleştirilen gereksinime olan uzantıyı izlemenize yardım eder.
Testleri her türden öğeye bağlayabilirsiniz.İşte birkaç örnek:
Kullanım örneğini onu çalıştıran testlere bağlayın.
Kullanım örneği sonkoşulunun veya hedefin yan tümcelerini kullanım örneğine bağlı açıklamaların üzerine yazın ve sonra her açıklamaya testleri bağlayın.
Değişmez kuralları sınıf diyagramlarındaki veya etkinlik diyagramlarındaki açıklamalara yazın ve onları testlere bağlayın.
Testleri etkinlik diyagramına veya ayrı etkinliklere bağlayın.
Test paketini bir bileşene veya test ettiği alt sisteme bağlayın.
Testleri model öğeye veya ilişkiye bağlamak için
Test Yöneticisi'da gereksinim oluşturun ve test paketini ona dayandırın.Bunun nasıl yapıldığını öğrenmek için bkz. [çekildi] Ürün Biriktirme Listesi Öğeleri, Kullanıcı Yazıları veya Gereksinimler İçin Testler Oluşturma.
Oluşturduğunuz gereksinim Team Foundation Server'da çalışma öğesidir.Projenizin Team Foundation ile kullandığı işlem tablonuza bağlı olarak Kullanıcı Hikayesi, Gereksinim veya Kullanım Örneği çalışma öğesi olabilir.Daha fazla bilgi için bkz. Visual Studio ALM ve TFS ile çalışmayı izleme.
Gereksinim çalışma öğesini modelinizdeki bir veya daha fazla öğeye bağlayın.
Modelleme diyagramında, öğeye, açıklamaya veya ilişkiye sağ tıklayın ve sonra Çalışma Öğesine Bağlantı'ya tıklayın.Daha fazla bilgi için bkz. Model Öğelerini ve İş Öğelerini Bağlama.
Test paketine model öğede ifade edilen gereksinimi doğrulayan test örneklerini ekleyin.
Ayrıca bkz.
Kavramlar
Yazılım Tasarımı için Modeller Geliştirme
Kullanıcı Gereksinimlerini Modelleme