老李分享:qtp自动化测试框架赏析-关键字自动化测试框架

 

QTP从2005年继winrunner,robot逐渐退出历史舞台之后,占领主流自动化测试工具市场已经10年之久。当初为了提高在自动化测试工具市场的竞争力,通过vbs脚本语言讨好自动化测试(专指脚本开发人员)工程师,通过关键字视图讨好业务(这里主要是指对自业务很熟,能找出问题的人员)测试人员。

自动化测试工具选型:这是重要的两个评估维度,工具所用的脚本能完成自动化测试,如ajax技术出现后,qtp在某些环境需要调用js脚本才能完成自动化测试,qtp脚本的扩展要求对qtp自动化测试工程师提出了更高的要求。关键字视图只能完成机械的对象选择,我们有的时候对象可能是一套脚本,这样qtp本身提供的关键字视图的框架功能就无法完成。

在这里我提供一个简单的关键字自动化测试框架的模型,核心引擎我实现了,如果你感兴趣,可以根据公司的情况,进一步扩展。

一.首先设计的表驱动的数据形式

二.实现对象映射引擎

Option Explicit
Public WebBrowserDesc
public WebPageDesc
public WebEditDesc,
public WebButtonDesc
public WebObjDesc ' ...............................

Dim arrObjProperty
Dim arrObjValue
Dim strObjProperty
Dim strObjValue

Public Function fnApplicationMap(strBrowser,strObjName)
  Set WebBrowserDesc=Description.Create
  WebBrowserDesc("application version").Value="internet explorer6"
  If strBrowser<>"" Then
    WebBrowserDesc("name").value=strBrowser
  End If
  Set WebPageDesc=Description.Create
  WebPageDesc("title").Value=strBrowser

  Select Case strObject
    Case "WebEdit"
      Set WebEditDesc=Description.Create
      WebEditDesc ("html tag").Value="INPUT"
      WebEditDesc("name").Value=strObjName
    Case "WebButton"
      Set WebButtonDesc=Description.Create
      WebButtonDesc ("html tag").Value="INPUT"
      WebButtonDesc("name").Value=strObjName
    Case "WebElement"
      Set WebObjDesc=Description.Create
      arrObjProperty=Split(strObjName,",")
      For each strObjProperty in arrObjProperty
        arrObjValue=Split(strObjProperty,"=")
        strObjValue=trim(arrObjValue(0))
        WebObjDesc(strObjValue).Value=trim(arrObjValue(1))

      Next
   End Select

End Function

三.实现函数生成引擎

Public Function fnBrowser(WebBrowserDesc,WebPageDesc,strParam,strExpected,strCkPt)
  Select Case strAction
  Case "Invoke"
    If Browser(WebBrowserDesc).Exist Then
      Browser(WebBrowserDesc).Close
    End If
    Systemutil.Run "ie",strParam
  End Select
End Function

Public Function fnWebEdit(WebBrowserDesc,WebPageDesc,WebEditDesc,strParam,strExpected,strCkPt)
   Select Case strAction
   Case "Set"
      Browser(WebBrowserDesc).Page(WebPageDesc).WebEdit(WebEditDesc).Set strParam
   ‘case "任意方法"

’执行任意方法

End Select

End Function

Public Function fnWebButton(WebBrowserDesc,WebPageDesc,WebButtonDesc,strParam,strExpected,strCkPt)
  Select Case strAction
  Case "Click"
    Browser(WebBrowserDesc).Page(WebPageDesc).WebButton(WebEditDesc).Click 
    Browser(WebBrowserDesc).Page(WebPageDesc).Sync

‘case "任意方法"

’执行任意方法

  End Select

End Function

Public Function fnWebElement(WebBrowserDesc,WebPageDesc,WebObjDesc,strParam,strExpected,strCkPt)
  Select Case strAction
  Case "VerifyMinorError"
    strActual=Browser(WebBrowserDesc).Page(WebPageDesc).WebElement(WebObjDesc).GetROProperty(strParam)
    Call fnVerfyMinorErro(strExpected,strActual,strCkPt)
  Case "VerifyProperty"
    strActual=Browser(WebBrowserDesc).Page(WebPageDesc).WebElement(WebObjDesc).GetROProperty(strParam)
    Call fnVerify(strExpected,strActual,strCkPt)
  ‘case "任意方法"

’执行任意方法

End Select

End Function

四.读取表格,实现数据表格引擎

这部分可以通过excel com实现,简单点可以通过qtp自身带的datatable对象完成处理数据表格

五. 技术实现框架其他部分

上层的处理功能,基本用到对象识别技术,qtp的aom接口技术等等

原先qtp的课程最早的时候是两天的课程完成自动化测试框架,因为技术的发展,现在需要4天完成一个项目的自动化测试框架设计以及实现的课程目标。

现在很多培训机构和个人讲师在讲工具只是讲技术点,而是否能设计并实现自动化测试框架是一个测试开发工程师(高级自动化测试工程师)的基本要求,技术点是基石,架构设计是艺术,课程高下在于课程本身内容的优劣,学习的目标。为什么很多人自学工具不行,为什么参加了付费培训也不会,这是因为自学一般都是在网络上学习,网络上学习的知识都是碎片化的,本身就缺乏知识体系,加上零散的知识点,学习起来必然又费力又收效小,参加付费培训也没有提高多少(少部分基础好的人觉得达成了培训目标,老师的只言片语对学生起到了提笔点睛的作用,自己通过快速总结突破了个人瓶颈,大部分的人感觉是学到了东西,但是根本就无法胜任工作,还沉醉在自责中), 也好还是网络上流传的文章技术技巧也好,都是以工具为主,而所有的工具和技术的采用都是为了完成测试目标,所以课程的设计也是以自动化测试框架的完成为目标。选择培训要看课程高度,技术点在什么情况下去讲,应该有应用场景,是围绕主线的应用场景,很多时候培训讲师是随意设计应用场景,对于自动化测试工具培训应该是围绕主线的自动化测试框架,自动化测试平台的设计,所有知识点应该是在这个框架里得到具体应用。我们有自动化测试框架设计的专项训练课程,希望可以和大家分享。

我们已经把qtp的自动化测试以及自动化测试框架课程已经免费,免费课程报名qq群:450192312

老李分享:qtp自动化测试框架赏析-关键字自动化测试框架的更多相关文章

  1. 老李分享:android app自动化测试工具合集

    老李分享:android app自动化测试工具合集   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨 ...

  2. 老李分享:大数据框架Hadoop和Spark的异同 1

    老李分享:大数据框架Hadoop和Spark的异同   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨 ...

  3. 老李分享:QTP的录制原理以及实现

    老李分享:QTP的录制原理以及实现   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:9088 ...

  4. python自动化测试(3)- 自动化框架及工具

    python自动化测试(3) 自动化框架及工具 1   概述 手续的关于测试的方法论,都是建立在之前的文章里面提到的观点: 功能测试不建议做自动化 接口测试性价比最高 接口测试可以做自动化 后面所谈到 ...

  5. RobotFramework自动化测试框架-移动手机自动化测试AppiumLibrary介绍

    在使用AppiumLibrary库时,需要预先安装好Appium自动化工具,Appium官网地址为:http://appium.io/ Appium的GitHub地址为:https://github. ...

  6. 接口自动化测试框架 (一) :APIAutoTest框架

    前言 随着测试技术的发展,接口自动化测试逐渐成为各大公司投入产出比最高的测试技术.介入时间早,执行效率高,稳定性高的优点,让越来越多的公司引入接口自动化测试. 框架简介 APIAutoTest是处理A ...

  7. 老李分享:接口测试之jmeter

    老李分享:接口测试之jmeter   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.移动端自动化测试很多人把他仅仅理解成appu ...

  8. 老李分享:导出xml报告到手机

    老李分享:导出xml报告到手机   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821 ...

  9. 老李分享:接电话扩展之uiautomator 1

    老李分享:接电话扩展之uiautomator   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq ...

随机推荐

  1. 【WC2015】混淆与破解 (Goldreich-Levin 算法)

    这个嘛= =直接贴VFK的题解就行了吧,感觉自己还是差别人太多 http://vfleaking.blog.uoj.ac/blog/104 讲得挺明白了的说,但还是挺难理解的说,中间实现部分简直不要太 ...

  2. BZOJ 1834: [ZJOI2010]network 网络扩容(网络流+费用流)

    一看就知道是模板题= = ,不说什么了= = PS:回去搞期末了,暑假再来刷题了 CODE: #include<cstdio> #include<iostream> #incl ...

  3. 解析java泛型(二)

    上篇我们简单的介绍了java中泛型的最基本的内容,知道了什么是泛型以及泛型对我们的程序编写有什么好处,最后一类型限定收尾.本篇将从类型限定开始阐述java泛型中很重要的概念:通配符 一.何为通配符   ...

  4. ABP入门系列(13)——Redis缓存用起来

    ABP入门系列目录--学习Abp框架之实操演练 源码路径:Github-LearningMpaAbp 1. 引言 创建任务时我们需要指定分配给谁,Demo中我们使用一个下拉列表用来显示当前系统的所有用 ...

  5. MyBatis 使用Generator自动生成Model , Dao, mapper

    最近   我新建了一 个maven 项目,使用的是spring + springmvc + mybatis框架. 听说Mybatis可以自动生成model和mapper以及dao层,我就从网上查了查资 ...

  6. iOS基础之顺传逆传传值(delegate、block)

    写给iOS新手的福利! 在项目中经常会用到传值,根据传值的方向分为顺传(从根控制器到子控制器)和逆传(从子控制器到根控制器).在这里写了个Demo简单演示了效果,创建了两个控制器: 一个为根控制器,一 ...

  7. ROJ 1166 超级贞鱼

    1166: 超级贞鱼 Time Limit: 1 Sec  Memory Limit: 128 MB [Submit][Status] 传送门 Description 马达加斯加贞鱼是一种神奇的双脚贞 ...

  8. jQuery的动态绑定事件的应用

    注意:bind()的事件绑定是只对当前页面选中的元素有效.如果你想对动态创建的元素bind()事件,是没有办法达到效果的 <script src="jquery-1.11.2.min. ...

  9. 【常见踩坑】USB调试安装失败(Installation failed with message INSTALL_CANCELED_BY_USER)

    一.写在前面 最近一直在忙活着项目重构,忙活了一个多月(那是天天加班,不分昼夜呀,ps:这不是我司要求的哈),终于把沉积了三四年的老项目给重构了,目前在测试阶段,也总算有了点闲时来跟大家分享分享一些问 ...

  10. .NET Core中的包、元包与框架

    本文为翻译文章,原文:Packages, Metapackages and Frameworks .NET Core是一个由NuGet包组成的平台.一些产品受益于细粒度包的定义,也有一些受益于粗粒度包 ...