透析QTP自动化测试框架SAFFRON

简介: 1、为什么要使用框架? 原文地址:http://www.uml.org.cn/Test/200810108.asp 作者:陈能技 框架是一组自动化测试的规范、测试脚本的基础代码,以及测试思想、惯例的集合。

1、为什么要使用框架?

原文地址:http://www.uml.org.cn/Test/200810108.asp 作者:陈能技

框架是一组自动化测试的规范、测试脚本的基础代码,以及测试思想、惯例的集合。可用于减少冗余代码、提高代码生产率、提高代码重用性和可维护性。例如QTestWare就是QTP自动化测试框架中的一类。

2、SAFFRON简介

SAFFRON是针对Web开发的一个简单的QTP测试框架原型,是Adam Gensler于06年写的,需要QTP 9.1版本以上。完整的SAFFRON脚本代码可到以下地址获取:http://www.itestware.com/ctest/index.php?option=com_content&view=article&id=62:webqtp-saffron&catid=35:testing_is_believing

3、如何使用SAFFRON?

SAFFRON框架以外部VBS文件的形式出现,因此使用方法比较简单,直接在测试脚本中以资源形式导入即可使用,如图所示:

透析QTP自动化测试框架SAFFRON

导入后,可在“Available Keywords”视图中看到SAFFRON的所有函数,如图所示:

透析QTP自动化测试框架SAFFRON

选中某个函数,拖拽到专家视图的编辑器中,如图所示:

透析QTP自动化测试框架SAFFRON

后接一个URL地址,例如“http://www.itestware.com”,即可使用SAFFRON框架中的BrowseTo函数导航到指定的URL地址,如下脚本所示:
'BrowseTo(url)
BrowseTo "http://www.itestware.com"

4、SAFFRON框架代码剖析

为了深入了解SAFFRON,以及框架的使用方法,下面我们将分别介绍SAFFRON中的主要函数,对SAFFRON代码进行深入剖析。

4.1 导航到指定URL

SAFFRON使用名为BrowseTo函数来负责导航到指定的URL,如果浏览器尚未启动,则先调用函数Launch来打开浏览器。BrowseTo函数的定义如下所示:
     Public Function BrowseTo (url)
      thirdlevel = ""
      Report micPass, "Navigate to URL", "Navigating to URL: " & Quote(url)
      If initialized Then
       Execute GenerateDescription("Browser") & "Navigate " & Quote(url)
      Else
       Launch "website", url
      End If
      Reporter.Filter = rfDisableAll
     End Function

在脚本中,会判断是否初始化了浏览器,如果有则执行导航动作,导航到指定的URL。导航动作是执行这行脚本来完成的:
     Execute GenerateDescription("Browser") & "Navigate " & Quote(url)

Execute是一个用于执行指定VBScript脚本语句的函数,GenerateDescription函数的定义如下所示:
     ' Generates a generic description based up on the "level" viarable
     ' levelstr - will be one of the values that is in the level array
     ' returns - string representative of the object hierarchy
     Public Function GenerateDescription (levelstr)
      l = IndexOf(level, levelstr)
      If l >=0 Then
       fdesc = level(0) & "(" & Quote(desc(0)) & ")."
       If l >= 1 Then
        fdesc = fdesc + level(1) & "(" & Quote(desc(1)) & ")."
        If 2 >= l Then
         If thirdlevel <> "" Then
          fdesc = fdesc + level(2) & "(" & Quote(desc(2)) & "," & Quote("name:=" & thirdlevel) & ")."
         End If
        End If
       End If
      End If
        GenerateDescription = fdesc
     End Function

4.2 返回测试对象的描述

GenerateDescription函数用于返回对象的描述性语句,例如,指定Browser,则返回如下语句:
     "Browser("micclass:=Browser")."

该语句代表了当前浏览器对象,并且后面加了个点号,这是为了方便后接"Navigate "这个浏览器对象的导航操作,以及指定的URL字符串,例如"http://blog.csdn.net/testing_is_believing"。在Execute时,其实执行的VBScript语句如下所示:
     Browser("micclass:=Browser").Navigate "http://blog.csdn.net/testing_is_believing"

经过SAFFRON的框架封装后,则只需要使用如下语句即可达到同样的效果:
BrowseTo "http://blog.csdn.net/testing_is_believing"

4.3 启动浏览器

SAFFRON使用名为BrowseTo函数来负责导航到指定的URL,但是如果浏览器未启动,则会先调用函数Launch来打开浏览器。Launch函数的定义如下所示:
     prepares the framework for usage, and configures all internal framework
     ' variables and structures
     ' apptype - used to launch different types of applications based
     '           upon different technologies -- currently there is only web
     ' val     - string that represents what to launch
     ' returns - always returns true
     Public Function Launch (apptype, val)
      If "website" = apptype Then
       thirdlevel = ""
       Report micPass, "Initialize", "Initializing Framework"
       level = split(webLevels, leveldelimiter, -1, 1)
       desc = split(webLevelsDesc, leveldescdelimiter, -1, 1)
       object = split(objects, objectdelimiter, -1, 1)
       objectDescription = split(objectsDescription, objectsDescriptiondelimiter, -1, 1)
       CloseBrowsers
       Set IE = CreateObject("InternetExplorer.Application")
       IE.visible = true
       IE.Navigate val
       While IE.Busy
        wait 1
       Wend
      End If
      initialized = true
      Launch = true
     End Function

可看到脚本中创建了IE的COM对象,然后设置IE的Visible属性设置为Tue,让浏览器可见,然后调用IE对象的Navigate方法导航到指定的URL。除了创建IE的COM对象外,在Launch函数中还进行框架其它方面的初始化。

相关文章
|
3天前
|
Web App开发 JavaScript 前端开发
深入理解自动化测试框架Selenium的设计与实现
【4月更文挑战第20天】 在软件测试领域,自动化测试已成为提升测试效率和确保产品质量的关键手段。Selenium作为一款广泛使用的开源自动化测试框架,其设计精巧且功能强大,为Web应用提供了一种灵活、高效的测试解决方案。本文将深入探讨Selenium的核心架构与实现细节,解析其如何通过模拟用户操作来执行测试用例,以及它如何适应不断变化的Web技术标准。通过对Selenium内部机制的剖析,旨在帮助测试工程师更好地掌握该工具,并在测试实践中发挥其最大效能。
|
5天前
|
监控 测试技术 数据安全/隐私保护
如何将代理IP集成到自动化测试框架中?
如何将代理IP集成到自动化测试框架中?
|
7天前
|
敏捷开发 监控 前端开发
深入理解自动化测试框架Selenium的架构与实践
【4月更文挑战第16天】 在现代软件开发过程中,自动化测试已成为确保产品质量和加快迭代速度的关键手段。Selenium作为一种广泛使用的自动化测试工具,其开源、跨平台的特性使得它成为业界的首选之一。本文旨在剖析Selenium的核心架构,并结合实际案例探讨其在复杂Web应用测试中的高效实践方法。通过详细解读Selenium组件间的交互机制以及如何优化测试脚本,我们希望为读者提供深入理解Selenium并有效运用于日常测试工作的参考。
13 1
|
7天前
|
自然语言处理 测试技术 API
深入理解自动化测试框架Selenium的设计理念与实践
【4月更文挑战第15天】 在现代软件开发过程中,自动化测试已成为确保产品质量和加速迭代的关键手段。Selenium作为一种广泛使用的自动化测试框架,提供了对多种浏览器和平台的支持,极大地促进了Web应用的功能测试。本文旨在剖析Selenium的核心设计理念,探讨其在实际项目中的应用,并指出常见的误区及最佳实践,以期帮助测试工程师更高效地利用Selenium进行测试工作。
|
9天前
|
监控 测试技术 API
深入理解自动化测试框架Selenium的设计与实现
【4月更文挑战第14天】在软件开发过程中,自动化测试是确保代码质量、减少人工重复劳动的关键步骤。Selenium作为一款广泛使用的自动化测试工具,提供了对多种浏览器和操作系统的支持。本文将探讨Selenium的核心组件及其架构设计,分析其如何通过WebDriver与浏览器交互,以及它如何支持多种编程语言进行脚本编写。同时,我们还将讨论Selenium Grid的作用以及它如何实现并行测试,以缩短测试周期并提高测试效率。
174 59
|
11天前
|
Web App开发 前端开发 Java
框架分析(11)-测试框架
框架分析(11)-测试框架
|
25天前
|
敏捷开发 设计模式 监控
深入理解自动化测试框架的设计原则
在软件开发的复杂多变环境中,自动化测试已成为确保产品质量和加速市场交付的关键步骤。本文将探讨自动化测试框架的设计原则,包括模块化、可扩展性、易用性和可靠性,旨在为软件测试工程师提供构建高效、健壮且易于维护的自动化测试系统的指导。通过分析设计模式的应用,我们将了解如何减少代码冗余,提高测试覆盖率,并适应快速变化的技术要求。
|
26天前
|
前端开发 IDE JavaScript
深入理解自动化测试框架Selenium的设计与实现
本文旨在探讨开源自动化测试框架Selenium的核心设计及其实现机制。通过分析其架构、组件和工作原理,揭示Selenium如何有效地支持跨浏览器、跨平台的自动化Web测试。文中不仅介绍了Selenium的主要功能模块,还详细讨论了其面临的挑战及应对策略,为读者提供了深入了解和使用Selenium的理论基础和实践指导。
|
28天前
|
敏捷开发 测试技术 持续交付
深入探索软件测试自动化:框架与实践
在快速演进的软件行业中,测试自动化已成为确保产品质量和加快上市速度的关键因素。本文将深入分析测试自动化框架的构建要点,探讨其在实际应用中的效益,以及实施过程中可能面临的挑战。通过对比手动测试与自动化测试的优势与局限,本文旨在为读者提供一套系统化的测试自动化实践指南,以支持更高效、可靠的软件开发周期。
11 0
|
29天前
|
设计模式 敏捷开发 监控
深入理解与应用软件自动化测试框架
在快速迭代的软件开发过程中,自动化测试已成为确保产品质量和加快交付速度的关键因素。本文将详细探讨自动化测试框架的核心原理、设计模式及其在实际项目中的应用。我们将分析几种流行的自动化测试工具,如Selenium、Appium和JUnit,并讨论它们如何集成以形成强大的测试解决方案。文章还将展示通过自定义框架来满足特定测试需求的实例,以及如何通过持续集成和持续部署(CI/CD)流程优化测试实践。