本主题介绍了 SOAtest 的 web 功能(跨浏览器)测试能力。在本章节中:

Web 测试前言

Web 接口测试很难自动化。团队经常放弃自动化测试,而使用手动测试来代替,因为自动化测试会产生许多误报,或者因为维护测试套件需要太多的时间和精力。

SOAtest 旨在减少这些障碍。它在无需脚本的情况下便可隔离和测试独立的应用程序组件,用于跨多个浏览器的正确功能。动态数据可以用常数数据来剔除,以降低测试用例噪音。验证可以在页面对象级别上执行,也可在 HTTP 消息级别上执行,SOAtest 还通过异步 HTTP 消息桩函数在预期和意外情况下验证客户端 JavaScript 引擎。

关于 WebDriver 引擎

可以使用 Selenium WebDriver 进行 web 场景回放,也可以使用 Parasoft Native Driver (legacy) 引擎。有关更多详情信息,请查阅 关于 Selenium WebDriver 引擎

浏览器录制和跨浏览器执行

Web 测试的第一步是浏览器录制,其在 浏览器录制和回放中进行了描述。

一旦创建完成,测试将按照 执行功能测试中的描述执行。

扩展和重用 Web 场景

可以快速扩展已记录的 web 场景,以满足目标。以下示例是扩展和重用 web 场景的常见实践:

浏览器支持

Selenium WebDriver 引擎支持以下浏览器进行回放:
  • Firefox 47.0.1 及更早版本
  • Google Chrome
  • Internet Explorer 7+
  • Safari 5.1+ on Mac OSX
  • Microsoft Edge Windows Anniversary Edition (version 38.14393)+ 

使用 Parasoft Native Driver (legacy) 引擎录制和回放时支持以下浏览器:

  • Internet Explorer 8+
  • Google Chrome 9+


还可以通过桌面浏览器执行移动界面测试,如 移动界面测试中所述。

Firefox 注意事项

  • Firefox 3 或更高版本中不支持回放允许浏览文件并上传的输入。
  • 如果 Firefox 正在进行自动更新(更新已下载,但尚未安装),web 场景可能无法正确回放(Virtualize 将启动 Firefox,Firefox 将打开一个对话框检查附加组件兼容性;这会导致回放失败)。如果发生这种情况,请在 Virtualize 之外启动 Firefox,以完成更新安装。一旦更新完成,就可以像往常一样回放 web 场景。

Internet Explorer 注意事项

  • 使用 Internet Explorer 之前,请查阅 配置 Internet Explorer 设置

  • 对于 Internet Explorer 9 或 10,我们建议在注册事件侦听器时使用 addEventListener()。但是,如果使用 attachEvent(),这是一个特定于 IE 的事件模型,则需要手动更新 <Virtualize Directory>\eclipse\plugins\com.parasoft.xtest.libs.web_<version>\root\browsers\ie\HTMLUtil.js ,以强制 Virtualize 使用特定于 IE 的模型模拟 JavaScript 事件。您需要在这个文件中做以下更改:

    SOAtest

    “ext.HTMLUtil.preferLegacyEventModel = false;"
    更改为
    "ext.HTMLUtil.preferLegacyEventModel = true;"

    Virtualize

    “_wk_HTMLUtil.preferLegacyEventModel = false;"
    更改为
    "_wk_HTMLUtil.preferLegacyEventModel = true;"

  • 当 Internet Explorer 9 第一次启动时,它将打开一个警告对话框,其中声明“记录器注册器现在可以使用了”。您需要单击 Enable 以确保您的 web 场景能够正确地记录和回放。为了获得最佳效果,您应该在单击 Enable 后关闭并重新打开浏览器。

  • 不支持模态对话框中的文件输入。
  • Internet Explorer 8 及更高版本中不支持对文件输入(允许您浏览到文件并将其上传的输入)进行记录和回放。

Chrome 注意事项

  • 当在 Linux 上指定 Chrome 可执行文件的路径时,请选择 google-chrome (比如, /opt/google/chrome/google-chrome)—not chrome。在 Windows 上,路径通常是 C:\Users\usernane\AppData\Local\Google\Chrome\Application\chrome.exe。在 Mac 上,路径通常是 /Applications/Google Chrome.app
  • 如果您刚刚记录了一个 web 场景,而最后一步的浏览器内容没有被捕获,那么您可以播放该场景来捕获该内容。注意,当关闭浏览器窗口停止录制时,就会发生这种情况。推荐的最佳实践是通过单击 Stop Recording 按钮(而不是关闭浏览器窗口)来停止录制。

  • 在 Chrome 上,自动生成异步请求测试只捕获来自 XMLHttpRequest 对象的请求。它不检测来自隐藏 IFrame 调用的异步请求。如果需要,您可以手动添加这样的异步请求测试。

  • 当用户对一个元素进行操作时,Chrome(与 Internet Explorer 和 Firefox 不同)不会检查其他帧,以确保定位器在帧之间是唯一的。因此,一个已记录的动作可能会在它所记录的帧之外的帧中回放。如果遇到这种意外行为,请确定一个唯一的定位器并更改浏览器回放工具中使用的定位器。

  • 在某些情况下,在异步请求发生之前需要登录。Firefox 和 IE 将检测到这一点,测试套件将自动创建执行此登录的安装测试。然后,异步测试将使用通过登录创建的 cookie。Chrome 不支持这一点。对于 Chrome, SOAtest 可以生成异步请求测试,但是登录步骤需要手动设置。要么作为设置测试,要么作为异步测试之前运行的测试套件工具。

  • Chrome 不支持对文件输入(允许浏览文件并上传文件的输入)进行记录和回放。
  • 当使用 Parasoft 本机引擎在 Mac 上录制或回放 Chrome 时,关闭 Chrome 会打开一个对话框,上面写着“Google Chrome 希望使用存储在密钥链中的‘Chrome Safe Storage’中的机密信息。想允许访问这个项目吗?”即使您选择“总是允许”,这个对话框也会在每次 Chrome 启动和关闭时打开。若要防止每次打开此对话框:
    • 请打开 Applications> Utilities> Keychain Access
    • 控件,单击 Chrome Safe Storage,然后从快捷菜单中选择 Get Info 。
    • 切换到 Access Control,选择 Allowall applications to access this item,然后单击 Save Changes。您将需要输入管理员密码才能继续。

Safari 注意事项

  • Safari 支持使用 Selenium WebDriver 引擎进行回放。

       •  有关相关限制的列表,请参见 Safari-Specific Issues

Microsoft Edge 注意事项

必须有您 Edge 版本可执行正确的 MicrosoftWebDriver。如果您收到“无法启动 Microsoft Edge”的错误消息,您可能需要下载驱动程序。有关其他信息,请访问 https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver 。

在 Microsoft Edge 中对回放进行故障排除

当 SOAtest/Virtualize 进程以特权访问方式运行时,无法启动 Edge。采取以下行动来解决这个问题:

  1. 使用非管理员帐户或打开用户帐户控制通知的管理员帐户,以非特权进程的形式运行 SOAtest/Virtualize。
  2. 启用管理员用户的用户帐户控制通知:

    非 Windows 家庭版:

    1. 打开本地安全策略(secpol.msc),并在本地策略/安全选项下启用 User Account Control Admin Approval Mode for the Built-in Administrator account

    Windows 家庭版:

    1. 使用 regedit.exe 导航到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
    2. 如果不存在,则创建 DWORD 值 "FilterAdministratorToken"
    3. 将 "FilterAdministratorToken” 的值设置为 1
     
  3. 如果在启动期间从计划的任务启动 SOAtest/Virtualize,请确保启用了 Run only when user is logged on 选项。

  • No labels