Aracılığıyla paylaş


Birden Çok UI Haritası Bulunan Büyük Uygulamaları Sınama

Bu konu birden çok UI eşlemesi kullanarak büyük bir uygulamayı test ederken kodlanmış UI testlerin nasıl kullanılabileceğini açıklamaktadır.

Yeni bir kodlanmış UI Testi oluşturduğunuzda Visual Studio test framework'ü varsayılan olarak test için kodu bir UIMap sınıfı içinde oluşturur. Kodlanmış UI testlerinin kaydedilmesi hakkında daha fazla bilgi için bkz. Kodlanmış UI Testi Nasıl Oluşturulur ve Kodlanmış UI testinin anatomisi.

UI eşlemesi için oluşturulan kod testin etkileşimde olduğu her nesne için bir sınıf içerir. Üretilen her yöntem için özellikle bu yöntem için, yöntem parametreleri için bir yardımcı sınıfı oluşturulur. Uygulamanızda fazla sayıda nesne, sayfa, biçim ve denetim bulunuyorsa UI eşlemeniz çok büyüyebilir. Ayrıca, test üstünde birkaç kişi çalışıyorsa, uygulama, büyük tek bir UI Eşleşme dosyası ile hantal hale gelir.

Birden çok UI eşleme dosyası kullanmak aşağıdaki yararları sağlayabilir:

  • Her eşleşme, uygulamanın mantıksal bir alt kümesiyle ilişkilendirilebilir. Bu, değişiklikleri kolay bir biçimde yönetilebilir kılar.

  • Her test edici uygulamanın bir bölümü üzerinde çalışır ve kodlarını uygulamanın diğer bölümleri üzerinde çalışan test edicileri engellemeden iade eder.

  • Uygulama UI'sına yapılan eklemeler, UI'nın diğer kısımlarına yönelik testler üzerinde en az düzeyde etkiyle kademeli olarak ölçeklendirilebilir.

Çoklu Kullanıcı Arabirimi Eşlemelerine İhtiyacınız Var mı?

Aşağıdaki durumlardan her biri için çoklu Kullanıcı Arabirimi Eşleştirmeleri oluşturun:

  • Bir Web sitesindeki kayıt sayfası veya alışveriş sepeti satın alma sayfası gibi birlikte mantıksal bir işlemi gerçekleştiren çeşitli bileşik UI kontrolü karmaşık kümesi.

  • Birkaç sayfalık işleme sahip bir sihirbaz gibi uygulamanın çeşitli noktalarından erişilen bağımsız denetimler kümesi. Sihirbazın her sayfası özellikle karmaşık ise, her sayfa için ayrı UI haritaları oluşturabilirsiniz.

Birden Çok UI Haritası Ekleme

Projenize UI eşlemesi eklemek için

  1. Çözüm Gezgini'nde bütün UI Haritaları'nı saklamak için bir dosya oluşturun, test projesi dosyasını sağ tıklatın, Ekle'nin üzerine gelip ardından Yeni bir klasör'ü tıklatın. Örneğin, UIMaps olarak adlandırabilirsiniz.

    Yeni klasör test projesi altında görüntülenir.

  2. UIMaps klasörünü sağ tıklatın, Ekle'nin üzerine gelin ve Yeni Öğe'yi tıklatın.

    Yeni Öğe Ekle iletişim kutusu görüntülenir.

    Not

    Yeni bir kodlu UI test eşlemesi eklemek için bir test projesinin içinde olmalısınız.

  3. Listeden Kodlu UI Test Eşlemi'ni seçin.

    Ad kutusuna yeni UI Eşlemesi'nin adını yazın. Eşlemenin temsil edeceği bileşen veya sayfanın adını kullanın, örneğin, HomePageMap.

  4. Ekle‘yi tıklatın.

    The Visual Studio penceresi küçülür ve Kodlanmış IU Test Oluşturucusu iletişim kutusu görüntülenir.

  5. İlk yönteme ilişkin eylemleri kaydedin ve Kod Oluştur öğesini tıklatın.

  6. İlk bileşen veya sayfa için tüm eylemleri ve onayları kaydedip yöntemler halinde gruplandırdıktan sonra, Kodlanmış UI Testi Oluşturucusu iletişim kutusunu kapatın.

  7. Kullanıcı Arabirimi Haritalarını oluşturmaya devam edin. Eylemleri ve onaylamaları kaydedin, bunları her bileşen için yöntemler olarak gruplayın ve ardından kodu oluşturun.

Çoğu durumda, tüm sihirbazlar, biçimler ve sayfalar için uygulamanızın üst düzey penceresi sabit kalır. Her ne kadar her UI Eşleşmesinin üst düzey penceresi için bir sınıfı olsa da, tüm eşleşmeler muhtemelen içinde uygulamanıza ait tüm bileşenlerin çalıştığı aynı üst düzey pencereye başvuruyordur. Kodlanmış Kullanıcı Arabirimi testleri, üst düzey pencereden başlayarak, hiyerarşik olarak yukarıdan aşağıya doğru olan denetimleri arar, dolayısıyla karmaşık bir uygulama içerisinde gerçek üst düzey pencere her bir Kullanıcı Arabirimi üzerinde yinelenebilir. Gerçek üst düzey pencere çoğaltılmışsa, bu pencere değiştiğinde çoklu değişiklikler oluşur. UI Eşlemelerin birinden diğerine geçtiğinizde bu durum performans sorunlarına neden olabilir.

Bu etkiyi en aza indirgemek için o UI Eşlemesi'ndeki yeni üst seviye penceresinin ana üst seviye penceresiyle aynı olmasını sağlamak üzere CopyFrom() yöntemini kullanabilirsiniz.

Örnek

Aşağıdaki örnek, her bileşene ve onların çeşitli UI Haritaları'nda oluşturulan sınıflar tarafından temsil edilen alt denetimlerine erişim sağlayan yardımcı program sınıfının bir parçasıdır.

Bu örnekte, bir Web uygulaması adı Contoso bir Giriş Sayfası, Ürün Sayfası ve bir Alışveriş Sepeti sayfası vardır. Bu sayfaların her biri tarayıcı penceresi olan ortak üst düzey penceresini paylaşır. Her sayfa için bir UI Eşleşmesi var ve yardımcı program sınıfı aşağıdakine benzer bir kod içerir:

using ContosoProject.UIMaps;
using ContosoProject.UIMaps.HomePageClasses;
using ContosoProject.UIMaps.ProductPageClasses;
using ContosoProject.UIMaps.ShoppingCartClasses;

namespace ContosoProject
{
    public class TestRunUtility
    {
        // Private fields for the properties
        private HomePage homePage = null;
        private ProductPage productPage = null;
        private ShoppingCart shoppingCart = null;

        public TestRunUtility()
        {
            homePage = new HomePage();
        }

        // Properties that get each UI Map
        public HomePage HomePage
        {
            get { return homePage; }
            set { homePage = value; }
        }

        // Gets the ProductPage from the ProductPageMap.
        public ProductPage ProductPageObject
        {
            get
            {
                if (productPage == null)
                {
                    // Instantiate a new page from the UI Map classes
                    productPage = new ProductPage();

                    // Since the Product Page and Home Page both use
                    // the same browser page as the top level window,
                    // get the top level window properties from the
                    // Home Page.
                    productPage.UIContosoFinalizeWindow.CopyFrom(
                        HomePage.UIContosoWindowsIWindow);
                }
                return productPage;
            }
        }

    // Continue to create properties for each page, getting the 
    // page object from the corresponding UI Map and copying the 
    // top level window properties from the Home Page.
}

Ayrıca bkz.

Görevler

Kodlanmış UI Testi Nasıl Oluşturulur

Başvuru

UIMap

CopyFrom

Diğer Kaynaklar

Kodlanmış UI testinin anatomisi