QTP运行缓慢的常见原因

2024-05-09 08:32
文章标签 常见 运行 原因 缓慢 qtp

本文主要是介绍QTP运行缓慢的常见原因,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 脚本中有太多的Wait语句

分析:Wait语句的意思是一直等到超时时间后才继续执行脚本,等待的时间是固定的,这样就会造成时间浪费,导致脚本运行缓慢。

解决方法:使用ExistSyncWaitProperty方法来代替wait

2. 开启了智能识别

分析:QTP在识别对象的过程中如果对象的强制属性和辅助属性还不能唯一匹配到对象的话,会激活智能识别模式,由于智能识别的算法复杂,会消耗一定的资源开销,所以导致脚本运行缓慢。

解决方法:全局关闭(File-->Settings-->Run)或者部分关闭智能识别(Tools-->ObjectIdentification根据对象类型)

3. 由于错误页面而找不到对象导致的对象同步超时

分析:由于操作步骤错误或者环境原因,打开了一个错误的页面,使得后续的对象都无法找到。比如我需要在同一个页面操作10个对象,而恰巧由于网络问题网页发生错误,如果每个对象的默认超时时间是20秒的话,那么10个对象就是200秒,也就是说一旦页面跳转错误,是非常容易导致脚本运行缓慢的!

解决方法:确保业务流程正确、尽量减少环境因素对自动化测试的影响、使用恢复场景来处理错误页面

4. 脚本中ChildObjects 方法过多使用

分析:ChildObjects方法一般都是采用循环遍历,无疑会加重系统资源开销,如果再加上网页的元素很复杂的话,那么势必会影响脚本的性能。

解决方法:尽量避免使用子对象的方法去操作对象,可以用DOM的方式代替

5. 脚本的循环体中有过多冗余循环

分析:有时我们会在一个循环体中再增加一些条件分支语句,用于满足特定的测试需求,如果循环次数少的话那还好,但要是循环次数非常多的话就会大大降低脚本性能。

解决方法:在循环体的选择分支语句中根据测试需求适当增加Exit ForExit Function之类的语句

6.恢复场景的激活方式设置为"On every step"

分析:恢复场景的触发方式有三种:On every stepOn errorNeverOn every step的意思在每一步运行完后激活恢复场景,去探测场景设置中的trigger有没有触发,这种做法同样也会降低脚本的性能。

解决方法:激活方式选用On error(可能会Miss一些场景)、手工激活恢复场景(Recovery对象)

7. 默认同步时间设置过长

分析:在QTP的运行设置中默认对象同步的超时时间是20秒,如果是测Web程序的话还有60秒导航超时时间。

解决方法:在File-->Settings选项中调低默认的超时时间

8. QTP的运行模式没有设置成Fast

分析:QTP的运行模式分为NormalFastNomal模式允许在每一步运行完后都有延迟时间,而Fast模式则没有延迟时间。

解决方法:在Tools-->Options-->Run中设置运行模式为Fast

9. 开启了自动截图功能

分析:自动截图功能对于脚本的出错调试提供了很大的方便,能使我们以更直观的方式去分析和定位错误,但同时在一定程度上也会使我们的脚本运行缓慢。

解决方法:在Tools-->Options-->Run选项中禁用自动截图功能,如果确实需要此功能那么可以选择"Forerrors"或者"For errors and warnings"


10. 开启了视频录制功能

分析:和截图一样,视频录制功能同样可以使我们更方便地回溯脚本运行的整个过程,但是其代价也是牺牲性能。

解决方法:在Tools-->Options-->Run选项中禁用视频录制功能

11. 开启了系统实时监控

分析:系统实时监控是为了在运行自动化测试的同时,获取一些系统的性能数据,比如内存占用率,CPU占用率,硬盘读写速度等等,通常是用来满足性能测试的需要。如果设置的监控时间太频繁的话,也会对脚本的性能造成一定影响。

解决方法:在File-->Settings-->Local System Monitor选项中禁用系统实时监控,或者将监控的间隔时间设置得长一些。

 

[以上所说的各种影响脚本运行缓慢的设置问题都是基于QTP10.0版本的,如果版本不同,可能该设置所在的菜单位置不同,甚至有些功能也没有。如果遇到这种情况的,请自动忽略该条



这篇关于QTP运行缓慢的常见原因的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/972907

相关文章

java.sql.SQLTransientConnectionException连接超时异常原因及解决方案

《java.sql.SQLTransientConnectionException连接超时异常原因及解决方案》:本文主要介绍java.sql.SQLTransientConnectionExcep... 目录一、引言二、异常信息分析三、可能的原因3.1 连接池配置不合理3.2 数据库负载过高3.3 连接泄漏

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

深度剖析SpringBoot日志性能提升的原因与解决

《深度剖析SpringBoot日志性能提升的原因与解决》日志记录本该是辅助工具,却为何成了性能瓶颈,SpringBoot如何用代码彻底破解日志导致的高延迟问题,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言第一章:日志性能陷阱的底层原理1.1 日志级别的“双刃剑”效应1.2 同步日志的“吞吐量杀手”

MySQL ORDER BY 语句常见用法、示例详解

《MySQLORDERBY语句常见用法、示例详解》ORDERBY是结构化查询语言(SQL)中的关键字,隶属于SELECT语句的子句结构,用于对查询结果集按指定列进行排序,本文给大家介绍MySQL... 目录mysql ORDER BY 语句详细说明1.基本语法2.排序方向详解3.多列排序4.常见用法示例5.

MySQL 索引简介及常见的索引类型有哪些

《MySQL索引简介及常见的索引类型有哪些》MySQL索引是加速数据检索的特殊结构,用于存储列值与位置信息,常见的索引类型包括:主键索引、唯一索引、普通索引、复合索引、全文索引和空间索引等,本文介绍... 目录什么是 mysql 的索引?常见的索引类型有哪些?总结性回答详细解释1. MySQL 索引的概念2

Java.lang.InterruptedException被中止异常的原因及解决方案

《Java.lang.InterruptedException被中止异常的原因及解决方案》Java.lang.InterruptedException是线程被中断时抛出的异常,用于协作停止执行,常见于... 目录报错问题报错原因解决方法Java.lang.InterruptedException 是 Jav

MySQL多实例管理如何在一台主机上运行多个mysql

《MySQL多实例管理如何在一台主机上运行多个mysql》文章详解了在Linux主机上通过二进制方式安装MySQL多实例的步骤,涵盖端口配置、数据目录准备、初始化与启动流程,以及排错方法,适用于构建读... 目录一、什么是mysql多实例二、二进制方式安装MySQL1.获取二进制代码包2.安装基础依赖3.清

在IntelliJ IDEA中高效运行与调试Spring Boot项目的实战步骤

《在IntelliJIDEA中高效运行与调试SpringBoot项目的实战步骤》本章详解SpringBoot项目导入IntelliJIDEA的流程,教授运行与调试技巧,包括断点设置与变量查看,奠定... 目录引言:为良驹配上好鞍一、为何选择IntelliJ IDEA?二、实战:导入并运行你的第一个项目步骤1

解决1093 - You can‘t specify target table报错问题及原因分析

《解决1093-Youcan‘tspecifytargettable报错问题及原因分析》MySQL1093错误因UPDATE/DELETE语句的FROM子句直接引用目标表或嵌套子查询导致,... 目录报js错原因分析具体原因解决办法方法一:使用临时表方法二:使用JOIN方法三:使用EXISTS示例总结报错原

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、