Aracılığıyla paylaş


Model aracılığıyla test geliştirme

Sisteminizin ve bileşenlerinin testlerini düzenlemenize yardımcı olması için gereksinimleri ve mimari modelleri kullanabilirsiniz. Bu uygulama, kullanıcılar ve diğer paydaşlar için önemli olan gereksinimleri test ettiğinizden emin olmanıza yardımcı olur ve gereksinimler değiştiğinde testleri hızla güncelleştirmenize yardımcı olur. Microsoft Test Manager kullanıyorsanız, modeller ve testler arasındaki bağlantıları da koruyabilirsiniz.

Hangi Visual Studio sürümlerinin bu özellikleri desteklediğini görmek için bkz . Mimari ve modelleme araçları için sürüm desteği.

Sistem ve Alt Sistem Testi

Kabul testi olarak da bilinen sistem testi, kullanıcıların ihtiyaçlarının karşılanıp karşılanmadığını test etme anlamına gelir. Bu tür testler, iç tasarım yerine sistemin dışarıdan görünen davranışıyla ilgilidir.

Sistem testleri, bir sistemi genişletirken veya yeniden tasarlarken çok değerlidir. Kodu değiştirdiğinizde hatalardan kaçınmanıza yardımcı olur.

Bir sistemde herhangi bir değişiklik veya uzantı planlarken, mevcut sistemde çalışan bir dizi sistem testiyle başlamak yararlı olur. Ardından yeni gereksinimleri test etmek için testleri genişletebilir veya ayarlayabilir, kodda değişiklik yapabilir ve tüm test kümesini yeniden çalıştırabilirsiniz.

Yeni bir sistem geliştirirken, geliştirme başlar başlamaz testler oluşturmaya başlayabilirsiniz. Her özelliği geliştirmeden önce testleri tanımlayarak, gereksinimler tartışmalarını belirli bir şekilde yakalayabilirsiniz.

Alt sistem testi, sistemin ana bileşenlerine aynı ilkeleri uygular. Her bileşen diğer bileşenlerden ayrı olarak test edilir. Alt sistem testleri, bileşenin kullanıcı arabirimlerinde veya API'sinde görünen davranışa odaklanır.

Bir Gereksinim Modelinden Sistem Testlerini Türetme

Sistem testleri ile 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, testler ve modelin bölümleri arasında bağlantılar oluşturmanıza izin vererek bu ilişkiyi sürdürmenize yardımcı olur. Gereksinimler modelleri hakkında daha fazla bilgi için bkz . Model kullanıcı gereksinimleri.

Her Kullanım Örneği için Yazma Testleri

Microsoft Test Manager kullanıyorsanız, gereksinimler modelinizde tanımladığınız her kullanım örneği için bir test grubu oluşturabilirsiniz. Örneğin, Sipariş Oluştur ve Siparişe Öğe Ekle'yi içeren bir kullanım örneğiniz varsa, bu kullanım örneklerinin hem genel hem de daha ayrıntılı testleri oluşturabilirsiniz.

Bu yönergeler yararlı olabilir:

  • Her kullanım örneğinde ana yollar ve olağanüstü sonuçlar için birkaç test olmalıdır.

  • Gereksinimler modelinde bir kullanım örneğini tanımlarken, kullanıcının hedefe ulaşmak için izlediği yordamları ayrıntılı olarak açıklamak yerine, son koşulunu, yani ulaşılan hedefi tanımlamak daha önemlidir. Örneğin, Bir Yemek Sipariş Et'in son koşulu, bir Restoranın Bir Müşteri için yemek hazırladığı ve Müşterinin ödeme yaptığı olabilir. Son koşul, testlerinizin doğrulanması gereken ölçütdür.

  • Ayrı testleri, son koşulun ayrı yan tümcelerine dayandırın. Örneğin, restorana siparişi bildirmek ve müşteriden ödeme almak için ayrı testler oluşturun. Bu ayrım şu avantajlara sahiptir:

    • Gereksinimlerin farklı yönlerinde değişiklikler sıklıkla bağımsız olarak gerçekleşir. Testleri bu şekilde farklı yönlere ayırarak, gereksinimler değiştiğinde testlerin güncelleştirilmesi daha kolay hale getirebilirsiniz.

    • Geliştirme planı, kullanım örneğinin bir yönünü başka bir boyuta uygularsa, geliştirme ilerledikçe testleri ayrı olarak etkinleştirebilirsiniz.

  • Testleri tasarlarken, test verileri seçimini, son koşula ulaşılıp ulaşılmadığını belirleyen koddan veya betikten ayırın. Örneğin, basit bir aritmetik işlevin testi şöyle olabilir: Giriş 4; çıkışın 2 olduğunu doğrulayın. Bunun yerine betiği şu şekilde tasarla: Giriş seçin; çıkışı tek başına çarpın ve sonucun özgün giriş olduğunu doğrulayın. Bu stil, testin ana gövdesini değiştirmeden test girişlerini değiştirmenizi sağlar.

Testleri kullanım örneklerine bağlama

Testlerinizi tasarlamak ve çalıştırmak için Test Yöneticisi'ni kullanıyorsanız, testlerinizi gereksinim, kullanım örneği veya kullanıcı hikayesi iş öğeleri kapsamında düzenleyebilirsiniz. Bu iş öğelerini modelinizde kullanım örneklerine bağlayabilirsiniz. Bu, testlerde gereksinim değişikliklerini hızla izlemenizi sağlar ve her kullanım örneğinin ilerleme durumunu izlemenize yardımcı olur.

  1. Test Yöneticisi'nde bir gereksinim oluşturun ve bir test paketini temel alır.

    Oluşturduğunuz gereksinim, Team Foundation Server'daki bir iş öğesidir. Projenizin Team Foundation ile kullandığı işlem şablonuna bağlı olarak bir Kullanıcı Hikayesi, Gereksinim veya Kullanım Örneği iş öğesi olabilir. Daha fazla bilgi için bkz . Çevik araçları ve Çevik proje yönetimi hakkında.

  2. Gereksinim iş öğesini modelinizdeki bir veya daha fazla kullanım örneğine bağlayın.

    Kullanım örneği diyagramında, bir kullanım örneğine sağ tıklayın ve sonra da İş Öğesine Bağla'ya tıklayın.

  3. Test paketine ekleme, kullanım örneklerini doğrulayan test çalışmaları.

    Genellikle, her kullanıcı hikayesi veya gereksinim iş öğesi modelinizdeki birkaç kullanım örneğine ve her kullanım örneği de birkaç kullanıcı hikayesine veya gereksinimlerine bağlanır. Bunun nedeni, her kullanıcı hikayesinin veya gereksiniminin birkaç kullanım örneği geliştiren bir dizi görevi kapsamasıdır. Örneğin, projenizin erken yinelemesinde, müşterinin katalogdan öğe seçebileceği ve teslim etmelerini sağlayan temel kullanıcı hikayesini geliştirebilirsiniz. Sonraki bir yinelemede, kullanıcının siparişi tamamlarken ödeme yaptığı ve tedarikçinin malları gönderdikten sonra parayı aldığı anlatılabilir. Her yazı, Sipariş Malları kullanım örneğinin son koşuluna bir yan tümce ekler.

    Kullanım örneği diyagramında bu yan tümceleri ayrı açıklamalarda yazarak, gereksinimlerden son koşulun yan tümcelerine ayrı bağlantılar oluşturabilirsiniz. Her açıklamayı gereksinim iş öğesine bağlayabilir ve açıklamayı diyagramdaki kullanım örneğine bağlayabilirsiniz.

Gereksinimler Türlerine Göre Temel Testler

Gereksinimler modelinin türleri, yani sınıflar, arabirimler ve numaralandırmalar, kullanıcıların işlerini nasıl düşündükleri ve iletişim kurabilecekleri açısından kavramları ve ilişkileri açıklar. Yalnızca sistemin iç tasarımıyla ilgili türleri dışlar.

Testlerinizi bu gereksinim türlerine göre tasarlayın. Bu uygulama, gereksinimlerde yapılan değişiklikler tartışıldığında, değişiklikleri testlerdeki gerekli değişikliklerle ilişkilendirmenin kolay olduğundan emin olmanıza yardımcı olur. Testleri ve bunların hedeflenen sonuçlarını doğrudan son kullanıcılar ve diğer paydaşlarla tartışmayı mümkün kılar. Bu, kullanıcıların ihtiyaçlarının geliştirme sürecinin dışında tutulabileceği ve tasarımdaki olası kusurlar etrafında testlerin yanlışlıkla tasarlanmasından kaçınacağı anlamına gelir.

El ile yapılan testler için bu uygulama, test betiklerindeki gereksinimler modelinin kelime dağarcığına uymayı içerir. Otomatikleştirilmiş testler için bu uygulama, test kodunuz için temel olarak gereksinimler sınıf diyagramlarını 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ş ve aralarındaki ilişkilendirme türlerini içerebilir. Bu model, yemek sipariş sistemi tarafından depolanan ve ele alınan bilgileri temsil eder, ancak uygulamasının karmaşıklıklarını temsil etmez. Çalışma sisteminde veritabanlarında, kullanıcı arabirimlerinde ve API'lerde her türün birkaç farklı gerçekleştirilmesi olabilir. Dağıtılmış bir sistemde, sistemin farklı bölümlerinde aynı anda depolanan her örneğin birkaç değişkeni olabilir.

Siparişe Öğe Ekle gibi bir kullanım örneğini test etmek için test yöntemi şuna benzer bir 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 özellikleri olarak gerçekleştirilir.

Bu işe yaraması için sınıfların özellikleri salt okunur işlevler veya erişimciler olarak tanımlanmalıdır. Bu işlevler geçerli durumuyla ilgili bilgileri almak için sisteme erişmelidir. AddItemToOrder gibi kullanım örneklerinin simülasyonunu oluşturan yöntemlerin sistemi API'si veya kullanıcı arabiriminin altındaki bir katman aracılığıyla yönlendirmesi gerekir. Order ve MenuItem gibi test nesnelerinin oluşturucuları da sistemin içinde ilgili öğeleri oluşturmak için sistemi yönlendirmelidir.

Erişimcilerin ve güncelleştiricilerin çoğu uygulamanın normal API'sinde zaten kullanılabilir olacaktır. Ancak testleri etkinleştirmek için bazı ek işlevlerin yazılması gerekebilir. Bu ek erişimciler ve güncelleştiriciler bazen 'test izlemesi' olarak da bilinir. Sistemin iç tasarımına bağlı olduklarından, bunları sağlamak sistem geliştiricilerinin sorumluluğundadır, test eden kişiler ise testlerin kodunu gereksinimler modeli açısından yazar.

Otomatikleştirilmiş testler yazarken, erişimcileri ve güncelleştiricileri sarmak için Genel Testler'i kullanabilirsiniz.

İş Kuralları için Testler

Bazı gereksinimler herhangi bir kullanım örneğiyle doğrudan ilgili değildir. Örneğin, DinnerNow işletmesi müşterilerin birçok Menü arasından seçim yapmasını sağlar, ancak her Siparişte seçilen tüm Öğelerin tek bir Menüden olmasını gerektirir. Bu iş kuralı, gereksinimler sınıfı modelindeki Siparişler, Menüler ve Öğeler arasındaki ilişkilendirmeler hakkında sabit olarak ifade edilebilir.

Bu tür sabit bir kural yalnızca şu anda tanımlanmış olan tüm kullanım örneklerini değil, daha sonra tanımlanacak diğer kullanım örneklerini de yönetir. Bu nedenle, herhangi bir kullanım örneğinden ayrı olarak yazmak ve kullanım örneklerinden ayrı olarak test etmek yararlıdır.

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 veya farklı bilgisayarlarda bulunan veya birçok yolla yeniden birleştirilebilir modüller olan bölümleri temsil eder.

Her ana bileşene, tam sistem için kullandığınız ilkeleri uygulayabilirsiniz. Büyük bir projede her bileşenin kendi gereksinimler modeli olabilir. Daha küçük projelerde, ana bileşenleri ve bunların etkileşimlerini göstermek için bir mimari model veya üst düzey tasarım oluşturulabilir. Daha fazla bilgi için bkz . Uygulamanızın mimarisini modelleme.

Her iki durumda da, model öğeleriyle alt sistem testleri arasında, gereksinimler modeliyle sistem testleri arasında yaptığınız gibi bir ilişki kurabilirsiniz.

Sağlanan ve Gerekli Arabirimlerle Bileşenleri Yalıtma

Bir bileşenin sisteminizin veya dış hizmetlerinizin diğer bölümlerinde sahip olduğu tüm bağımlılıkları tanımlamak ve bunları Gerekli Arabirimler olarak göstermek yararlı olur. Bu alıştırma genellikle bileşeni tasarımınızın geri kalanından çok daha ayrı ve kolayca ayrıştırılabilir hale getiren bazı yeniden tasarımlara yol açar.

Bu ayırmanın bir avantajı, bileşenin genellikle kullandığı hizmetleri sahte nesnelerle değiştirerek test için yürütülebilir olmasıdır. Bunlar, test amacıyla ayarlanan bileşenlerdir. Sahte bileşen, bileşeninizin gerektirdiği arabirimi sağlayarak simülasyon verileriyle sorgulara yanıt verir. Sahte bileşenler, bileşenin tüm arabirimlerine bağlanabileceğiniz eksiksiz bir test koşumunun bir parçasını oluşturur.

Sahte testin bir avantajı, hizmetlerini kullanacağı diğer bileşenler hala geliştirme aşamasındayken bileşeninizi geliştirebilmenizdir.

Testler ve Model Arasındaki İlişkileri Koruma

Birkaç haftada bir yineleme gerçekleştiren tipik bir projede, her yinelemenin başlangıcına yakın bir gereksinimler gözden geçirmesi yapılır. Toplantıda, sonraki yinelemede teslim edilecek özellikler ele alınmaktadır. Bir gereksinim modeli, geliştirilecek eylemlerin kavramlarını, senaryolarını ve dizilerini tartışmaya yardımcı olmak için kullanılabilir. İş paydaşları öncelikleri belirler, geliştiriciler tahminde bulunur ve test ediciler her özelliğin beklenen davranışının doğru bir şekilde yakalanmasını sağlar.

Testler yazmak, bir gereksinimi tanımlamanın en etkili yoludur ve aynı zamanda bir kişinin neyin gerekli olduğunu net bir şekilde anlanmasını sağlamanın etkili bir yoludur. Ancak, bir belirtim atölyesi sırasında yazma testlerinin yapılması çok uzun sürerken, model oluşturma işlemi çok daha hızlı gerçekleştirilebilir.

Test açısından bakıldığında, gereksinimler modeli testler için bir kısaltma olarak görülebilir. Bu nedenle, proje boyunca testlerle model arasındaki ilişkiyi korumak önemlidir.

Test Çalışmalarını Model Öğelerine Ekleme

Projeniz Test Yöneticisi kullanıyorsa, testleri modelinizdeki öğelere bağlayabilirsiniz. Bu, gereksinimlerdeki bir değişiklikten etkilenen testleri hızla bulmanıza olanak tanır ve bir gereksinimin ne ölçüde gerçekleştirildiğini izlemenize yardımcı olur.

Testleri her tür öğeye bağlayabilirsiniz. Burada bazı örnekler verilmiştir:

  • Bir kullanım örneğini, bunu kullanan testlere bağlayın.

  • Kullanım örneği son koşulunun veya hedefin yan tümcelerini, kullanım örneğine bağlı açıklamalar üzerine yazın ve ardından testleri her açıklamaya bağlayın.

  • Sınıf diyagramları veya etkinlik diyagramları hakkındaki açıklamalara sabit kurallar yazın ve bunları testlere bağlayın.

  • Testleri bir etkinlik diyagramına veya tek tek etkinliklere bağlayın.

  • Test paketini test eden bileşene veya alt sisteme bağlayın.

  1. Test Yöneticisi'nde bir gereksinim oluşturun ve bir test paketini temel alır.

    Oluşturduğunuz gereksinim, Team Foundation Server'daki bir iş öğesidir. Projenizin Team Foundation ile kullandığı işlem şablonuna bağlı olarak bir Kullanıcı Hikayesi, Gereksinim veya Kullanım Örneği iş öğesi olabilir. Daha fazla bilgi için bkz . Çevik araçları ve Çevik proje yönetimi hakkında.

  2. Gereksinim iş öğesini modelinizdeki bir veya daha fazla öğeye bağlayın.

    Modelleme diyagramında bir öğeye, açıklamaya veya ilişkiye sağ tıklayın ve sonra da İş Öğesine Bağla'ya tıklayın.

  3. Test paketine, model öğesinde ifade edilen gereksinimi doğrulayan test çalışmalarını ekleyin.