QuickTest Professional(简称QTP)功能自动化测试,原属于Mercury Interactive公司产品,2006年7月被惠普公司收购了,通过安装文件目录可以看到,都是默认放在C:\Program Files (x86)\HP\Unified Functional Testing\文件夹目录下。早期惠普公司还有一个winrunner的产品,目前已经不维护了,但是还是有少部分公司在用。

https://blog.51cto.com/croshere/116783

http://blog.sina.com.cn/s/articlelist_1599269304_5_1.html

首先我们来理解下,为什么要有自动化测试工具呢?

1. 存在大量的回归测试

2. 大数据量的测试

3. 自动化测试工具可以24小时不间断的工作,手工测试就不行了

总结就是,主要是为了减少手工执行的重复性操作,减少人工和时间的浪费,快速的回归测试功能,提高项目的效率。

自动化测试工具使用的条件:

1. 项目的功能点相对稳定

2. 冒烟测试通过后,引入自动化测试,不会浪费资源

常用的功能测试化工具有:WinRunner,QaRun,Robot Framework(IBM的一款产品),Selenium;

QTP的特点:

1. 是面向对象的一种功能自动化测试工具

2. 能够对任意语言进行功能自动化测试

3. 简单易用的图形化操作界面,对于初学者,容易上手

4. 可以用VBScript脚本语言编写程序,加强代码功能

被测系统模式:

C/S模式:客户/服务器间的模式

B/S模式:浏览器/服务器间的模式

针对QTP10.0版本:

界面介绍:菜单栏,工具栏,keywordView(关键字视图),expertView(专家视图),ActiveScreen(界面截图视图);

QTP自带的windows订票系统地址:http://newtours.demoaut.com

怎么录制和回放:

1. 点击“record”(录制)按钮

2. 在“Record and Run Settings”(录制和回放页面)页面把web选择第一项,Win Application选择第二项

3. 添加被测程序或者网页链接

4. 开始录制测试用例的每个步骤

5. 点击“stop”停止按钮

6. 点击“run”运行按钮,回放之前录制的步骤,看有没有录制成功

在 Keyword View 中的每一个字段都有其意义:

Item(项):以阶层式的图标表示这个操作步骤所作用的组件(测试对象、工具对象、函数呼叫或脚本)。

Operation(操作):要在这个作用到的组件上执行的动作,如点击、选择等。

Value(值):执行动作的参数,例如当鼠标点击一张图片时是用左键还是右键。

Assignment(分配):使用到的变量。

Comment(注释):你在测试脚本中加入的批注。

Documentation(文档):自动产生用来描述此操作步骤的英文说明。

QTP系统设置项:

1. 设置字体:Tools \ View Options \ Fonts and colors \ Size

2. 恢复页面布局:Tools \ Options \ General \ Restore Layout

3. 运行速度设置:Tools \ Options \ Run \ Run mode \ 输入步骤和步骤之间运行的间隔时间,单位是毫秒,例如1000s

4. Record and Run Settings (录制和运行设置):Automation \ Record and Run Settings

自动化测试的流程:

1. 需求分析

2. 制定测试计划

3. 录制测试脚本

4. 增强测试脚本(之后的课时再学习)

5.使用QTP的回放机制, 执行测试

6. 分析测试结果,反馈测试报告
————————————————

Object Identification 管理对象模型

对象库的基本操作:添加、更新、对象闪烁、副对象库

Object Spy 运用

Obeject Repository Manager 对象库指挥官

一、对象模型

对象库是QTP的核心,正是因为有了对象库,QTP才脱颖而出。

QTP自动化的原理(重点):

1.封装真实的被测对象到对象库

2.对比对象库中的对象鉴别属性和运行时的被测对象的鉴别属性

3.如果鉴别属性相同,继续对被测对象进行操作,不同则无法识别对象

对象模型:添加对象到对象库之后,QTP就会自动建立被测对象的对象模型,并且有唯一标识

二、 Object Identification

Object Identification 即为以上提出的唯一标识对象的属性列表(以下简称OI)

OI属性列表里面有两个区域 : Mandatory Properties 和 Assistive Properties

(对象模型的必要属性)    (对象模型的辅助属性)

注:实际运行时被测对象与对象库进行比较的鉴别属性就是 Mandatory Properties

对象库中Description properties(描述属性)定义的所有属性都是必要属性。

拓展内容:web对象模型的智能识别 (针对对象模型下的具体对象)

例:webedit 对象   webcheckbox 对象

在OI里面可以设置智能识别的属性:Enable Smart Identification

推荐识别对象出现问题时选择智能识别

智能识别的过程是逆向推,将不符合的全过滤推出唯一留下的即为符合

三、对象库的基本操作

1.剪切、复制、粘贴、删除对象时父对象和子对象是一体的(一荣俱荣、一损俱损)

2.查找、替换对象 find & replace :Crtl + F

3.添加对象(重点):添加子对象,父对象、祖父对象均被添加

添加父对象,祖父对象添加,子对象不添加

注:1) 添加对象时注意对象库的Action切换,切换到外部的action时只能查看对象。

2) 添加对象时切换web页面是不是很麻烦,告诉你一个小秘诀:捕捉模式切换

(捕捉模式切换,详情见后续 Object Spy 章节)

3) 录制添加对象,虽十分快速但是对象命名随机不规范,可以通过修改对象库

对象的name值,录制脚本自然改变(维护对象库自动更新脚本)

4.更新对象

更新步骤和添加步骤相同,只是不同种类的对象不可随意更新,无法识别对象也可以

使用对象更新

5.对象闪烁(亮灯)Highlight in Application

调试脚本使用,定位对象,若亮灯则能识别对象本身,反之对象属性可能出现问题

隐藏方法:Highligh 执行代码后,代码对象会闪烁

6.副对象库   Associate Repositories (外部加载、只读)

把一些具体的对象封装为一个对象库文件,调用该对象库文件到对象库即为副对象库

弊端是产生很多ObjectRepository.bdb文件

添加方法有两种:手工添加(切换到all object下再copy to local 才可以编辑)

动态加载(后面章节讲述)

扩展:导出本地对象:保存对象库文件到指定文件夹

导出(代替)本地对象:导出本地对象将其替换成副对象

四、Object Spy 运用

侦探 Jack(重点) :Native Properties 和 Identification Properties切换

Native Properties(本地属性):自身接口属性    多

Identification Properties(鉴别属性) :QTP 默认封装属性    少

捕捉模式切换:  半模式操作—— Ctrl            支持鼠标操作           1)

全操作模式——Ctrl+alt    支持鼠标、键盘操作   2)

1)按住Ctrl   小手指变鼠标箭头,正常操作;

松开Ctrl   还原为抓取对象模式

2)按住Ctrl+alt   松开Ctrl 再松开alt  进入全操作模式

五、Obeject Repository Manager 对象库指挥官

ORM和OR的功能大体相同,在此只介绍几点不同:

1.ORM中提供了一个非常快捷的按钮“Enable Editing”

ORM打开对象库文件为只读,点击“Enable Editing”,就可以随意修改

2.ORM中可以save、save as 对象库文件,OR是导出对象库文件

3.ORM 的两个辅助工具(重点)

Obeject Repository Comparison Tool : 对象库对比

Obeject Repository Merge Tool : 对象库合并

注:自动化测试的对象库维护,首先要进行对象库对比进行分析确定,然后

进行对象库合并,合并过程若无冲突就关闭窗口,产生冲突会自动产生

3种解决方案根据需要自己选择。

总结:

想要做好自动化测试维护好对象库是极其重要的。

QTP测试学习笔记的更多相关文章

  1. Web安全测试学习笔记-DVWA-SQL注入-2

    接上一篇SQL注入的学习笔记,上一篇我通过报错信息得知后台数据库是MySQL(这个信息非常重要~),然后通过SQL注入拿到了用户表的所有行,其实我们还可以通过MySQL的特性来拿更多的信息. 1. 获 ...

  2. 【数学】【筛素数】Miller-Rabin素性测试 学习笔记

        Miller-Rabin是一种高效的随机算法,用来检测一个数$p$是否是素数,最坏时间复杂度为$\log^3 p$,正确率约为$1-4^{-k}$,$k$是检验次数. 一.来源     Mil ...

  3. Web安全测试学习笔记 - DVWA+PHP环境搭建

    DVWA(Damn Vulnerable Web Application),是一个用PHP编写的,作为Web安全测试练习平台的合法环境(毕竟咱不能为了练习就随便找个网站去攻击...),也就是俗称的靶场 ...

  4. Web安全测试学习笔记-DVWA-盲注(使用sqlmap)

    之前的sql注入页面(https://www.cnblogs.com/sallyzhang/p/11843291.html),返回了查询结果和错误信息.而下面的页面,返回信息只有存在和不存在两种情况, ...

  5. Web安全测试学习笔记-SQL注入-利用concat和updatexml函数

    mysql数据库中有两个函数:concat和updatexml,在sql注入时经常组合使用,本文通过学习concat和updatexml函数的使用方法,结合实例来理解这种sql注入方式的原理. con ...

  6. Web安全测试学习笔记-DVWA-登录密码爆破(使用Burp Suite)

    密码爆破简单来说,就是使用密码本(记录了若干密码),用工具(手工也可以,if you like...)一条条读取密码本中的密码后发送登录请求,遍历密码本的过程中可能试出真正的密码. 本文学习在已知登录 ...

  7. [postman][API 测试]用Postman做RestAPI测试学习笔记

    痛点:最近有个API网关的兼容性测试任务,需要验证API是否可用,返回值符合预期,如果手工复制粘贴curl命令,繁琐且低效 调研时发现了Postman 这个chrom插件,试用了2天后发现使用起来很方 ...

  8. Web安全测试学习笔记(Cookie&Session)

    一,Session:含义:有始有终的一系列动作\消息1, 隐含了“面向连接” 和“保持状态”两种含义2, 一种用来在客户端与服务器之间保持状态的解决方案3, 也指这种解决方案的存储结构“把××保存在s ...

  9. kali linux 网络渗透测试学习笔记(二)OWASP ZAP工具扫描SQL injection漏洞失败

    按照惯例,利用OWASP ZAP工具扫描SQL injection漏洞时,应该很快就可以扫描出来,但是在笔者进行扫描的时候,却遇到了以下状况: 这说明了该工具根本就没能够扫描出SQL注入的漏洞,不知道 ...

随机推荐

  1. Java部分目录

    一.Java基础 1.访问权限控制 2.重载和覆盖 3.面向对象的特征 4.接口和抽象类 5.Java环境变量配置 6.Java英文缩写详解 7.如何在Maven项目中引入自己的jar包 8.使用ba ...

  2. 【转】高性能网络编程6--reactor反应堆与定时器管理

    反应堆开发模型被绝大多数高性能服务器所选择,上一篇所介绍的IO多路复用是它的实现基础.定时触发功能通常是服务器必备组件,反应堆模型往往还不得不将定时器的管理囊括在内.本篇将介绍反应堆模型的特点和用法. ...

  3. Python并发编程-GIL全局解释器锁

    Python并发编程-GIL全局解释器锁 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.GIL全局解释器锁概述 CPython 在解释器进程级别有一把锁,叫做GIL,即全局解释 ...

  4. 深层次揭示runBlocking与coroutineScope之间的异同点

    在之前https://www.cnblogs.com/webor2006/p/11731763.html咱们写过这样的一个例子,先来回顾一下: 也就是来演示runBlocking与coroutineS ...

  5. 图森未来一道笔试题-迷宫难题【BFS找S->E的最短步数】

    时间限制:3秒 空间限制:262144K 图森未来的自动驾驶小卡车今天被派到了一个陌生的迷宫内部运输一些货物. 工程师小图已经提前拿到了这个迷宫的地图,地图是一个n*m的字符矩阵,上面包含四种不同的字 ...

  6. 项目alpha冲刺-测试

    作业要求 这个作业属于哪个课程 软件工程1916-W(福州大学) 这个作业要求在哪里 项目Alpha冲刺 团队名称 基于云的胜利冲锋队 项目名称 云评:高校学生成绩综合评估及可视化分析平台 这个作业的 ...

  7. nginx和tomcat配置负载均衡和session同步

    一.背景 因业务需求,现需配置多台服务器,实现负载均衡. 二.解决方案 使用 nginx + tomcat,在这一台应用服务器部署一个nginx和两个tomcat.通过nginx修改配置后reload ...

  8. 删除WordPress菜单wp-nav-menu中li的class或id样式

    我们都知道wordpress已经集成了一些通用的css样式,比如wp-nav-menu菜单会有很多的class,不想看到那么多的选择器,想要清净的世界要如何操作呢?随ytkah一起来看看 <li ...

  9. Backpressure & Elastic Scaling

    spark.streaming从不稳定到稳定状态,解决数据量接收数据时突然变大,使得无法及时处理数据,稳定性得到保证 开启方式: spark.streaming.backpressure.enable ...

  10. 分享STM32 FLASH 擦除(以及防止误擦除程序代码)、写入

    编译环境:我用的是(Keil)MDK4.7.2   stm32库版本:我用的是3.5.0一.本文不对FLASH的基础知识做详细的介绍,不懂得地方请查阅有关资料. 对STM32 内部FLASH进行编程操 ...