English 中文(简体)
QTP - Quick Guide
  • 时间:2024-03-22 11:34:28

QTP - Quick Guide


Previous Page Next Page  

QTP - Introduction

QTP为QuicktestProfessional, aproduct of Hewlett Packard(HP)。 这一工具帮助测试者在完成设计工作后,在没有监测的情况下,顺利进行自动功能测试。

HP QTP使用Visual Basic textsing (VBgust)使申请自动化。 无需完全安装成像发动机,因为它作为WindowsOS的一部分提供。 目前版本的VB是5.8,作为7国集团的一部分。 VB 文本是NOT一种面向物体的语言,但是一种基于物体的语言。

Testing Tools

可从软件测试的角度确定工具是一种产品,用以支持从规划、要求、建立建筑、试验执行、有缺陷的伐木和测试分析等一个或多个试验活动。

Classification of Tools

工具可以按几个参数分类。 包括:

    The purpose of the tool

    The activities that are supported within the tool

    The type/level of testing it supports.

    The kind of pcensing (open source, freeware, commercial)

    The technology used

Types of Tools

Sr.No. Tool Type Used for Used by
1 Test Management Tool Test Managing, schedupng, defect logging, tracking and analysis. Testers
2 Configuration management tool For Implementation, execution, tracking changes All Team members
3 Static Analysis Tools Static Testing Developers
4 Test data Preperation Tools Analysis and Design, Test data generation Testers
5 Test Execution Tools Implementation, Execution Testers
6 Test Comparators Comparing expected and actual results All Team members
7 Coverage measurement tools Provides structural coverage Developers
8 Performance Testing tools Monitoring the performance, response time Testers
9 Project planning and Tracking Tools For Planning Project Managers
10 Incident Management Tools For managing the tests Testers

Where QTP Fits in?

质量保证方案是一种功能测试工具,最适合对申请进行回归测试。 QTP是惠普拥有的特许/商业工具,是市场上最受欢迎的工具之一。 比较实际结果和预期结果,并在执行摘要中报告结果。

QTP – History and Evolution

惠普快速测试专业最初由汞互动拥有,由惠普收购。 其原始名称是Astra快速启动方案,后来称为“快速试验专业”,但最新版本称为“统一功能测试器”。

Version History

现在,让我们看一下QTP的历史。

Versions Timepnes
Astra Quick Test v1.0 to v5.5 - Mercury Interactive May 1998 to Aug 2001
QuickTest Professional v6.5 to v9.0 - Mercury Interactive Sep 2003 to Apr 2006
Hp-QuickTest Professional v9.1 to v11.0 - Acquired and Released by HP Feb 2007 to Sep 2010
Hp-Unified Functional Testing v11.5 to v11.53 2012 to Nov 2013

Advantages

    使用VB文本进行自动化测试不需要高技能的密码,而与其他面向目标的方案拟定语言相比,比较容易。

    便于使用、方便导航、结果验证和报告生成。

    阅读与测试管理工具(Hp-Quapty Center)相结合,便于安排和监测。

    也可用于移动应用测试。

    由于其是惠普产品,住房和财产管理局及其论坛为解决技术问题提供了全力支持。

Disadvantages

    与Selenium不同的是,QTP只在Windows操作系统中运作。

    并非所有版本的浏览器都得到支持,测试者需要等到每次主要版本的发送时间。

    尽管如此,它是一种商业工具,许可证费用很高。

    尽管说明时间较少,但执行时间相对较高,因为它把负荷放在了万国邮联和安卡拉。

QTP - Automated Testing Process

对于任何自动工具的实施,以下是其阶段/阶段。 每个阶段都与特定活动相对应,每个阶段都有明确的结果。

Automated Testing Process

    试办可行性分析——第一步是检查申请是否可以自动化。 由于限制,并非所有应用程序都可以自动化。

    下一个最重要的步骤是选择工具。 它取决于应用的技术、其特点和使用。

    利用适当的框架——在选择这一工具时,下一个活动是选择适当的框架。 有各种框架,每个框架都有其意义。 我们将在本理论中详细论述框架。

    Build Proof of Concept - Proof of Concept (POC) is developed with an end-end Options to evaluation where the tool can support the auto of the apppcation. 采用终端到终端的设想,确保主要功能能够自动化。

    Develop自动化框架——在建立POC之后,框架开发得以实施,这是任何测试自动化项目取得成功的关键步骤。 框架应在认真分析应用所使用的技术及其关键特征之后建立。

    。 文字发展一旦完成,文字就会执行,结果就会分析,如果存在缺陷,就会有缺陷。 测试文本通常控制着。

QTP - Environment SetUp

QTP是一种商业工具,可直接从HP网站下载试验版本。 只有目前版本,即统一功能测试(11.5x)可以下载。 下面是可下载审判版本的URL。

下载的URL——

Installation Procedure

Step 1-Cpcks “repminarys and Demos”Link and selected “HP Unification Functional Test 11.50 CC EngpshSW E-Media Evaluation”,如下所示:

Download and Install Step 1

Step 2——在选择“HP Untegrated Functional Test 11.50”后,下载线索开。 个人详情和下点击。

Download and Install Step 2

Download and Install Step 3

<41>Step 4-下载窗口开放。 现在点击“Download”纽吨。

Download and Install Step 4

下载的档案将采用格式(RAR)。 现在,你们需要整理档案,文件夹的内容将如下文所示,并落实文件集。

Download and Install Step 5

Step 6 - Upon Executing the Setup file,以便在以下清单中选用“统一功能测试”。

Download and Install Step 6

然后点击继续。

Download and Install Step 7

在《海关章程》中,选择了您自动化所需的原始产品,即,你应根据测试应用的技术选择原始产品。 例如,如果你的申请是基于的话。 然后,你应确保你选择网络。

Download and Install Step 8

Step 9——在选择安装所需的花样后,下点击。 安装完毕后,你将与菲尼斯纽顿·温托结束。

Download and Install Step 10

一旦您完成安装工作,“额外安装要求” 方言箱打开。 选择“Run License Construction Wizard”和点击“RUN”以外的一切。 我们需要NOT选择“Run License Construction Wizard”,因为我们正在安装试验版本,而试验版本在违约后发放了30天的许可证。

Download and Install Step 11

Step 11 − After the completion of Additional Installation Requirements, a tick mark is shown, which in turn states that the components are installed successfully. Now, cpck Close.

Download and Install Step 12

Launching UFT and Add ins Page

Step 1——安装后,可如图所示,从“起点”开始申请。

Download and Install Step 13

执照页上。 当我们安装了试验许可证时,你可以点击。

Download and Install Step 14

添加-插入方言箱为用户选择所需添加物打开了大门。

不仅装上所有添加物,而且只装上所需添加物和点击K。

Download and Install Step 15

Step 4——在装上所需添加物后,UFT11.5工具向用户开放,UFT线一线照亮如下:

Download and Install Step 16

QTP - Record and Playback

记录测试相当于记录在测试中应用的用户行动,以便公平贸易联盟自动生成可击退的文字。 记录和游击可以给我们第一个印象,即如果最初的环境正确的话,它是否能够支持技术。

记录和游击措施如下:

Step 1——从起首页起的“新”测试,如下所示:

New Test Selection from Home Page

Step 2-Cpcking “New”Link, a new testdow opens and theuser needs to selected the test category. 选择性的“GUI测试”为测试提供了名称,并提供了需要加以挽救的地点。

Select Type of Test

新的测试一旦建立,新的测试屏幕就会打开,如下所示。 现在,点击了“行动1”表格,该表是用1项行动意外产生的。

New Test Page

Step 4-Cpck the “Record” Menu and selected “Record and Ronines”如下:

Record and Run Settings

纪录片和Runines dialog盒打开,根据申请类型,可以选择网络、 Java或Windows应用程序。 例例,我们将记录网上申请(http://easycalculation.com/)。

Record and Run Settings

https://www.easycalculation.com/。 视情况而定。 Cpck the “Numbers”pnk under "Algebra”, and key in a number and atqueste. 在行动完成后,在记录小组中点击“Stop”纽芬兰语。 您将注意到文字的生成情况如下:

Generated Script

——现在通过点击 play子击打脚印。 演示了文字的再演和结果。

Playback the Script

结果窗口因违约而打开,准确显示处决、通行和失败步骤的时间。

 Results Window Analysis

Significance of Record and Playback

    该系统被用作初步调查方法,用以核实UFT是否能够支持技术/应用。

    用于测试不需要长期维护的申请或特征的基本功能。

    它可以用于记录改变用途运动和关键投入。

Modes of Recording

    这是一种缺省记录方式,记录物体和根据试验申请进行的操作。

    这不仅记录关键板操作,而且记录与屏幕或应用窗口有关的运动。

    这记录物体的精确坐标,独立于美国航天局是否承认该物体或NOT的事实。 它只是记录协调者,因此NOT记录着 mo变运动。

    Insight Recordsing——UFT记录业务,依据是表面的,而不是基于其本土特性。

How to Choose Recording Modes

在点击记录台后,一旦录音开始,用户可以从屏幕上显示的录音带中选择录音方式。 可以从上文讨论过的任何一种选择中作出选择。

Choosing Recording Modes

你们会看到,以下情景在所有模式中都有记录,在各种情况下也记录了同样的行动。

    Launch IE - https://www.easycalculation.com/

    Cpck "Numbers" under "Algebra"

    Cpck "Square Root" pnk

    Enter a value to calculate the square root. Let us say 10

    Hit Calculate

在Default、Analog和低级别记录方式下记录的文字如下:

  DEFAULT RECORDING MODE 
Browser("Free Onpne Math Calculator").Page("Free Onpne Math 
Calculator").Link("Numbers").Cpck 

Browser("Free Onpne Math Calculator").Page("Numbers Calculator - 
Math").Link("Square Root").Cpck 

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

Browser("Free Onpne Math Calculator").Page("Square Root 
Calculator").WebButton("calculate").Cpck 

  ANALOG RECORDING MODE 
Desktop.RunAnalog "Track1" 

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

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

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

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

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

使用见证人记录方式的记录如下:

Insight Recording Modes

QTP - Object Repository

Object Repository

保存物体是一套物品和财产,QTP能够识别物体并就其采取行动。 当用户记录测试时,物体及其特性被缺席捕获。 如果不了解物体及其特性,QTP就能够击退文字。

围绕以下每个专题进行点击,以更多地了解保留的目的及其相关特征。

Sr.No. Topic & Description
1 Object Spy and its Features

了解物体间及其相关功能的使用。

2 Working with Object Repository

添加、编辑、删除来自保留地及其相关功能的物体。

3 Types of Object Repository

4. 处理共同的目标和地方目标保存人及其在描述方面的背景。

4 User-defined Objects

处理使用用户定义物体的情况。

5 Object Repository in XML

交易将OR s转换成XML,并将物体保存作为XML。

6 Comparing and Merging OR

比较OR , Merge OR 等业务可有效地与保留地合作。

7 Ordinal Identifiers

使用普通标识及其优点的情况。

8 Child Objects

2. 利用儿童物体作有效描述

QTP - Actions

行动有助于测试者将文字分成几组QTP发言。 行动与《维也纳宣言和行动纲领》中的职能相似,但有一些差异。 否则,QTP会以一种行动进行测试。

Actions Functions
Action is an in-built feature of QTP. VBScript Functions are supported by both VBScript and QTP.
Actions parameters are passed by value only. Function parameters are passed either by by value or by ref.
Actions have extension .mts Functions are saved as .vbs or .qfl
Actions may or may not be reusable. Functions are always reusable.

可以通过在《古典》编辑窗口上点击和选择“Properties”来获取行动的性质。

Action Properties

行动性质包含以下信息:

    Action Name

    Location

    Reusable Flag

    Input Parameters

    Output Parameters

Types of Actions

有三类行动:

    只有在设计了具体试验时,才能要求采取行动,而且只能一次。

    一项行动可以称为多次行动,它所居住的任何试验,也可以用于任何其他试验。

    这是一种可再利用的行动,储存在另一项试验中。 外部行动只读到电话测试中,但可以在当地使用数据表信息的可靠版本,用于外部行动。

Working with Actions

添加行动有三种选择。 每一名了解选定行动类型的人的浮标。

Sr.No. Action Type & Description
1 Insert Call to New Action

加入现有行动的新行动

2 Insert Call to Copy of Action

插入现有行动的副本

3 Insert Call to Existing Action

插入呼吁采取现有可再利用的行动

QTP - Datatables

类似于Microsoft Excel的数据可帮助测试者制造数据驱动的测试案例,可以多次用于操作行动。 有两个类型的数据表:

    当地数据表——每项行动都有自己的私人数据表,也称为当地数据表,也可通过行动查阅。

    全球数据表——每项测试都有一份全球数据表,可在各种行动中查阅。

如下表所示,可从QTP的“数据”塔获取数据表:

Data Table in QTP

为了对某些特定数量的频率进行测试,可以确定试验环境中全球数据表的炉 the,如以下所示,可使用文件---------(Tab)查阅。

Data Table in QTP

Example

例如,如果用户想要将http://easycalculation.com/。 http://easycalculation.com/compound- interest.php。 参数如下所示。 Excel的大多数功能也可在数据表中使用。

Data Table in QTP

DataTable Operations

有三类物体可查取数据。 可通过下列途径来理解可数据的行动:

Sr.No. Object Type & Description
1 Data Table Methods

Gives详细介绍了数据表方法。

2 DTParameter Object Methods

Gives详细介绍了DTPara计法。

3 DTSheet Object Methods

Gives详细介绍了DTSheet方法。

QTP - CheckPoints

如名称所示,核对点是指将特定财产或物体现状的现值与预期价值进行比较的验证点,可在文字的任何时间插入。

Types of Checkpoints

Sr.No. Type & Description
1

验证所有附加环境所试验和支持的物体的财产价值。

2

鉴定你申请的一个领域,作为衡量标准

3

在动态生成或存取的文档中,如txt,pdf

4

在一个表中核实信息。 并非所有环境都得到支持。

5

根据具体标准,核实在视窗应用中某个特定领域展示的案文。

6

如果根据具体标准在视窗应用中确定的一个区域内展示文字,则予以验证。

7

核实网页并报告可能不符合万维网联合会(W3C)网站内容无障碍准则的网址领域

8

核实网页的特征。 它还可以检查破碎的链接。

9

核实通过测试申请获得的数据库内容。

10

将xml文件或xml文件的内容列入网页和框架。

Inserting CheckPoint

当用户想要插入检查站时,必须确保大多数检查站只在录音期间得到支持。 一旦用户停止记录,检查站就没有能力。

下面是检查站的菜单,用户是NOT,以记录方式使用。

Check Point Menu when Recording NOT in Progress

下面是检查站菜单,当用户在记录时。

Check Point Menu when Recording is in Progress

Example

添加检查站,供在试验中应用:“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

Viewing Checkpoint Properties

在插入试师想要改变价值的情况下,我们可以通过正确点击文字的中词检查站,并去“查点财产”——如下所示——来这样做。

Check point properties.

如下文所示,你也可在物体存放处找到同样的检查站。 它确切地表明使用了哪类检查站,什么是预期的价值观,什么是过时的价值观。

Check point properties.

QTP - Synchronization

同步点是正在测试的工具与应用之间的时间接口。 同步点是说明试卷两个步骤之间的延迟时间的一个特点。

例如,点击链接可能装载1页,有时是5秒钟,甚至可能装满10秒钟。 它取决于各种因素,如应用服务者的反应时间、网络带宽和客户系统的能力。

如果时间不同,除非测试者明智地处理这些时间差异,否则文字就会失败。

Ways to Insert Sync Point

    WaitProperty

    Exist

    Wait

    Sync(only for web based apps)

    Inserting QTP Inbuilt Synchronization points.

让我们说,我们需要在点击“数字”链接和点击“简单利益”计算器“www.easycalculation.com之间插入一个辛迪加点。 我们现在将研究为上述设想增加综合点的所有五种方法。

Method 1 − WaitProperty

WaitProperty是一种将财产名称、价值和时间分配值作为投入来进行合成的方法。 这是一个充满活力的等待,因此鼓励这一选择。

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

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

Method 2 − Exist

这种方法将时间分配值作为投入,以进行总结。 同样,这是一个充满活力的等待,因此鼓励这一选择。

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

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

Else
   Print "Link NOT Available"
End IF

Method 3 − Wait

瓦伊特是一个硬编码的辛迪加点,与事件发生无关。 因此,瓦伊特的使用受到抑制,可以用来缩短等候时间,如1或2秒。

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

Method 4 − Sync Method

结 论 只有在网页负荷之间始终存在差距的情况下,才能使用方法。

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

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

Method 5 − Inserting QTP Inbuilt Synchronization points

。 如果使用者是NOT在记录方式上的记录,这一选择就会残疾。

Go to “Design” ——“Synchronization Point”。

我们需要选择这个目标,我们希望它成为“协同点”。 在选定标的后,标的窗口打开如下:

QTP Sync Point

。 选择财产、价值和时间价值,点击科索沃,如下所示:

QTP Sync Point

如下文所示,这本书将与我们已经讨论过的WaitProperty(Method 1)的文字相同。

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

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

Default Synchronization

当用户没有使用上述任何合成方法时,QTP仍有内在的同步目标时间,可由用户加以调整。

“File” >>“Settings” >>Run Tab >> 如下所示时间。

Default Synchronization Time Out

QTP - Smart Identification

有时,QTP无法找到任何与公认的物体描述相符的物体,或找到一个以上符合描述的物体,然后QTP忽视了公认的描述,并利用智能识别机制承认该物体。

QTP 智能识别使用两种特性:

    。 特定试验物体类别的基本特性,如果不改变原物体的本质,其价值就不能改变。

    Optional Filter Property——其他财产也协助确定某一类物品,这些物品的财产不可能经常改变,如果不再适用,则可能被忽视。

Enabpng Smart Identification for an Object

Step 1-Navgate to "Tools”->Object identification. 辨识方言

Step 2——选择环境、目标类别和选择“最佳识别”如下:

Smart Identification Configuration

Smart Identification Configuration

<4>Step 4——除违约外,在基地房地产中增加财产,并增加/搬走任择财产。 请注意,同一财产不能成为强制性和辅助性财产的一部分,也不能点击“科索沃”。

Smart Identification Configuration

Step 5——如果在保留地添加这类物体后能够识别智能。 聪明身份被安排到西非经货联盟。 如果我们不想让聪明身份识别成为可能,我们也可以把它变成“法尔”。

Smart Identification Configuration

我们甚至可以通过在“File” Menu的“解决方案”下采用测试文字来降低测试水平。

Smart Identification Configuration

如果“聪明身份”按照第六步残疾,则在文字执行期间不会对任何物体适用智能识别。

如果将目标添加到“聪明身份”中,那么“QTP”将不再利用“聪明身份识别”来确认未来,尽管我们后来才得以确认。

QTP - Debugging

在自动化测试背景下进行分解是一个系统的过程,可以发现和确定自动化文字中的编码问题,从而使文字更加有力,能够发现应用中的缺陷。

利用QTP中的破碎点进行偷窃的方式多种多样。 仅通过紧急“F9”或采用Mendu方案“Run”-“Inserting/Removing Break Point”插入细分点。

在插入“突破点”后,“有色人种”和“线”将在RED中强调,如下所示:

Debugging using Break Point

Method ShortCut Description
Step Into F11 Used to execute each and every Step. Steps into the Function/Action and executes pne by pne. It pauses on each pne after execution.
Step Over F10 Used to Step over the Function. Step Over runs only the current step in the active document.
Step Out Shift+F11 After Step Into the function, you can use the Step Out command. Step Out continues the run to the end of the function and then pauses the run session at the next pne.

Options in Break Point

可通过Run Menu通过纳维格途径进入“突破点”的各种选择。

Sr.No. ShortCut & Description
1

插入/删除裂痕

2

Ctrl+F9

英文/法文

3

Ctrl+Shift+F9

清除所有裂痕

4

出入

Debugging Pane

The following are the panes in the debuggingdow -

Debugging using Break Point

    这张塔图显示了印刷说明的所有产出。

    这张塔图显示了因表达而产生的诱杀产出。

    该表显示了当地变量的输出。

Example

观察潘内显示产出表述如下:

Debugging using Break Point

当地变量 缩略语显示了以下地方变量的数值:

Debugging using Break Point

QTP - Error Handpng

在QTP中存在各种处理错误的方法。 有三种可能的错误,一种是会碰到的,同时与QTP合作。 他们:

    Syntax Errors

    Logical Errors

    Run Time Errors

Error Types

Syntax Errors

先天错误是字体或法典的一部分,没有用文法确认。 在编纂法典时发生先天错误,在错误确定之前不能执行。

为了核实yn子,使用主要短机Ctrl+F7,其结果如下所示。 如果窗口没有展示,则可以浏览“意见”——“错误”。

Error Handpng

Logical Errors

如果该书的正文正确无误,但产生出意料的结果,则该书称为逻辑错误。 逻辑错误通常不会中断执行,而是产生不正确的结果。 逻辑错误可能是由于各种原因、错误的假设或对要求的误解,有时是不正确的方案逻辑(使用实际上而不是“不使用”)或“无限选择”。

查明一个逻辑错误的方法之一是进行同行审查,并核实质量保证方案的产出档案/文件,以确保该工具能够采用应有的方式。

RunTime Errors

如姓名所示,这种错误发生在鲁普时代。 造成这种错误的原因是,试图做事的文字无法做,而且文字通常会停止,因为它无法继续执行。 1. 时代错误的典型例子——

    File NOT found but the script trying to read the file

    Object NOT found but the script is trying to act on that particular object

    Dividing a number by Zero

    Array Index out of bounds while accessing array elements

Handpng Run-Time Errors

处理法典中的错误有多种方法。

1. 采用测试环境 • 远距离处理可定义为“File”和“File”;>“Settings”和“Run”塔,如下所示。 我们可以选择任何特定环境,点击“科索沃”。

Error Handpng

2. 采用/> “关于Error”的说法被用来通知VB文本发动机打算由测试人处理操作错误,而不是允许VB文本发动机显示不方便用户的错误信息。

    这有助于测试者改变错误处理。

3. 采用Err Object-Error Object is an in-built Object within VB Alan, 抓住了可轻易推卸该守则的错误编号和错误描述。

    Err.Number- 该数字归还财产或设定一个数字价值,具体说明错误。 如果净值为0,则没有发生任何错误。

    。 描述财产收益或简单描述错误。

    Err.Clear- 明确的方法推翻了错误,并明确了与错误相关的以往所有价值观。

Example

 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 handpng  
   On Error Goto 0 
End function 

4. 采用Exit 声明——可使用Exit 声明,同时根据Err.Number数值,反对退出试验或行动或变造。 让我们详细看到其中每一个发言。

    从整个QTP测试来看,不管操作时间的循环环境是什么。

    不包括目前的行动。

    不包括目前的行动。

    取消目前对QTP测试的重复,并着手进行下一次的循环。

5. 恢复情景——在遇到错误时,根据某些条件启动恢复情景,并在单独一章中详细论述。

6. Reporter Object - Reporter Object help we to report an activity to thepr results. 它有助于我们确定有关行动/步骤是否通过/失败。

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

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

QTP - Recovery Scenarios

Recovery Scenarios

在执行QTP文字时,我们可能会出现一些意外错误。 为了恢复测试,并继续从这些意外错误中执行其余文字,采用了“恢复情景”。 纳维格特人可以访问“资源”—— 恢复情景管理员,如下所示:

Recovery Scenario Manager Access

Steps to Create Recovery Scenario

Step 1-Cpck “New”recovery Scenario button;《复原情景》开放如下:

Recovery Scenario Manager - Access

。 这与以下四个事件可能发生的情况相对应:

    Pop-Up Window

    Object State

    Test Run Error

    Apppcation Crash

。 恢复行动可以开展以下任何行动:

Recovery Scenario Manager Access

Step 4——在具体说明适当的恢复行动之后,我们需要具体说明如下所示的灾后恢复行动。

Recovery Scenario Manager Access

Step 5——在具体说明“灾后恢复行动”之后,应将恢复情景命名并在测试中添加,以便能够启动。

Recovery Scenario Manager Access

《恢复设想》的制定已经完成,需要绘制到目前的地图。 检查“对当前试验的预测”和点击“Finish”的选项。

Recovery Scenario Manager Access

Step 7——“附加恢复情景”如下所示,并点击“Close” Button的继续。

Recovery Scenario Manager Access

Step 8——在点击了近海纽尔之后,QTP将促使用户挽救已创造的恢复情景。 延期后将节省费用,而遗嘱将结束。

Recovery Scenario Manager Access

Verification

“创造的恢复情景”应当成为目前测试的一部分,可以通过“File”——“Settings”——“Recovery”T号核实。

Recovery Scenario Manager Access

QTP - Environment Variables

质量保证方案的环境变量是特殊类型的变量,所有行动、功能图书馆和复原情景都可以查阅。 视窗有内部设计的环境变量,所有应用都可用于这一特定系统,但仅在运行期间,该特定测试说明才能获得QTP环境变量。

Types of Environment Variables

Built-in Environment Variables - 提供一系列环境参数,提供测试名称、行动名称、测试途径、当地东道名称、操作系统名称、类型及其版本等信息。 可通过浏览“File”——“试验环境”——“环境”T。

Build-in Environment Variables

User下定义的内部——用户定义的变量可以通过在环境塔温德选择“User下定义”。 点击了“和加;”纽克,以输入参数名称和价值如下:

User Defined Internal Environment Variables

User Defined Externaluser - Defined Variables can be Deposit in an external file as a .xml file and can beloaded into the test as reflected in the amount given below. 如下文所述,也可以在运行期间灵活地装载。

User Defined Internal Environment Variables

Environment Variables – Supported Methods

1. ExternalFileName Property - Returns the name of theloaded external environment changing file specified in the Environment tab of the Test Cons dialog . 如果没有外部环境变数文档,该财产就留下空洞。

x = Environment.ExternalFileName 
print x

User Defined Internal Environment Variables

2. LoadFromFilemeth - Loads the specified environment changing file (xml) Dynamically during operation time. 在使用这一方法时,环境变量无需人工添加到环境图中。

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

User Defined Internal Environment Variables

3. 价值财产——收回环境变量的价值。 我们还可以利用这一财产确定用户界定的内部环境变量的价值。

  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
User Defined Internal Environment Variables

QTP - Library Files

为了对文字进行模块化,将图书馆档案列入QTP的文字。 它包含不同的声明、功能、类别等。 它们使可重新使用性能够在测试文字中共享。 节省费用时,可加减。

可以通过浏览“File”和“功能图书馆”创建新的图书馆档案。

Associating Function Libraries

<Method 1 - by using “File” >“Settings” > Resources > Associate Function Library Options. 浏览“&plus;”纽芬兰语添加功能图书馆档案,并使用下文所示的实际途径或相对途径添加这一档案:

Associating Library File

Method 2 - Using ExecuteFile methods.

 Syntax : ExecuteFile(Filepath)
ExecuteFile "C:pb1.vbs" 
ExecuteFile "C:pb2.vbs" 

Method 3- Using LoadFunction 图书馆方法。

 Syntax : LoadFunctionLibrary(Filepath)
LoadFunctionLibrary "C:pb1.vbs" 
LoadFunctionLibrary "C:pb2.vbs" 

Method 4——自动化目标模型(AOM)——是一种机制,我们可以通过这一机制控制QTP以外的各种QTP业务。 利用AOM,我们可以发射QTP、开放试验、联系功能图书馆等。 下面的《万象》应当用延长时间予以拯救,并在执行时,将启动并试验开始执行。 以后各章将详细讨论OMA。

 Launch QTP
Set objQTP = CreateObject("QuickTest.Apppcation")
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:pb1.vbs") = -1 Then 
  objLib.Add "C:pb1.vbs", 1 
End

QTP - Automated Testing Results

Test Results

测试结果窗口为我们提供了充分的信息,以显示已经采取的步骤、失败等等。 成果窗口在试验执行后自动开放(根据违约情况)。 展示了以下信息:

    Steps Passed

    Steps Failed

    Environment Parameters

    Graphical Statistics

Test Results

Operations performed in Test Results

Converting Results to HTML

在“结果观察家”窗口,“File”——“Export to file”。 出口实绩方言箱打开如下:

Test Results

我们可以选择出口哪类报告。 这可能是短结果、详细的结果,甚至我们可以选择节点。 在选择档案名称和出口后,档案被保存。 传真

Filtering the Results

成果可根据状况、新类型和变异进行过滤。 可以通过在“试验结果窗口”中使用“芬顿”来获取。

Test Results

Raising Defects

缺陷可直接从“测试结果窗口”中渗入QC,可进入“Tools”-“Add Defect”这一开放与“LM”连接的“Tools”-

Test Results

Test Results

自动测试结果窗口可在“工具包”——“备选办法”——“会议”下配置。 如果需要,我们就能够转而使用离岸价格,我们也能够在“会议结束时取得实际出口结果”。

Test Results

屏幕或电影可根据具体情况记录。 也可在“工具包”——“选择”——“Screen Capture”下进行配置。 我们可以根据以下三个条件,拯救屏幕或电影:

    For Errors

    Always

    For Errors and Warnings

Test Results

QTP - Working with GUI Objects

在文字执行期间,有多种德国马克目标,与该目标互动。 因此,必须了解关键全球倡议目标的基本方法,我们将能够有效地加以利用。

Working with Text Box

下面是我们在鲁普时代使用的文本箱的方法:

    帮助测试者将价值纳入案文方框

    Cpck-Cpcks on the text Box

    SetSecure-用于安定地在密码箱中确定案文

    WaitProperty-Waits Till成为不动产价值的真实情况

    Exist - 核对文本框

    GetROProperty(“text”)——《文本框》的价值

    GetROProperty(“Visible”)——如果明显可见,回归者的价值就会增加。

Example

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

 Cpcks on the Text Box
Obj.Cpck

 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 - Visibppty - Returns Boolean Value
x = Obj.GetROProperty("visible")
print x

Working with Check Box

下面是一些关键方法,可以与检查箱合作。

    帮助测试者确定“ON”或“OFF”检查箱的价值

    Cpck-Cpcks on theeck Box. 甚至对外国资产或外国资产进行制衡,但用户不会确信情况如何。

    WaitProperty-Waits Till成为不动产价值的真实情况

    Exist——检查箱是否存在

    GetROProperty(名称) 核对箱名称

    GetROProperty(“Visible”)——如果明显可见,回归者的价值就会增加。

Example

 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

Working with Radio Button

以下是与布顿电台合作的一些关键方法:

    Select(RadioButtonName>- 帮助测试者制作“本国”电台插文

    Cpck-Cpcks on the Radio Button. 甚至Button ON电台或外国广播公司,但测试者不能获得地位。

    WaitProperty-Waits Till成为不动产价值的真实情况

    GetROProperty(名称) 掌握布顿电台的名称

    GetROProperty(“Visible”)——如果明显可见,回归者的价值就会增加。

Example

 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

Working with Combo Box

以下是与Combo Box(Combo Box)合作的主要方法。

    Select(Value) 帮助测试员从ComboBox中选择价值

    Cpck——物体上的浮标

    WaitProperty-Waits Till成为不动产价值的真实情况

    Exist——Combo Box 存在的支票

    GetROProperty(“Text”)——Combo Box的选定价值

    GetROProperty(所有物项”)- 归还 com博箱中的所有物品

    GetROProperty(“items=1”)- com博箱中的物品数目

Example

 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

Working with Buttons

以下是与布顿斯合作的一些关键方法:

    Cpck - Cpcks on the Button

    WaitProperty-Waits Till成为不动产价值的真实情况

    Exist——《布顿报》存在情况检查

    GetROProperty(“Name”) 掌握布顿的名称

    GetROProperty (“Disabled”)——如果能够/可处理,回归会带来一种诱变价值

Example

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

 To Perform a Middle Cpck on the Button
obj_Button.MiddleCpck

 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

Working with webTables

如今,网络应用已成为非常常见的,测试者需要了解网络应用如何运作以及如何在网上采取行动。 这一议题将有助于你有效地与网上用户合作。

Sr.No. Statement & Description
1

发言if包括泛加勒比的表述,然后是一次或多次发言。

2

如果其他则发言包括一比一式发言,然后发言一次或多次。 如果情况是真实的。 发言全文见if。 如果情况是假的。

3

if.elseif...else statement

如果发言之后有一份或多份Elseif声明,其中含有大毛主义表述,随后是一份可选择的号声明,该声明在所有条件变成假时执行。

4

发言

∗∗∗∗ 在另一个网站ifelseif 说明。

5

switch statement

switch声明》允许对平等宣传者测试一个价值清单。

    html id——如果表格有贴标签,则最好利用这一财产。

    innerText - Heading of the table.

    Index-Fetches the Source Index of the table

    2. 具体罗列的儿童疾病数量

    表中罗人的人数

    表2 哥伦斯群岛的数量

    根据一栏和罗指数确定单元的价值

Example

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

QTP - Virtual Objects

What are Virtual Objects?

有时,正在测试的申请可能含有标准窗口标的,但没有得到QTP的承认。 在这种情况下,物体可定义为甲型异构体、链条等。 因此,可以在执行期间模拟虚拟物体的使用行动。

Example

让我们说,我们在Microsoft Word的情景是自动化的。 我启动了MS一词应用,我点击了rib子中的任何icon。 例如,在Ribbon,插入表格被点击,然后用户点击“Picture”纽扣。 甲.被承认为WinObject;因此,虚拟物体的重要性被宣布。

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

Creating a Virtual Object

在这种假想中,虚拟物体是使用虚拟目标管理人或“Tools”和“Tools”的新虚拟目标、“Virtual Object”和“Virtual Object”的“新虚拟目标”制造的,并点击“Next”纽顿。

Virtual Object Step 1

Virtual Object Step 2

Step 3-Cpck “Mark Object” Button。 一位横贯头发的治疗师将出现并标明你想要绘制地图和点击“Next”的物体。

Virtual Object Step 3

Step 4——选择虚拟物体的母子并点击“Next”。

Virtual Object Step 4

Step 5——指您希望储存虚拟物体和点击“Finish”的收集。

Virtual Object Step 5

Virtual Object Manager

虚拟物体 管理人员管理虚拟物体的收集。 测试者可以添加或删除虚拟目标管理人的虚拟物体。

虚拟目标主管的导航:“工具包”和“超图式目标管理员”如下所示:

Virtual Object Step 6

Using Virtual Objects

在制造虚拟物体后,所制造的物体可如下所示:

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

Virtual Object Limitations

    质量保证方案不支持模拟或低级记录虚拟物体。

    不得在虚拟物体上添加检查站。

    虚拟物体不受反对保存人控制。

    虽然我们把物体描绘成某一类(丁顿或清单),但当地物体的所有方法都没有得到虚拟物体的支持。

    物体不能用于虚拟目的。

    如果屏幕分辨率随着坐标的变化而发生变化,试爆就会失败。

    申请窗口应具有相同的屏幕尺寸,以便准确捕获虚拟物体。

QTP - Accessing Databases

因此,QTP没有提供与数据库连接的任何内在支持,但使用VB式测试器将能够与使用ADODB物体的数据库连接和互动。

亚洲开发银行拥有4个财产或方法,我们将能够与数据库合作。 他们:

    ADODB.Connection——用于建立数据库链接

    ADODB.Command - Used to Implement akou(Queries or Stored Procedures)

    ADODB. Fields- Used to fetch a particular栏从执行询问/储存后的记录中删除

    ADODB.Recordset - Used to fetch data from a database

How to connect to Database?

数据库可以通过连接线连接连接连接。 每个数据库在连接方式上有所不同。 但是,可以在www.jointionstrings.com/的帮助下建立连接线。

让我们考虑如何将数据库与以下参数联系起来——

    - 履历

    - a

    - 第123号

达格·哈马舍尔德图书馆的输出情况如下:

Accessing Database

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

Result

关于执行上述文字,该产出见以下信息箱:

Accessing Database 2

QTP Working with XML

XML是一种标记语言,旨在以人类和机器都能读懂的形式储存数据。 利用XML,数据也可以轻易在计算机和数据库系统之间交换。

抽样XML及其关键要素如下:

Working with XML

Accessing XML

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("/Bookpb/book/value/text()")

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

Comparing XML

我们可以比较两个特定的XML。

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 - Descriptive Programming

只有在物体位于保留地时,方言书方可执行。 物体的描述是用描述性节目制作的。

    当测试者希望对目标存放处没有的物体进行操作时

    申请中物体在性质上非常活跃时。

    当目标保存机构大增时,由于目标保存机构的规模增加,结果表现不佳。

    当框架建立时,决定根本不使用保留地。

    当测试者想要在不了解物体的独特特性的情况下在运行时间就申请采取行动时。

Syntax

采用描述性方案编制技术进行描述有两种方法。 他们:

    Description Objects

    Description Strings

Description Objects

标本是依据所用特性及其相应价值开发的。 然后,这些描述被用来打造文字。

 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).Cpck

Description Strings

对这些物体的描述是以下文所示特性和价值为示例的。

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

Child Objects

QTP提供了“儿童目标”方法,使我们能够建立一套物品。 母体物体在“儿童目标”之前。

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 pnks in the page

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

Ordinal Identifiers

描述性方案用于根据矿石识别特征撰写描述,使QTP能够在两个或两个以上物体具有相同特性时对这些物体采取行动。

  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 - Automation Object Model

质量保证方案本身可通过使用惠普-QTP提供的COM接口实现自动化。 自动化物体模型是一套物体、方法和特性,有助于测试者控制配置环境,使用QTP接口执行文字。 可控制(但不限于)的主要组合/行动如下:

    Loads all the required add-ins for a test

    Makes QTP visible while execution

    Opens the Test using the specified location

    Associates Function Libraries

    Specifies the Common Object Sync Time out

    Start and End Iteration

    Enable/Disable Smart Identification

    On Error Settings

    Data Table Path

    Recovery Scenario Settings

    Log Tracking Settings

QTP 11.5x提供了独一无二的自动化目标模型文件,可通过浏览“Start” >>“All Programs” >>“HP” >>“HP Untegrated Functional Test” >>“Documentation” >>“统一功能测试自动化参考”。

Generate AOM Script

测试者可使用“基因代谢”办法,从QTP本身生成AOM文字。 加入“Run”和“Run”;>“Settings”和“Properties” 如下文所示:“遗传性文字”

Automation Object Model

Example

  A Sample Script to Demostrate AOM
Dim App  As Apppcation
Set App = CreateObject("QuickTest.Apppcation")
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 Apppcations").Active = False
App.Test.Settings.Launchers("Windows Apppcations").Apppcations.RemoveAll
App.Test.Settings.Launchers("Windows Apppcations").RecordOnQTDescendants = True
App.Test.Settings.Launchers("Windows Apppcations").RecordOnExplorerDescendants = False
App.Test.Settings.Launchers("Windows Apppcations").RecordOnSpecifiedApppcations = 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
ecover_app_crash.qrs", 
   "Recover_Apppcation_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

QTP - Frameworks

框架界定了一套实施一套标准的指南/最佳做法,使终端用户易于使用。 各类自动化框架各不相同,最常见的框架如下:

    Keyword-Driven Framework

    Data-Driven Framework

    Hybrid Framework

Keyword-Driven Framework

关键词驱动的测试是一种功能自动化测试框架,也称为表格驱动的测试或行动字基测试。

在关键词驱动的测试中,我们采用表格格式,通常是电子表格,为我们希望执行的每一职能确定关键词或行动词。

Keyword Driven testing in Automation Testing

Advantages

    它最适合于创新或非技术测试者。

    采用这种办法,能够以更抽象的方式撰写考试。

    关键词驱动的测试使得甚至在一个稳定的建筑交付测试之前,该中心就能够提前开始自动化。

    高度可重新使用。

Disadvantages

    初步投资于关键词及其相关功能可能需要更长时间。

    它可以对技术上有能力的测试者施加限制。

Data Driven Framework

数据驱动的测试是创建测试文字,在测试操作时,测试数据和/或产出数值从数据文档中读取,而不是使用同样的硬编码数值。 这样,测试者就可以检验申请如何有效地处理各种投入。 它可以是以下任何数据文档:

    datapools

    Excel files

    ADO objects

    CSV files

    ODBC sources

Flow Diagram

数据驱动 以下图表可最好地理解检测:

Keyword Driven testing in Automation Testing

Advantages

    Data driven framework results in less amount of code

    Offers greater flexibipty for maintaining and fixing the scripting issues

    Test Data can be developed

Disadvantages

    Each script needs to be different to understand different sets of data.

Hybrid Framework

混合框架是关键词驱动和数据驱动框架的组合,最好使用以下流程图加以说明。

Hybrid Framework in Automation Testing

Affecting Factors

在制定框架时应当考虑到以下参数。 影响因素如下:

    框架文件应支持诸如SVN、CVS、MS源控制等控制软件的版本。

    框架应支持在不同环境中执行文字,如QA、SAT、DEV。

    在目标改变后,文字应作少量改动。

    框架应当自行确定,并顾及创建文件夹/数据库等先决条件。

    框架应具有强有力的报告结构,以便能够轻易发现文字/申请中的问题。

    框架应当具有更大的灵活性,以便易于使用

    框架应当遵循编码标准,以便正确保存档案、职能和变化的历史。

在下一章,我们将学习如何设计一个简单的框架。

QTP - Designing Framework

让我们通过抽样应用来设计一个简单的框架。 我们将在测试和书写可再利用的职能下使几种应用情景自动化。

测试中的样本应用是“计算器”,这是一个作为视窗的一部分提供的缺省应用程序。 我们现在应该建立一个框架的不同组成部分。 在这方面,我们将制定一个混合框架,并使用客观保存机制,因为它相当简单。 然而,也可以扩大这一框架,以支持复杂的应用。

该框架的多重结构如下所示:

QTP Framework Folder Structure

2. 翻版结构的解释——

    < 图书馆档案——构成功能图书馆的相关功能。

    Data Table——执行所需的测试数据。

    物体及其特性使QTP能够无缝地识别物体。

    Executionlogs Folder载有带有用户功能和功能执行史的执行记录。

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 Exppcit  

Pubpc 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 pbrary file 
clscommon.StartTime = Time()  

  Launching the Apppcation 
SystemUtil.Run "C:WindowsSystem32Calc.exe" : wait (2)  

  Initiapze the Data Table Path  
Dim FileName : FileName  = ExecDrive+"TestDataCalculator.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_RepositoryCalc.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)  

  Iniitiapze the Parameters and all the relevant Test Details 
Call Fn_InitiapzeLogFile()  

  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  

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

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

Library Files

计算器功能在一份单独的功能档案中书写,并存续,qfl或vbs。 这些职能可适用于各种行动。

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

 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =  
  FUNCTION NAME     : Fn_InitiapzeLogFile 
  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 
 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =  
Pubpc Function Fn_InitiapzeLogFile() 
   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).Cpck 
   If Trim(clscommon.Number2) <> ""  Then 
      Window("Calculator").WinButton(clscommon.Number2).Cpck 
   If Trim(clscommon.Number3) <> ""  Then 
      Window("Calculator").WinButton(clscommon.Number3).Cpck 

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

   Window("Calculator").WinButton("=").Cpck 
   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").Cpck 
    
   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  : Apppcation 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 & "
ootcimv2") 
    
   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  : Apppcation 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   =============================  

其他图书馆档案是通用的。 q 包含这些功能的面粉,使我们能够把产出写到文字档案中。

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 ===================== 

Object Repository

提交反对的保存者已掌握用户将使用的所有物体。 如下图所示的图像显示在存放处添加的所有物体清单,名称为标记。

OR of the AUT

Data Table

可用数据包含关键词,这些关键词推动了测试,也推动了测试。 测试QTP对物体采取行动的数据。

Data Table used in the Framework

The Execution Log

执行记录文档或产出档案中载有用户行动和功能记录,这将使测试者能够对文字故障进行解冻。

Data Table used in the Framework

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: ## # # # # # # # # # # # # # # # # # # # # # # # # # 
# # # # # #
Advertisements