本主题解释如何使用 SOAtest 在特定移动设备上显示 web 页面时记录、回放和验证它们。
在本章节中:
关于 SOAtest 的移动界面测试
可以使用 SOAtest 在特定移动设备上显示 web 页面时记录、回放和验证它们。这是通过让 SOAtest 假装是所需的移动设备(通过更改 SOAtest 的用户代理)来实现的,以便服务器向桌面浏览器发送适当的 web 应用程序的移动版本。例如,如果 SOAtest 将自己标识为 Android 设备,则它可能会访问一个旅游网站的 web 页面,如下所示:
可以通过输入适当的用户代理来模拟任何浏览器,但是用于回放的浏览器必须是使用传统引擎的 Firefox 或 Chrome 浏览器。
配置用户代理
若要配置 SOAtest 访问移动界面:
- 对于要测试的每个移动接口,配置一个扩展工具以使用适当的用户代理。这是通过设置系统属性 soatest.useragent 来完成的。覆盖到适当的用户代理。有关更多详情,请查阅 Sample Configurations 。
- 配置一个扩展工具来清除任何移动设备用户代理设置。这是通过设置系统属性 soatest.useragent 来完成的。覆盖到空字符串。例如,以下是清除移动设备用户代理设置的 Jython 脚本:
from java.lang import *
def setToDefault():
System.setProperty("soatest.useragent.override", "");
设置用户代理
配置好这些扩展工具后,按如下方式使用它们:
- 在为移动界面执行所需的记录/回放操作之前,运行设置适当用户代理的扩展工具。
- 想要停止移动界面录制/回放时,运行清除移动设备用户代理设置的扩展工具。
注意,当您通过运行一个扩展工具来更新用户代理时,只要 SOAtest 是打开的,或者直到您运行一个扩展工具将其设置回默认值,用户代理设置将一直保持不变。关闭 SOAtest 时,这些设置将不会持续。
提示
- 可以创建一个 .tst 文件来设置每个移动设备的用户代理,然后在多个场景中引用该 .tst 文件(请查阅 Reusing/Modularizing Test Suites 和 Creating Reusable (Modular) Test Suites 以获得引用 .tst 文件的更多详情)。通过这种方式,您可以一次性创建扩展工具,并在多个项目和场景中重用它。确保被引用的测试套件在调用移动接口的测试之前被定位。
- 如果您的测试场景将与设备无关的步骤与与设备相关的步骤相结合,那么您可能希望为通用步骤创建一个 .tst,然后在与设备相关的场景中引用该 .tst。因此,您可能会得到一个测试套件,它首先引用一个设置用户代理的 .tst,然后移动到另一个通过与设备无关的功能执行步骤的 .tst,最后执行特定于设备的导航和/或验证(比如,检查报告 "Download our app for Android"的链接。)
- 在运行命令行测试时,最好让每个 cli 会话使用单个用户代理。
- 如果每个场景都包含设置适当的用户代理的调用(包括返回到桌面浏览器),那么您可以运行一组使用不同用户代理的场景。
- 但是,如果假设您的场景和桌面浏览器没有显式地设置用户代理,那么您就不能在 cli 会话中与设置用户代理的其他场景一起运行它们。否则,在移动场景之后运行的任何桌面场景都将使用移动用户代理。
- 您可以使用 Parasoft 负载测试使用这些功能测试进行负载测试,只要以正常的方式对它们进行配置和验证 (如 为负载测试准备 Web 功能测试中所述)。
- 使用这些设备运行负载测试时,请确保每个负载测试使用单个用户代理。设置用户代理的选项是一个全局产品选项,不能基于每个会话或每个用户代理进行设置。因此,如果您使用设置了不同用户代理的不同测试场景进行负载测试,当一个场景更改用户代理时,所有虚拟用户的用户代理都将更改。
示例配置
以下是一些常见移动设备的 Jython 脚本示例。您可以访问显示给 任何 移动设备的接口;只需使用适当的用户代理。
IPhone
from java.lang import *
def setToMobile():
System.setProperty("soatest.useragent.override", "Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/ 528.16");
iPad
from java.lang import *
def setToDefault():
System.setProperty("soatest.useragent.override", "Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/ 531.21.10");
Android
from java.lang import *
def setToDefault():
System.setProperty("soatest.useragent.override", "Mozilla/5.0 (Linux; U; Android 2.1-update1; de-de; HTC Desire 1.19.161.5 Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17");
Blackberry
from java.lang import *
def setToDefault():
System.setProperty("soatest.useragent.override", "BlackBerry8700/4.1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1");
Windows Phone 7
from java.lang import *
def setToDefault():
System.setProperty("soatest.useragent.override", "Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; SAMSUNG; Taylor)");