一、自动化测试概述

自动化测试是手工测试的补充

功能类自动化测试工具的主要应用领域:回归测试阶段

1、软件自动化产生原因

(1)工作量大

(2)包含了大量的复杂操作

(3)大部分工作为非智力创造性

(4)手工模拟真实环境困难

(5)测试结果不精确

2、自动化测试阶段:

自动测试决定——测试工具获取——自动化测试引入——测试计划、设计与开发——测试执行与管理——测试评审和评估

3、什么样的项目不适合自动化测试

(1)短期项目并且是一次性的项目,不适合开展自动化测试

(2)不宜在一个进度非常紧迫的项目中开发自动化测试

4、界面稳定后可以考虑开始介入自动化测试(参考控件名和相对位置)

5、自动化测试脚本编写方法

自动化框架:自动化测试工具、自动化测试脚本(用例+数据+代码)、被测软件

(1)线性脚本编写:非结构化编程,测试数据在脚本中是硬编码

(2)结构化脚本编写:引入了结构化语句(if、else、switch、while),测试数据在脚本中是硬编码

(3)共享脚本编写:测试数据可以多脚本共享

(4)数据驱动脚本编写:数据独立存储在数据表或外部文件(数据可以修改)

(5)关键字驱动脚本编写:综合了数据驱动脚本编写方法、共享脚本编写方法和结构化编写方法。需要额外的框架或库,会在脚本中用关键字来区分控件(B/S架构中一般以被测控件的内容属性值来命名)

B/S架构中能够与服务器发生交互的是HTML页面中的表单;name属性:标签的变量名称

测试工具要完成两件事(录制+回放)

6、UFT/QTP

QTP:关键字驱动的功能测试工具、支持脚本语言:VBScript、擅长:java、web、.net

对象库

(1)测试流程:定制测试计划——创建测试脚本(录制)——增强测试脚本功能——运行测试——分析测试结果

创建测试脚本:QTP将自动录制测试人员的每一步操作,自动生成测试脚本语句,还将被操作对象和其相应的动作按照层次和顺序保存在一个基于表格的关键字视图中

(2)QTP的快捷键

F1:帮助

F3:开始录制

F4:停止录制

F5:运行录制脚本

F9:设置/取消断点

F10:step over:在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完再停止,也就是把子函数整个作为一步。有一点,经过我们简单的调试,在不存在子函数的情况下是和step into效果一样的(简而言之,越过子函数,但子函数会执行)

F11:step into:单步执行,遇到子函数就进入并且继续单步执行(简而言之,进入子函数)

Ctrl+R:打开对象库

Ctrl+F7:编译脚本

(3)注释:'(单引号)

(4)debug views窗口调试代码:对希望调试的变量单机右键,选择“add to watch”,然后可以在variables中看到;在command中也可以直接输出变量值:①msgbox 变量名:以对话框的形式弹出变量值;②print 变量名:以文本形式弹出变量值

(5)增强脚本

基本修改:①插入if、for、while循环

②对象属性操作:GETRO、GETTO、SETTO、Exist

③对象常用事件操作:click、set、sync、wait

④打印:msgbox、print

(6)脚本录制模式

①normal recording(正常录制):通过识别程序中的对象来代替以前依赖识别屏幕坐标的形式。但是正常模式并不能保证识别程序的所有对象。因此,仍需要其他两种模式来补充。该模式不记录对象的坐标,只记录控件对象。

②analog recording(模拟录制):先启动正常录制后,才可以启动模拟录制。点击模拟录制的图标,或者shift+alt+f3快捷键。此类模拟录制了所有键盘和鼠标的精确操作,对于正常录制模式不能录制到的动作,可以使用模拟录制来弥补,比如:录制一个鼠标光标拖动的动作。缺点:模拟录制无法编辑录制的步骤。回放时,如果改变屏幕的分辨率或者窗口/屏幕的位置,回放就会失败。

③low lever recording(低级录制):先启动正常录制后,才可以启动低级录制。点击低级录制的图标,或者ctrl+shfit+f3快捷键。该模式不止录制了鼠标和键盘的所有操作,对对象的位置要求也非常严格。所有的对象都以windows和winobject的形式存在。所有的父类对象为windows,所有的其他对象为winobject测试对象。这种方式使用于QTP不能正常识别对象时应用,主要是记录坐标的位置,可以对QTP不支持的对象进行坐标的记录。

(7)QTP参数化技术

①使用Data Table作为数据源进行参数化:在Data Table的表头中输入变量名,表的内容输入变量值

i)在关键字视图中选中要改的value,将其换成Data Table表中相应的参数

ii)在专家视图中直接通过代码进行修改,如:

Window("Flight Reservation").WinComboBox("Fly From:").Select DataTable("departure", dtLocalSheet)

②使用随机数作为数据源进行参数化:选中参数后选择Random Number后输入随机值,或在专家视图中修改代码,如:

Window("Flight Reservation").Dialog("Flights Table").WinList("From").Select RandomNumber(0, 12)

③使用环境变量作为数据源进行参数化:先添加环境变量后,再给环境变量赋值。

添加环境变量的方法:file——settings——Environment——User-defined——添加(变量名变量值)

选中参数后,选择Environment,给参数选择相应的环境变量,或者在专家视图中修改代码,如:

Window("Flight Reservation").WinComboBox("Fly From:").Select Environment("departure")

④使用DataDriver引导参数化

DataDriver可以引导我们进行参数化,能自动检测出脚本中存在set或select类似带有输入选择性动作中可能需要参数化的数据

使用方法:选择tools下的DataDriver,会列出set,select动作的参数,我们可以对这些值进行参数化,参数化方法为上面三种。

(8)检查点技术:检查某个内容是否正确,插入检查点后,运行代码时,检查报告会报告passed的值,表示检查点的通过个数。

①标准检查点:在Active Screen视图中,将光标移到需要检查的对象上,单机右键选择Insert Standard CheckPoint,然后可以针对该对象选择相应的属性进行检查。或者,直接插入代码:

Dialog("Login").WinEdit("Agent Name:").Check CheckPoint("Agent Name:")

光标移到CheckPoint后要检查的对象上,单机右键同样可以选择要检查的属性。

②位图检查点:这是一种对图片的检查方式,同样在Active Screen视图中,将光标移到需要检查的图片上,单机右键选择Insert Bitmap CheckPoint。或者,直接插入代码:

Dialog("Login").Static("Static").Check CheckPoint("Static")

图片检查是一种静态的检查方式。

③文本检查点:检查界面中是否出现某个文本的一种方式,在Active Screen视图中,将光标移到需要检查的文本上,单机右键选择Insert Text CheckPoint。

④可访问性检查点

⑤页面检查点

④⑤都针对的是web类的检查

(9)输出值技术:输出值是一个步骤,在该步骤中,捕获测试或组件中某个特定点的一个或多个值,并在运行会话持续时间存储这些值。

类型:标准输出值(Insert Outputt Value)和文本输出值(Insert Text Output)

输出方式:输出到DataTable中和输出到Environment中

操作方法和检查点的操作方法一致,代码如下:

Dialog("Login").WinEdit("Agent Name:").Output CheckPoint("Agent Name:")

输出值是一个在运行过程中动态存储的值,如果结束回放,运行结束在Data Table中和Environment中是看不到的,但是,我们可以在测试报告中看到这些值。

(10)帮助文档(快捷键F1/help)

关注点:①函数功能与返回值;②函数参数(是否必填、参数类型、参数单位);③文档提供的范例

(11)对象探测器

使用对象探测器的场景:

1)需要知道对象具备哪些属性与方法

2)对象有时候QTP无法识别,想知道它是一个什么类型的对象时

①常见对象类型

Web对象、标准Windows对象

②如何使用对象探测器(Object Spy)

启动方法:Tools->Object Spy或者通过工具栏快捷键

③查看对象具有的属性和方法

Ctrl键的小技巧:

1)一次性查看多个窗口

2)查看的对象被其它窗口遮挡住

(12)QTP对象管理机制

1)对象库:对象仓库,用来存储对象的地方,随同当前测试一同存放的。对象仓库和测试脚本是紧密相关的

2)QTP对象管理机制

采用GUI模拟人的操作,它在模拟人的操作时会记录操作的对象以及所做的操作和顺序,然后在回放时记录顺序操作这些对象。在模拟过程中,最重要的是对界面对象(控件)的识别。

i)创建测试(录制脚本)步骤:

①使用唯一的对象名在对象仓库中记录该对象

②将对象的全部属性信息存放在数据仓库中

③标识关键属性信息

④在脚本中记录对象名称和相应的动作

ii)运行脚本(回放脚本)步骤:

①从脚本中获得对象名称

②在对象仓库中定位对象,并获取其关键属性

③根据关键属性信息在被测应用中定位对象

④根据脚本中录入的动作执行相应的操作

3)QTP运行时对象识别原理

i)强制属性:可以是一个或多个属性的组合。如果对象库的属性值与运行时不匹配,则报错;如果属性在当前应用程序中有多个对象匹配时,则使用辅助属性识别模式。

ii)辅助属性:辅助属性识别是对强制属性识别的一个补充,当强制属性识别多个匹配对象时,就根据辅助属性识别设置的属性及属性值来进行识别。

iii)顺序标识符

顺序标识符的两种取值:Location(位置)和Index(索引)

Location:根据控件在窗口上的Location值来进行识别,每个控件对应自己的Location值,按从上到下、从左到右的顺序取值。

Index:按照程序源码,绘制对象的先后标识对象,这种方式与其它相同对象是相互依赖的,当其它对象发生变化后,原先的所有对象的index属性要发生变化。

iv)智能识别

智能识别属性可分为基本过滤属性和可选过滤属性,它们的关系就像强制属性和辅助属性。

注:

1)如何配置强制属性、辅助属性:在Tools->Object Identifacation(Mandatory Properties强制属性、Assistive Properties辅助属性)  中,可以进行设置(Add/Remove)。顺序标识符和智能识别同样是在Object Identifacation中启用。

2)在对象资源库中,我们可以对对象的识别方式进行选择。如:我们可以选择哪些属性作为对象的强制属性、辅助属性;选择顺序标识符是哪一个;选择是否启动智能识别。

运行时对象识别方式:强制属性——辅助属性——顺序识别符——智能识别

(13)对象库

①对象库——对象属性

对象库打开:Resources->Object Repository/快捷键按钮/Ctrl+R

②对象库基本操作(增删改查)

在对象库中,我们可以修改对象的一些属性,如对对象的名字进行修改:第一步对对象属性中Name属性的文本框进行编辑;第二步点击测试对象中相应的对象,修改后在代码中相应的对象位置也会进行修改。

查询图标(望远镜)

③对象库操作技巧

i)更新对象:在对象库中,点“update from application”就可以从当前应用程序中更新对象

ii)高亮对象:在对象库中,点“higelight in application”就可以在当前应用程序中很快看到选择对象出现的位置

iii)启用/禁用顺序标识符

iv)启用/禁用智能识别

v)定位页面对象在对象库中的位置:在对象库中,点“locate in repository”,点击应用程序中的对象,很快就可以在对象库中看到

④对象库维护原则

合理规划;尽可能减少对象库的个数;分模块添加对象;定期清理;由一个人更新对象库;对象库的命名应望文生义;定期做对象库的备份

⑤对象库分类

i)独享(per-action):对于每个action都有自己的对象库(通过Ctrl+R的方式打开的是独享对象库)

ii)共享(shared):多个脚本或action共用一个对象库

⑥对象库管理

1)创建共享对象库的方法:

a.从已有对象库中导出:先用QTP打开已经录制完毕的脚本后,选择Resources->Object Repository,然后file->export…取名字导出文件。

对象库文件后缀tsr

b.新建一个对象库,并保存:选择Resources->Object Repository Manager,然后通过应用程序手动添加对象(Add Object)

2)共享对象库方法:

Resources->Associate Repositories,然后选择需要共享的对象库文件,把相应的action加到Associated Actions中,这样action就可以使用共享的对象库文件了。

⑦维护共享对象库

打开Object Repository Manager后,打开要管理的对象库,然后启用Enable Editing进行可编辑操作

(14)插件(Add-in)

①插件概述

QTP支持广泛的应用程序类型,例如常见的Java、.Net等,对于不同的应用程序类型,要使用不同的插件进行测试。

②QTP插件简介

QTP识别不同控件对象类型的一套标准。

插件跟什么语言写的没有关系,跟被测对象有关。

使用原则:只加载需要的插件,不加载多余的插件。使用什么就加载什么。

③内部插件与外部插件

内部插件:QTP安装完成后,默认自带的ActiveX、Web、VB插件

外部插件(需要额外购买license):需要额外安装。如,.Net、Java、Flex、WPF、Web Service等

④插件管理

选中Tools->Option->Display Add-in Manager on startup,就可以在每次启动QTP时显示插件管理界面。

在File->Settings->Properties->Modify可以设置当前脚本所需要的插件

⑤插件与检查点类型的关系

不一样的插件支持的检查点的类型是不同的

⑥编程方式为脚本动态加载插件(自动化模型编程技术)

(15)QTP虚拟对象

①虚拟对象概述

QTP根据自身规则,对测试对象进行了再次封装,形成脚本运行回放时QTP可识别的内部对象。封装后的测试对象类型与真实的测试对象类型往往只是形似,而实际对象不同。

②何时使用虚拟对象

在QTP录制脚本时会遇到对象不能识别的问题时,可以采用创建虚拟对象的方式来进行解决此问题。

③如何使用虚拟对象

新建虚拟对象:Tools->Virtual Object->New Virtual Object

虚拟对象的管理:Tools->Virtual Object->Virtual Object Manager

④虚拟对象使用原则

i)仅针对不能识别的对象进行对象虚拟化

ii)虚拟对象越少越好

iii)当需要存在过多虚拟对象时,那么,需要分析该自动化测试项目的技术可行性

(16)QTP绝对路径、相对路径

①绝对路径:从盘符开始的路径

相对路径:从当前路径开始的路径:移动内容比较容易,不用更新其他页面上的链接;在测试服务器上进行测试也比较容易;节省代码

②设置工作目录:Tools->Optional->Folders(文件夹)。在这里,可以选择脚本所需要的文件夹

关联文件夹下的函数库:Files->Settings->Resources。在这里,可以关联相关的函数库,如函数库在前面设置的文件夹下,即可以使用相对路径的方式添加函数库。

③经常使用相对路径的地方:

i)函数库:Files->Settings->Resources

ii)环境变量:Files->Settings->Environment

iii)场景恢复:Files->Settings->Revovery(撤回)

(17) QTP步骤生成器

①如何使用步骤生成器

Insert->Step Generator

代替人写脚本的一种方法,可以对当前对象库中的对象进行一系列的操作,实现效果和人工写代码的效果一样。操作顺序如下图所示:第一步打开所有测试对象;第二步选择需要测试的对象;第三步点击OK按钮;第四步选择相对应的操作方法;然后就会生成相应的测试代码,完成生成测试步骤。

②如何使用函数生成器

Insert->Function Definition Generator

第一步设置函数名、类型、使用范围;第二步设置函数的参数;第三步添加注释,即可生成相应的函数。

③步骤生成器中隐藏的秘密

QTP中有很多保留对象,我们在步骤生成器的实体对象中都可以找到,这样对测试工作能起到非常好的作用。如下图所示,返回了Data Table中Action1表中的test列表参数

(18)同步点

①同步点概述:当一个应用执行一个步骤后,需要一定的响应时间,而此时脚本是按照代码的执行策略,并没有准备等待系统响应的时间,而是直接执行下一行代码,那么此时QTP可能由于系统响应过慢(对象超时)而抛出错误。

同步点的作用就是插入一段“等待时间”后再执行下一步操作。

②同步点与wait的区别

wait:干等(死等)

同步点WaitProperty:聪明的等(智能)

③QTP三种同步方式(优缺点)

i)sync用法:只有Browser(浏览器对象)和Page(页面对象)才具有Sync方法。

Browser.Sync表示等待IE状态显示为完成后,再进行下一步操作

Page.Sync表示等待页面信息加载完成后,再进行下一步操作

注意:Sync方法只能在Web中使用,这种方法会使QTP等待页面加载完成后,才进行下一步操作。但是它无法判断页面是否加载成功。如果需要判断页面是否加载成功,可以通过判断页面中对象visible的属性值。

if Browser("Google").Page("Google").WebEdit("q").GetROProperty("visible")=true thenmsgbox "加载成功"
elsemsgbox "加载不成功"
end if    

ii)wait 方法:死等。强制QTP暂停运行一段时间,不会判断指定的对象是否出现。不管对象是否出现,当等待时间结束后,QTP都将进行下一步操作。方法:Wait 10。这里的10单位为秒。

iii)WaitProperty方法:聪明的等。在指定的属性出现后或者是指定时间结束后指定的属性还未出现时,在进行下一步操作。这里的比较时间单位是毫秒。

该方法使用除WinMenu对象(菜单对象)外的所有标准Windows对象。

常用的比较方法:micGreaterThan(大于)、micLessThan(小于)、micGreaterThanOrEqual(大于或等于)、micLessThanOrEqual(小于或等于)、micNotEqual(不等于)、micRegExpMatch(正则表达式匹配)

Dialog("Login").WinEdit("Agent Name").WaitProperty"test""cheng"10000

(19)QTP场景恢复

①场景恢复概述

i)当脚本运行期间的意外事件、错误和应用程序崩溃时,会破坏运行会话并歪曲测试结果。尤其是在无人值守的情况下运行测试或组件时,测试或组件会挂起,使用场景恢复可以恢复所需的操作。

QTP中的场景恢复类似于一个触发器。在新建场景恢复的时候首先要设置触发事件,如:run error。就是当run过程中出现错误的时候就会执行你设置的恢复操作。

ii)场景恢复包含的内容:

1)触发器事件:中断运行会话事件。如:可能在屏幕上弹出窗口,或者QTP运行错误

2)恢复操作:为了继续运行测试或组件而需要执行的操作。例如,在弹出窗口中单机“确定”按钮,或者重启windows

3)恢复后测试运行选项:有关执行恢复操作后,QTP应该如何继续,QTP应该从测试或者组件中的哪一点继续(如果完全恢复)的说明。例如,可能要从开始重新启动测试或组件,或者完全跳过一个步骤,继续测试或组件中的下一个步骤。

②如何使用场景恢复

1)Resources->Revovery Scenario Manager启动场景恢复管理

2)新建一个场景恢复,设置触发条件及处理方法

具体步骤:

i)Resources->Revovery Scenario Manager

ii)新建场景

iii)选择触发事件类型(pop-up window弹出窗口、object state对象状态(如:对象不存在、不匹配…)、Test run error测试运行错误、Application crash应用程序崩溃)

iv)选择会导致错误的对象窗口

如,这里选择flight应用程序中登录界面的help按钮弹出界面

v)选择场景恢复的操作(keyboard or mouse operation键盘或鼠标操作、close application process关闭应用程序进程、function call函数调用、restart microsoft windows重新启动微软视窗软件)

vi)这里以function call为例,先选择要调用的函数库,函数库为vbs文件;然后选择函数库中相应的函数,或者新定义一个函数

vii)选择场景恢复的开始步骤(repeat current and continue重复当前步骤并继续、proceed to next step继续下一步、proceed to next action or component iteration继续执行下一个操作或组件迭代、proceed to next test iteration执行下一个测试迭代、restart current test run重启执行当前测试脚本、stop the test run停止测试脚本)

viii)给当前场景命名

ix)将当前场景恢复运用到当测试中或者全局测试中,完成相应的场景测试设计

③场景恢复使用原则与注意事项

i)场景恢复只是测试运行过程中的一种异常处理机制,不能从根本上解决测试运行过程中的所有异常

ii)场景恢复的触发与处理,完成取决于事先定义好的场景恢复触发条件

iii)对于能预知的错误,则使用脚本代码来捕获并处理,不需要使用场景恢复

(20)QTP环境变量

①环境变量概述

可以理解为OTP里充当全局变量作用的变量,用来存放参数值。它存活在整个测试运行过程中,在测试运行过程中,它相当于一个全局变量,在任何一个action中,可以动态对它进行赋值或取值。

②静态环境变量与动态环境变量

i)静态环境变量(Built-in):是内置的环境变量

ii)动态环境变量(User-Defined):是可以自定义和外部导入的

几种重要的静态变量:

1)TestDir:当前测试脚本目录

2)TestName:当前测试脚本名称

3)ActionName:当前测试脚本的action名称

4)ProductDir:QTP的安装目录

5)ResultDir:当前脚本测试报告保存的路径

6)LocalHostName:本机计算机名

③如何使用环境变量

i)File->settings->environment,进入环境变量设置窗口

ii)Built-in内置环境变量

iii)User-Defined用户自定义环境变量

iv)获取环境变量的值:Environmeny("VarName")

v)设置环境变量的值:Environment("VarName") = "yiyangqianxi"

动态环境变量支持从外部导入文件,文件为xml格式,书写格式如下:

<Environment><Variable><Name>TestBoot</Name><Value>D:\QTPTest\</Value></Variable><Variable><Name>URL</Name><Value>https://www.baidu.com</Value></Variable>
</Environment>

(21)QTP中的function与sub的区别

①Function与Sub概述

Sub(子程序):sub是子程序,它将一段具有某种特定功能的语句区块单独编写成一个独立的程序,给予特定名称。

Function(函数):表示每一个输入值对应唯一输出值的一种关系,具备Sub功能

②Function与Sub相同点

i)Sub和Function都是vbscript的过程

ii)可以传递参数

iii)是业务操作或业务处理的封装,都可以被重复调用

③Function与Sub不同点

i)Sub无返回值,而Function可以有返回值

ii)调用Sub和Function的方法也略有差异

Sub例子:

Sub 谈恋爱()给MM打电话陪MM逛街给MM送礼物
End Sub

Sub无返回值,调用方法Call 谈恋爱()

Function例子:

Function 谈恋爱()给MM打电话陪MM逛街给MM送礼物IF(MM愿意和他结婚) Then谈恋爱 = 成功Else谈恋爱 = 失败End If
End Function

Function可以有返回值,返回值在代码中的书写方法为:函数名 = 返回值。Function函数可以在调用的时候把函数返回值赋值给一个变量,如result = 谈恋爱()

(22)QTP数据表的Global与Local

在一个测试项目中,可以有很多的Action。在Action1中添加Action2的方法:在Action1中单机右键,选择Action->Insert Call To New->添加Action2/Insert->Call To New Action

Global是全局的,有几行数据脚本程序就要回放几次

Local是局部的,有几行数据action就要回放几次

①设置Action的重复次数:1)在File->Settings->Run中,设置的是Global和Action1中的数据执行次数:Run one iteration only运行程序时,只执行一行数据;Run on all rows会执行所有行数据;Run from row to row执行规定行的数据。

②设置在Action1中调用Action2时,Action2的Data Table中数据的执行次数:使用关键字视图打开Action1,选中Action2单机右键,选择Action Call Properties,选择Action2执行的次数。

global设置为Run On all Rows时:

i)当global有不止一行的数据,action call property->Run On all Rows,程序每次运行时,action中每行都要执行。

ii)当global有不止一行数据,action call property->Run one iteration only时:

a.如果global的行数>action2的行数,当action2执行到最后一行时,不管此时global的行数为几,下次回放时,action都执行最后一行。

b.如果global的行数<action2的行数,action2就执行不到最后一行。

c.如果action1的行数<action2的行数,在action1中调用action2时,会重复执行action2的行数次数

(23)手工测试VS自动化测试

①手工测试优点:不可替代(用户界面测试、用户体验测试、新开发功能的测试)

②自动化测试优点(重复不知疲倦、更多更繁琐测试、缺陷步骤可重现性强、用于回归测试、可复用性强、适用于敏捷开发与测试、提高软件爱你测试的效率)

③手工测试VS自动化测试

相辅相成,共同协作

(24)QTP脚本编码规范

①常量命名规范

vbscript提供了Const声明,可以真正创建常量。因此,应该尽量使用Const声明。使用混合大小写的格式来命名,并且使用“con”作为前缀,如:Const conFirstName

②变量命名规范:使用数据类型的前缀来进行命名

数据类型 前缀 例子
String(字符串类型) str strName
Integer(整数类型) int intNumber
Boolean(布尔类型) b bFlag
Date(日期类型) d dCurrentDate
Object(对象类型) obj objSAPSeesion
Class(类对象类型) cls clsADOOB
Dictionary(字典类型) dic dicTestData
Array(数组类型) arr arrScenarios
File(文件类型) f fTestResult

③对象命名规范:对控件对象也使用前缀进行标识

对象类型 前缀 示例
3D面板(3D panel) pnl pnlGroup
动画按钮(animation button) ani aniMailBox
复选框(checkbox) chk chkReadOnly
组合框、下拉列表框(combo box) cbo cboEnglish
命令按钮(command button) cmd cmdExit
公共对话框(dialog) dlg dlgFileOpen
框架(frame) fra fraLanguage
水平滚动条(horizontal scroll bar) hsb

hsbVolume

垂直滚动条(vertical scroll bar) vsb vsbRate
图像(image) img imgIcon
标签(label) lbl lblHelpMessage
直线(line) lin linVertical
列表框(list) lst lstPolicyCodes
路径 spn spnPages
文本框(textbox) txt txtLastName

④代码注释规范

代码注释要写描述、依赖、参数、返回值、作者、时间

⑤格式化代码

程序块、嵌套块缩进4个空格;过程的概述注释缩进1个空格

(25)QTO自动化测试用例设计

①自动化测试用例与手工测试用例

i)手工测试定位:有较好的异常处理能力;人工执行用例具有一定的步骤跳跃性;能细致的定位问题;主要用来发现功能缺陷

ii)自动化测试定位:执行对象是脚本,任何一个判断都需要编码定义;用例步骤之间关联性强;主要用来保证产品主体功能正确完整;让手工测试从繁琐的工作中解脱出来;自动化测试定位为冒烟测试和回归测试。

②自动化测试用例设计原则

不是所有的手工测试都要转为自动化测试;

不要选择流程太复杂的用例,可以考虑把流程拆分成多个用例来实现脚本;

用例可以带有目的性,比如哪些用来做冒烟测试,哪些用来做回归测试;

选取的用例可以是繁杂,重复的部分;

用例可以是主体流程,这部分适用于冒烟测试;

自动化测试可以用来做配置检测、数据库检查。

③自动化测试用例设计方法

当前的测试用例前置条件和数据要求要写清楚;

每一个步骤都要设计衔接好;

每一个步骤要描述,验证内容,预期结果需要描述清楚;

用例之间不要有关联性,自动化测试开发同样是软件开发工程,脚本编写同样要提高内聚低耦合的要求;

并不是每一个步骤都要检查点;

不需要在多个地方重复相同的验证;

尽量做到测试数据状态前后一致,保证可重复;

不能随意对用例的检查点进行增减,对用例中不能实验的验证,要进行标记,或者将用例进行拆分

(26)如何展开自动化测试

①项目调研分析

被测系统是否适合做自动化测试;

被测系统哪些功能或模块适合做自动化测试;

使用何种测试工具、测试框架。

②测试资源准备

人员、机器、时间

③有效开展自动化测试

项目整体测试业务熟悉与规划;

制定自动化测试项目计划;

开展自动化测试时,要充分考虑不能对原有的日常测试造成影响;

QTP自动化测试入门相关推荐

  1. 《精通QTP——自动化测试技术领航》—第1章1.2节帮助文档(HELP)-QTP的说明书...

    本节书摘来自异步社区<精通QTP--自动化测试技术领航>一书中的第1章1.2节帮助文档(HELP)-QTP的说明书,作者余杰 , 赵旭斌,更多章节内容可以访问云栖社区"异步社区& ...

  2. 《QTP自动化测试进阶》(1)

    学习<QTP自动化测试进阶>第一章. 采用不同的项目开发模型对自动化测试有不同的影响. (1)瀑布模型:瀑布模型在需求定义方面做得很好,这对自动化测试是有益的,包括可以尽早选择合适的自动化 ...

  3. 转:一个简单的基于WEB的QTP自动化测试框架-SAFFRON

    来源: http://www.itestware.com/ctest/index.php?option=com_content&view=article&id=62:webqtp-sa ...

  4. python自动化测试看什么书-Python自动化测试入门,看这一篇就足以

    第一时间关注 Python 技术干货! 阅读文本大概需要 5 分钟. 上篇文章讲了自动化测试的重要性,今天就给大家讲讲自动化框架 Robot Framework 的安装和 demo 演示. 为什么选择 ...

  5. python自动化_Python自动化测试入门必读

    入门自动化测试必读 自动化测试概念 自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程.通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期 ...

  6. 软件测试技术qtp,51Testing独家连载:(四十一)精通QTP——自动化测试技术领航

    操控方式2: '获取DOM对象 setoDocument = Browser("Browser").Page("Page").Object '使用GetElem ...

  7. python自动化测试-Python自动化测试入门,看这一篇就足以

    第一时间关注 Python 技术干货! 阅读文本大概需要 5 分钟. 上篇文章讲了自动化测试的重要性,今天就给大家讲讲自动化框架 Robot Framework 的安装和 demo 演示. 为什么选择 ...

  8. QTP自动化测试从零基础到精通进阶(脚本测试、VBS语法、描述性编程、测试框架)...

    QTP自动化测试从零基础到精通进阶(脚本测试.VBS语法.描述性编程.测试框架) 网盘地址:https://pan.baidu.com/s/19yUptC8PBFZFfH-VpyUUpQ 提取码: a ...

  9. python人像录制加声音_Python自动化测试入门必读

    入门自动化测试必读 自动化测试概念 自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程.通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期 ...

最新文章

  1. 浅谈先验分布和后验分布
  2. 141 springmvc中 转发 与 重定向
  3. mysql中如何删除表中int约束,MySQL中的约束,添加约束,删除约束,以及其他修饰
  4. tomcat(17)启动tomcat
  5. MySQL MHA 搭建测试
  6. 【java学习之路】(java框架)007.IoC和DI注解开发
  7. in the java search_Java SearchRequest.indices方法代碼示例
  8. C语言模拟信号量解决同步、互斥问题
  9. 基于中文形近字相似度与加权编辑距离融合实现的汉字纠错算法
  10. Python学习 - 冯诺伊曼体系结构建模与模拟 之TOY模型机
  11. 纯CSS3画哆啦A梦
  12. H5响应式网站制作那些事
  13. svn下载与安装(内含汉化,亲测可用)
  14. 回溯(python)
  15. Linux上安装编译lzo报错:Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.7:run 已解决
  16. 109 个实用 Shell 脚本实例,代码清晰拿来就能用!(附pdf)
  17. 七牛云 php 服务器,七牛云3:通过业务服务器上传文件到七牛云
  18. vue 实现打印功能
  19. Mac软件卸载后图标任然残留的删除方法
  20. 探索有交易成本的环境下期权Delta对冲频次与定价效果的关系

热门文章

  1. 计算机基础理论笔试题
  2. 全球与中国啤酒洗发水市场深度研究分析报告
  3. 青云直上云霄——云评测|2019年技术盘点微服务篇(二)
  4. Windows CE在嵌入式工业控制系统中的应用思考
  5. Unity初学者笔记——input事件
  6. IE中输入框绑定input事件触发解析(input事件初始化自动执行问题解决)
  7. 解决1099端口被占用的问题
  8. Docker的准备,安装,初体验
  9. python复制文件的命令_python 实现cp命令 复制文件和文件夹
  10. js判断是否是数字简单方法