分享

软件测试教程-面试问题

 ahappyday 2011-04-16
随着互联网技术的蓬勃发展,基于浏览器/服务器(B/S)结构的软件也日益广泛的应用于各个行业,然而,基于互联网应用随着网络宣传力度、应用数量的增强,软件不仅需要满足当前应用需求,同时还要考虑后期业务的处理能力,仍能够为广大用户提供可靠性强、负载能力强、处理能力强、响应时间短的软件。软件公司在招聘测试人员的时候,也都非常重视测试人员Web应用方面的知识,特别是性能测试方面的知识,下面给大家一些知名企业会经常问道关于性能测试方面的试题供大家参考。
经典问题:
  1. 请问什么是性能测试、负载测试、压力测试?
  2. 请分别针对性能测试、负载测试和压力测试举一个简单的例子?
  3. 请列举出常用的性能测试工具,并指出这些工具的优缺点?
  4. 请问您是如何得到性能测试需求,怎样针对需求设计、执行、分析是否达到需求?
  5. 什么时候可以开始执行性能测试?
  6. 什么是集合点?设置集合点有什么意义?Loadrunner中设置集合点的函数是哪个?
  7. 性能测试时,是不是必须进行参数化?为什么要创建参数?Loarunner中如何创建参数?
  8. 您了解关联吗?您如何找出哪里需要关联?请给一些您所在项目的实例。
  9. 您如何调试LoadRunner脚本?
  10. 在LoadRunner中如何编写自定义函数?请给出一个您在以前项目中编写的函数。
  11. 请问您是如何理解Loadrunner中集合点、事务以及检查点等概念?
  12. 如何应用Loadrunner进行性能测试,请结合其自身工具进行描述?
  13. Loadrunner中思考时间有什么作用?
  14. Loadrunner中如何实现多用户并发操作,需要进行那些设置?
  15. Loadrunner中有基于目标和手动两种场景设计方式,它们分别适用于什么情况?
  16. Loadrunner中有几种并发执行策略,它们的含义是什么?
  17. 在有5台配置为处理器:Intel Pentium4 1.6G/内存容量:512M/硬盘容量40G的机器,如何较好的利用这些机器完成一次并发用户数为1000人的性能测试工作任务。
    18.平时大家在注册邮箱等相关操作时,经常会遇到需要输入验证码的情况,请问,如果我们公司也开发了一套带验证码的应用软件,需要进行性能测试,您会如何处理?

    北京鼎普科技股份有限公司 QTP面试题

    填空:

    1. QTP脚本语言采用_________(备注:我猜好像是VBS,本人对QTP学的也是皮毛,基本上等于不会)

    2. 通过DESKTOP对象可以访问windows的桌面顶层对象,想要截屏应使用的方法是______________________

    3. 激活窗口使用的方法______________。

    问答题:

    1. QTP中RO与TO的区别?

    2. QTP中OBJECT SPY的作用?

    3. 编写在QTP脚本,实现向记事本中输入“0123456789ABCDEFG”后,按ENTER?

    4. 下面脚本的目的是获取当前桌面中名为“test_记事本”的窗口对象,请补全?

    set objdesc=Description.Create()

    objdesc(“text”).value=”test_记事本”

    set object couection=Desktop.______________
  18. 北京鼎普科技股份有限公司 QTP面试题

    填空: 1. QTP脚本语言采用_________(备注:我猜好像是VBS,本人对QTP学的也是皮毛,基本上等于不会) 2. 通过DESKTOP对象可以访问windows的桌面顶层对象,想要截屏应使用的方法是______________________ 3. ......<阅读全文>

    北京鼎普科技公司软件测试工程师QTP笔试题

    1.QTP中RO与TO的区别? TO是Test Object的简称,RO是Runtime Object简称,既用来区分仓库对象和实际对象,又用来区分对象的封装接口和自身接口。 从实际作用上来看,应该说TO就是是仓库文件里定义的仓库对象,...... <阅读全文>

    如何用QTP判断一个文件的扩展名?

    当使用QTP时,我们有可能需要判断一个网页上的图片是否是.jpg, .gif等扩展名结尾的,以下是判断扩展名的解决方案: 1. 我们使用Mercury 的demo应用 http://newtours./. image 2. 需要检查的图片就...... <阅读全文>

    如何用QTP脚本删除一个文件夹?

    代码如下例所示,假设要删除的文件夹是在C:\drive. 如何用QTP脚本删除一个文件夹: Dim strDrive, strfoldername,objFSO, objFolder, strPath strDrive = “c:\” ‘你要删除的文件夹所在的盘...... <阅读全文>

    如何用QTP脚本创建一个文件夹?

    代码如下例所示,假设要创建的文件夹是在C:\drive. 如何用QTP脚本创建一个文件夹: Dim strDrive, strfoldername,objFSO, objFolder, strPath strDrive = “c:\” ‘你要创建的文件夹所在的盘...... <阅读全文>

    如何关掉msgbox的提示框?

    在调试脚本的时候,通常会用采用很多msgbox函数,但是这些提示框必须要手动关闭,否则脚本不会继续往下执行,你可以设计一个函数,在几秒钟之后自动关闭提示框吗? 答案: Set WshShell = CreateObject(“...... <阅读全文>

    QTP面试题:如何通过脚本来删除cookies?

    没有一个现成的方法来删除cookies, 所以你需要写一个Shell Script去删除你的Cookie所在目录的所有文件。实现的代码如下: Const COOKIES = &H21& Set objShell = CreateObject(“Shell.Applicati...... <阅读全文>

    如何使用Dictionary Object?

    如下代码是一个典型的使用Dictionary Object的例子: Dim dict ‘ Create a variable. Set dict = CreateObject(”Scripting.Dictionary”) dict.Add “Company”, “HP” ‘ Adding keys and corresponding items. di...... <阅读全文>

    QTP面试题:什么是Dictionary Object?

    Dictionary Object不是QTP特有的一个对象,它是Microsoft开发的,是VB scripting 的一部分。 简单来说,Dictionary Object跟数组非常相似,两者的不同之处是dictionary object 的每个元素都有一个唯一Key.这个...... <阅读全文>

    QTP和QC版本是如何匹配的?哪种版本的QC可以跟哪种版本的QTP整合?

    QC 9.0可以跟QTP 8.2 SP1, QTP 8.2 SP2, QTP 9.0, QTP 9.1 和QTP 9.2整合。要确定你的QTP版本跟哪种版本的QC整合,可以参阅安装目录的ReadMe Click me to Bookmark It! Hide Sites $$(...... <阅读全文>

    如何使用AOM把QTP脚本上传到QC?

    连接到Quality Center后,使用AOM打开测试并保存到QC. 代码如下: qtqcApp.Open “C:\QTP\Project\QTPTestScript1″, True ‘ 得到测试对象 Set qtqcTest = qtqcApp.Test ‘ 使用SaveAs方法把测试保存到QC qtqcApp...... <阅读全文>

    如何查找TDConnection对象的方法和属性?

    可以到以下目录下查看这个对象的属性和方法,QTP Help > QTP Advanced Reference > Quick Test Automation > TDConnection Click me to Bookmark It! Hide Sites $$('div.d37...... <阅读全文>

    如何使用AOM连接Quality Center Open Test Architecture(OTA)?

    可以使用QCUtil对象(如果是QTP6.5或者以前,是AKA TDUtil),你可以在QTP Help > Quick Test Object model reference > Utility Objects > QCUtil Object下找到所有相关的属性,如CurrentRun, TestRun,...... <阅读全文>

    如果QTP自动连接QC时QC的登录信息改变了怎么办?

    修改QTP安装目录下的mic.ini文件,通常是在C:\Program Files\Mercury Interactive\QuickTest Professional\bin目录下,把以下属性从1改到0 1.  LoginAutomatically=0    2. ReconnectToDB=0    3. ReconnectTo...... <阅读全文>

    怎么在QTP启动的时候自动连接QC?

    到File > Quality Center Connection, 选中 Reconnect to server on start-up选择框。 QTP connects to QC when start-up Click me to Bookmark It! Hide Sites $$('div.d3726').ea...... <阅读全文>

    如何使用Automation Object Model(AOM)连接QC和QTP?

    可以使用TDConnection Object来进行连接,实例代码如下: ‘ Create the QuickTest Professional application object. Set qtqcApp = CreateObject(”QuickTest.Application”) qtqcApp.Launch ‘Launch QTP qtqcA...... <阅读全文>

    如何把QTP和QC连接起来工作?

    可以按照如下步骤: 1. 在QC的Tool > Options > Run in QTP下选中Allow other Mercury products to run tests and components 2. 如果你是在同一个有QC 客户端的机器上跑测试,你需要:      1. QTP Con...... <阅读全文>

    介绍一下你使用QTP进行自动化测试的流程

    1. 准备录制 在录制测试前,请确认应用程序和 QuickTest 已按测试要求设置。 请确保应用程序显示要录制的元素,例如,工具栏或特殊窗口窗格;还要确保应用程序选项已按测试目标设置。 为了确保 QuickTest 可以...... <阅读全文>

    QTP中Window ID属性有什么用?何时会变?

    Window Id对应Windows应用程序的控件ID(Control ID),是指Windows指定给每个控件的数值型标识符,用来标识一种控件类型。不同类型的控件id就会不一样,同样类型的控件id是一样的。例如windows资源管理器的co...... <阅读全文>

    QTP面试题:如何用QTP录制鼠标右键点击事件

    QTP录制鼠标右键单击事件要通过模拟键盘操作来实现 Step 1,修改ReplayType为2,一般情况默认设置是1的。(1 – 使用浏览器事件运行鼠标操作。 2 – 使用鼠标运行鼠标操作) Setting.WebPackage(”Re...... <阅读全文>

    QTP面试题:如何用QTP打开word并录入内容

    Set wobj = CreateObject(”Word.Application”) wobj.Visible = True Set Doc = wobj.Documents.Add Set Range = Doc.Paragraphs.Add.Range Range.Text = “The first Paragraph” Doc.Paragraphs.Add Set Range2...... <阅读全文>

    软件测试QTP面试题

    1. What are the Features & Benefits of Quick Test Pro (QTP 8.0)? – Operates stand-alone, or integrated into Mercury Business Process Testing and Mercury Quality Center. Introduces next...... <阅读全文>

    QTP

    开放分类:技术计算机技术软件

    编辑词条分享

    本词条由百科宝宝创建,共有2位协作者编辑了2次。最新协作者:纯·良,百科宝宝。

    QTP全称(QuickTestProfessional)是Mercury公司开发的一种自动测试工具,使用QTP的目的是想用它来执行重复的手动测试,主要是用于回归测试和测试同一软件的新版本。因此你在测试前要考虑好如何对应用程序进行测试,例如要测试那些功能、操作步骤、输入数据和期望的输出数据等。

    纠错 编辑摘要
    目录
    • 1 简介
    • 2 自动测试的工作原理
    • 3 QTP的窗口

    为本词条添加视频和组图相关影像

    QTP - 简介

    QTPQTP

    MercuryQuickTest企业级自动化测试工具。

    QuickTest9.0Pro最新正式版发行,QTP9.0是一个B/S系统的自动化功能测试的利器,软件程序测试工具。Mercury的自动化功能测试软件QuickTestProfessional9.0,可以覆盖绝大多数的软件开发技术,简单高效,并具备测试用例可重用的特点。

    QTP进行功能测试的测试流程[制定测试计划]——>[创建测试脚本]——>[增强测试脚本功能]——>[运行测试]——>[分析测试结果]大致五个步骤:
    1、制定测试计划
    自动测试的测试计划是根据被测项目的具体需求,以及所使用的测试工具而制定的,完全用于指导测试全工程。

    QTP是一个功能测试工具,主要帮助测试人员完成软件的功能测试,,与其他测试工具一样,QTP不能完全取代测试人员的手工操作,但是在某个功能点上,使用QTP的确能够帮助测试人员做很多工作。在测试计划阶段,首先要做的就是分析被测应用的特点,决定应该对哪些功能点进行测试,可以考虑细化到具体页面或者具体控件。对于一个普通的应用程序来说,QTP应用在某些界面变化不大的回归测试中是非常有效的。

    2、创建测试脚本

    当测试人员浏览站点或在应用程序上操作的时候,QTP的自动录制机制能够将测试人员的每一个操作步骤及被操作的对象记录下来,自动生成测试脚本语句。与其他自动测试工具录制脚本有所不同的是,QTP除了以VBScript脚本语言的方式生成脚本语句以外,还将被操作的对象及相应的动作按照层次和顺序保存在一个基于表格的关键字视图中。比如,当测试人员单击一个链接,然后选择一个CheckBox或者提交一个表单,这样的操作流程都会被记录在关键字视图中。

    3、增强测试脚本的功能
    录制脚本只是实现创建或者设计脚本的第一步,基本的脚本录制完毕后,测试人员可以根据需要增加一些扩展功能,QTP允许测试人员通过在脚本中增加或更改测试步骤来修正或自定义测试流程,如增加多种类型的检查点功能,既可以让QTP检查一下在程序的某个特定位置或对话框中是否出现了需要的文字,还可以检查一个链接是否返回了正确的URL地址等,还可以通过参数化功能,使用多组不同的数据驱动整个测试过程。

    4、运行测试
    QTP从脚本的第一行开始执行语句,运行过程中会对设置的检查点进行验证,用实际数据代替参数值,并给出相应的输出结构信息。测试过程中测试人员还可以调试自己的脚本,直到脚本完全符合要求。

    5、分析测试
    运行结束后系统会自动生成一份详细完整的测试结果报告。

    QTP - 自动测试的工作原理

    MercuryQuickTestProfessional甚至可以使新测试人员在几分钟内提高效率。您只需通过按“记录”按钮,并使用执行典型业务流程的应用程序即可创建测试脚本。系统使用简明的英文语句和屏幕抓图来自动记录业务流程中的每个步骤。用户可以在关键字视图中轻松修改、删除或重新安排测试步骤。

    QuickTestProfessional可以自动引入检查点,以验证应用程序的属性和功能,例如验证输出或检查链接有效性。对于关键字视图中的每个步骤,活动屏幕均准确显示测试中应用程序处理此步骤的方式。您也可以为任何对象添加几种类型的检查点,以便验证组件是否按预期运行(只需在活动屏幕中单击此对象即可)。

    然后,您可以在产品介绍(具有Excel所有功能的集成电子表格)中输入测试数据,以便在不需要编程的情况下处理数据集和创建多个测试迭代,从而扩大测试案例范围。您可以键入数据,或从数据库、电子表格或文本文件导入数据。

    高级测试人员可以在专家视图中查看和编辑自己的测试脚本,该视图显示QuickTestProfessional自动生成的基于业界标准的内在VB脚本。专家视图中进行的任何变动自动与关键字视图同步。

    一旦测试人员运行了脚本,TestFusion报告显示测试运行的所有方面:高级结果概述,准确指出应用程序故障位置的可扩展树视图,使用的测试数据,突出显示任何差异的应用程序屏幕抓图,以及每个通过和未通过检查点的详细说明。通过使用MercuryTestDirector合并TestFusion报告,您可以在整个QA和开发团队中共享报告。

    QuickTestProfessional也加快了更新流程。当测试中应用程序出现变动(例如“登录”按钮重命名为“登入”)时,您可以对共享对象库进行一次更新,然后此更新将传播到所有引用该对象的脚本。您可以将测试脚本发布到MercuryTestDirector,使其他QA团队成员可以重复使用您的测试脚本,从而消除了重复工作。

    QuickTestProfessional支持所有常用环境的功能测试,包括Windows、Web、.Net、VisualBasic、ActiveX、Java、SAP、Siebel、Oracle、PeopleSoft和终端模拟器。

    QTP - QTP的窗口

    QTPQTP
    在开始创建测试前,应首先熟悉QuickTest的主窗口。

    右图显示了录制测试后将出现的QuickTest窗口,其中显示了除“调试查看器”窗格以外的所有工具栏和窗格:

    窗口包含下列主要元素:

    1.标题栏-显示当前打开测试的名称。
    2.菜单栏-显示QuickTest命令菜单。
    3.文件工具栏-包含若干按钮,可协助您管理测试。

    QTP文件工具栏

    4.测试工具栏-包含若干按钮,可协助您完成测试流程。

    QTP测试工具栏

    5.调试工具栏-包含若干按钮,可协助您调试测试。

    QTP调试工具栏

    注意:第一次打开QuickTest时,不会显示调试工具栏。通过选择“视图”>“工具栏”>“调试”,可以显示调试工具栏。注意,本教程不描述如何调试测试。有关详细信息,请参阅《QuickTestProfessional用户指南》。

    6.操作工具栏-包含若干按钮和一个操作列表,用于查看单项操作或整个测试流的详细信息。

    QTP操作工具栏

    注意:操作工具栏只在关键字视图中显示。该工具栏在第一次打开QuickTest时不会显示。通过选择“视图”>“工具栏”>“操作”,可以显示操作工具栏。如果在测试中插入可重用操作或外部操作,操作工具栏将自动显示在关键字视图中。有关详细信息,请参阅《QuickTestProfessional用户指南》。

    7.测试窗格-包含“关键字视图”和“专家视图”选项卡。

    8.ActiveScreen-当您在录制会话过程中执行某个特定步骤时,提供出现的应用程序的快照。

    9.数据表-协助您对测试进行参数化。

    10.“调试查看器”窗格-协助您对测试进行调试。“调试查看器”窗格包含“监视表达式”、“变量”和“命令”选项卡。(第一次打开QuickTest时,不会显示“调试查看器”窗格。通过选择“视图”>“调试查看器”,可以显示“调试查看器”。)

    11.状态栏-显示QuickTest应用程序的状态。

国内软件测试现状与测试工具的选择

减小字体 增大字体作者:佚名  来源:本站整理  发布时间:2011-03-24 22:34:03

国内软件测试现状

近期国家对软件行业也给出了很多鼓励政策,软件及相关行业在中国得到了很大的发展,我们也看到了一大批软件企业在国际中也占据了很重要的地位。不过我们发现很多软件公司在重视代码开发的同时,却没有把代码质量跟上去,忽略了测试在整个项目工程的重要性。

可是测试真的是不重要,只是开发的附属品吗?我们列举一个例子说明:美国微软,该公司的开发人员和测试人员的比例是1:1,也就是说每个开发人员会配备一名测试人员,而且这名测试人员都是具有和开发人员一样的开发能力的,可以进行大规模自动化测试。微软重视测试的原因也很简单,因为在宽带普及以前,很多更新都是靠邮寄光盘完成的,更新的成本非常高,一定要在出厂前严把质量关。对于一个纯软件公司是如此,那么我们的一些有硬件产品的公司,如果产品是因为软件上面出现了重大缺陷,大规模硬件召回的成本是不是会更高呢?目前在国内,很多的企业也认识到了测试的重要性,可是只是停留在认识阶段,只是做做简单的黑盒测试,功能性测试等。有的负责人也许会谈到,我们的产品是基于互联网产品,软件大部分都是在服务器端,更新的成本大幅降低。那么我们就更应该做好产品,让广大的客户端用户对产品有更好的用户体验,给网友们更好的服务,而不是一味的借助于网络更新,在使用中发现错误后去弥补。最近一次的暴风影音的“召回门”就是一个很好的说明。

对于一些正在成长中的中小企业,由于人力资源有限,目前还没有比较正规的测试,我们还可以理解。可是一些已经形成规模,有一定研发力量的大型企业,是很有必要建立一整套完整的测试流程来完善公司的产品。但是在和大公司负责人沟通得知和我们的期望值还是有一定差距的。他们可能花了大量的人力,物力来通过 CMM,ISO认证,却不能踏实的做好测试。在他们眼里,认证才是一个公司的硬实力体现,测试则是一个可有可无的过程。这一点让人有点黯然,在中国的快餐市场上,我们该如何推动我们软件测试,不是靠你和我,而是靠全民总动员,大家要培养这个意识,把这个意识和行动穿叉在我们研发的全部过程中,难道我们还做不出玫牟仿??

这让我马上我想到了已经和联通签约马上进入中国的IPhone,可以说这一款手机改变了整个世界对手机的使用习惯。IPhone的成功,个人观点,软件质量的稳定性可靠性是最为关键的一票。

在我们和客户聊到测试的时候,他们说也是有心无力,只能通过人为的做一些简单的测试来应付。于是我们会给他们介绍一些自动化的测试工具的时候来协助测试,这些企业普遍表现了对这次测试工具的兴趣。不过,这些工具的价格立即扼杀了他们抓测试的信心,他们无法接受一张光盘的叫价超过一辆汽车,他们更喜欢实物。可是他们忘了,软件的价值不是体现在一张光盘上面,而且体现在这个软件能给企业,给人们生活带来的益处。

诚然,价格,技术和企业愿望是目前测试在中国走的很艰难的原因。目前一些测试培训机构也是在积极培养专门的测试人才。我们也希望有国内的企业能做出我们自己比较好的测试工具来打破测试工具昂贵的价格坚冰。我相信有那么一天中国的软件质量一定会在世界上有属于自己的一席之地。

测试工具简评

在这里,也结合我个人的经验,按照开发V模型来分别讲讲几个对应的自动化测试工具。

在软件开发初级阶段,对应于代码做静态分析。目前很多的企业都没有做静态分析,甚至还有企业不太明确静态分析。在这里给大家推荐的工具是QAC和PC-lint。

PC-lint在国内的用户基础比较好,这个工具出来的比较早,由一个大学教授编写,而且价格也不贵,只有命令行模式是它的局限性,检查的代码规则不多。目前有部分企业用这个工具做代码静态分析。

QAC这个工具进入国内也有一段时间,不过推广力度不是很大,目前这个工具在外资企业的研发部门的推广的比较好,国内的一些大企业和一些测试评测中心也在使用该工具,该工具使用起来比较方便,界面形式,也支持命令行模式,还有是MISR的标准制定者之一,所以比较有权威性,专业性很强,在国内也有很好的技术支持。价格相对来说就比较贵了。

然后动态单元测试这块,可以看看parasoft旗下的几款产品,有分别针对java语言的,C++语言的版本。该工具使用起来还比较方便,是基于Eclipse框架开发的,界面友好,功能也比较强大,在上海有office.当然就是价格不太让人接受。

当然如果只是要做内存泄露这块,可以了解一下parasoft旗下的一个工具insure++。这个工具可以实施监控内存的一个使用情况。

如果是做嵌入式这块单元/集成测试,用户与也可以使用IPL的Cantata++和IBM的RTRT,这两个工具在针对嵌入式这块的单元/集成测试比较强大,特别是Cantata++还支持自动的打桩,封装,这个也是该工具的一个亮点。

上篇中提到要对这几个概念做说明的,这这里作个补充:就CANTATA++举例:

1)打桩是对被测函数外部调用的替代,是用来对没有开发的或用户开发的模块进行模拟。对系统函数,由于Cantata++已经作了移植,都可直接使用,不用也不能打桩。不能打桩时,接口数据无法验证。

2)使用封装的before功能,可检测对外部调用的参数数据、全局数据是否满足测试时的要求;并且可以修改参数、全局数据的值,使得外部函数按照测试的要求运行。例如嵌入式应用中经常将一个数据转换为指针,然后使用指针操作相关的内存数据,但在主机环境测试时,由于内存保护,指针指向的地址为空,程序就飞了。在这种情况下就可以使用before功能定义变量,将变量的地址传送给被调用的函数,从而完整地验证功能和覆盖率。

3)使用封装的after功能迫使外部调用返回很难实现或无法达到的条件,从而使被测模块的功能和分支都得到验证。如在主机环境下对malloc函数封装,在一般情况下是无法实现返回空指针的结果。利用Cantata++封装的after功能修改返malloc函数返回值为NULL指针,这样被测函数的错误处理功能得到验证。

如果需要对代码做一个质量度量,推荐使用一个质量度量工具McCabe,这个工具不需要执行代码就可以完成代码走查,对代码有一个深层次的代码度量,提供多达几十种度量。操作起来很方便,只是要熟悉这个产品,需要对产品有一定的理解,对项目管理有很大的帮助。

至于后面的版本管理工具,CVS,VSS,我在这里就不做太多的介绍。

我的QTP的学习方法及总结(一)

字体:  小  中  大  | 上一篇 下一篇 | 打印  | 我要投稿 

  引子:

  借项目的空挡期来总结一下自己学习、使用QTP的一下方法,以及使用过程中的一些心得。以下内容仅是针对QTP一些基本知识以及我自己如何学习QTP做介绍,作为自己的一个阶段总结。对于QTP高手可以忽略本内容或是批评指正。

  QTP是目前市场上占有率最高的一款自动化测试工具,也是每一位测试工作者最想掌握的工具之一。QTP目前最主要的应用是用于回归测试、版本验证测试阶段。它本身是针对系统界面上的元素进行识别、操作,达到测试系统功能的目的。因此,自动化测试启动的时机或者说QTP开始介入的时机就要受到系统开发进度的制约。只有当系统的界面元素不会频繁的变化、系统功能基本稳定,已经通过一至两轮的手工测试,确定系统不会存在重大缺陷时,才可以考虑自动化的实施。这里说的实施主要侧重脚本的开发,其他如测试方案、开发规范、参数定义等内容可以提前制定。有的个别大公司可能介入会比较早,界面出来,就开始着手脚本的开发。但这种方式要有严格的开发、测试规范与之配套,并且每一环节的人员严格按规范、规则进行,否则脚本后期的维护将是非常头疼的一件事情。

  一、 第一次与QTP伤心的亲密接触

  第一次与QTP的亲密接触是在07年,当时进入一家做GIS(地理信息系统)系统的公司。当时公司想要引入自动化测试,由副总牵头,测试经理负责我和另一位MM具体实施。这也具备了实施自动化测试的一个辅助条件,公司高层的重视与支持。但对于没有相关技术积累,相关人员技术缺乏的条件下,为我这次自动化测试的失败埋下了伏笔。最终这次确实是一次失败的经历,失败的其他原因略过,接下来主要说一下过程中我是怎么学习QTP的。

  QTP的运行原理、对象识别机制

  作为一个QTP的使用者,首先要搞明白它的运行原理,识别对象的机制。这是以后掌握其他技术的根本,不管是录制方式还是手写代码这个都是非常重要的。

  QTP是一款基于语言的工具,而LR是基于协议的。具体说,就是QTP针对不同的语言提供不同插件去识别对象,默认提供ActiveX、Visual Basic、Web插件,其他.net、java插件单独安装。每一种插件提供了针对不同对象的识别机制,也就是提供了对象默认的识别属性。所以在运行QTP前,首先确定加载哪个addin,否则对象就不能正确识别,出现很多奇怪的问题。不加载正确的addin,最直接就是表现在代码上。以下是点击google主页上的搜索按钮的区别:

  加载web插件的正确代码:Browser("Google").Page("Google").WebButton("Google 搜索").Click

  不加载web插件:Window("Windows Internet Explorer").WinObject("Internet Explorer_Server").Click 547,217

  这是典型的对象没有正确识别的问题。包括对象类型、识别属性、事件方法都会出现问题,这样会导致脚本的开发,维护,运行,阅读等等一系列问题。

  再说QTP的对象识别,加载正确addin后QTP会定义一套针对具体类型对象的默认识别属性。通过Tools--Object Identification可以查看,修改,增加默认的识别属性。更改后即时生效,但对之前的对象不起作用。如下图,这里就是决定QTP如何识别对象的地方。包括识别对象的强制属性、辅助属性、智能识别、顺序表示符的配置。特别指出,Browser对象有一个CreationTime顺序表示符,这是一个非常有用的属性,它可以根据IE打开的顺序去识别web页,而不必指定其他属性,合理加以利用会给web脚本带来很大好处。

  QTP

上图的配置,这些属性都会反应到对象库中。在录制的过程中,QTP会抓取对应属性的属性值,并映射到对象库(Object Repository)。如图,上图配置的属性均在对象库中反应出来了。这里的保存的对象,也就是我们说的TO(Test Object) 。脚本一旦开发完毕,这些对象及对应的属性均保持不变,作为识别对象的基线。

  QTP

  回放过程中,运行时系统的对象称作RO(Run-time Object)。QTP以对象库中保存对象的属性及属性值为标准,去匹配运行时系统的对象,如果匹配成功则正确识别对象并执行相应操作,否则会有提示信息。下图也是最为常见的对象不识别。解决这个问题,就是需要在录制之前配置好Object Identification中各种对象的识别属性,做到能够唯一标识对象的目标。这样就会减少脚本出错的几率。

  QTP

  在对象库中也可以增加(加号)、删除(叉号)、修改属性及属性值。这是对象库强大的一处体现。Value可以修改正则表达式,可以参数化。支持随机值,DataTable取值,环境变量取值,这就让对象识别变的很灵活,甚至可以动态的去识别对象。

  关于另一个常用的就是描述性编程,这个概念是QTP独有的。通过这个机制,使对象识别更加灵活。在开发脚本过程中,可以不依赖默认识别属性,通过指定对象的属性及相应的属性值去识别对象。这样可以使脚本脱离对象库,也就是不依赖于TO对象,省去维护对象库的步骤,但原理还是一样的。灵活运用描述性编程可以使脚本的重用性、稳定性、维护以及脚本的开发变的简单,而且直观易于阅读,简化团队成员之间的协作。但如果单纯的把录制的脚本改成描述性的,这样做不仅没有好处,还会给你的开发的工作量、脚本的维护带来很大的麻烦。如何灵活使用描述性编程,这里不作详述,原则是使脚本开发过程简单,维护工作量最小。

  以上内容,从理论到具体的实践,都是掌握QTP的基础,也是很重要的环节。这部分内容的掌握程度,直接影响以后使用QTP开展测试的深度以及使用QTP的灵活度。所以这部分内容,建议多花时间把它搞透、搞明白。
 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多