QTP - Hızlı Kılavuz

QTP, QUickTAvustralya, Brezilya ve Kuzey Amerika ülkelerinin kullandığı saat uygulaması Professional, bir ürünü HEwlett Packard (HP). Bu araç, test uzmanlarının komut dosyası geliştirme tamamlandıktan sonra izleme olmaksızın sorunsuz bir şekilde otomatikleştirilmiş bir işlevsel test gerçekleştirmesine yardımcı olur.

HP QTP kullanır Visual Basic Scripting (VBScript)uygulamaları otomatikleştirmek için. Komut Dosyası Motoru, Windows işletim sisteminin bir parçası olarak mevcut olduğundan özel olarak kurulmasına gerek yoktur. VBScript'in Güncel sürümü, Win 7'nin bir parçası olarak mevcut olan 5.8'dir. VBScript, nesne yönelimli bir dil DEĞİL, nesne tabanlı bir dildir.

Test Araçları

Bir yazılım test bağlamındaki araçlar, planlama, gereksinimler, bir derleme oluşturma, test yürütme, hata günlüğü ve test analizinden bir veya daha fazla test faaliyetini destekleyen bir ürün olarak tanımlanabilir.

Araçların Sınıflandırılması

Araçlar birkaç parametreye göre sınıflandırılabilir. İçerir -

  • Aracın amacı
  • Araç içinde desteklenen faaliyetler
  • Desteklediği test türü / seviyesi.
  • Lisans türü (açık kaynak, ücretsiz yazılım, ticari)
  • Kullanılan teknoloji

Alet Türleri

Sr.No. Alet Türü İçin kullanılır Tarafından kullanılan
1 Test Yönetim Aracı Test Yönetimi, planlama, hata günlüğü, izleme ve analiz. Testçiler
2 Yapılandırma yönetimi aracı Uygulama, yürütme, değişiklikleri izleme için Tüm Ekip üyeleri
3 Statik Analiz Araçları Statik Test Geliştiriciler
4 Test Verisi Hazırlama Araçları Analiz ve Tasarım, Test verileri oluşturma Testçiler
5 Test Yürütme Araçları Uygulama, Yürütme Testçiler
6 Karşılaştırıcıları Test Et Beklenen ve gerçek sonuçları karşılaştırma Tüm Ekip üyeleri
7 Kapsam ölçüm araçları Yapısal kapsama sağlar Geliştiriciler
8 Performans Test araçları Performansı izleme, tepki süresi Testçiler
9 Proje planlama ve İzleme Araçları Planlama için Proje yöneticileri
10 Olay Yönetimi Araçları Testleri yönetmek için Testçiler

QTP Nerelerde Kullanılır?

QTP, uygulamaların regresyon testi için en uygun olan Fonksiyonel test aracıdır. QTP, piyasadaki en popüler araçlardan biri olan HP'ye ait lisanslı / ticari bir araçtır. Gerçek ve beklenen sonucu karşılaştırır ve sonuçları yürütme özetinde rapor eder.

QTP - Tarih ve Evrim

HP Quick Test Professional, orijinal olarak Mercury Interactive'e aitti ve HP tarafından satın alındı. Orijinal adı Astra Quick Test'ti ve daha sonra Quick Test Professional olarak adlandırıldı, ancak en son sürümü Unified Functional Tester (UFT) olarak bilinir.

Sürüm Geçmişi

Şimdi QTP'nin sürüm geçmişine bir göz atalım.

Versiyonlar Zaman çizelgeleri
Astra Hızlı Test v1.0 - v5.5 - Mercury Interactive Mayıs 1998 - Ağustos 2001
QuickTest Professional v6.5 - v9.0 - Mercury Interactive Eylül 2003 - Nisan 2006
Hp-QuickTest Professional v9.1 - v11.0 - HP Tarafından Alındı ​​ve Yayınlandı Şubat 2007 - Eylül 2010
Hp-Birleşik Fonksiyonel Test v11.5 - v11.53 2012 - Kasım 2013

Avantajlar

  • VBScript kullanarak otomatikleştirilmiş testler geliştirmek, çok yetenekli bir kodlayıcı gerektirmez ve diğer nesne yönelimli programlama dilleriyle karşılaştırıldığında nispeten kolaydır.

  • Kullanımı kolay, gezinme kolaylığı, sonuç doğrulama ve Rapor oluşturma.

  • Kolay zamanlama ve izleme sağlayan Test Yönetim Aracı (Hp-Kalite Merkezi) ile Kolayca Entegre Edilir.

  • Mobil Uygulama Testi için de kullanılabilir.

  • Bir HP ürünü olduğundan, teknik sorunların ele alınması için HP ve forumları tarafından tam destek sağlanmaktadır.

Dezavantajları

  • Selenium'un aksine, QTP yalnızca Windows işletim sisteminde çalışır.

  • Tarayıcıların tüm sürümleri desteklenmez ve test uzmanlarının ana sürümlerin her biri için yamanın yayınlanmasını beklemesi gerekir.

  • Ticari bir araç olduğunu söyledikten sonra lisanslama maliyeti çok yüksek.

  • Komut dosyası oluşturma süresi daha az olsa da, CPU ve RAM'e yük bindirdiğinden yürütme süresi nispeten daha yüksektir.

Herhangi bir otomatik araç uygulaması için, aşağıdakiler bunun aşamaları / aşamalarıdır. Aşamaların her biri belirli bir faaliyete karşılık gelir ve her aşamanın belirli bir sonucu vardır.

  • Test Automation Feasibility Analysis- İlk adım, uygulamanın otomatikleştirilip otomatikleştirilemeyeceğini kontrol etmektir. Sınırlamaları nedeniyle tüm uygulamalar otomatikleştirilemez.

  • Appropriate Tool Selection- Bir sonraki en önemli adım, araçların seçimidir. Uygulamanın oluşturulduğu teknolojiye, özelliklerine ve kullanımına bağlıdır.

  • Evaluate the suitable framework- Aracı seçtikten sonra, sonraki faaliyet uygun bir çerçeve seçmektir. Çeşitli çerçeveler vardır ve her çerçevenin kendi önemi vardır. Çerçeveleri daha sonra bu eğitimde ayrıntılı olarak ele alacağız.

  • Build Proof of Concept- Kanıt Kanıtı (POC), aracın uygulamanın otomasyonunu destekleyip desteklemediğini değerlendirmek için uçtan uca bir senaryo ile geliştirilmiştir. Başlıca işlevlerin otomatikleştirilmesini sağlayan uçtan uca bir senaryo ile gerçekleştirilir.

  • Develop Automation Framework- POC'yi oluşturduktan sonra, herhangi bir test otomasyon projesinin başarısı için çok önemli bir adım olan çerçeve geliştirme gerçekleştirilir. Çerçeve, uygulama tarafından kullanılan teknolojinin ve ayrıca temel özelliklerinin dikkatli bir şekilde analiz edilmesinden sonra oluşturulmalıdır.

  • Develop Test Script, Execute, and Analyze- Komut dosyası geliştirme tamamlandıktan sonra, komut dosyaları yürütülür, sonuçlar analiz edilir ve varsa kusurlar kaydedilir. Test Komut Dosyaları genellikle sürüm kontrollüdür.

QTP ticari bir araçtır ve deneme sürümü doğrudan HP sitesinden indirilebilir. Yalnızca Birleşik işlevsel test (11,5x) olan güncel sürüm indirilebilir. Deneme sürümünün indirilebileceği URL aşağıdadır.

İndirme URL'si - QTP

Yükleme prosedürü

Step 1 - "Denemeler ve Demolar" bağlantısını tıklayın ve aşağıda gösterildiği gibi "HP Unified Functional Testing 11.50 CC English SW E-Media Evaluation" öğesini seçin -

Step 2- "HP Unified Functional Testing 11.50" öğesini seçtikten sonra indirme sihirbazı açılır. Kişisel ayrıntıları doldurun ve İleri'ye tıklayın.

Step 3 - 'Kullanım Koşulları'nı okuyun ve "İLERİ" yi tıklayın.

Step 4- İndir penceresi açılır. Şimdi, "İndir" düğmesini tıklayın.

Step 5- İndirilen dosya .RAR biçiminde olacaktır. Şimdi arşivi açmanız gerekiyor ve klasör içeriği aşağıda gösterildiği gibi olacak ve Setup.exe dosyasını çalıştıracaktır.

Step 6 - Kurulum Dosyasını Yürüttüğünüzde, yüklemek için aşağıda gösterilen listeden "Birleşik Fonksiyonel Test Kurulumu" nu seçin -

Step 7 - Devam etmek için İleri'yi tıklayın.

Step 8- Özel Kurulum Penceresinde, otomasyonunuz için gerekli olan eklentileri seçin, yani eklentileri test edilen uygulamanızın teknolojisine göre seçmelisiniz. Örneğin, uygulamanız .NET'e dayanıyorsa .NET'i seçtiğinizden emin olmalısınız.

Step 9- Kurulum için gerekli eklentileri seçtikten sonra İleri'ye tıklayın. Kurulumun tamamlanmasından sonra, bir Bitir düğmesi Penceresi ile karşılaşacaksınız.

Step 10- Kurulumunuzu tamamladığınızda "Ek Kurulum Gereksinimleri" İletişim kutusu açılır. Listedeki "Lisans Kurulum Sihirbazını Çalıştır" dışındaki her şeyi seçin ve "ÇALIŞTIR" düğmesine tıklayın. Varsayılan olarak 30 günlük bir lisans veren deneme sürümünü kurduğumuz için "Lisans Kurulum Sihirbazını Çalıştır" ı seçmemize gerek yok.

Step 11- Ek Kurulum Gereksinimleri tamamlandıktan sonra, bileşenlerin başarıyla kurulduğunu belirten bir onay işareti gösterilir. Şimdi Kapat'ı tıklayın.

UFT Başlatma ve Ekleme Sayfası

Step 1 - Kurulumdan sonra, uygulama şekilde gösterildiği gibi Başlat Menüsünden başlatılabilir.

Step 2- Lisans sayfası açılır. Deneme lisansını yüklediğimiz için Devam'a tıklayabilirsiniz.

Step 3 - Kullanıcının gerekli eklentileri seçmesi için Eklentiler iletişim kutusu açılır.

Note - Tüm eklentileri değil, yalnızca gerekli eklentileri yükleyin ve Tamam'ı tıklayın.

Step 4 - Gerekli eklentileri yükledikten sonra, kullanıcı için UFT 11.5 aracı açılır ve aşağıda gösterildiği gibi UFT'nin ilk görünümü görünür -

Bir testin kaydedilmesi, test edilen uygulamanın kullanıcı eylemlerinin kaydedilmesine karşılık gelir, böylece UFT, oynatılabilen komut dosyalarını otomatik olarak oluşturur. Kayıt ve Oynatma, ilk ayarların doğru yapılması durumunda, teknolojiyi destekleyip desteklemediğine bakılmaksızın, aracın ilk izlenimini verebilir.

Kayıt ve Oynatma Adımları aşağıdaki gibidir -

Step 1 - Aşağıda gösterildiği gibi Başlangıç ​​Sayfasından "Yeni" testi tıklayın -

Step 2- "Yeni" Bağlantı tıklandığında, yeni bir test penceresi açılır ve kullanıcının test türünü seçmesi gerekir. "GUI Testi" seçin, test için bir isim ve kaydedilmesi gereken yeri belirtin.

Step 3- Yeni bir test oluşturulduğunda, aşağıda gösterildiği gibi yeni test ekranı açılır. Şimdi, varsayılan olarak 1 eylemle oluşturulan "Eylem1" sekmesini tıklayın.

Step 4 - "Kaydet" Menüsünü tıklayın ve aşağıda gösterildiği gibi "Kaydet ve Çalıştır Ayarları" nı seçin -

Step 5- Kayıt ve Çalıştırma Ayarları iletişim kutusu açılır ve uygulama türüne bağlı olarak Web, Java veya Windows Uygulamaları seçilebilir. Örneğin, burada Web Tabanlı bir Uygulama (http://easycalculation.com/) kaydedeceğiz.

Step 6- Kaydet'i tıklayın. Internet Explorer, web adresiyle otomatik olarak açılırhttps://www.easycalculation.com/ayarlara göre. "Cebir" altındaki "Sayılar" bağlantısını tıklayın ve bir sayı girin ve "Hesapla" yı tıklayın. İşlem tamamlandıktan sonra, kayıt panelinde "Durdur" düğmesine tıklayın. Komut dosyasının aşağıda gösterildiği gibi oluşturulduğunu fark edeceksiniz -

Step 7- Şimdi oynatma düğmesini tıklayarak komut dosyasını oynatın. Komut dosyası yeniden oynatılır ve sonuç görüntülenir.

Step 8 - Sonuç penceresi varsayılan olarak açılır ve yürütme, başarılı ve başarısız adımların zaman damgasını tam olarak gösterir.

Kayıt ve Oynatmanın Önemi

  • UFT'nin teknolojiyi / uygulamayı destekleyip desteklemediğini doğrulamak için ön araştırma yöntemi olarak kullanılır.

  • Uzun süreli bakım gerektirmeyen bir uygulamanın veya özelliğin temel işlevlerini test etmek için kullanılır.

  • Hem fare hareketlerini hem de klavye girişlerini kaydetmek için kullanılabilir.

Kayıt Modları

  • Normal Recording - Bu, test edilen uygulama üzerinde gerçekleştirilen nesneleri ve işlemleri kaydeden varsayılan Kayıt modudur.

  • Analog Recording - Bu, yalnızca klavye eylemlerini değil aynı zamanda ekrana veya uygulama penceresine göre fare hareketlerini de kaydeder.

  • Low-Level Recording- Bu, UFT'nin nesneyi tanıyıp tanımadığından bağımsız olarak nesnelerin tam koordinatlarını kaydeder. Yalnızca koordinatları kaydeder, dolayısıyla fare hareketlerini KAYDETMEZ.

  • Insight Recording - UFT, işlemleri yerel özelliklerine göre değil görünümüne göre kaydeder.

Kayıt Modları Nasıl Seçilir

Kayıt düğmesine tıkladıktan sonra, kullanıcı kayıt başladığında ekranda görünen kayıt bölmesinden kayıt modunu seçebilir. Seçim, yukarıda tartışılanlardan herhangi biri arasından yapılabilir.

Aşağıdaki senaryonun tüm modlarda kaydedildiğini ve aynı eylemin çeşitli durumlarda kaydedildiğini göreceksiniz.

  • IE'yi başlatın - https://www.easycalculation.com/
  • "Cebir" altında "Sayılar" ı tıklayın
  • "Karekök" bağlantısını tıklayın
  • Karekökü hesaplamak için bir değer girin. 10 diyelim
  • Hesapla düğmesine basın

Varsayılan, Analog ve Düşük Seviye kayıt modu altında Kaydedilen Komut Dosyası aşağıda verilmiştir -

' DEFAULT RECORDING MODE 
Browser("Free Online Math Calculator").Page("Free Online Math 
Calculator").Link("Numbers").Click 

Browser("Free Online Math Calculator").Page("Numbers Calculator - 
Math").Link("Square Root").Click 

Browser("Free Online Math Calculator").Page("Square Root 
Calculator").WebEdit("n").Set "10" 

Browser("Free Online Math Calculator").Page("Square Root 
Calculator").WebButton("calculate").Click 

' ANALOG RECORDING MODE 
Desktop.RunAnalog "Track1" 

' LOW LEVEL RECORDING MODE 
Window("Windows Internet Explorer").WinObject("Internet Explorer_Server").Click 
235,395 

Window("Windows Internet Explorer").WinObject("Internet Explorer_Server").Click 
509,391 

Window("Windows Internet Explorer").WinObject("Internet Explorer_Server").Click 
780,631 

Window("Windows Internet Explorer").WinObject("Internet Explorer_Server").Type 
"10" 

Window("Windows Internet Explorer").WinObject("Internet Explorer_Server").Click 
757,666

İçgörü kayıt modunu kullanan kayıtlar aşağıda gösterildiği gibi olacaktır -

Nesne Deposu

Nesne Deposu, QTP'nin nesneleri tanıyabileceği ve üzerinde işlem yapabileceği bir nesne ve özellikler koleksiyonudur. Bir kullanıcı bir testi kaydettiğinde, nesneler ve özellikleri varsayılan olarak yakalanır. Nesneleri ve özelliklerini anlamadan, QTP komut dosyalarını oynatamaz.

Nesne Deposu ve ilişkili özellikleri hakkında daha fazla bilgi edinmek için aşağıdaki konuların her birine tıklayın.

Sr.No. Konu Açıklama
1 Object Spy ve Özellikleri

Nesne casusluğunun ve ilişkili işlevlerinin kullanımını anlamak.

2 Nesne Deposu ile Çalışma

Bir Nesne Deposundan nesnelerin eklenmesi, düzenlenmesi, silinmesi ve ilgili işlevleri.

3 Nesne Deposu Türleri

Paylaşılan Nesne ve yerel Nesne Deposu ve komut dosyasıyla ilgili bağlamları ile ilgilenir.

4 Kullanıcı Tanımlı Nesneler

Kullanıcı Tanımlı Nesneleri kullanma koşullarını ele alır.

5 XML'de Nesne Deposu

OR'leri XML'e dönüştürmek ve nesne havuzunu XML olarak kullanmakla ilgilenir.

6 Karşılaştırma ve Birleştirme VEYA

Nesne Deposu ile etkin bir şekilde çalışmak için OR'yi Karşılaştır, OR'leri Birleştir gibi işlemler.

7 Sıra Tanımlayıcıları

Sıralı tanımlayıcıların kullanıldığı durumlar ve avantajları.

8 Alt Nesneler

Etkili komut dosyası oluşturma için Alt Nesneleri Kullanma

Eylemler, test uzmanlarının komut dosyalarını QTP ifadeleri gruplarına ayırmasına yardımcı olur. Eylemler VBScript'teki işlevlere benzer; ancak birkaç farklılık vardır. Varsayılan olarak, QTP tek eylemle bir test oluşturur.

Hareketler Fonksiyonlar
Eylem, QTP'nin yerleşik bir özelliğidir. VBScript İşlevleri hem VBScript hem de QTP tarafından desteklenir.
Eylem parametreleri yalnızca değere göre aktarılır. Fonksiyon parametreleri ya değere göre ya da ref ile iletilir.
İşlemlerin uzantısı .mts var Fonksiyonlar .vbs veya .qfl olarak kaydedilir.
Eylemler yeniden kullanılabilir olabilir veya olmayabilir. Fonksiyonlar her zaman yeniden kullanılabilir.

Eylemin özelliklerine Komut Dosyası Düzenleyici Penceresi'ne sağ tıklayıp "Özellikler" seçilerek erişilebilir.

Eylem özellikleri aşağıdaki bilgileri içerir -

  • Eylem Adı
  • Location
  • Yeniden Kullanılabilir Bayrak
  • Giriş parametreleri
  • Çıkış Parametreleri

Eylem Türleri

Üç tür eylem vardır -

  • Non-reusable action - Yalnızca tasarlandığı belirli testte çağrılabilen ve yalnızca bir kez çağrılabilen bir eylem.

  • Reusable action - Birden çok kez çağrılabilen bir eylem, bulunduğu herhangi bir test ve ayrıca diğer testler tarafından da kullanılabilir.

  • External Reusable action- Başka bir testte saklanan yeniden kullanılabilir bir işlemdir. Harici eylemler, arama testinde salt okunurdur, ancak harici eylem için Veri Tablosu bilgilerinin düzenlenebilir kopyasıyla yerel olarak kullanılabilir.

Eylemlerle Çalışma

Eylem eklemek için üç seçenek vardır. Seçilen eylem türü hakkında daha fazla bilgi edinmek için bunların her birine tıklayın.

Sr.No. Eylem Türü ve Açıklaması
1 Yeni Eylem Çağrısı Ekle

Mevcut eylemden Yeni Eylem ekler

2 Eylem Kopyalama Çağrısı Ekle

Mevcut bir eylemin bir kopyasını ekler

3 Mevcut Eyleme Çağrı Ekle

Mevcut yeniden kullanılabilir eyleme bir çağrı ekler

Microsoft Excel'e benzer bir DataTable, test uzmanlarının bir Eylemi birden çok kez çalıştırmak için kullanılabilen veriye dayalı test senaryoları oluşturmasına yardımcı olur. İki tür Veri Tablosu vardır -

  • Local DataTable - Her eylemin yerel verilebilir olarak da bilinen ve eylemler üzerinden de erişilebilen kendi özel veri tablosu vardır.

  • Global DataTable - Her testin, eylemler üzerinden erişilebilen bir genel veri sayfası vardır.

Veri sayfasına aşağıda gösterildiği gibi QTP'nin "Veri" Sekmesinden erişilebilir -

Belirli sayıda yineleme için bir test senaryosu yürütmek için, aşağıda gösterildiği gibi Dosya → Ayarlar → Çalıştır (Sekme) kullanılarak erişilebilen Test Ayarları iletişim kutusunda global verinin yinelemeleri ayarlanabilir -

Misal

Örneğin, bir kullanıcı "bileşik İlgi" ni parametreleştirmek isterse http://easycalculation.com/ kullanılarak erişilebilir http://easycalculation.com/compound-interest.php. Parametreler aşağıda gösterildiği gibi oluşturulabilir. Excel'in işlevlerinin çoğu Veri tablosunda da kullanılabilir.

DataTable İşlemleri

DataTable'a erişmek için üç tür nesne vardır. DataTable işlemleri, aşağıdakiler arasında geçiş yapılarak iyi anlaşılabilir -

Sr.No. Nesne Türü ve Açıklaması
1 Veri Tablosu Yöntemleri

Veri tablosu yöntemleri hakkında detaylı bilgi verir.

2 DTParameter Nesne Yöntemleri

DTParameter yöntemleri hakkında detaylı bilgi verir.

3 DTSheet Nesne Yöntemleri

DTSheet yöntemleri hakkında detaylı bilgi verir.

Denetim noktaları, adından da anlaşılacağı üzere, belirli özelliklerin geçerli değerini veya bir nesnenin geçerli durumunu, komut dosyasına herhangi bir zamanda eklenebilen beklenen değerle karşılaştıran bir doğrulama noktasına işaret eder.

Kontrol Noktası Türleri

Sr.No. Tip ve Açıklama
1

Standard Checkpoint

Test edilen ve tüm eklenti ortamları tarafından desteklenen uygulamadaki bir nesnenin özellik değerlerini doğrular.

2

Bitmap Checkpoint

Uygulamanızın bir alanını bit eşlem olarak doğrular

3

File Content Checkpoint

.Txt, .pdf gibi dinamik olarak oluşturulmuş veya erişilen bir dosyadaki metni doğrular

4

Table Checkpoint

Tablodaki bilgileri doğrular. Tüm ortamlar desteklenmez.

5

Text Checkpoint

Windows tabanlı bir uygulamada tanımlı bir alanda görüntülenen metnin belirtilen kriterlere göre olup olmadığını doğrulayın.

6

Text Area Checkpoint

Metin dizesinin Windows tabanlı bir uygulamada tanımlı bir alanda belirtilen kriterlere göre görüntülenip görüntülenmediğini doğrular.

7

Accessibility Checkpoint

Sayfayı doğrular ve Web sitesinin World Wide Web Consortium (W3C) Web İçeriği Erişilebilirlik Yönergelerine uymayabilecek alanlarını bildirir

8

Page Checkpoint

Bir Web sayfasının özelliklerini doğrular. Ayrıca kırık bağlantıları da kontrol edebilir.

9

Database Checkpoint

Test edilen uygulama tarafından erişilen bir veritabanının içeriğini doğrular.

10

XML Checkpoint

Web sayfaları ve çerçevelerdeki .xml belgelerinin veya .xml belgelerinin içeriğini doğrular.

CheckPoint Ekleme

Kullanıcı bir kontrol noktası eklemek istediğinde, kontrol noktalarının çoğunun yalnızca kayıt oturumları sırasında desteklendiğinden emin olunmalıdır. Kullanıcı kaydı durdurduğunda, kontrol noktaları etkinleştirilmez.

Kullanıcı kayıt modunda DEĞİLSE, aşağıda verilen kontrol noktası menüsüdür.

Aşağıda, kullanıcı kayıt modundayken kontrol noktası menüsü verilmiştir.

Misal

Kontrol noktaları, test edilen uygulama için eklenir - "http://easycalculation.com/"

' 1. Inserted Standard Checkpoint
Status = Browser("Math Calculator").Page("Math 
   Calculator").Link("Numbers").Check CheckPoint("Numbers")

If Status Then
   print "Checkpoint Passed"
Else
   Print "Checkpoint Failed"
End if

' 2. Inserted BitMap Checkpoint
imgchkpoint = Browser("Math Calculator").Page("Math 
   Calculator").Image("French").Check CheckPoint("French")

If imgchkpoint Then
   print "Checkpoint Passed"
Else
   Print "Checkpoint Failed"
End if

Denetim Noktası Özelliklerini Görüntüleme

Ekledikten sonra, bir test uzmanının değerleri değiştirmek istemesi durumunda, bunu komut dosyasının 'kontrol noktası' anahtar kelimesine sağ tıklayarak ve aşağıda gösterildiği gibi "Kontrol Noktası Özellikleri" ne giderek yapabiliriz -

Aşağıda gösterildiği gibi nesne havuzunda da aynı kontrol noktalarını bulabilirsiniz. Hangi tür kontrol noktasının kullanıldığını ve beklenen değerlerin ve zaman aşımı değerlerinin neler olduğunu tam olarak gösterir.

Senkronizasyon noktası, test edilen Araç ve Uygulama arasındaki zaman arayüzüdür. Senkronizasyon noktası, test komut dosyasının iki adımı arasındaki gecikme süresini belirleyen bir özelliktir.

Örneğin, bir bağlantıya tıklamak sayfayı 1 saniye, bazen 5 saniye olarak yükleyebilir, hatta tamamen yüklenmesi 10 saniye sürebilir. Uygulama sunucusu yanıt süresi, ağ bant genişliği ve istemci sistem yetenekleri gibi çeşitli faktörlere bağlıdır.

Zaman değişiyorsa, test cihazı bu zaman farklılıklarını akıllıca ele almadığı sürece komut dosyası başarısız olacaktır.

Senkronizasyon Noktası Eklemenin Yolları

  • WaitProperty
  • Exist
  • Wait
  • Senkronizasyon (yalnızca web tabanlı uygulamalar için)
  • QTP Dahili Senkronizasyon noktaları ekleme.

Diyelim ki, " www.easycalculation.com " da "sayılar" bağlantısını tıklamakla "basit Faiz" hesaplayıcısını tıklamak arasında bir senkronizasyon noktası eklememiz gerekiyor . Şimdi yukarıdaki senaryo için senkronizasyon noktası eklemenin beş yolunun tümüne bir göz atacağız.

Yöntem 1 - WaitProperty

WaitProperty, senkronizasyonu gerçekleştirmek için özellik adını, Değeri ve Zaman Aşımı değerini girdi olarak alan bir yöntemdir. Bu dinamik bir beklemedir ve bu nedenle bu seçenek teşvik edilmektedir.

' Method 1 - WaitProperty with 25 seconds
Dim obj
Set obj = Browser("Math Calculator").Page("Math Calculator")
obj.Link("Numbers").Click

obj.Link("Simple Interest").WaitProperty "text", "Simple Interest",25000
obj.Link("Simple Interest").Click

Yöntem 2 - Var

Var, senkronizasyonu gerçekleştirmek için Zaman Aşımı değerini girdi olarak alan bir yöntemdir. Yine dinamik bir beklemedir ve bu nedenle bu seçenek teşvik edilir.

' Method 2 : Exist Timeout - 30 Seconds
Dim obj
Set obj = Browser("Math Calculator").Page("Math Calculator")
obj.Link("Numbers").Click

If obj.Link("Simple Interest").Exist(30) Then
   obj.Link("Simple Interest").Click

Else
   Print "Link NOT Available"
End IF

Yöntem 3 - Bekle

Bekleme, gerçekleşen veya OLMAYAN olaydan bağımsız olarak bekleyen sabit kodlanmış bir senkronizasyon noktasıdır. Bu nedenle, Bekle'nin kullanılması önerilmez ve 1 veya 2 saniye gibi daha kısa bekleme süreleri için kullanılabilir.

' Method 3 : Wait Timeout - 30 Seconds
Dim obj
Set obj = Browser("Math Calculator").Page("Math Calculator")
obj.Link("Numbers").Click
wait(30)
Browser("Math Calculator").Page("Math Calculator").Link("Simple Interest").Click

Yöntem 4 - Eşitleme Yöntemi

Senkronizasyon Yöntemi yalnızca sayfa yüklemeleri arasında her zaman bir gecikme olan web uygulamaları için kullanılabilir.

' Method 4 : 
Dim obj
Set obj = Browser("Math Calculator").Page("Math Calculator")
obj.Link("Numbers").Click

Browser("Math Calculator").Sync
Browser("Math Calculator").Page("Math Calculator").Link("Simple Interest").Click

Yöntem 5 - QTP Dahili Eşitleme noktalarını ekleme

Step 1- Kayıt Moduna geçin. Kullanıcı Kayıt Modunda DEĞİLSE bu seçenek devre dışı bırakılır.

Step 2 - "Tasarım" → "Senkronizasyon Noktası" na gidin.

Step 3- Senkronizasyon Noktası olmasını istediğimiz nesneyi seçmemiz gerekiyor. Nesneyi seçtikten sonra, aşağıda gösterildiği gibi nesne penceresi açılır -

Step 4- Tamam'ı tıklayın; "Senkronizasyon Ekle Penceresi" açılır. Özellik, Değer ve Zaman aşımı değerini seçin ve aşağıda gösterildiği gibi Tamam'ı tıklayın -

Step 5 - Komut dosyası aşağıda gösterildiği gibi oluşturulur ve bu, daha önce tartıştığımız WaitProperty (Yöntem 1) ile aynıdır -

Browser("Math Calculator").Page("Math Calculator").Link("Numbers").Click

Browser("Math Calculator").Page("Math Calculator").Link("Simple 
   Interest").WaitProperty "text", "Simple Interest", 10000

Varsayılan Senkronizasyon

Kullanıcı yukarıdaki senkronizasyon yöntemlerinden herhangi birini kullanmadığında, yine de QTP, kullanıcı tarafından ayarlanabilen yerleşik bir Nesne senkronizasyon zaman aşımına sahiptir.

Aşağıda gösterildiği gibi "Dosya" >> "Ayarlar" >> Sekmeyi Çalıştır >> Nesne Senkronizasyon Zaman Aşımına gidin.

Bazen QTP, tanınan nesne açıklamasıyla eşleşen herhangi bir nesneyi bulamaz veya açıklamaya uyan birden fazla nesne bulabilir, ardından QTP tanınan açıklamayı yok sayar ve nesneyi tanımak için Akıllı Tanımlama mekanizmasını kullanır.

QTP'nin Akıllı Tanımlaması iki tür özellik kullanır -

  • Base Filter Properties - Orijinal nesnenin özü değiştirilmeden değerleri değiştirilemeyen belirli bir test nesnesi sınıfının temel özellikleri.

  • Optional Filter Properties - Diğer özellikler ayrıca, özelliklerinin sık sık değişmesi muhtemel olmayan, ancak artık uygulanamazlarsa göz ardı edilebilecek belirli bir sınıfın nesnelerinin tanımlanmasına yardımcı olur.

Bir Nesne için Akıllı Tanımlamayı Etkinleştirme

Step 1- "Araçlar" → "Nesne Tanımlama" ya gidin. Nesne Tanımlama iletişim kutusu açılır.

Step 2 - Ortamı, Nesne Sınıfını seçin ve aşağıda gösterildiği gibi "Akıllı Tanımlamayı Etkinleştir" i AÇIN -

Step 3 - Yapılandır'ı tıklayın ve temel ve İsteğe Bağlı Filtre Özelliklerini seçin.

Step 4- Varsayılanın dışında Temel Özellikler'e Özellikler ekleyin ve ayrıca İsteğe Bağlı Filtre Özelliklerini ekleyin / kaldırın. Lütfen aynı özelliklerin hem Zorunlu hem de Yardımcı Özelliklerin bir parçası olamayacağını unutmayın ve "Tamam" ı tıklayın.

Step 5- Nesne Deposuna bu türden nesneyi ekledikten sonra Akıllı Tanımlamanın etkinleştirilip etkinleştirilmediğini doğrulayın. Akıllı Tanımlama TRUE olarak ayarlandı. Akıllı Tanımlamayı etkinleştirmek istemiyorsak da bunu Yanlış yapabiliriz.

Step 6 - Aşağıda gösterildiği gibi "Dosya" Menüsünün "Ayarlar" altında test komut dosyası düzeyinde uygulayarak bir test Düzeyini devre dışı bırakabiliriz -

Step 7 - Akıllı Tanımlama, Adım # 6'ya göre devre dışı bırakılırsa, komut dosyası yürütme sırasında herhangi bir nesne için akıllı tanımlama uygulamayacaktır.

Step 8 - Nesnelerin Kapalı olarak Akıllı Tanımlama ile eklenmesi durumunda, QTP, daha sonra etkinleştirmiş olsak bile, gelecekte tanıma için Akıllı Tanımlamayı kullanmayacaktır.

Otomasyon testi bağlamında hata ayıklama, komut dosyasının daha sağlam olması ve uygulamadaki kusurları tespit edebilmesi için otomasyon komut dosyasındaki kodlama sorunlarını tespit etme ve gidermeye yönelik sistematik bir işlemdir.

QTP'de kesme noktalarını kullanarak hata ayıklama yapmanın çeşitli yolları vardır. Kırılma noktaları sadece "F9" tuşuna basarak veya "Çalıştır" → "Kırılma Noktası Ekleme / Çıkarma" Menü seçeneği kullanılarak eklenebilir.

Kırılma noktasını girdikten sonra, "Kırmızı Renkli" Nokta ve çizgi aşağıda gösterildiği gibi KIRMIZI ile vurgulanacaktır -

Yöntem Kısayol Açıklama
İçine adım F11 Her bir Adımı yürütmek için kullanılır. İşleve / eyleme adım atar ve satır satır yürütür. Yürütmeden sonra her satırda duraklar.
Adım atmak F10 İşlevi Aşmak için kullanılır. Step Over yalnızca etkin belgedeki geçerli adımı çalıştırır.
Dışarı çıkmak Üst Karakter + F11 İşleve Adım attıktan sonra, Dışarı Adımla komutunu kullanabilirsiniz. Step Out, çalışmayı işlevin sonuna kadar sürdürür ve ardından sonraki satırda çalıştırma oturumunu duraklatır.

Kırılma Noktasındaki Seçenekler

Kırılma Noktasındaki çeşitli Seçeneklere 'Çalıştır' Menüsünden Dolaşarak erişilebilir.

Sr.No. Kısa Kesim ve Açıklama
1

F9

BreakPoint Ekle / Kaldır

2

Ctrl+F9

BreakPoint'i Etkinleştir / Devre Dışı Bırak

3

Ctrl+Shift+F9

Tüm BreakPoint'leri Temizle

4

Use Only Menu

Tüm BreakPoints'leri Etkinleştir / Devre Dışı Bırak

Hata Ayıklama Bölmesi

Aşağıdakiler, hata ayıklama penceresindeki bölmelerdir -

  • Output - Bu Sekme, Yazdırma İfadelerinin tüm Çıktılarını görüntüler.

  • Watch - Bu Sekme, Verilen İfadenin Boole çıkışını görüntüler.

  • LocalVariables - Bu Sekme Yerel Değişkenlerin Çıktısını gösterir.

Misal

İzleme Bölmesi, çıktı ifadesini aşağıda gösterildiği gibi gösterir -

Yerel Değişkenler Bölmesi, aşağıda gösterildiği gibi yerel değişkenler tarafından tutulan değerleri gösterir -

QTP'de hataları işlemenin çeşitli yolları vardır. QTP ile çalışırken karşılaşabileceğiniz üç olası hata türü vardır. Onlar -

  • Sözdizimi Hataları
  • Mantıksal Hatalar
  • Çalışma Süresi Hataları

Hata Türleri

Sözdizimi Hataları

Sözdizimi hataları, yazım hataları veya kodun VBscripting dili grameri ile onaylanmayan bir parçasıdır. Sözdizimi hataları, kodun derlenmesi sırasında meydana gelir ve hatalar giderilene kadar yürütülemez.

Sözdizimini doğrulamak için Ctrl + F7 klavye kısayolunu kullanın ve sonuç aşağıda gösterildiği gibi görüntülenir. Pencere görüntülenmezse, "Görünüm" → "Hatalar" seçeneğine gidebilir.

Mantıksal Hatalar

Komut dosyası sözdizimsel olarak doğruysa ancak beklenmeyen sonuçlar üretiyorsa, bu bir Mantıksal hata olarak bilinir. Mantıksal hata genellikle yürütmeyi kesintiye uğratmaz ancak yanlış sonuçlar verir. Mantıksal hatalar çeşitli nedenlerden, çok yanlış varsayımlardan veya gereksinimin yanlış anlaşılmasından ve bazen yanlış program mantığından (do-Until yerine do-while kullanarak) veya Sonsuz Döngülerden kaynaklanabilir.

Mantıksal bir hatayı tespit etmenin yollarından biri, eş incelemeleri gerçekleştirmek ve aynı zamanda aracın yapması gerektiği gibi çalıştığından emin olmak için QTP çıktı dosyasını / sonuç dosyasını doğrulamaktır.

RunTime Hataları

Adından da anlaşılacağı gibi, bu tür bir hata Çalışma Süresi sırasında gerçekleşir. Bu tür hataların nedeni, bir şeyi yapmaya çalışan komut dosyasının bunu yapamaması ve komut dosyasının yürütülmeye devam edemediği için genellikle durmasıdır. Çalışma Süresi Hataları için klasik örnekler şunlardır -

  • Dosya bulunamadı, ancak komut dosyası dosyayı okumaya çalışıyor
  • Nesne bulunamadı, ancak komut dosyası o belirli nesne üzerinde işlem yapmaya çalışıyor
  • Bir Sayıyı Sıfıra Bölme
  • Dizi öğelerine erişirken Dizi Dizini sınırların dışında

Çalışma Zamanı Hatalarını Ele Alma

Koddaki hataları işlemenin çeşitli yolları vardır.

1. Using Test Settings- Hata işleme, aşağıda gösterildiği gibi "Dosya" >> "Ayarlar" >> "Çalıştır" Sekmesine giderek Test Ayarları olarak tanımlanabilir. Belirtilen ayarlardan herhangi birini seçip "Tamam" a tıklayabiliriz.

2. Using On Error Statement - 'Hata Durumunda' ifadesi, VBScript motorunun kullanıcı dostu olmayan hata mesajlarını görüntülemesine izin vermek yerine, bir testçinin çalışma zamanı hatalarını işleme niyetlerini VBScript motoruna bildirmek için kullanılır.

  • On Error Resume Next - On Error Resume Next, bir hata ile karşılaşıldığında sonraki kod satırını yürütmesi için VBScript motorunu bilgilendirir.

  • On error Goto 0 - Bu, test uzmanlarının hata işlemeyi kapatmasına yardımcı olur.

3. Using Err Object - Hata nesnesi, kodda kolayca hata ayıklayabildiğimiz çalışma zamanı hata numarasını ve hata açıklamasını yakalayan VBScript içinde yerleşik bir nesnedir.

  • Err.Number- Number özelliği, bir hatayı belirten sayısal bir değer döndürür veya ayarlar. Err.Number değeri 0 ise hata oluşmamıştır.

  • Err.Description - Açıklama özelliği, bir hata hakkında kısa bir açıklama döndürür veya ayarlar.

  • Err.Clear - Clear yöntemi, Err nesnesini sıfırlar ve onunla ilişkili tüm önceki değerleri temizler.

Misal

'Call  the function to Add two Numbers Call Addition(num1,num2) 

Function Addition(a,b)  
   On error resume next  
      If NOT IsNumeric(a) or IsNumeric(b) Then 
         Print "Error number is  " &  err.number & " and description is : 
            " &  err.description 
         Err.Clear 
         Exit Function 
      End If 
   Addition = a+b 

   'disables error handling  
   On Error Goto 0 
End function

4. Using Exit Statement- Çıkış İfadeleri, Err.Number değerine dayalı olarak bir test veya eylem veya yinelemeden çıkmak için Err nesnesiyle birlikte kullanılabilir. Bu Çıkış ifadelerinin her birini ayrıntılı olarak görelim.

  • ExitTest - Çalışma zamanı yineleme ayarları ne olursa olsun, tüm QTP testinden çıkar.

  • ExitAction - Mevcut eylemden çıkar.

  • ExitActionIteration - Eylemin geçerli yinelemesinden çıkar.

  • ExitTestIteration - QTP testinin mevcut yinelemesinden çıkar ve bir sonraki yinelemeye geçer.

5. Recovery Scenarios - Bir hata ile karşılaşıldığında, belirli koşullara göre kurtarma senaryoları tetiklenir ve ayrı bir bölümde ayrıntılı olarak ele alınır.

6. Reporter Object- Reporter Object, bir olayı çalıştırma sonuçlarına rapor etmemize yardımcı olur. İlgili eylemin / adımın başarılı / başarısız olup olmadığını belirlememize yardımcı olur.

'Syntax: Reporter.ReportEventEventStatus, ReportStepName, Details, 
[ImageFilePath] 

'Example 
Reporter.ReportEvent micFail, "Login", "User is unable to Login."

Kurtarma Senaryoları

QTP betiklerini çalıştırırken, bazı beklenmedik hatalar alabiliriz. Testleri kurtarmak ve bu beklenmedik hatalardan betiğin geri kalanını yürütmeye devam etmek için Kurtarma Senaryoları kullanılır. Kurtarma Senaryosu Yöneticisine aşağıda gösterildiği gibi "Kaynaklar" → Kurtarma Senaryosu Yöneticisine gidilerek erişilebilir -

Kurtarma Senaryosu Oluşturma Adımları

Step 1- "Yeni" Kurtarma Senaryosu düğmesini tıklayın; Kurtarma Senaryosu Sihirbazı aşağıda gösterildiği gibi açılır -

Step 2- Tetikleme Olayını seçin. Aşağıdaki dört olaydan herhangi birinde ortaya çıkabilecek olaya karşılık gelir -

  • Açılır Pencere
  • Nesne Durumu
  • Test Çalıştırma Hatası
  • Uygulama Çökmesi

Step 3- Kurtarma İşlemleri Penceresi açılır. Kurtarma İşlemi, aşağıdaki ekran görüntüsünde gösterildiği gibi aşağıdaki İşlemlerden herhangi birini gerçekleştirebilir -

Step 4 - Uygun Kurtarma İşlemini belirledikten sonra, aşağıda gösterildiği gibi Kurtarma Sonrası İşlemini de belirtmemiz gerekir -

Step 5 - Kurtarma Sonrası İşlemi belirtildikten sonra, kurtarma senaryosu adlandırılmalı ve etkinleştirilebilmesi için Teste eklenmelidir.

Step 6 - Kurtarma Senaryosu oluşturma işlemi tamamlanmıştır ve "Senaryoyu mevcut Teste Ekle" seçeneği işaretlenerek mevcut Test ile eşleştirilmesi ve "Bitir" üzerine tıklanması gerekir.

Step 7 - Eklenen Kurtarma Senaryosu aşağıda gösterildiği gibi olacaktır ve devam etmek için "Kapat" Düğmesine tıklayın.

Step 8- Kapat düğmesine tıkladıktan sonra, QTP kullanıcıdan oluşturulan Kurtarma senaryosunu kaydetmesini ister. .Qrs uzantısıyla kaydedilecek ve sihirbaz kapanacaktır.

Doğrulama

Oluşturulan Kurtarma Senaryosu şu anda testin bir parçası olmalıdır ve "Dosya" → "Ayarlar" → "Kurtarma" Sekmesine gidilerek doğrulanabilir.

QTP ortam değişkenleri, tüm eylemler, işlev kitaplıkları ve kurtarma senaryoları tarafından erişilebilen özel değişken türleridir. Windows için, o belirli sistem üzerinde çalışan tüm uygulamalarda kullanılabilen yerleşik ortam değişkenleri vardır, ancak QTP ortam değişkenleri, yalnızca çalışma zamanı sırasında söz konusu test komut dosyası için kullanılabilir.

Ortam Değişkenlerinin Türleri

Built-in Environment Variables- test adı, eylem adı, test yolu, yerel ana bilgisayar adı, işletim sistemi adı, türü ve sürümü gibi bilgileri sağlayabilen bir dizi ortam parametresi sağlar. Ortam Değişkeni adlarına "Dosya" → "Test Ayarları" → "Ortam" Sekmesine gidilerek erişilebilir.

User defined Internal- Kullanıcı tanımlı değişkenler, Ortam Sekme Penceresinde "Kullanıcı Tanımlı" seçilerek kaydedilebilir. Aşağıda gösterildiği gibi Parametre Adı ve Değerini girmek için "+" düğmesine tıklanır -

User Defined External- Kullanıcı Tanımlı Değişkenler, harici bir dosyada .xml dosyası olarak saklanabilir ve aşağıdaki şekilde gösterildiği gibi teste yüklenebilir. Aşağıdaki örneklerden birinde açıklandığı gibi, çalışma sırasında da dinamik olarak yüklenebilir.

Ortam Değişkenleri - Desteklenen Yöntemler

1. ExternalFileName Property- Test Ayarları iletişim kutusunun Ortam sekmesinde belirtilen, yüklenmiş harici ortam değişkeni dosyasının adını döndürür. Harici ortam değişkeni dosyası yüklenmemişse, bu özellik boş bir dize döndürür.

x = Environment.ExternalFileName 
print x

2. LoadFromFile Method- Belirtilen ortam değişkeni dosyasını (.xml) çalışma süresi boyunca dinamik olarak yükler. Bu yöntemi kullanırken, ortam değişkenlerinin Ortam Sekmesine manuel olarak eklenmesi gerekmez.

Environment.LoadFromFile "D:\config.xml"
b = Environment.Value("Browser")
print b

3. Value Property- Ortam değişkenlerinin değerini alır. Bu özelliği kullanarak kullanıcı tanımlı iç ortam değişkenlerinin değerini de ayarlayabiliriz.

' Get the Value of the InBuilt Environment Variables
a = Environment.Value("OS")
print a
b = Environment.Value("ActionName")
print b
  
'Loaded from External File
Environment.LoadFromFile "D:\config.xml"
c = Environment.Value("Browser")
print c

Komut dosyasını modüler hale getirmek için kitaplık dosyaları QTP Komut Dosyasına eklenir. Değişken bildirimi, İşlevler, Sınıflar vb. İçerir. Test komut dosyaları arasında paylaşılabilen yeniden kullanılabilirliği etkinleştirirler. Bir uzantı .vbs veya .qfl ile kaydedilirler.

"Dosya" >> "İşlev Kitaplığı" na gidilerek yeni bir Kitaplık dosyası oluşturulabilir.

İşlev Kitaplıklarını İlişkilendirme

Method 1- "Dosya"> "Ayarlar"> Kaynaklar> İşlev Kitaplığını İlişkilendir seçeneğini kullanarak. İşlev Kitaplığı dosyası eklemek için "+" düğmesini tıklayın ve aşağıda gösterildiği gibi gerçek yolu veya göreceli yolu kullanarak ekleyin -

Method 2 - ExecuteFile yöntemini kullanarak.

'Syntax : ExecuteFile(Filepath)
ExecuteFile "C:\lib1.vbs" 
ExecuteFile "C:\lib2.vbs"

Method 3 - LoadFunctionLibrary Yöntemini Kullanma.

'Syntax : LoadFunctionLibrary(Filepath)
LoadFunctionLibrary "C:\lib1.vbs" 
LoadFunctionLibrary "C:\lib2.vbs"

Method 4- Otomasyon Nesne Modeli (AOM) - QTP dışındaki çeşitli QTP işlemlerini kontrol edebildiğimiz bir mekanizmadır. AOM kullanarak, QTP'yi başlatabiliriz, Testi Açabilir, Fonksiyon Kitaplıklarını İlişkilendirebiliriz, vb. Aşağıdaki VbScript, Uzantı .vbs ile kaydedilmelidir ve aynısı çalıştırıldığında, QTP başlatılacak ve test yürütülmeye başlayacaktır. AOM, sonraki bölümlerde ayrıntılı olarak tartışılacaktır.

'Launch QTP
Set objQTP = CreateObject("QuickTest.Application")
objQTP.Launch
objQTP.Visible = True
  
'Open the test
objQTP.Open "D:\GUITest2", False, False
Set objLib = objQTP.Test.Settings.Resources.Libraries
  
'Associate Function Library if NOT associated already.
If objLib.Find("C:\lib1.vbs") = -1 Then 
  objLib.Add "C:\lib1.vbs", 1 
End

Test sonuçları

Test Sonuçları Penceresi, geçilen, başarısız vb. Adımları göstermek için bize yeterli bilgi verir. Sonuçlar penceresi testin yürütülmesinden sonra otomatik olarak açılır (varsayılan ayarlara göre). Aşağıdaki bilgiler görüntülenir -

  • Adımlar Geçti
  • Başarısız Adımlar
  • Ortam Parametreleri
  • Grafik İstatistikler

Test Sonuçlarında gerçekleştirilen işlemler

Sonuçları HTML’ye Dönüştürme

Sonuç Görüntüleyici penceresinde, "Dosya" → "Dosyaya Aktar" seçeneğine gidin. İşlem Sonuçlarını Dışa Aktar iletişim kutusu aşağıda gösterildiği gibi açılır -

Hangi tür raporun ihraç edileceğini seçebiliriz. Kısa sonuçlar, detaylı sonuçlar olabilir veya hatta düğümleri seçebiliriz. Dosya Adını seçip dışa aktardıktan sonra dosya .HTML Dosyası olarak kaydedilir.

Sonuçları Filtreleme

Sonuçlar Durum, Düğüm Türü ve Yinelemelere göre filtrelenebilir. "Test Sonuçları Penceresi" ndeki Filtre butonu kullanılarak erişilebilir.

Kusurları Artırma

Kusurlar, aşağıda gösterildiği gibi ALM ile bağlantıyı açan "Araçlar" → "Kusur Ekle" ye erişilerek doğrudan Test Sonuçları Penceresi bölmesinden QC'de oturum açılabilir -

Test sonuçları

Otomatik Test Sonuçları Penceresi "Araçlar" → "Seçenekler" → "Oturumları Çalıştır" Sekmesi altında yapılandırılabilir. Gerekirse KAPALI duruma getirebiliriz ve ayrıca "Oturum Sona Erdiğinde Sonuçları Otomatik Olarak Dışa Aktar" seçeneğini de açabiliriz.

Ekran görüntüsü veya film, ayarlara göre kaydedilebilir. Aynısı "Araçlar" → "Seçenekler" → "Ekran Görüntüsü" Sekmesi altında yapılandırılabilir. Ekran görüntüsünü veya filmleri aşağıdaki üç koşula göre kaydedebiliriz -

  • Hatalar İçin
  • Always
  • Hatalar ve Uyarılar İçin

Kod yürütme sırasında QTP'nin etkileşimde bulunduğu çeşitli GUI nesneleri vardır. Bu nedenle, üzerinde etkili bir şekilde çalışabileceğimiz temel GUI nesneleri için temel yöntemleri bilmek önemlidir.

Metin Kutusu ile Çalışma

Aşağıdakiler, Çalışma Süresi sırasında metin kutusuna eriştiğimiz yöntemlerdir -

  • Set - Test edenin Metin Kutusuna Değerleri Ayarlamasına yardımcı olur

  • Click - Metin Kutusuna Tıklamalar

  • SetSecure - Şifre kutularındaki metni güvenli bir şekilde ayarlamak için kullanılır

  • WaitProperty - Emlak değeri gerçek olana kadar bekler

  • Exist - Metin Kutusunun varlığını denetler

  • GetROProperty("text") - Metin Kutusunun Değerini Alır

  • GetROProperty("Visible") - Görünüyorsa bir Boolean değeri döndürür

Misal

Browser("Math Calculator").Sync
Set Obj = Browser("Math Calculator").Page("SQR Calc").WebEdit("n")

'Clicks on the Text Box
Obj.Click

'Verify if the Object Exist - Returns Boolean value
a = obj.Exist
print a

'Set the value
obj.Set "10000" : wait(2)

'Get the Runtime Object Property - Value of the Text Box
val = obj.GetROProperty("value")
print val

'Get the Run Time Object Property - Visiblility - Returns Boolean Value
x = Obj.GetROProperty("visible")
print x

Onay Kutusuyla Çalışma

Aşağıdakiler, Check Box ile çalışılabilecek temel yöntemlerden bazılarıdır -

  • Set - Test cihazının onay kutusu değerini "AÇIK" veya "KAPALI" olarak ayarlamasına yardımcı olur

  • Click- Onay kutusunu tıklar. Hatta AÇIK veya KAPALI'yı kontrol eder, ancak kullanıcı durumdan emin olmaz

  • WaitProperty - Emlak değeri gerçek olana kadar bekler

  • Exist - Onay Kutusunun varlığını denetler

  • GetROProperty("name") - Onay Kutusunun Adını alır

  • GetROProperty("Visible") - Görünüyorsa bir Boolean değeri döndürür

Misal

'To Check the Check Box
Set Obj = Browser("Calculator").Page("Gmail").WebCheckBox("PersistentCookie")
Obj.Set "ON"

'To UnCheck the Check Box
Obj.Set "OFF"

'Verifies the Existance of the Check box and returns Boolean Value
val = Obj.Exist
print val

'Fetches the Name of the CheckBox
a = Obj.GetROProperty("name")
print a

'Verifies the visible property and returns the boolean value.
x = Obj.GetROProperty("visible")
print x

Radyo Düğmesiyle Çalışma

Aşağıda, Radyo Düğmesi ile çalışılabilecek temel yöntemlerden bazıları verilmiştir -

  • Select(RadioButtonName) - Test edenin Radyo Kutusunu "AÇIK" konuma getirmesine yardımcı olur

  • Click- Radyo Düğmesine Tıklamalar. Hatta Radyo Düğmesi AÇIK veya KAPALI ancak test cihazı durumu alamıyor

  • WaitProperty - Emlak değeri gerçek olana kadar bekler

  • Exist - Radyo Düğmesinin varlığını denetler

  • GetROProperty("name") - Radyo Düğmesinin Adını Alır

  • GetROProperty("Visible") - Görünüyorsa bir Boolean değeri döndürür

Misal

'Select the Radio Button by name "YES"
Set Obj = Browser("Calculator").Page("Forms").WebRadioGroup("group1")
Obj.Select("Yes")

'Verifies the Existance of the Radio Button and returns Boolean Value
val = Obj.Exist
print val

'Returns the Outerhtml of the Radio Button
txt = Obj.GetROProperty("outerhtml")
print text

'Returns the boolean value if Radio button is Visible.
vis = Obj.GetROProperty("visible")
print vis

Combo Box ile Çalışma

Aşağıdakiler, Combo Box ile çalışılabilecek temel yöntemlerden bazılarıdır -

  • Select(Value) - Test cihazının ComboBox'tan değeri seçmesine yardımcı olur

  • Click - Nesneye tıklamalar

  • WaitProperty - Emlak değeri gerçek olana kadar bekler

  • Exist - Birleşik Giriş Kutusunun varlığını denetler

  • GetROProperty("Text") - Birleşik Giriş Kutusunun Seçilen Değerini Alır

  • GetROProperty("all items") - Birleşik giriş kutusundaki tüm öğeleri döndürür

  • GetROProperty("items count") - Birleşik giriş kutusundaki öğelerin sayısını verir

Misal

'Get the List of all the Items from the ComboBox
Set ObjList = Browser("Math Calculator").Page("Statistics").WebList("class")
x = ObjList.GetROProperty("all items")
print x

'Get the Number of Items from the Combo Box
y = ObjList.GetROProperty("items count")
print y

'Get the text value of the Selected Item
z = ObjList.GetROProperty("text")
print z

Düğmelerle Çalışma

Aşağıda, Düğmelerle çalışılabilecek temel yöntemlerden bazıları verilmiştir -

  • Click - Düğmeye Tıklamalar

  • WaitProperty - Emlak değeri gerçek olana kadar bekler

  • Exist - Düğmenin varlığını denetler

  • GetROProperty("Name") - Düğmenin Adını Alır

  • GetROProperty("Disabled") - Etkinleştirilirse / devre dışı bırakılırsa bir Boole değeri döndürür

Misal

'To Perform a Click on the Button
Set obj_Button = Browser("Math Calculator").Page("SQR").WebButton("Calc")
obj_Button.Click

'To Perform a Middle Click on the Button
obj_Button.MiddleClick

'To check if the button is enabled or disabled.Returns Boolean Value
x = obj_Button.GetROProperty("disabled")
print x

'To fetch the Name of the Button
y = obj_Button.GetROProperty("name")
print y

WebTables ile çalışma

Günümüzün web tabanlı uygulamasında, webTable'lar çok yaygın hale geldi ve test uzmanlarının WebTable'ların nasıl çalıştığını ve webTables'da bir eylemin nasıl gerçekleştirileceğini anlaması gerekiyor. Bu konu, webTables ile etkili bir şekilde çalışmanıza yardımcı olacaktır.

Sr.No. Açıklama ve Açıklama
1

if statement

Bir if ifade bir boole ifadesinin ardından bir veya daha fazla ifadeden oluşur.

2

if...else statement

Bir if elseifade bir boole ifadesinin ardından bir veya daha fazla ifadeden oluşur. Koşul Doğru ise. Aşağıdaki ifadelerififadeler yürütülür. Koşul yanlışsa.Else betiğin bir kısmı yürütüldü

3

if..elseif...else statement

Bir if ifadesinin ardından bir veya daha fazla Elseif mantıksal ifadelerden oluşan ve ardından isteğe bağlı bir else statement, tüm koşullar yanlış olduğunda çalıştırılır.

4

nested if statements

Bir if veya elseif bir başkasının içinde ifade if veya elseif beyan (lar).

5

switch statement

Bir switch ifadesi, bir değişkenin bir değerler listesine eşit ölçüde karşı test edilmesine izin verir.

  • html id - Tablonun bir kimlik etiketi varsa, bu özelliği kullanmak en iyisidir.

  • innerText - Masanın Başlığı.

  • sourceIndex - Tablonun Kaynak Dizinini Alır

  • ChildItemCount - Belirtilen Satırda bulunan ChildItems sayısını alır

  • RowCount - Tablodaki Satırların sayısını alır

  • ColumnCount - Tablodaki Sütun sayısını alır

  • GetcellData - Sütuna ve Satır Dizinine göre Hücrenin Değerini alır

Misal

Browser("Tutorials Point").Sync
' WebTable 
Obj = Browser("Tutorials Point").Page("VBScript Decisions").WebTable("Statement")
' Fetch RowCount
x = Obj.RowCount
print x

' Fetch ColumnCount
y = Obj.ColumnCount(1)
print y

' Print the Cell Data of the Table
For i = 1 To x Step 1
   
   For j = 1 To y Step 1
      z = Obj.GetCellData(i,j)
      print "Row ID : " & i & " Column ID : " & j & " Value : " & z
   Next
Next

'Fetch the Child Item count of Type Link in a particular Cell
z = Obj.ChildItemCount(2,1,"Link")
print z

Sanal Nesneler nedir?

Bazen, test edilen bir uygulama standart pencere nesnesi içerebilir ancak QTP tarafından tanınmaz. Bu koşullar altında, nesneler, kullanıcı eylemlerinin yürütme sırasında sanal nesneler üzerinde simüle edilebilmesi için düğme, bağlantı vb. Sanal nesne (VO) olarak tanımlanabilir.

Misal

Microsoft Word'de bir senaryoyu otomatikleştirdiğimizi varsayalım. MS word uygulamasını etkinleştirdim ve şeritteki herhangi bir simgeye tıklıyorum. Örneğin Şeritte Ekle sekmesine tıklanır ve ardından kullanıcı "Resim" düğmesine tıklar. Bir düğme WinObject olarak tanınır; dolayısıyla sanal nesnelerin önemi ortaya çıkmaktadır.

Window("Microsoft Word").WinObject("Ribbon").Click 145,45
Window("Microsoft Word").WinObject("Ribbon").WinObject("Picture...").Click 
170,104

Sanal Nesne Oluşturma

Step 1 - Bu tür senaryolarda, Sanal Nesneler, Sanal Nesne Yöneticisi veya "Araçlar" >> "Sanal Nesne" >> "Yeni Sanal Nesne" den Yeni Sanal Nesne kullanılarak oluşturulur ve "İleri" düğmesine tıklayın.

Step 2 - Nesneyi Sınıf Türüne göre eşleyin ve "İleri" yi tıklayın.

Step 3- "Nesneyi İşaretle" Düğmesine tıklayın. Bir ince artı imleci görünecek ve eşlemek istediğiniz nesneyi işaretleyecek ve "İleri" yi tıklayacaktır.

Step 4 - Sanal nesnenin üst öğesini seçin ve "İleri" düğmesini tıklayın.

Step 5 - Sanal nesneyi saklamak istediğiniz koleksiyonu adlandırın ve "Bitir" üzerine tıklayın.

Sanal Nesne Yöneticisi

Sanal nesne Yöneticisi, Sanal nesnelerin koleksiyonlarını yönetir. Test uzmanları, Sanal Nesneleri Sanal Nesne yöneticisinden ekleyebilir veya Silebilir.

Sanal nesne Yöneticisine Gezinti: "Araçlar" >> "Sanal Nesne Yöneticisi" aşağıda gösterildiği gibi -

Sanal Nesneleri Kullanma

Sanal Nesneleri oluşturduktan sonra, oluşturulan nesne aşağıda gösterildiği gibi kullanılabilir -

Window("Microsoft Word").WinObject("Ribbon").VirtualButton("button").Click

Sanal Nesne Sınırlamaları

  • QTP, analog veya düşük seviyeli kayıt için sanal nesneleri desteklemez.

  • Kontrol noktaları, Sanal Nesnelere eklenemez.

  • Sanal Nesneler, Nesne Deposu tarafından kontrol edilmez.

  • Bir nesneyi belirli bir sınıfa (düğme veya Liste) eşlememize rağmen, yerel nesnelerin tüm yöntemleri Sanal nesneler tarafından desteklenmez.

  • Object Spy, Virtual Object üzerinde kullanılamaz.

  • Koordinatlar değiştikçe ekran çözünürlüğü değişirse test yürütme başarısız olur.

  • Sanal nesnelerin doğru bir şekilde yakalanabilmesi için Uygulama Penceresi aynı ekran boyutunda olmalıdır.

Bu nedenle QTP, veritabanına bağlanmak için herhangi bir yerleşik destek sağlamaz, ancak VBScript test edicileri kullanılarak ADODB nesnelerini kullanarak veritabanlarına bağlanabilir ve etkileşim kurabilir.

ADODB, veritabanları ile çalışabileceğimiz 4 özelliğe veya yönteme sahiptir. Onlar -

  • ADODB.Connection - Veritabanına bağlantı kurmak için kullanılır

  • ADODB.Command - Bir SQL komutunu yürütmek için kullanılır (Sorgular veya Saklanan Prosedürler)

  • ADODB.Fields - Bir sorgu / depolanan işlem gerçekleştirdikten sonra bir kayıt kümesinden belirli bir sütunu getirmek için kullanılır

  • ADODB.Recordset - Bir veritabanından veri almak için kullanılır

Veritabanına nasıl bağlanılır?

Veritabanları Bağlantı dizeleri kullanılarak bağlanabilir. Her veritabanı, onlara bağlanma şeklimizde farklılık gösterir. Bununla birlikte, bağlantı dizeleri www.connectionstrings.com yardımıyla oluşturulabilir .

Aşağıdaki parametrelerle veritabanına nasıl bağlanacağımızı görelim -

  • Database Type - MSSQL SUNUCUSU

  • Server Name - SQLEXPRESS

  • Database Name - Deneme

  • User Id - sa

  • password - Şifre123

Sorgunun çıktısı SQL Server Management Studio'da aşağıdaki gibi gösterilir -

Dim objConnection 
'Set Adodb Connection Object
Set objConnection = CreateObject("ADODB.Connection")     
Dim objRecordSet 
 
'Create RecordSet Object
Set objRecordSet = CreateObject("ADODB.Recordset")     
 
Dim DBQuery 'Query to be Executed
DBQuery = "Select NAME from dbo.EMPLOYEE where AGE = 29"
 
'Connecting using SQL OLEDB Driver
objConnection.Open "Provider = sqloledb.1;Server =.\SQLEXPRESS;
User Id = sa;Password=Password123;Database = Trial"
 
'Execute the Query
objRecordSet.Open DBQuery,objConnection
 
'Return the Result Set
Value = objRecordSet.fields.item(0)				
msgbox Value
 
' Release the Resources
objRecordSet.Close        
objConnection.Close		
 
Set objConnection = Nothing
Set objRecordSet = Nothing

Sonuç

Yukarıdaki komut dosyası çalıştırıldığında, çıktı aşağıda gösterildiği gibi mesaj kutusunda gösterilir -

XML, verileri hem insan hem de makine tarafından okunabilen bir biçimde depolamak için tasarlanmış bir biçimlendirme dilidir. XML kullanılarak, veriler bilgisayar ve veritabanı sistemleri arasında da kolayca değiştirilebilir.

Örnek XML ve temel öğeleri aşağıda gösterilmektedir -

XML'e erişim

Const XMLDataFile = "C:\TestData.xml"
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.Async = False
xmlDoc.Load(XMLDataFile)

' Getting the number of Nodes (books)
Set nodes = xmlDoc.SelectNodes("/bookstore/book")
Print "Total books: " & nodes.Length    ' Displays 2

' get all titles
Set nodes = xmlDoc.SelectNodes("/Booklib/book/value/text()")

' get their values
For i = 0 To (nodes.Length - 1)
   Title = nodes(i).NodeValue
   Print "Title is" & (i + 1) & ": " & Title
Next

XML karşılaştırması

Verilen iki XML'i karşılaştırabiliriz -

Dim xmlDoc1
Dim xmlDoc2

' Load the XML Files
Set xmlDoc1 = XMLUtil.CreateXMLFromFile ("C:\File1.xml")
Set xmlDoc2 = XMLUtil.CreateXMLFromFile ("C:\File2.xml")

'Use the compare method of the XML to check if they are equivalent
Comp = xmlDoc1.Compare (xmlDoc1, xmlDoc2)

'Returns 1 if the two files are the same
If Comp = 1 Then
   Msgbox "XML Files are the Same"
Else
   Msgbox "XML Files are Different"
End if

QTP komut dosyaları, yalnızca nesneler Nesne Deposunda mevcutsa çalıştırılabilir. Nesnelerin açıklamaları, Açıklayıcı programlama kullanılarak oluşturulur -

  • Test kullanıcıları, nesne havuzunda bulunmayan bir nesne üzerinde bir işlem gerçekleştirmek istediğinde

  • Uygulamadaki nesneler doğası gereği çok dinamik olduğunda.

  • Nesne Deposu büyüdüğünde, Nesne Deposunun boyutu arttıkça düşük Performansa neden olur.

  • Çerçeve inşa edildiğinde, Nesne Deposunu hiç kullanmamaya karar verildi.

  • Test uzmanları, nesnenin benzersiz özellikleri hakkında bilgi sahibi olmadan çalışma zamanında uygulama üzerinde bir eylem gerçekleştirmek istediklerinde.

Sözdizimi

Tanımlayıcı Programlama tekniğini kullanarak komut dosyası oluşturmanın iki yolu vardır. Onlar -

  • Açıklama Nesneleri
  • Açıklama Dizeleri

Açıklama Nesneleri

Komut dosyası, kullanılan özelliklere ve bunlara karşılık gelen değerlere bağlı Açıklama Nesneleri kullanılarak geliştirilmiştir. Ardından, bu açıklamalar komut dosyasını oluşturmak için kullanılır.

'Creating a description object
Set btncalc = Description.Create()

'Add descriptions and properties
btncalc("type").value = "Button"
btncalc("name").value = "calculate"
btncalc("html tag").value = "INPUT"

' Use the same to script it
Browser("Math Calc").Page("Num Calculator").WebButton(btncalc).Click

Açıklama Dizeleri

Nesnelerin açıklaması, aşağıda gösterildiği gibi dizeler olarak özellikler ve değerler kullanılarak geliştirilmiştir.

Browser("Math Calc").Page("Num Calculator").WebButton("html 
tag:=INPUT","type:=Button","name:=calculate").Click

Alt Nesneler

QTP, bir nesne koleksiyonu oluşturmamızı sağlayan ChildObjects yöntemini sağlar. Üst nesneler, ChildObjects'ten önce gelir.

Dim oDesc
Set oDesc = Description.Create
oDesc("micclass").value = "Link"

'Find all the Links
Set obj = Browser("Math Calc").Page("Math Calc").ChildObjects(oDesc)

Dim i
'obj.Count value has the number of links in the page

For i = 0 to obj.Count - 1	 
   'get the name of all the links in the page			
   x = obj(i).GetROProperty("innerhtml") 
   print x 
Next

Sıra Tanımlayıcıları

Tanımlayıcı programlama, iki veya daha fazla nesne aynı özelliklere sahip olduğunda QTP'nin bu nesneler üzerinde hareket etmesini sağlayan sıralı tanımlayıcılara dayalı komut dosyası yazmak için kullanılır.

' Using Location
Dim Obj
Set Obj = Browser("title:=.*google.*").Page("micclass:=Page")
Obj.WebEdit("name:=Test","location:=0").Set "ABC"
Obj.WebEdit("name:=Test","location:=1").Set "123"
 
' Index
Obj.WebEdit("name:=Test","index:=0").Set "1123"
Obj.WebEdit("name:=Test","index:=1").Set "2222"
 
' Creation Time
Browser("creationtime:=0").Sync
Browser("creationtime:=1").Sync
Browser("creationtime:=2").Sync

QTP'nin kendisi, HP-QTP tarafından sağlanan COM arabirimi kullanılarak otomatikleştirilebilir. Otomasyon nesne modeli, test uzmanlarının QTP arayüzünü kullanarak yapılandırma ayarlarını kontrol etmelerine ve komut dosyalarını yürütmelerine yardımcı olan bir dizi nesne, yöntem ve özelliktir. Kontrol edilebilen (ancak bunlarla sınırlı olmayan) Anahtar Yapılandırmalar / eylemler aşağıda listelenmiştir -

  • Bir test için gerekli tüm eklentileri yükler
  • Yürütme sırasında QTP'yi görünür hale getirir
  • Belirtilen konumu kullanarak Testi açar
  • İşlev Kitaplıklarını İlişkilendirir
  • Ortak Nesne Eşitleme Zaman Aşımını belirtir
  • Yinelemeyi Başlat ve Bitir
  • Akıllı Tanımlamayı Etkinleştir / Devre Dışı Bırak
  • Hata Ayarlarında
  • Veri Tablosu Yolu
  • Kurtarma Senaryosu Ayarları
  • Günlük İzleme Ayarları

QTP 11.5x, "Başlat" >> "Tüm Programlar" >> "HP Yazılımı" >> "HP Birleşik İşlevsel Test" >> "Belgeler" >> "Birleşik Fonksiyonel Test Otomasyon Referansı ".

AOM Komut Dosyası Oluştur

Test uzmanı, "Komut Dosyası Oluştur" seçeneğini kullanarak QTP'nin kendisinden AOM komut dosyası oluşturabilir. Aşağıda gösterildiği gibi "Çalıştır" >> "Ayarlar" >> "Özellikler" Sekmesi >> "Komut Dosyası Oluştur" seçeneğine gidin -

Misal

' A Sample Script to Demostrate AOM
Dim App 'As Application
Set App = CreateObject("QuickTest.Application")
App.Launch
App.Visible = True

App.Test.Settings.Launchers("Web").Active = False
App.Test.Settings.Launchers("Web").Browser = "IE"
App.Test.Settings.Launchers("Web").Address = "http://easycalculation.com/"
App.Test.Settings.Launchers("Web").CloseOnExit = True

App.Test.Settings.Launchers("Windows Applications").Active = False
App.Test.Settings.Launchers("Windows Applications").Applications.RemoveAll
App.Test.Settings.Launchers("Windows Applications").RecordOnQTDescendants = True
App.Test.Settings.Launchers("Windows Applications").RecordOnExplorerDescendants = False
App.Test.Settings.Launchers("Windows Applications").RecordOnSpecifiedApplications = True

App.Test.Settings.Run.IterationMode = "rngAll"
App.Test.Settings.Run.StartIteration = 1
App.Test.Settings.Run.EndIteration = 1
App.Test.Settings.Run.ObjectSyncTimeOut = 20000
App.Test.Settings.Run.DisableSmartIdentification = False
App.Test.Settings.Run.OnError = "Dialog"

App.Test.Settings.Resources.DataTablePath = "<Default>"
App.Test.Settings.Resources.Libraries.RemoveAll

App.Test.Settings.Web.BrowserNavigationTimeout = 60000
App.Test.Settings.Web.ActiveScreenAccess.UserName = ""
App.Test.Settings.Web.ActiveScreenAccess.Password = ""

App.Test.Settings.Recovery.Enabled = True
App.Test.Settings.Recovery.SetActivationMode "OnError"
App.Test.Settings.Recovery.Add "D:\GUITest2\recover_app_crash.qrs", 
   "Recover_Application_Crash", 1
App.Test.Settings.Recovery.Item(1).Enabled = True 

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' System Local Monitoring settings
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
App.Test.Settings.LocalSystemMonitor.Enable = false
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Log Tracking settings
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
With App.Test.Settings.LogTracking
   .IncludeInResults = False
   .Port = 18081 
   .IP = "127.0.0.1"
   .MinTriggerLevel = "ERROR"
   .EnableAutoConfig = False
   .RecoverConfigAfterRun = False
   .ConfigFile = ""
   .MinConfigLevel = "WARN" 
End With

Çerçeve, bir dizi standardı uygulayan ve son kullanıcıların birlikte çalışmasını kolaylaştıran bir dizi kılavuz / en iyi uygulama tanımlar. Farklı otomasyon çerçevesi türleri vardır ve en yaygın olanları aşağıda listelenmiştir -

  • Anahtar Kelime Odaklı Çerçeve
  • Veriye Dayalı Çerçeve
  • Hibrit Çerçeve

Anahtar Kelime Odaklı Çerçeve

Anahtar kelimeye dayalı test, aynı zamanda tabloya dayalı test veya eylem kelimesi temelli test olarak da bilinen bir tür fonksiyonel otomasyon testi çerçevesidir.

Anahtar kelimeye dayalı testte, yürütmek istediğimiz her işlev için anahtar kelimeleri veya eylem kelimelerini tanımlamak için genellikle bir elektronik tablo olan bir tablo biçimi kullanırız.

Avantajlar

  • Acemi veya teknik olmayan bir test cihazı için en uygun olanıdır.

  • Bu yaklaşımı kullanarak testlerin daha soyut bir şekilde yazılmasını sağlar.

  • Anahtar kelimeye dayalı test, test için kararlı bir yapı teslim edilmeden önce bile otomasyonun SDLC'de daha erken başlatılmasına olanak tanır.

  • Yüksek derecede yeniden kullanılabilirlik vardır.

Dezavantajları

  • Anahtar kelimeleri ve ilgili işlevlerini geliştirmek için yapılan ilk yatırım daha uzun sürebilir.

  • Teknik olarak yetenekli test kullanıcıları için bir kısıtlama görevi görebilir.

Veriye Dayalı Çerçeve

Veriye dayalı test, test her çalıştırıldığında aynı sabit kodlanmış değerleri kullanmak yerine test verilerinin ve / veya çıkış değerlerinin veri dosyalarından okunduğu test komut dosyalarının oluşturulmasıdır. Bu şekilde, test uzmanları uygulamanın çeşitli girdileri nasıl etkili bir şekilde işlediğini test edebilir. Aşağıdaki veri dosyalarından herhangi biri olabilir -

  • datapools
  • Excel dosyaları
  • ADO nesneleri
  • CSV dosyaları
  • ODBC kaynakları

Akış diyagramı

Veriye Dayalı Test en iyi şekilde aşağıdaki diyagramla anlaşılabilir -

Avantajlar

  • Veriye dayalı çerçeve, daha az miktarda kodla sonuçlanır
  • Komut dosyası sorunlarını sürdürmek ve düzeltmek için daha fazla esneklik sunar
  • Test Verileri geliştirilebilir

Dezavantajları

  • Farklı veri kümelerini anlamak için her komut dosyasının farklı olması gerekir.

Hibrit Çerçeve

Hybrid Framework, aşağıdaki akış şeması kullanılarak en iyi şekilde açıklanabilen Anahtar sözcük odaklı ve veriye dayalı çerçevenin bir kombinasyonudur.

Etkileyen Faktörler

Çerçeve geliştirilirken dikkate alınması gereken parametreler aşağıdadır. Etki faktörleri aşağıda listelenmiştir -

  • Çerçeve dosyaları, SVN, CVS, MS Kaynak Kontrolü gibi sürüm kontrol yazılımlarını desteklemelidir

  • Çerçeve, komut dosyalarının farklı ortamlarda, yani QA, SAT, DEV

  • Nesne değişiklikleri üzerine, komut dosyaları minimum değişikliklerle yürütülmelidir.

  • Framework, kendisini yapılandırmalı ve klasörler / veritabanları oluşturmak gibi ön koşulları yerine getirmelidir.

  • Komut dosyası / uygulamadaki sorunların kolayca tespit edilebilmesi için çerçeve sağlam bir raporlama yapısına sahip olmalıdır.

  • Çerçeve, kullanımı kolay olması için daha fazla esnekliğe sahip olmalıdır

  • Dosya, işlev ve değişiklik geçmişinin doğru bir şekilde korunması için çerçeve kodlama standartlarını takip etmelidir.

Bir sonraki bölümde, basit bir çerçevenin nasıl tasarlanacağını öğreneceğiz.

Örnek bir uygulama alarak basit bir çerçeve tasarlayalım. Test edilen uygulamanın birkaç senaryosunu otomatikleştirip yeniden kullanılabilir işlevler yazacağız.

Test edilen örnek uygulama "Calculator", Windows'un bir parçası olarak kullanılabilen varsayılan bir uygulamadır. Şimdi bir çerçevenin farklı bileşenlerini oluşturalım. Burada hibrit bir çerçeve geliştireceğiz ve oldukça basit bir uygulama olduğu için Nesne Deposunu kullanacağız. Bununla birlikte, bu çerçeve, karmaşık bir uygulamayı da destekleyecek şekilde ölçeklenebilir.

Çerçevenin klasör yapısı aşağıda gösterildiği gibidir -

Klasör yapısının açıklaması -

  • Master Driver Script- Tüm yürütmeyi yürüten Komut Dosyası. Yürütme için gerekli olan önkoşul ve başlangıç ​​ayarlarını gerçekleştirir.

  • Library Files - İşlev Kitaplığını oluşturan İlişkili İşlevler.

  • Data Table - Yürütme için gerekli olan Test Verileri.

  • Object Repository - QTP'nin nesneleri sorunsuz bir şekilde tanımasını sağlayan Nesneler ve özellikleri.

  • Execution Logs - Klasör, kullanıcı işlevlerini ve işlev yürütme geçmişini içeren yürütme günlük dosyasını içerir.

Master Driver Script

'= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
' MASTER DRIVER SCRIPT NAME    : Calculator 
' DESCRIPTION                  : Drivers Script to Execute Automated Test for 
   the Calculator  
' AUTHOR                       : Tutorials Point 
' DATE CREATED                 : 30-Dec-2013 
' OBJECT REPOSITORY ASSOCIATED : Calc.tsr 
' LIBRARY FILES ASSOCIATED     : calculator.qfl, Common.qfl 
' MODIFICATION LOG

' ---------------------------------------------------- 
' First Version       Tutorials point 
'= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =  
Option Explicit  

Public ExecDrive  

' Get the Root folder of the Test  so that we can make use of relative paths. 
Dim x : x = Instr(Environment.Value("TestDir"),"Driver")-2 
ExecDrive = mid(Environment.Value("TestDir"),1,x)  

' Get the path of Libraries using relative to the current Drive 
Dim LibPath : LibPath = ExecDrive+"\Libraries\"  

' Dynamically Load the Function Libraries 
LoadFunctionLibrary LibPath + "Calculator.qfl", LibPath + "common_utils.qfl"   

' Capturing the Start Time 
' clscommon is the class object created in common.qfl library file 
clscommon.StartTime = Time()  

' Launching the Application 
SystemUtil.Run "C:\Windows\System32\Calc.exe" : wait (2)  

' Initialize the Data Table Path  
Dim FileName : FileName  = ExecDrive+"\TestData\Calculator.xls" 
Dim SheetSource : SheetSource  = "Calc_test" 
Dim SheetDest : SheetDest = "Global"  

' Import the DataTable into the QTP Script 
DataTable.ImportSheet  FileName , SheetSource , SheetDest   

' Object Repository Path 
Dim RepPath : RepPath = ExecDrive+"\Object_Repository\Calc.tsr" 
RepositoriesCollection.RemoveAll()  
RepositoriesCollection.Add(RepPath)   

' To Keep a Count on iteration 
Dim InttestIteration                   
Dim InttestRows : InttestRows = datatable.GetRowCount   

'  Fetching Date-TimeStamp which will be unique for Naming the Execution Log File 
clscommon.StrDateFormatted = day(date()) & "_" &  MonthName(Month(date()),true) &  
 "_" & YEAR(date())& "_"&hour(now)&"_"&minute(now)  

 ' Name the LogFile  
clscommon.StrLogFile = ExecDrive & "\Execution Logs\" &  
clscommon.StrDateFormatted & ".txt"   

' Create the Execution LogFile which captures the result 
clscommon.Fn_FileCreate(clscommon.StrLogFile)  

' Iniitialize the Parameters and all the relevant Test Details 
Call Fn_InitializeLogFile()  

' Kill all the previous calculator process  
Call fn_Kill_Process("calc.exe")  

For InttestIteration = 1 to InttestRows 
   datatable.SetCurrentRow InttestIteration  
   Dim StrExecute : StrExecute = Ucase(Trim(datatable.Value("Run","Global"))) 
   If StrExecute = "Y" Then  
      clscommon.Number1 = Trim(datatable.Value("Number_1","Global"))  
      clscommon.Number2 = Trim(datatable.Value("Number_2","Global"))  
      clscommon.Number3 = Trim(datatable.Value("Number_3","Global"))  
   
      clscommon.Number4 = Trim(datatable.Value("Number_4","Global"))  
      clscommon.Number5 = Trim(datatable.Value("Number_5","Global"))  
      clscommon.Number6 = Trim(datatable.Value("Number_6","Global"))  
   
      clscommon.Test_Case_ID  = 
         Trim(datatable.Value("Test_Case_ID","Global"))' 
            : clscommon.LogWrite "The Test Case Data is Located at :: " & tcDataPath 
      clscommon.tcScenario = 
         Trim(datatable.Value("Scenario","Global"))' 
            : clscommon.LogWrite "The Test Case Data is Located at :: " & tcDataPath 
      Dim  Expected_Val :  Expected_Val = 
         Trim(datatable.Value("Expected_Val","Global"))'                        
            :  clscommon.LogWrite "The Test Case Data is Located at :: " & tcDataPath 
   
      Select case clscommon.tcScenario  
         Case "Add" 
            clscommon.LogWrite "=== Inside the Test Set :: " & 
               clscommon.tcScenario & " ===" 
                  Call fnCalculate("+",Expected_Val) 
    
         Case "Subtract"   
            clscommon.LogWrite "=== Inside the Test Set :: " & 
               clscommon.tcScenario & " ===" 
                  Call fnCalculate("-",Expected_Val) 
    
         Case "Multiply"   
            clscommon.LogWrite "=== Inside the Test Set :: " & 
               clscommon.tcScenario & " ===" 
                  Call fnCalculate("*",Expected_Val) 
    
         Case "Divide"   
            clscommon.LogWrite "=== Inside the Test Set :: " & 
               clscommon.tcScenario & " ===" 
                  Call fnCalculate("/",Expected_Val) 
    
         Case "Sqrt"   
            clscommon.LogWrite "=== Inside the Test Set :: " & 
               clscommon.tcScenario & " ===" 
                  Call fnCalculate("sqt",Expected_Val) 
      End Select 
   End If  
Next  

' Calling the End Test to Add the result Footer in exec log file. 
Call fn_End_test()  

'  =====================  End of Master Driver Script =====================

Kitaplık Dosyaları

Hesap Makinesi İşlevleri, .qfl veya .vbs uzantısıyla kaydedilen ayrı bir işlev dosyasına yazılır. Bu işlevler, eylemler arasında yeniden kullanılabilir.

'  Calculator. Qfl File :: Associated Function Library for Calculator Master Driver  

'= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =  
' FUNCTION NAME     : Fn_InitializeLogFile 
' DESCRIPTION       : Function to Write the Initial Values in the Log File 
' INPUT PARAMETERS  : varExecDrive,StrDB,StrUId,Strpwd,StrNewDB 
' OUTPUT PARAMETERS : NIL 
' RETURN VALUE      : Pass or Fail message 
' DATE CREATED      : 30-Dec-2013 
'= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =  
Public Function Fn_InitializeLogFile() 
   clscommon.LogWrite "********************************************" 
   clscommon.LogWrite "Calc Automation Started" 
End Function 
'= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =  
' FUNCTION NAME     : fnCalculate 
' DESCRIPTION       : Function to perform Arithmetic Calculations 
' INPUT PARAMETERS  : operator,Expected_Val 
' OUTPUT PARAMETERS : NIL 
' RETURN VALUE      : Pass or Fail message 
' DATE CREATED      : 30-Dec-2013 
'= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =    
Function fnCalculate(operator,Expected_Val) 
   clscommon.LogWrite "Executing the Function 'fnCalculate' " 

   Window("Calculator").Activate 
    
   If Trim(clscommon.Number1) <> ""  Then
      Window("Calculator").WinButton(clscommon.Number1).Click 
   If Trim(clscommon.Number2) <> ""  Then 
      Window("Calculator").WinButton(clscommon.Number2).Click 
   If Trim(clscommon.Number3) <> ""  Then 
      Window("Calculator").WinButton(clscommon.Number3).Click 

   Window("Calculator").WinButton(operator).Click 
   If Trim(clscommon.Number4) <> ""  Then 
      Window("Calculator").WinButton(clscommon.Number4).Click 
   If Trim(clscommon.Number5) <> ""  Then 
      Window("Calculator").WinButton(clscommon.Number5).Click 
   If Trim(clscommon.Number6) <> ""  Then 
      Window("Calculator").WinButton(clscommon.Number6).Click 

   Window("Calculator").WinButton("=").Click 
   Dim ActualVal : ActualVal  = 
      Window("Calculator").WinEdit("Edit").GetROProperty("text") 
   clscommon.LogWrite "The Actual Value after the Math Operation is "& ActualVal 
  
   If Trim(ActualVal) = Trim(Expected_Val) Then 
      clscommon.WriteResult "Pass",  clscommon.Test_Case_ID , 
         clscommon.tcScenario , " Expected Value matches with Actual Value :: " 
            & ActualVal 
    
   Else 
      clscommon.WriteResult "Fail",  clscommon.Test_Case_ID , 
         clscommon.tcScenario , " Expected Value - " & Expected_Val & " Does NOT matches 
            with Actual Value :: " & ActualVal 
   End If 
    
   Window("Calculator").WinButton("C").Click 
    
   If Err.Number <> 0  Then 
      clscommon.LogWrite  "Execution Error : The Error Number is ::  " & 
         Err.Number & " The Error Description is " & Err.Description 
      Err.Clear 
   End If 
    
   clscommon.LogWrite "Exiting the Function 'fnCalculate' " 
End Function  

'= = = = = = = = = = = = = = = = = = = = = = = = = = = 
' FUNCTION NAME     : fn_Kill_Process 
' DESCRIPTION       : Function to Kill the process by name 
' INPUT PARAMETERS  : Application name to be killed 
' OUTPUT PARAMETERS : NIL 
' RETURN VALUE      : NIL 
' DATE CREATED      : 30-Dec-2013 
'= = = = = = = = = = = = = = = = = = = = = = = = = = =  
Function fn_Kill_Process(process) 
   Dim strComputer ,  strProcessToKill , objWMIService , colProcessstrComputer = "." 
   strProcessToKill = process 
    
   Set objWMIService = GetObject("winmgmts:" _& 
      "{impersonationLevel=impersonate}!\\" _& strComputer & "\root\cimv2") 
    
   Set colProcess = objWMIService.ExecQuery _("Select * from Win32_Process 
      Where Name = '" & strProcessToKill & "'") 
    
   count = 0 
   For Each objProcess in colProcess 
      objProcess.Terminate() 
      count = count + 1 
   Next 
End Function  

'= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =  
' FUNCTION NAME     : fn_End_test 
' DESCRIPTION       : Function to finish the test Execution process 
' INPUT PARAMETERS  : Application name to be killed 
' OUTPUT PARAMETERS : NIL 
' RETURN VALUE      : NIL 
' DATE CREATED      : 20/Dec/2013 
'= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
Function fn_End_test() 
   clscommon.LogWrite "Status Message - Executing the Function 'fn_End_test' " 
    
   Window("Calculator").Close 
   On Error Resume Next 
    
   clscommon.StopTime = Time() 
   clscommon.ElapsedTime = DateDiff("n",clscommon.StartTime,clscommon.StopTime) 
   Dim Totaltests  
   Totaltests = clscommon.gintPassCount+ clscommon.gintFailCount
   clscommon.LogWrite "## # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 
   clscommon.LogWrite "##  The Execution Start Time  ::  " & clscommon.StartTime 
   clscommon.LogWrite "##  The Execution End Time   ::  " & clscommon.StopTime 
   clscommon.LogWrite "##  The Time Elapsed ::   " & clscommon.ElapsedTime & " Minutes " 
   clscommon.LogWrite "##  The OS ::  " & Environment.Value("OS") 
   clscommon.LogWrite "##  The Total No of Test Cases Executed  ::  " & Totaltests 
   clscommon.LogWrite "##  The No. of Test Case Passed ::  " & clscommon.gintPassCount 
   clscommon.LogWrite "##  The No. of Test Case Failed ::  " & clscommon.gintFailCount 
   clscommon.LogWrite "## # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 
   SystemUtil.CloseDescendentProcesses 
End Function  
'  ===============   End of Calculator. Qfl   ============================= '

Çıktıyı bir metin dosyasına yazmamızı sağlayan işlevleri içeren 'common_utils.qfl' olan diğer kitaplık dosyası.

Set clscommon = New OS_clsUtils  

'Creating a class file to handle global variables. 
Class OS_clsUtils 
   Dim StrLogFile 
   Dim StrDateFormatted 
   Dim Result 
    
   Dim  Number1, Number2 , Number3  
   Dim  Number4, Number5 , Number6  
   Dim Test_Case_ID , tcScenario 
   Dim StartTime, StopTime, ElapsedTime 
   
   Dim gintPassCount , gintFailCount , gintWarningCount ,  gintdoneCount,  
      gintinfoCount 
    
   Function Fn_FileCreate(strFileName) 
      Dim objFSO:  Set objFSO = CreateObject("Scripting.FileSystemObject") 
      On Error Resume Next 
      
      Dim objTextFile : Set objTextFile = objFSO.CreateTextFile(strFileName) 
      objTextFile.Close 
       
      Set objTextFile = Nothing 
      Set objFSO = Nothing 
   End Function 
    
   Function LogWrite(sMsg) 
      Const ForAppending = 8 
       
      Dim objFSO : Set objFSO = CreateObject("scripting.FileSystemObject") 
      
      Dim objTextFile : Set objTextFile = objFSO.OpenTextFile 
         (clscommon.StrLogFile, ForAppending, True) 
       
      objTextFile.WriteLine day(date()) & "/" &  MonthName(Month(date()),true) 
         &  "/" & YEAR(date()) & " " & time & ": " & sMsg 
      objTextFile.Close 
       
      Set objTextFile = Nothing 
      Set objFSO = Nothing 
   End Function 
    
   Function WriteResult(strStatus,functionName,functionDescription,Result) 
      Const ForAppending = 8 
      Dim objFSO : Set objFSO = CreateObject("scripting.FileSystemObject") 
      Dim objTextFile : Set objTextFile = objFSO.OpenTextFile 
         (clscommon.StrLogFile, ForAppending, True) 
       
      objTextFile.WriteLine day(date()) & "/" &  MonthName(Month(date()),true) 
         &  "/" & YEAR(date()) & " " & time & ": " & "  
            * * * * * * Test Case Exec Details  * * * * * " 
      
      objTextFile.WriteLine day(date()) & "/" &  MonthName(Month(date()),true) 
         &  "/" & YEAR(date()) & " " & time & ": " & " Test staus :: " & strStatus 
      objTextFile.WriteLine day(date()) & "/" &  MonthName(Month(date()),true) 
         &  "/" & YEAR(date()) & " " & time & ": " & " Tese ID ::  " & functionName 
      objTextFile.WriteLine day(date()) & "/" &  MonthName(Month(date()),true) 
         &  "/" & YEAR(date()) & " " & time & ": " & " Test Description :: " 
            & functionDescription 
      objTextFile.WriteLine day(date()) & "/" &  MonthName(Month(date()),true) 
         &  "/" & YEAR(date()) & " " & time & ": " & " Test Result Details :: " & Result 
      objTextFile.WriteLine day(date()) & "/" &  MonthName(Month(date()),true) 
         &  "/" & YEAR(date()) & " " & time & ": " & "  
            * * * * * * * * * * * * * * * * * * * * * * * *  * * * * * * * * * * * " 
      objTextFile.Close 
       
      Set objTextFile = Nothing  
      Set objFSO = Nothing 
       
      Select Case Lcase(strStatus) 
         Case "pass" 
            gintPassCount = gintPassCount + 1 
          
         Case "fail" 
            gintFailCount = gintFailCount+1 
      End Select 
   End Function 
End Class 
'   =====================   End of common_Utils.qfl =====================

Nesne Deposu

Nesne Deposu, kullanıcının üzerinde işlem yapacağı tüm nesnelere sahiptir. Aşağıda verilen resim, calc.tsr adıyla arşive eklenen tüm nesnelerin listesini gösterir.

Veri tablosu

DataTable, testleri yürüten ve ayrıca QTP'nin nesneler üzerinde hareket edeceği verileri test eden anahtar kelimeleri içerir.

Yürütme Günlüğü

Yürütme günlük dosyası veya çıktı dosyası, kullanıcı eylemlerini ve işlev günlüğünü içerir; bu, test edicilerinin komut dosyası hatalarında hata ayıklamasını sağlar.

8/Jan/2014 5:09:16 PM: ************************************************* 
8/Jan/2014 5:09:16 PM: Calc Automation Started 
8/Jan/2014 5:09:16 PM: === Inside the Test Set  ::   Add  === 
8/Jan/2014 5:09:16 PM: Executing the Function 'fnCalculate'  
8/Jan/2014 5:09:17 PM: The Actual Value after the Math Operation is 949.  
8/Jan/2014 5:09:17 PM:  * * * * * * Test Case Exec Details  * * * * *  
8/Jan/2014 5:09:17 PM: Test staus :: Pass 
8/Jan/2014 5:09:17 PM: Tese ID ::  TC_001 
8/Jan/2014 5:09:17 PM: Test Description :: Add 
8/Jan/2014 5:09:17 PM: Test Result Details ::  Expected Value matches with Actual 
   Value :: 949.  
8/Jan/2014 5:09:17 PM: * * * * * * * * * * * * * * * * * * * * * * * *  * * 
* * * * * * * * * 
  
8/Jan/2014 5:09:17 PM: Exiting the Function 'fnCalculate'  
8/Jan/2014 5:09:17 PM: === Inside the Test Set  ::   Subtract  === 
8/Jan/2014 5:09:17 PM: Executing the Function 'fnCalculate'  
8/Jan/2014 5:09:17 PM: The Actual Value after the Math Operation is 415.  
8/Jan/2014 5:09:17 PM: * * * * * * Test Case Exec Details  * * * * *  
8/Jan/2014 5:09:17 PM: Test staus :: Pass 
8/Jan/2014 5:09:17 PM: Tese ID ::  TC_002 
8/Jan/2014 5:09:17 PM: Test Description :: Subtract 
8/Jan/2014 5:09:17 PM: Test Result Details ::  Expected Value matches with Actual 
   Value :: 415.  
8/Jan/2014 5:09:17 PM: * * * * * * * * * * * * * * * * * * * * * * * *  * * * 
* * * * * * * *

8/Jan/2014 5:09:17 PM: Exiting the Function 'fnCalculate'  
8/Jan/2014 5:09:17 PM: === Inside the Test Set  ::   Multiply  === 
8/Jan/2014 5:09:17 PM: Executing the Function 'fnCalculate'  
8/Jan/2014 5:09:18 PM: The Actual Value after the Math Operation is 278883.  
8/Jan/2014 5:09:18 PM: * * * * * * Test Case Exec Details  * * * * *  
8/Jan/2014 5:09:18 PM: Test staus :: Pass 
8/Jan/2014 5:09:18 PM: Tese ID ::  TC_003 
8/Jan/2014 5:09:18 PM: Test Description :: Multiply 
8/Jan/2014 5:09:18 PM:  Test Result Details ::  Expected Value matches with 
   Actual Value :: 278883.  
8/Jan/2014 5:09:18 PM: * * * * * * * * * * * * * * * * * * * * * * * *  * * * 
* * * * * * * *   

8/Jan/2014 5:09:18 PM: Exiting the Function 'fnCalculate'  
8/Jan/2014 5:09:18 PM: === Inside the Test Set  ::   Divide  === 
8/Jan/2014 5:09:18 PM: Executing the Function 'fnCalculate'  
8/Jan/2014 5:09:19 PM: The Actual Value after the Math Operation is 3.  
8/Jan/2014 5:09:19 PM: * * * * * * Test Case Exec Details  * * * * *  
8/Jan/2014 5:09:19 PM: Test staus :: Pass 
8/Jan/2014 5:09:19 PM: Tese ID ::  TC_004 
8/Jan/2014 5:09:19 PM: Test Description :: Divide 
8/Jan/2014 5:09:19 PM: Test Result Details ::  Expected Value matches with Actual 
   Value :: 3.  
8/Jan/2014 5:09:19 PM: * * * * * * * * * * * * * * * * * * * * * * * *  * * * 
* * * * * * * * 
  
8/Jan/2014 5:09:19 PM: Exiting the Function 'fnCalculate'  
8/Jan/2014 5:09:19 PM: === Inside the Test Set  ::   Sqrt  === 
8/Jan/2014 5:09:19 PM: Executing the Function 'fnCalculate'  
8/Jan/2014 5:09:20 PM: The Actual Value after the Math Operation is 10.  
8/Jan/2014 5:09:20 PM: * * * * * * Test Case Exec Details  * * * * *  
8/Jan/2014 5:09:20 PM: Test staus :: Pass 
8/Jan/2014 5:09:20 PM: Tese ID ::  TC_005 
8/Jan/2014 5:09:20 PM: Test Description :: Sqrt 
8/Jan/2014 5:09:20 PM: Test Result Details ::  Expected Value matches with Actual 
   Value :: 10.  
8/Jan/2014 5:09:20 PM: * * * * * * * * * * * * * * * * * * * * * * * *  * * * * 
* * * * * * * 

8/Jan/2014 5:09:20 PM: Exiting the Function 'fnCalculate'  
8/Jan/2014 5:09:20 PM: Status Message - Executing the Function 'fn_Finish_test'  
8/Jan/2014 5:09:20 PM: ## # # # # # # # # # # # # # # # # # # # # # # # # # 
# # # # # #  
8/Jan/2014 5:09:20 PM: ##  The Execution Start Time  ::  5:09:14 PM 
8/Jan/2014 5:09:20 PM: ##  The Execution End Time   ::  5:09:20 PM 
8/Jan/2014 5:09:20 PM: ##  The Time Elapsed ::   0 Minutes  
8/Jan/2014 5:09:20 PM: ##  The OS ::  Microsoft Windows Vista Server 
8/Jan/2014 5:09:20 PM: ##  The Total No of Test Cases Executed  ::  25 
8/Jan/2014 5:09:20 PM: ##  The No. of Test Case Passed ::  25 
8/Jan/2014 5:09:20 PM: ##  The No. of Test Case Failed ::   
8/Jan/2014 5:09:20 PM: ## # # # # # # # # # # # # # # # # # # # # # # # # # 
# # # # # #