QTP测试CS端遇到的问题及解决方法总结
qt开发遇到的问题及解决方法
qt开发遇到的问题及解决方法以"Qt开发中遇到的问题及解决方法"为题,本文将探讨在Qt开发过程中常见的问题,并提供相应的解决方法。
Qt是一个跨平台的C++应用程序开发框架,被广泛应用于图形用户界面(GUI)和嵌入式系统开发中。
然而,Qt开发也存在一些常见问题,下面将对其中一些问题进行详细讨论。
1. 问题:Qt应用程序无法正常编译和构建解决方法:首先,检查是否正确安装了Qt开发工具和相关的编译器。
其次,确保项目文件(.pro)中的配置正确,并且必要的库文件和头文件路径设置正确。
还可以尝试清理构建目录并重新构建项目。
如果问题仍然存在,可以查看编译器输出的错误信息,并根据错误信息进行逐步排查。
2. 问题:Qt应用程序运行时出现崩溃或异常终止解决方法:首先,检查代码中是否存在内存访问错误、空指针引用或数组越界等问题。
其次,使用调试工具(如Qt Creator的调试器)对程序进行调试,以定位问题所在。
可以使用断点来逐步执行代码,并观察变量的值是否符合预期。
另外,注意处理异常情况和错误,确保代码的健壮性。
3. 问题:Qt界面显示异常或错位解决方法:首先,检查界面布局文件(.ui)中是否存在错误的布局设置或控件属性。
其次,确保界面元素的大小和位置设置正确,并且与不同屏幕分辨率的适配有关的代码正确实现。
还可以使用Qt 的布局管理器来自动调整界面元素的布局和大小,以适应不同的屏幕尺寸。
4. 问题:Qt界面响应慢或卡顿解决方法:首先,检查是否存在耗时的操作阻塞了主线程,例如在UI线程中执行了大量计算或IO操作。
如果有耗时操作,可以将其放在后台线程中执行,以避免阻塞UI线程。
其次,优化代码和算法,减少不必要的计算和资源消耗。
另外,可以使用Qt的定时器机制来分批处理耗时任务,以保持界面的流畅性。
5. 问题:Qt应用程序在不同平台上的兼容性问题解决方法:首先,确保代码中没有使用特定于某个平台的API或特性。
测试过程中遇到的问题和解决方案
测试过程中遇到的问题和解决方案
在测试过程中可能会遇到一些问题,常见的问题及其解决方案如下:
1. 无法复现问题:有时候测试人员可能无法复现报告的问题。
解决方案可以是重新执行测试用例,确保正确的输入和操作步骤,或者尝试在不同的环境中进行测试。
2. 难以重现问题:有时候测试人员可能无法重现用户报告的问题。
解决方案可以是更仔细地跟踪并记录测试过程中的每个步骤,或者尝试与用户进一步沟通以获取更多的细节。
3. 兼容性问题:在不同的设备、操作系统或浏览器上进行测试时,可能会出现兼容性问题。
解决方案是在尽可能多的环境中进行测试,并确保软件适配各种不同的配置。
4. 性能问题:软件可能会在某些场景下出现性能问题,如响应时间慢或高负载下崩溃。
解决方法可以是使用性能测试工具对软件进行性能测试,并进行优化或调整软件的配置。
5. 安全问题:软件可能会存在安全漏洞,如数据泄露或未经授权的访问。
解决方法可以是进行安全性测试,并修复所有发现的漏洞或脆弱性。
6. UI问题:用户界面可能会出现设计问题或不一致的问题。
解决方法可以是进行用户界面测试,并与设计团队合作解决问题。
7. 文档问题:软件的用户文档或技术文档可能不完整或不准确。
解决方案是进行文档测试,并向开发团队提供反馈以修复或改进文档。
总体来说,要解决测试过程中的问题,测试人员需要仔细分析问题,并与开发人员、设计人员和相关团队紧密合作,以找到合适的解决方案。
软件测试中的常见问题解决方案
软件测试中的常见问题解决方案软件测试是确保软件质量的重要环节,通过检测和评估软件系统的功能、性能和可靠性等方面,以提高软件品质和用户体验。
然而,在软件测试过程中经常会遇到一些常见的问题。
本文将详细介绍这些问题,并提供相应的解决方案。
一、测试用例设计不全面问题原因:测试用例不全面可能导致未覆盖到系统的各个功能模块,从而无法发现潜在的问题。
解决方案:应采取综合的测试用例设计方法,如等价类划分、边界值分析、场景分析等,确保覆盖到所有可能的测试场景。
同时,可以借助测试工具来辅助生成测试用例,提高测试覆盖率。
二、测试环境配置不当问题原因:测试环境配置不当可能导致测试结果与实际情况不一致,无法准确评估软件的性能和稳定性。
解决方案:在测试前需对测试环境进行充分的准备和配置,包括硬件、操作系统、数据库等。
确保测试环境与实际生产环境尽可能一致,以减少环境差异带来的影响。
三、测试数据准备困难问题原因:测试数据不完备或不准确可能导致测试覆盖不全,无法发现软件在不同情况下的稳定性和可靠性问题。
解决方案:应针对不同场景准备相应的测试数据,包括正常数据、异常数据、边界数据等。
可以借助自动化测试工具来生成测试数据,提高测试效率和准确性。
四、缺乏有效的缺陷管理问题原因:缺乏有效的缺陷管理方法可能导致测试过程中无法及时发现和解决问题,延误软件的交付和上线时间。
解决方案:建立完善的缺陷管理系统,确保每一个发现的缺陷都能及时记录、跟踪和解决。
对于高优先级的缺陷,应尽快修复并进行验证,确保软件的质量。
五、对测试需求理解不准确问题原因:对测试需求理解不准确可能导致测试目标模糊,测试过程中无法有效评估软件的功能和性能。
解决方案:在测试开始前,与项目团队充分沟通,明确测试的目标和需求。
通过与产品经理、开发人员等进行有效的沟通,确保对需求的准确理解,以便于制定合适的测试方案。
六、测试进度控制困难问题原因:未能有效控制测试进度可能导致测试工作无法按时完成,延误整个软件开发周期。
QTP一些问题的解决方法
以下是我经常遇到的问题:一、无法识别控件。
二、错误回放过程未知弹出窗口。
三、加载.net插件后和TD的关联问题。
四、动态加载元素的识别问题。
五、调用外部dll的问题。
六、随机验证码的问题。
问题一,解决办法有三种:1、更改QTP自身对某控件的识别方式,在tools——Object Identification 中。
在这里列出了所有QTP能识别的控件,以及控件的识别方式。
你可以给他添加X、Y坐标进行识别。
或更明显的,列表中的信息,不按名称识别,而是按ID 识别。
这个修改可以解决一些问题,具体的赶紧动手试试吧……2、使用虚拟物件,来定义一个控件,在tools——Virtual Object 中。
在这里可以自定义一个控件。
例如在ASP的程序中,程序出错,在客户端的表现形式大部分是一样的,你可以把整个错误页面当成一个控件来识别(感觉不错)。
如果加一个判断,出错后你想做什么就由你自己定了。
3、使用低级录制或鼠标录制。
用Test——LowLevelRecording/AnlogRecording 吧,用它录制就不需要什么设置了,他会记录你的程序控件相对屏幕的位置。
用LowLevelRecording还有代码可改,用AnlogRecording动作就被封装了(维护性极差)。
两者因实际环境更取其长吧……问题二的解决过程:关于弹出提示的问题,我当时需要情况是这样的。
一个信息录入系统,由于数据量很大,查询需要一段时间。
QTP回放时动作比较快,点了保存,程序还没反应过来它就进行了下一步操作。
这时的操作就和录制时不一样了,程序给出一个提示,但这个提示是录制过程没有的。
弹出框是一般都是POP形势(至上)的,导致QTP无法继续回放,结果就是回放失败。
解决办法有两个:1、进行判断,当出现这个提示时,点是/否/取消按钮。
2、通过Tools——Recorvery Scenario Manager 设置默认操作。
我最初就是用的第一种方法。
QTP常见问题
网址:/Hacker/archive/2010/06/08/1754349.htmlQTP常见问题1、生手如何快速掌握该工具呢这个问题可推广为如何开始学习一个自动化测试工具开始前必须理解的两个问题:1、仅仅录制是不够的2、并不是每个都可以做自动化测试理解了前面的两个问题之后,才开始学习一个工具:1、阅读工具的帮助文档2、熟悉编程语言3、参加网上的论坛4、找个小项目练手5、找做脚本的审查6、使用工具附带的一些样例代码最后注意:1、如果连变量和常量、整型和浮点型、函数、方这些都没弄懂的话,请再三考虑是否要开展自动化测试。
2、如果不理解或者不愿意用loop、while、for、until等循环语句、if、switch、select等条件语句的话,将碰到很多问题。
3、如果不理解类、对象、函数、方,或者喜欢到处用全局变量的话,的脚本将很难采用面向对象的思想,脚本可以工作,但是不容易理解。
4、如果不喜欢测试过程,只喜欢开发不喜欢测试的话,请再三考虑要不要开始学习自动化测试。
--2、测试脚本应该也是重复工作,那有什么好用的测试用例库建立、管理软件?主要是想知道一下脚本构件库,脚本复用的问题!测试脚本要是也像软件工程一样,也应该有一个设计模式的,不管是工厂模式、适配器模式还是其它等等,脚本有建立构件库吗??没错,测试脚本的开发也有很多重复的工作,因此要善于重用脚本。
至于测试用例的建立和管理,如果QTP与QC(Quality Center)整合的话就比较方便地实现了,在QC中不仅可以管理手工测试用例,而且使用BPT(Business Process Testing)自动化测试框架或者思想,可以有效整合QTP,实现自动化脚本的创建、实现和执行过程的统一管理。
自动化测试脚本的开发与软件代码开发有很多思想是一致的,开发倡导设计模式的应用,自动化测试也倡导脚本设计模式,例如函数库结构、数据驱动结构、关键字驱动结构...--3、想通过QTP录制上面的脚本后,让QTP实现自动的点击上面的10个链接,不会来点击。
性能测试问题总结
性能测试问题总结在软件开发和系统优化的过程中,性能测试是至关重要的环节。
通过性能测试,我们可以发现系统在处理大量用户请求、高并发场景以及复杂业务逻辑时可能出现的性能瓶颈和问题。
然而,在进行性能测试的过程中,往往会遇到各种各样的挑战和问题。
接下来,我将对常见的性能测试问题进行总结和分析。
一、测试环境问题1、硬件配置不一致在性能测试中,如果测试环境的硬件配置与生产环境存在较大差异,那么测试结果的参考价值就会大打折扣。
例如,生产环境使用的是高性能服务器,而测试环境使用的是配置较低的服务器,可能导致测试结果显示系统性能良好,但在实际生产环境中却出现性能瓶颈。
2、网络环境差异网络环境的不同也会对性能测试结果产生影响。
测试环境中的网络带宽、延迟和丢包率等参数可能与生产环境不同,从而导致测试结果无法真实反映系统在实际网络环境中的性能表现。
3、软件版本不一致测试环境中使用的软件版本与生产环境不一致,可能会引入一些未知的差异。
例如,数据库版本、中间件版本的不同,可能会导致性能表现的差异。
二、测试脚本问题1、脚本逻辑错误性能测试脚本的逻辑如果存在错误,可能会导致测试结果不准确。
例如,没有正确模拟用户的操作流程,或者在脚本中存在重复请求、遗漏关键步骤等问题。
2、参数化不合理在性能测试中,常常需要对一些数据进行参数化,以模拟真实的用户场景。
如果参数化不合理,例如参数取值范围不合理、参数分布不均匀等,可能会导致测试结果无法反映真实的系统性能。
3、关联和断言设置不当脚本中的关联和断言设置不当,可能会导致测试失败或者测试结果不准确。
例如,关联没有正确获取到动态数据,断言设置过于严格或宽松。
三、测试数据问题1、数据量不足如果测试数据量不足,无法模拟真实的业务场景,可能会导致系统在处理大量数据时出现性能问题。
2、数据分布不合理测试数据的分布如果不合理,例如某些数据类型出现的频率过高或过低,可能会影响测试结果的准确性。
3、数据质量问题测试数据中存在错误、重复或不完整的数据,可能会导致系统在处理数据时出现异常,从而影响性能测试结果。
软件测试工作中使用QTP的总结
软件测试工作中使用QTP的总结---转上一篇/ 下一篇 2009-08-18 13:26:28 / 个人分类:测试查看( 68 ) / 评论( 1 ) / 评分( 1 / 0 )工具软件一段时间不用就容易手生,有个备份整理以后复习都事半功倍。
之前就打算好好弄一下一直拖着没动笔。
网上QTP的学习资料大把大把,那些基础的理论东西看过就过了,实践才是王道,操作几个小时胜过看一天的说明文档。
这里列一些我在用QTP时遇到印象比较深刻的问题和解决方案,其他的小问题属于QTP熟练操作的范畴就不赘述了。
因为项目需要接触了差不多三个月的QTP,自知离QTP高手还有段距离,学无止尽,有学习QTP的朋友欢迎发表高见大家互相进步~1、QTP自带函数print调试代码的时候一般习惯用Debug或者Msgbox函数。
监视变量运行时的值用Msgbox,个人感觉不方便的一点就是每次在msgbox窗口弹出来后,脚本会暂停执行,等到鼠标点确定后窗口才会关闭继续运行后续脚本,真的很烦,做自动化测试的时候我真的是已经懒到不愿意动一根手指头。
某天无意发现QTP 自带的函数print也可以实现查看变量信息,窗口是非模式的,运行时变量值在QuickTest Print Log窗口上输出但脚本不用停下来等,而且可以在一个session运行完了之后查看所有需要监视的变量值。
Eg:Dim pp=Browser("xx").page.("xx").webedit("object_name").GetROProperty("value")print p2、calender控件一般日期格式字段是同时支持手填日期格式的text field和用鼠标点日历控件选择。
但是在DMPOD系统里发现部分日期格式的字段居然disable了用户手动输入的属性,只能靠点日历控件来选择日期。
结果录到的脚本全变成了img.click,无法回放。
4.总结上机调试过程中所遇到的问题和解决方法及感想。
4.总结上机调试过程中所遇到的问题和解决方法及感想。
标题:上机调试中的问题与解决方法在软件开发过程中,上机调试是非常重要的一环。
在这个阶段,我们往往会遇到各种各样的问题,需要及时解决。
本文将从深度和广度的角度,针对上机调试过程中遇到的问题及解决方法进行全面评估,并共享个人的感想和理解。
1. 问题的总结和分类在进行上机调试时,我们可能会遇到各种问题,包括但不限于代码逻辑错误、编译错误、运行时错误等。
我们需要将问题进行总结和分类,以便更好地解决问题。
在过去的上机调试中,我遇到的问题主要分为以下几类:1.1 逻辑错误:在编写代码过程中,由于对逻辑理解不够深入或者粗心大意,导致程序出现逻辑错误,无法得到正确的输出。
1.2 编译错误:代码编译时出现语法错误、拼写错误等,导致编译失败。
1.3 运行时错误:程序编译通过后,在运行过程中出现各种异常,如数组越界、空指针引用等。
2. 解决方法的探讨对于不同类型的问题,我们需要采取不同的解决方法。
下面我将针对上述几类问题进行解决方法的探讨:2.1 逻辑错误的解决方法:在面对逻辑错误时,我们首先需要仔细审查代码,逐行调试,并使用调试工具来逐步定位错误的位置。
在定位到问题所在后,可以通过修改代码逻辑或者添加调试输出来解决问题。
2.2 编译错误的解决方法:编译错误通常是由于语法错误或者拼写错误导致的。
在遇到编译错误时,我们需要仔细查看编译器给出的错误提示,并逐一排查错误所在的代码行,进行修改和调整。
2.3 运行时错误的解决方法:在遇到运行时错误时,我们需要运用调试工具进行单步调试,逐步跟踪程序的执行过程,确定错误出现的原因。
可以通过修改代码或者增加异常处理来解决问题。
3. 个人观点和总结在上机调试的过程中,我学到了很多问题的解决方法和调试技巧。
逐步解决问题的过程让我更加深入地理解了程序的运行机制和逻辑结构。
也意识到了自己在编程能力和代码规范上还存在一些不足之处。
我会更加努力地学习和提升自己的编程能力,以便更好地解决上机调试中遇到的问题。
QTP简介及常见问题
◆Resources
添加一些之前设置的公共函数,如:调用录制键盘操作函数。
◆Parameters
增加,修改,删除 参数
◆environment
环境变量设置(内部,外部)
◆Web
Browser navigation timeout[ ]: 设置运行测试步骤之前 等待网页加载时间的最大值
◆java
2 .Tools-> Web Event Recording Configuration
点击 Custom Settings按钮,弹出设置webObject Event页, 如下图:
(a) 设置WebElement的事件 选中左侧窗口的WebElement,点击event -> add > onmouseover 。并确定在Listen栏内状态是If Handler 。 record栏内,状态是enabled。 再点击event -> add -> onmouseoout 。并确定在 Listen栏内状态是If Handler 。 record栏内,状态是 enabled。 再点击event -> add -> onClick 。并确定在Listen 栏内状态是Always 。 record栏内,状态是enabled。 如下图:
第二步:开始录制测试脚本 点选【Automation】→【Record】或是点选工具列上的 【Record】按钮。 第三步:开始录制 例如:录入一条部门信息 双击“工资管理→基础设置→部门”弹出编辑界面, 单击【新增】录入代码:gl, 节点类型:汇总节点, 名称:管理部门, 单击【保存】ok. 第四步:停止录制 在QuickTest,点选工具列上的【Stop】按钮,停止录制, 此时即完成以“博科myerp9.6 普及版”为 范例录制的“部门” 的【新增】与【保存】。
qt开发过程中遇到的问题和处理方案
qt开发过程中遇到的问题和处理方案QT开发过程中遇到的问题和处理方案引言在QT开发过程中,会遇到各种各样的问题,如编译错误、功能实现困难等。
本文将介绍一些常见问题,并提供相应的处理方案,以帮助QT开发者更好地解决问题。
问题列表及处理方案1.编译错误–分析错误信息:仔细阅读编译器给出的错误信息,确定具体错误的位置和原因。
–检查代码:检查代码中的语法错误、缺少头文件等问题。
–清理和重建工程:尝试清除构建目录并重新构建工程。
2.界面布局问题–使用布局管理器:使用Qt提供的布局管理器(如QVBoxLayout、QHBoxLayout等)来实现自适应的界面布局。
–调整控件属性:根据需求调整控件的大小、位置和对齐方式等属性,以获得满意的界面布局效果。
3.信号与槽连接问题–检查信号和槽的函数签名:确保信号和槽的函数签名一致,包括参数类型和数量。
–使用Qt提供的connect函数连接信号和槽:使用Qt提供的connect函数来建立信号和槽之间的连接关系。
–检查对象的生命周期:保证信号和槽所属的对象在连接时都是有效的,避免出现悬空指针问题。
4.界面刷新问题–使用Qt的绘图系统:采用Qt提供的绘图系统(如QPainter、QPainterPath等)来手动绘制需要刷新的界面部分。
–刷新界面:使用QWidget的update函数或QGraphicsView 的repaint函数来触发界面的刷新。
5.跨平台兼容性问题–尽量使用Qt提供的跨平台组件:使用Qt提供的跨平台组件,避免直接调用操作系统相关的接口。
–编写平台相关的代码段:对于无法避免的平台相关操作,可以编写平台相关的代码段,并使用条件编译指令来区分不同平台。
–进行跨平台测试:在不同的操作系统上进行测试,确保程序在各个平台上均能正常运行。
结论本文介绍了在QT开发过程中常见的问题和相应的处理方案,包括编译错误、界面布局问题、信号与槽连接问题、界面刷新问题和跨平台兼容性问题。
QTP使用问题集锦
QTP使用问题集锦对脚本的运行速度进行设置- by ViajarTOOLS->OPTIONS->RUN->RUN MODE 设置就可以了;一般可以设置为500或者1000值,也就是毫秒;使用QTP录制XQP/OA时的更多按钮不能被录制到的解决- by Viajar方法一:使用Analog录制模式录制,点击了更多中的按钮是无法刷新页面的;方法二:tools->virtual objects->new virtual objects->选取控件,这个方法还是无效;方法三:在QTP的tools->web event recording configuration->custom settings->webelement->event->add->onmouseover & click & onmousedown 等几个,还是无法录制XQP和OA中的更多按钮;方法四:在QTP的option->web->advanced->record setting->Record Navigate for all navigation operations使用了还是无法录制;解决方法五:在QTP的option->web->advanced->record setting->User standard Winsows mouse events,结果可以录制,回放了,但是在录制过程中要注意登陆的时候不能输完密码后马上按回车,这样回放时会停留在登陆那里,应该使用鼠标来点击登陆;而且在录制完关掉IE时会报内存错误;在KEYWORD VIEW模式下快速操作树- by Viajar在VIEW中使用EXPAND ALL/COLLAPSE ALL可以对树形ACTION进行展开和收缩;QTP录制过程加入screen - by Viajar点击Tools-Options-Run-Save movice to results-Always就可以把screen放到报告中,这样做会造成运行时很慢,CPU占用率100%,而且报告文件很大,在Res中可以看到屏幕的操作过程,相当于屏幕扑捉专家工具来录制,不知道有没办法解决CPU占用过大的问题?可否选择录制文件的格式类型?可否选择录制的帧数?解决CPU的方法大概可以为:录制时并不是马上写到文件中,而是写到内存中,跑完以后在写到文件中;可以多开一个线程或进程来分开两个的操作;(猜想而已。
QTP 问题集锦
分析:QTP在识别对象的过程中如果对象的强制属性和辅助属性还不能唯一匹配到对象的话,会激活智能识别模式,由于智能识别的算法复杂,会消耗一定的资源开销,所以导致脚本运行缓慢。
解决方法:全局关闭(File-->Settings-->Run)或者部分关闭智能识别(Tools-->Object Identification根据对象类型)3. 默认同步时间设置过长分析:在QTP的运行设置中默认对象同步的超时时间是20秒,如果是测Web程序的话还有60秒导航超时时间。
解决方法:在File-->Settings选项中调低默认的超时时间4. 由于错误页面而找不到对象导致的对象同步超时分析:由于操作步骤错误或者环境原因,打开了一个错误的页面,使得后续的对象都无法找到。
比如我需要在同一个页面操作10个对象,而恰巧由于网络问题网页发生错误,如果每个对象的默认超时时间是20秒的话,那么10个对象就是200秒,也就是说一旦页面跳转错误,是非常容易导致脚本运行缓慢的!解决方法:确保业务流程正确、尽量减少环境因素对自动化测试的影响、使用恢复场景来处理错误页面5. QTP的运行模式没有设置成Fast分析:QTP的运行模式分为Normal和Fast,Nomal模式允许在每一步运行完后都有延迟时间,而Fast模式则没有延迟时间。
解决方法:在Tools-->Options-->Run中设置运行模式为Fast6. 脚本中ChildObjects 方法过多使用分析:ChildObjects方法一般都是采用循环遍历,无疑会加重系统资源开销,如果再加上网页的元素很复杂的话,那么势必会影响脚本的性能。
解决方法:尽量避免使用子对象的方法去操作对象,可以用DOM的方式代替7.恢复场景的激活方式设置为"On every step"分析:恢复场景的触发方式有三种:On every step,On error和Never,On every step的意思在每一步运行完后激活恢复场景,去探测场景设置中的trigger有没有触发,这种做法同样也会降低脚本的性能。
软件测试工具QTP常见问题及解决办法
软件测试工具QTP常见问题及解决办法问:安装QTP的时候报这个错,是什么原因啊?“安装程序检测到您使用的pdm.dll版本存在问题。
Microsoft已报告此版本DLL中存在错误。
由于QuickTest Professional使用此DLL,建议您使用修复版本替换它。
答:直接删掉PDM.DLL或者把它改个名字就可以了,还有就是象上面所说的下载它的新版本了。
怕不保险的话把它备份一下,删的时候可能系统提示说正在被使用,删不掉,直接到安全模式下删就可以了。
或者在别的计算机中,找到pdm.dll文件,覆盖你本机这个文件就可以了。
问:QTP怎么识别不了日期控件阿?环境为,我已安装了.net插件,可是QTP能够识别日期控件的click事件,回放时,日期一栏却为空,请各位指点一下是怎么回事。
答:启动时候的插件选项。
实在认不出来,也可以使用虚拟对象。
问:在QTP录制好脚本后,在Keyword view 点某一页面,总出现提示框.提示内容为"当前安全设置禁止运行该页上的ActiveX控制,因此,该页可能无法正常显示",请问在QTP中是否在哪里可以设置,将其提示去掉答:这个可以在QTP里面的TOOL---OPTIONS---active SCREEN----advanced..把LOAD active controls 这个打上勾就可以了。
问:QTP中如何参数化link答:Dim eleLinkDim i,j,Links()Browser("Browser").Page("Page").SyncBrowser("Browser").Navigate ""Browser("Browser").Page("测试论坛").SyncSet objLinks=Browser("Browser").Page("测试论坛").Object.linksi=0For Each eleLink In objLinksBrowser("****").Page("****").WebList("****").Select "#"&IndexNum比如说下拉框有5个选项)IndexNum = Int((5- 1 + 1) * Rnd + 1) 或IndexNum = RandomNumber(1,5)以上代码生成1到5之间的随机数,5是上界,1是下界。
QTP原理及几类常见问题
QTP录制的原理QTP是通过hook(Windows留给大家的接口,消息与钩子)技术,实现录制的。
想进一步了解hook技术,可以去看下高级编程技术(Windows系统编程)方面的资料。
QTP回放的原理1)C/S架构:wsh(createobject("wscript.shell")创建实例(例1))、API (核心是句柄)。
2)B/S架构:Dom技术(页面元素解析,主要用到Dom.all返回所有元素的集合)。
Dom技术DOM是Document Object Model文档对象模型的缩写。
DOM 是一种与浏览器,平台,语言无关的接口,使得你可以访问页面其他的标准组件。
简单理解,DOM解决了Netscape的Javascript 和Microsoft的Jscript之间的冲突,给予web设计师和开发者一个标准的方法,让他们来访问他们站点中的数据、脚本和表现层对像。
QTP的Add-in1)Add-in介绍:Add-in是开发语言环境,不同开发语言开发的程序,需要有相应的Add-in支持,才能使得QTP正常录制和回放。
加载Add-in,通常是打开QTP后的第一步工作。
2)Add-in的作用:加载了Add-in,能够使得QTP能在后台劫持或者控制相应的程序,这样在录制和回放的时候能够正常识别程序里面的控件,即我们常说的对象。
3)识别对象的目的:因为软件的业务是通过GUI上的控件元素实现,所以把GUI上的控件元素识别出来,就能进行录制和回放。
QTP的回放过程QTP里的对象有两个概念,一个是Test Object(简称TO),一个是Runtime Object(简称RO)。
TO就是对象库文件里定义的对象,RO 是被测试软件运行时的对象。
点击QTP的Run后,即执行脚本,这时QTP先扫描脚本中的对象,然后通过与对象库中对象进行对比,查找同名对象,如果存在同名对象,则用该同名对象的属性(在对象库中保存),与实际运行中的软件包含的对象的属性进行对比(通常这些属性有一个以上,能保证控件的唯一性),如果一致,则成功运行,进行相应的操作。
QTP问题总结
1.QTP菜单项消失的问题:QTP10.0使用Test Batch Runner运行后或者其他操作后,会造成QTP的菜单栏的下拉菜单为空。
这是QTP的一个BUG,在Test Batch Runner调用QTP运行完成后或者某些操作后,没有将菜单栏还原。
解决方法为:在菜单栏点击右键,选择“Customize”,在Customize窗口的ToolBarT ab 页,点击“Restore All”后即可。
2.什么样的测试用例适合自动化?重复,乏味的测试什么样的测试用例不适合自动化测试易用性测试一次性测试随即测试测试没有预期结果3.功能测试和性能测试录制的基本区别录制功能是测试工具的基本功能。
功能测试录制的是鼠标、键盘等得驱动消息。
性能测试录制的是客户端发往服务器端的请求包。
4.QTP环境变量设置file-settings-Environment,Variable type选择“user-defined”,添加环境变量例如AgentName mercury和password mercury,点击“确定”。
在脚本中选择Agenname一行,点击Value,设置Value Configuration Options-Parameter,选择Environment,Name选择AgentName,点击ok。
在脚本中选择Password一行,点击Value,设置Value Configuration Options-Parameter,选择Environment,Name选择Password,点击ok。
点击“run”测试一下是否正常运行。
5.QTP无法录制下拉菜单的解决方法QTP默认录制方式是无法录制下拉菜单的,必须修改设置后再录制修改设置如下:在tools ->web event recording configuration 点击custom settings... 展开Web objects,选种webelement,点击event -> add ->onmouseover 。
QTP运行错误:对象无法识别的解决办法
1.1 如何去识别对象描述(Identifying Test Object Descrīption Problems)如果你能在被测程序中看到对象,但仍出现了“Cannot Identify Object”错误信息,这就表示仓库中对象的描述与程序中对象的描述一定存在着差异。
解决对象描述问题的第一步是找到差异,最简单的方法是将仓库中对象的属性值与程序中对象的属性值进行比较。
(仓库中对象的属性值可在Object Repository窗口中查看,程序中对象的属性值可用Object Spy功能查看。
)比较仓库中对象的属性值与程序中对象的属性值的操作见1.3。
在完成比较后,是否发现存在差异?如果是,请参考1.4;如果否,请参考1.5。
1.2 处理对象丢失问题(Solving Missing Object Problems)在运行脚本时,QTP尝试进行某种操作,而该操作的对象在程序中却没有出现,出现这种情况的原因有以下几种:>>>对象不再存在。
对象已经被从程序中删除。
解决方法:见1.2.1。
>>>对象还没有装载。
解决方法:见1.2.2。
>>>当前的程序页面(或窗口)不正确,不是对象所在的页面(或窗口)。
解决方法:见1.2.3。
>>>前一个步骤没有正确执行。
解决方法:见1.2.3。
1.2.1 解决对象不再存在的问题如果对象已经不再在被测程序中存在,则应在脚本中修改或删除相关步骤。
1.2.2 解决对象装载超时的问题如果对象丢失的原因是因为没有足够的时间装载,尝试以下解决方案:a.对于Web对象,增加Browser Navigation Timeout(File>Setting>Web页签)时间。
b.在包括该对象的步骤前使用Wait语句,让QTP在执行该步骤之前等待一段时间。
1.2.3 检查前面步骤的执行情况如果是因为打开了错误的页面(或窗口)导致对象丢失问题,或因为前一步骤执行措误导致对象丢失问题,则请按以下方法检查原因:a. 如果怀疑在完成脚本后,被测程序又发生了改变,则检查对象的继承关系以及对象描述。
QTP 异常处理及场景恢复
QTP 异常处理及场景恢复在测试脚本执行过程中,由于所测试的软件可能会发生非预期测试检查点的异常,如UI报错退出、莫名的窗体提示等,登陆的WEB页面也会经常出现刷新异常,这样会直接导致脚本找不到UI、对象而运行失败。
因为是未知地、随机地发生此异常,而不是测试设计的检查点异常,所以在自动化测试的角度无法确定测试失败的原因和步骤,更无法实施Bug查找。
在无人值守的情况下,此类异常还会导致后面的自动化测试工作无法进行。
为了解决次为题,可以使用异常处理及场景恢复机制来弥补当前QTP的测试缺陷。
场景恢复存在的目的在于避免测试过程中因为异常而引起的中断。
并不是所有测试脚本都需要场景恢复,设计完美的测试脚本不仅可以让自动化测试过程更顺畅,同事还能够捕获可能产生的程序缺陷。
1、异常处理的解决方案在QTP中,异常处理的方法很多,而且不同软件公司的使用情况也不尽相同。
这里介绍一种常用的方法,供大家学习。
1)设计思路(1)VBScript脚本中的“On Error Resume Next”意为,当脚本发生错误时自动运行下一行代码。
可以利用此语句来解决QTP代码异常的问题。
(2)通过VBScript脚本中得“Err.number”可以得出发生错误的信息代码,即通过判断当前程序是否发生了错误来进行Bug捕获。
可以编写ErrorHandle()函数置于组件函数库中,用于捕获异常及相应处理。
(3)处理的内容包括调用常规处理函数及场景恢复函数。
异常处理流程如下:启动程序代码异常忽略—->程序声明—>测试代码—->是否有异常:1.有,捕获异常&调用场景恢复;2.没有,执行下一个action2、异常处理机制伪代码及使用指南建议在QTP安装目录中得Dat目录下新建文本文件,命名为“ActionTemplate.mst ”,在QTp新建Test 或Action时自动读取这个模板内容作为Action代码的一部分,可以利用这一特性来进行异常捕获。
QTP针对CS结构测试的几个关键问题
QTP--针对C/S结构测试的几个关键问题在针对C/S结构的信息系统进行性能测试的时候,因为客户端实现机制的不同,往往会遇到很多棘手的问题。
采用何种测试方法进行测试就是一个首先必须解决的问题,往往很多测试工程师都感到非常困惑。
在进行了一番技术研讨之后,在本文的案例中,对于C/S信息系统进行性能测试的时候,采用的是自动化性能测试工具Loa dRunn er调用自动化功能测试工具Qu ick Test Prof es siona l脚本的方法实现性能测试。
其实,对C/S结构信息系统进行测试的时候,重点不在使用LR,而在于熟练使用QTP,本文正是在总结项目经验的基础上,深入探讨了使用Q TP的多个关键技术问题,愿与业内同行进行深入探讨,共同提升测试能力。
1、QTP无法捕捉到菜单栏对象问题描述:用鼠标正常点击菜单栏,但是QTP捕捉不到菜单栏解决方法:这是属于对象不识别的问题,当鼠标点击菜单栏的时候,把对象识别的方式换成低级录制方式就可以捕捉到了。
(这是QTP对象识别的第一法宝)2、用QTP捕捉对象时,鼠标操作不起作用了问题描述:厂商进行了二次开发,但是所开发的子窗口,用鼠标在菜单栏里打开,QT P根本捕捉不到这个新对象。
解决方法:换一种方式,不用鼠标,用键盘来捕捉!用键盘的上下键移动到相应要打开的地方,用Enter键就可以了,这样便可以捕捉到对象了,而且还不容易出错。
(这是QTP对象识别的第二法宝)3、弹出窗口后,QTP无法捕捉弹出来的窗口对象问题描述:窗口弹出来了,但是点击其中Butto n后,QTP无法捕捉对象。
解决方法:在回放中发现,弹出的二次开发窗口并没有激活,界面呈灰色,所以在脚本录制时,弹出窗口后,先用鼠标点击一下窗口以便激活窗口。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.录制系ቤተ መጻሕፍቲ ባይዱ中的下拉框控件时,回访时无法识别
解决方法:
录制时利用键盘选择具体的值而不是鼠标
4.录制系统中的输入框时,回访时无法识别
解决方法:
在录制时需要确保输入框中没有内容,录制完后需要修改脚本
5.新增Action的方法
在keywordview中选择action的控件右键Action-->install call to new
6.多个Action单独运行其中一个的方法
选中需要运行的action然后选择菜单Automation---->Run Current Action就行啦
7.怎样建立数据库检查点
Menu->Insert->CheckPoint->DataBase CheckPoint-->quary definition-->下一步-->在Connection框中输入
“ok”,对象库关联成功
【注】Action2中对象与Action1是一致的,但不能进行修改,用灰色显示。在object properities-->view in properity中右边的“Repository”中,显示对象库文件的路径,而不是“local”,表明这些对象是引用对象库文件而来的。
wsid是计算机名称 DATABASE是测试项目需要连接的数据库}
之后在SQL中输入需要执行的SQL语句后点击finish连接成功后会出现
数据库检查点的属性设置窗口
8.QTP为每个Action生成相应的测试文件和目录,对象库是与Action绑定的。
1. 在Action1的对象库关联界面(object properities-->view in properity)中,选择“File | Export Local Object”,进行保存,该文件后缀为“*.tsr”
【Description=SQLQTP数据库链接;DRIVER=SQL Server;SERVER=(local);UID=saWD=;APP=QuickTest Professional;WSID=LJL-PC;DATABASE=SHRemote003】
{connection中输入的内容解释:APP是需要连接数据库的应用为QuickTest Professional Description是对连接数据库的描述此字段可以忽略
1.录制出多余的对象
解决方法:keywordview中右键ObjectPropectiese---》view in Reposity将多余的属性删除或合并
2.参数化时local参数有两行时只运行第一行后就不运行了
解决方法:
keywordview中在TestFlow时右键Action call Properties-->run on all rows
2. 插入Action2,在Action2界面中,选择菜单“Resources | Associate Repositories”,在出现的窗口中选择step
1中导出的对象文件,在“available Action”中选择Action1,在“Associated Actions”中选择Action2,点击