- QTP - Designing a Framework
- QTP - Frameworks
- QTP - Automation Object Model
- QTP - Descriptive Programming
- QTP - Working with XML
- QTP - Accessing Databases
- QTP - Virtual Objects
- QTP - GUI Objects
- QTP - Test Results
- QTP - Library Files
- QTP - Environment Variables
- QTP - Recovery Scenarios
- QTP - Error Handling
- QTP - Debugging
- QTP - Smart Identification
- QTP - Synchronization
- QTP - Checkpoints
- QTP - DataTables
- QTP - Actions
- QTP - Object Repository
- QTP - Record and Play Back
- QTP - Environment Setup
- QTP - Test Automation
- QTP - Introduction
- QTP - Home
QTP Useful Resources
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
QTP - Quick Guide
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
对于任何自动工具的实施,以下是其阶段/阶段。 每个阶段都与特定活动相对应,每个阶段都有明确的结果。
试办可行性分析——第一步是检查申请是否可以自动化。 由于限制,并非所有应用程序都可以自动化。
利用适当的框架——在选择这一工具时,下一个活动是选择适当的框架。 有各种框架,每个框架都有其意义。 我们将在本理论中详细论述框架。
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——
。 视情况而定。 Cpck the “Numbers”pnk under "Algebra”, and key in a number and atqueste. 在行动完成后,在记录小组中点击“Stop”纽芬兰语。 您将注意到文字的生成情况如下:Significance of Record and Playback
该系统被用作初步调查方法,用以核实UFT是否能够支持技术/应用。
用于测试不需要长期维护的申请或特征的基本功能。
它可以用于记录改变用途运动和关键投入。
Modes of Recording
Insight Recordsing——UFT记录业务,依据是表面的,而不是基于其本土特性。
How to Choose Recording Modes
在点击记录台后,一旦录音开始,用户可以从屏幕上显示的录音带中选择录音方式。 可以从上文讨论过的任何一种选择中作出选择。
你们会看到,以下情景在所有模式中都有记录,在各种情况下也记录了同样的行动。
Launch IE -
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
使用见证人记录方式的记录如下:
QTP - Object Repository
Object Repository
保存物体是一套物品和财产,QTP能够识别物体并就其采取行动。 当用户记录测试时,物体及其特性被缺席捕获。 如果不了解物体及其特性,QTP就能够击退文字。
围绕以下每个专题进行点击,以更多地了解保留的目的及其相关特征。
Sr.No. | Topic & Description |
---|---|
1 | 了解物体间及其相关功能的使用。 |
2 | 添加、编辑、删除来自保留地及其相关功能的物体。 |
3 | 4. 处理共同的目标和地方目标保存人及其在描述方面的背景。 |
4 | 处理使用用户定义物体的情况。 |
5 | 交易将OR s转换成XML,并将物体保存作为XML。 |
6 | 比较OR , Merge OR 等业务可有效地与保留地合作。 |
7 | 使用普通标识及其优点的情况。 |
8 | 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 Name
Location
Reusable Flag
Input Parameters
Output Parameters
Types of Actions
有三类行动:
Working with Actions
添加行动有三种选择。 每一名了解选定行动类型的人的浮标。
Sr.No. | Action Type & Description |
---|---|
1 | 加入现有行动的新行动 |
2 | 插入现有行动的副本 |
3 | 插入呼吁采取现有可再利用的行动 |
QTP - Datatables
类似于Microsoft Excel的数据可帮助测试者制造数据驱动的测试案例,可以多次用于操作行动。 有两个类型的数据表:
当地数据表——每项行动都有自己的私人数据表,也称为当地数据表,也可通过行动查阅。
全球数据表——每项测试都有一份全球数据表,可在各种行动中查阅。
如下表所示,可从QTP的“数据”塔获取数据表:
为了对某些特定数量的频率进行测试,可以确定试验环境中全球数据表的炉 the,如以下所示,可使用文件---------(Tab)查阅。
Example
例如,如果用户想要将
。 http://easycalculation.com/compound- interest.php。 参数如下所示。 Excel的大多数功能也可在数据表中使用。DataTable Operations
有三类物体可查取数据。 可通过下列途径来理解可数据的行动:
Sr.No. | Object Type & Description |
---|---|
1 | Gives详细介绍了数据表方法。 |
2 | Gives详细介绍了DTPara计法。 |
3 | 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,以记录方式使用。
下面是检查站菜单,当用户在记录时。
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
在插入试师想要改变价值的情况下,我们可以通过正确点击文字的中词检查站,并去“查点财产”——如下所示——来这样做。
如下文所示,你也可在物体存放处找到同样的检查站。 它确切地表明使用了哪类检查站,什么是预期的价值观,什么是过时的价值观。
QTP - Synchronization
同步点是正在测试的工具与应用之间的时间接口。 同步点是说明试卷两个步骤之间的延迟时间的一个特点。
例如,点击链接可能装载1页,有时是5秒钟,甚至可能装满10秒钟。 它取决于各种因素,如应用服务者的反应时间、网络带宽和客户系统的能力。
如果时间不同,除非测试者明智地处理这些时间差异,否则文字就会失败。
Ways to Insert Sync Point
WaitProperty
Exist
Wait
Sync(only for web based apps)
Inserting QTP Inbuilt Synchronization points.
让我们说,我们需要在点击“数字”链接和点击“简单利益”计算器“
之间插入一个辛迪加点。 我们现在将研究为上述设想增加综合点的所有五种方法。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
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 >> 如下所示时间。
QTP - Smart Identification
有时,QTP无法找到任何与公认的物体描述相符的物体,或找到一个以上符合描述的物体,然后QTP忽视了公认的描述,并利用智能识别机制承认该物体。
QTP 智能识别使用两种特性:
Optional Filter Property——其他财产也协助确定某一类物品,这些物品的财产不可能经常改变,如果不再适用,则可能被忽视。
Enabpng Smart Identification for an Object
Step 1-Navgate to "Tools”->Object identification. 辨识方言
Step 2——选择环境、目标类别和选择“最佳识别”如下:
<4>Step 4——除违约外,在基地房地产中增加财产,并增加/搬走任择财产。 请注意,同一财产不能成为强制性和辅助性财产的一部分,也不能点击“科索沃”。
Step 5——如果在保留地添加这类物体后能够识别智能。 聪明身份被安排到西非经货联盟。 如果我们不想让聪明身份识别成为可能,我们也可以把它变成“法尔”。
QTP - Debugging
在自动化测试背景下进行分解是一个系统的过程,可以发现和确定自动化文字中的编码问题,从而使文字更加有力,能够发现应用中的缺陷。
利用QTP中的破碎点进行偷窃的方式多种多样。 仅通过紧急“F9”或采用Mendu方案“Run”-“Inserting/Removing Break Point”插入细分点。
在插入“突破点”后,“有色人种”和“线”将在RED中强调,如下所示:
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 -
Example
观察潘内显示产出表述如下:
当地变量 缩略语显示了以下地方变量的数值:
QTP - Error Handpng
在QTP中存在各种处理错误的方法。 有三种可能的错误,一种是会碰到的,同时与QTP合作。 他们:
Syntax Errors
Logical Errors
Run Time Errors
Error Types
Syntax Errors
先天错误是字体或法典的一部分,没有用文法确认。 在编纂法典时发生先天错误,在错误确定之前不能执行。
为了核实yn子,使用主要短机Ctrl+F7,其结果如下所示。 如果窗口没有展示,则可以浏览“意见”——“错误”。
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”塔,如下所示。 我们可以选择任何特定环境,点击“科索沃”。
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数值,反对退出试验或行动或变造。 让我们详细看到其中每一个发言。
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文字时,我们可能会出现一些意外错误。 为了恢复测试,并继续从这些意外错误中执行其余文字,采用了“恢复情景”。 纳维格特人可以访问“资源”—— 恢复情景管理员,如下所示:
Steps to Create Recovery Scenario
Step 1-Cpck “New”recovery Scenario button;《复原情景》开放如下:
Pop-Up Window
Object State
Test Run Error
Apppcation Crash
Step 4——在具体说明适当的恢复行动之后,我们需要具体说明如下所示的灾后恢复行动。
Step 5——在具体说明“灾后恢复行动”之后,应将恢复情景命名并在测试中添加,以便能够启动。
Step 7——“附加恢复情景”如下所示,并点击“Close” Button的继续。
Step 8——在点击了近海纽尔之后,QTP将促使用户挽救已创造的恢复情景。 延期后将节省费用,而遗嘱将结束。
Verification
“创造的恢复情景”应当成为目前测试的一部分,可以通过“File”——“Settings”——“Recovery”T号核实。
QTP - Environment Variables
质量保证方案的环境变量是特殊类型的变量,所有行动、功能图书馆和复原情景都可以查阅。 视窗有内部设计的环境变量,所有应用都可用于这一特定系统,但仅在运行期间,该特定测试说明才能获得QTP环境变量。
Types of Environment Variables
Built-in Environment Variables - 提供一系列环境参数,提供测试名称、行动名称、测试途径、当地东道名称、操作系统名称、类型及其版本等信息。 可通过浏览“File”——“试验环境”——“环境”T。
User下定义的内部——用户定义的变量可以通过在环境塔温德选择“User下定义”。 点击了“和加;”纽克,以输入参数名称和价值如下:
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. 如下文所述,也可以在运行期间灵活地装载。
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
2. LoadFromFilemeth - Loads the specified environment changing file (xml) Dynamically during operation time. 在使用这一方法时,环境变量无需人工添加到环境图中。
Environment.LoadFromFile "D:config.xml" b = Environment.Value("Browser") print b
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
QTP - Library Files
为了对文字进行模块化,将图书馆档案列入QTP的文字。 它包含不同的声明、功能、类别等。 它们使可重新使用性能够在测试文字中共享。 节省费用时,可加减。
可以通过浏览“File”和“功能图书馆”创建新的图书馆档案。
Associating Function Libraries
<Method 1 - by using “File” >“Settings” > Resources > Associate Function Library Options. 浏览“+”纽芬兰语添加功能图书馆档案,并使用下文所示的实际途径或相对途径添加这一档案:
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
Operations performed in Test Results
Converting Results to HTML
在“结果观察家”窗口,“File”——“Export to file”。 出口实绩方言箱打开如下:
我们可以选择出口哪类报告。 这可能是短结果、详细的结果,甚至我们可以选择节点。 在选择档案名称和出口后,档案被保存。 传真
Filtering the Results
成果可根据状况、新类型和变异进行过滤。 可以通过在“试验结果窗口”中使用“芬顿”来获取。
Raising Defects
缺陷可直接从“测试结果窗口”中渗入QC,可进入“Tools”-“Add Defect”这一开放与“LM”连接的“Tools”-
Test Results
自动测试结果窗口可在“工具包”——“备选办法”——“会议”下配置。 如果需要,我们就能够转而使用离岸价格,我们也能够在“会议结束时取得实际出口结果”。
屏幕或电影可根据具体情况记录。 也可在“工具包”——“选择”——“Screen Capture”下进行配置。 我们可以根据以下三个条件,拯救屏幕或电影:
For Errors
Always
For Errors and Warnings
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
下面是一些关键方法,可以与检查箱合作。
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 | 发言 ∗∗∗∗ 在另一个网站if或elseif 说明。 |
5 | switch statement 《switch声明》允许对平等宣传者测试一个价值清单。 |
html id——如果表格有贴标签,则最好利用这一财产。
innerText - Heading of the table.
Index-Fetches the Source Index of the table
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
Step 3-Cpck “Mark Object” Button。 一位横贯头发的治疗师将出现并标明你想要绘制地图和点击“Next”的物体。 Step 4——选择虚拟物体的母子并点击“Next”。 Step 5——指您希望储存虚拟物体和点击“Finish”的收集。 虚拟物体 管理人员管理虚拟物体的收集。 测试者可以添加或删除虚拟目标管理人的虚拟物体。 虚拟目标主管的导航:“工具包”和“超图式目标管理员”如下所示: 在制造虚拟物体后,所制造的物体可如下所示: 质量保证方案不支持模拟或低级记录虚拟物体。Virtual Object Manager
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?
数据库可以通过连接线连接连接连接。 每个数据库在连接方式上有所不同。 但是,可以在
让我们考虑如何将数据库与以下参数联系起来——
达格·哈马舍尔德图书馆的输出情况如下:
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
关于执行上述文字,该产出见以下信息箱:
QTP Working with XML
XML是一种标记语言,旨在以人类和机器都能读懂的形式储存数据。 利用XML,数据也可以轻易在计算机和数据库系统之间交换。
抽样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” 如下文所示:“遗传性文字”
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
关键词驱动的测试是一种功能自动化测试框架,也称为表格驱动的测试或行动字基测试。
在关键词驱动的测试中,我们采用表格格式,通常是电子表格,为我们希望执行的每一职能确定关键词或行动词。
Advantages
它最适合于创新或非技术测试者。
采用这种办法,能够以更抽象的方式撰写考试。
关键词驱动的测试使得甚至在一个稳定的建筑交付测试之前,该中心就能够提前开始自动化。
高度可重新使用。
Disadvantages
初步投资于关键词及其相关功能可能需要更长时间。
它可以对技术上有能力的测试者施加限制。
Data Driven Framework
数据驱动的测试是创建测试文字,在测试操作时,测试数据和/或产出数值从数据文档中读取,而不是使用同样的硬编码数值。 这样,测试者就可以检验申请如何有效地处理各种投入。 它可以是以下任何数据文档:
datapools
Excel files
ADO objects
CSV files
ODBC sources
Flow Diagram
数据驱动 以下图表可最好地理解检测:
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
混合框架是关键词驱动和数据驱动框架的组合,最好使用以下流程图加以说明。
Affecting Factors
在制定框架时应当考虑到以下参数。 影响因素如下:
框架文件应支持诸如SVN、CVS、MS源控制等控制软件的版本。
框架应支持在不同环境中执行文字,如QA、SAT、DEV。
在目标改变后,文字应作少量改动。
框架应当自行确定,并顾及创建文件夹/数据库等先决条件。
框架应具有强有力的报告结构,以便能够轻易发现文字/申请中的问题。
框架应当具有更大的灵活性,以便易于使用
框架应当遵循编码标准,以便正确保存档案、职能和变化的历史。
在下一章,我们将学习如何设计一个简单的框架。
QTP - Designing Framework
让我们通过抽样应用来设计一个简单的框架。 我们将在测试和书写可再利用的职能下使几种应用情景自动化。
测试中的样本应用是“计算器”,这是一个作为视窗的一部分提供的缺省应用程序。 我们现在应该建立一个框架的不同组成部分。 在这方面,我们将制定一个混合框架,并使用客观保存机制,因为它相当简单。 然而,也可以扩大这一框架,以支持复杂的应用。
该框架的多重结构如下所示:
2. 翻版结构的解释——
< 图书馆档案——构成功能图书馆的相关功能。
Data Table——执行所需的测试数据。
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
提交反对的保存者已掌握用户将使用的所有物体。 如下图所示的图像显示在存放处添加的所有物体清单,名称为标记。
Data Table
可用数据包含关键词,这些关键词推动了测试,也推动了测试。 测试QTP对物体采取行动的数据。
The Execution Log
执行记录文档或产出档案中载有用户行动和功能记录,这将使测试者能够对文字故障进行解冻。
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