Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Table of Contents
maxLevel1
jij

对扫描进行配置

扫描测试是执行测试用例时抓取指定 web UI 的测试。若要配置 SOAtest 扫描 web UI,则如下添加扫描测试:

  1. 进行下列其中一项操作:
    • 若要添加 "Scanning Test” 到新的 .tst 文件:右键单击想将要添加 .tst 文件的项目节点,然后选择 新建测试( .tst)文件。为新的 .tst 文件输入名称,单击 下一步,然后选择 Web> 扫描 web 应用程序
    • 若要添加 "Scanning Test” 到现有项目:选择要添加新测试的测试套件节点,并单击 Add Test Output.



      在打开的“添加测试”向导中,选择左侧的 Standard Test ,右侧的 Scanning Tool ,然后单击 完成
  2. 指定是否要从 HTTP、FTP 或本地源进行扫描。
    • 如果选择 FTPLocal,请填写可用字段,然后才能完成配置。可以跳过以下选项:

      Info
      iconfalse
      title FTP 选项

      在指定 FTP 源时,存在以下选项:

      • Case Insensitive Server:指明你的服务器不区分大小写。:指明您的服务器不区分大小写。
      • Follow Symbolic Links:如果选择此项,它会告诉 SOAtest 去扫描符号链接,就像这些链接是 ftp 站点上的实际文件或文件夹一样。 如果链接指向文件夹,则 SOAtest 将扫描该文件夹的内容。
    • 如果选择 HTTP,则按照下面的详细步骤继续指定设置。
  3. 选择 HTTP Tool SettingsRequired Basic Settings 选项卡,并完成以下内容:
    • Start URL:在字段中指定 URL 或 .urls 文件。
      • 如果 URL 的用户名和密码作为‘*’输入,则 SOAtest 将首先尝试使用最近 URL 的相同凭证,最近 URL 与此 URL 前面并属于同一个域的。如果该凭证没有用于此 URL,则 SOAtest 将打开域密码对话框,询问你输入的凭证是否正确?将打开域密码对话框,询问您输入的凭证是否正确?

        Info
        iconfalse
        title使用 .urls 文件

        Anchor
        Using .urls Files
        Using .urls Files
        如果计划将积极的限制添加到项目,然后启动将文件中指定的 如果计划将正向的限制添加到项目,然后启动将文件中指定的 URL 上所有合适的站点加载到 Project Creation 面板中指定的默认深度,则使用 .urls 文件。如果为受保护的 URL 指定用户名和密码,则凭证将自动添加到项目中。

        .urls 文件的格式为:URL 在单独行上指定;如果为 URL 指定凭证,则它必须按照 url 的顺序放在同一行:url、username、password。Url、user-name、password 以逗号分割。如果三个中的任何一项存在逗号,则该项都必须放在一对双引号内。如果任何项包含双引号,则每个双引号必须使用另一个双引号进行转义,并且将所有项放在双引号内。例如,
        http://url1.com/
        http://url2.com/, username, password
        http://url3.com/, "user,name", ",password,"
        http://url4.com/, "username", "pass""word"

    • Limit loading depth:如果不想要 SOAtest 尝试加载整个站点,使用此控件限制加载深度。深度设置决定加载站点点击深度(链接)的数量。加载深度为 0 意味着只加载初始页面。如果希望只测试站点中所选定路径,或者如果希望 SOAtest 根据日志文件项中记录的流量自动构建站点结构和路径,那么该选项尤其有用。
    • Restrict scanning to deepest subdirectory of start URL:如果希望 SOAtest 只加载初始启动 URL 的子目录,请选择此选项。有关更多详情,请查阅 限制扫描到启用 URL 的最深子目录
    • 遵循表中未指定为限制的重定向:如果希望 SOAtest 遵循重定向未指定为允许 URL 的站点,请选择此选项。有关重定向处理的更多详情,请查阅 Understanding and Configuring Redirect Handling
    • 允许/限制 URL:如果访问某些页面(例如,日志输出页面)可能防止 SOAtest 正确地和/或完整地加载站点,通过在表中将它们标记为受限制的 URL 来提示 SOAtest 避免这些页面;有关详细说明,请查阅 Preparing SOAtest to Load Sites that Use JavaScript
    • Form Options:可使用以下选项:
      • Scan Forms With Default Input:默认关闭
      • Fill Active Inputs Manually:默认开启
  4. 如果想要输入连接密码,则选择 Realm Passwords 选项卡并单击 Add 来指定密码。
  5. 如果想要指定高级扫描选项,则选择 Advanced Settings 选项卡,然后完成以下内容:
    • Default Pages:* (这是默认的设置)
    • Obey Robot Restrictions:关闭(前提条件是站点的 Wedmaster 授权你忽略机器人限制)授权您忽略机器人限制)
    • Pass Cookies:开启
    • Invoke CGI For All Arguments:开启
    • Case Insensitive Server:取决于你的服务器:取决于您的服务器
    • Aliases:取决于你的站点。如果你的站点使用别名,则通过单击:取决于您的站点。如果您的站点使用别名,则通过单击 Add 按钮在此书进行输入。 Alias 是希望 SOAtest 要考虑的一个域,相当于项目中其中一个站点的域。例如, http://www.parasoft.com 可能拥有别名 parasoft.comwww.parasoft.com
  6. 单击 保存

现在可以在测试套件或单个扫描工具上运行任何可用的测试配置。执行测试时,SOAtest 会快速浏览静态和动态页面,并至少加载它遇到的每个页面的一个实例。

如果选择了推荐的 HTTP 配置选项,并且你的站点包含表格,则 配置选项,并且您的站点包含表格,则 SOAtest 允许你使用表单输入对话框填充表单。如果在 允许您使用表单输入对话框填充表单。如果在 SOAtest 加载你的站点时打开表单输入对话框,则请按照 加载您的站点时打开表单输入对话框,则请按照 Populating Forms中所述将其完成。

对特殊加载问题进行处理

...

如果 URL 标记为受限制,则 SOAtest 将不会加载在扫描期间遇到的 URL。如果不希望 SOAtest 访问某些目录或文件,你可以将它们标记为受限制 URL。例如,如果你有一个输出页面,则你可能希望将其标记为受限制,以便它不会阻止加载其他页面或导致其他页面无效。SOAtest 访问某些目录或文件,您可以将它们标记为受限制 URL。例如,如果您有一个输出页面,则您可能希望将其标记为受限制,以便它不会阻止加载其他页面或导致其他页面无效。SOAtest 在创建路径、使用虚拟用户使用站点等时,避免了受限制的 URL。如果站点有一个 Web 服务器资源,则可以在加载该站点之前指定受限制的 URL(如本章中所述)。

...

还可以指定其他受允许的 URL。对于配置 SOAtest 来加载 相关站点,这一点特别有用。相关站点是链接到其中一个项目站点的任何站点,但没有与项目站点相同的主机名。例如,你的主要项目来源是,这一点特别有用。相关站点是链接到其中一个项目站点的任何站点,但没有与项目站点相同的主机名。例如,您的主要项目来源是 http://www.parasoft.com ,并且该站点链接到 http://forums.parasoft.com http://www2.parasoft.com,这两个站点都是当前项目的相关站点。如果希望 SOAtest 在当前项目上下文中遇到相关站点时自动它们,则需要指明它们是受允许的 URL。

...

JavaScript 消息SOAtest 消息默认的 SOAtest 操作
JavaScript 警告JavaScript 警告:"message"单击 确认 按钮
JavaScript 提示JavaScript 提示:"message"单击 取消 按钮
JavaScript 确认JavaScript 确认:"message"单击 取消 按钮

如果希望 SOAtest 以不同方式处理这些信息,你可以使用脚本定义自定义行为。有关更多详情,请查阅 以不同方式处理这些信息,您可以使用脚本定义自定义行为。有关更多详情,请查阅 Customizing Scanning with Scripting Hooks

...

如果选择了 Fill Active Inputs Manually HTTP 配置面板多选框(默认启用),则 SOAtest 会在每次检测要求用户输入的表单打开一个表单输入对话框。如果希望 SOAtest 分析表单提交后返回的页面,则需要告诉 SOAtest 如何填充表单不同的输入元素(文本字段、多选框、单选框等)。可以通过在加载过程中在这些对话框中指定固定输入来实现这一点。

不需要为每个表单添加测试输入。我们推荐你只添加需要访问站点所有主要区域的输入;可以根据需求跳过对话框。而且,如果 不需要为每个表单添加测试输入。我们推荐您只添加需要访问站点所有主要区域的输入;可以根据需求跳过对话框。而且,如果 SOAtest 可以在不需要提交特定表单输入时访问所有站点区域,则不需要在加载过程中输入任何表单输入。

若要指明你不希望输入任何表单的信息:若要指明您不希望输入任何表单的信息:

  • 在第一个对话框中单击 跳过所有

若要输入某个或所有表单的输入:

...

为此...执行该操作...
标记输入提交。Form Test Name 字段中输入新名称。
输入当前表的信息。
  1. 使用配置表单输入控件来为每个表单输入元素添加或更改输入。如果不为特定元素添加输入,则将提交默认输入(如代码中所指定)。
  2. (可选项)更改默认的表单提交方法。
    • 若要模拟一个简单的 JavaScript 提交或者是模拟用户通过按 Enter 键提交表单,则选择 Implied Submit 选项。
    • 若要模拟用户通过单击提交按钮进行表单提交,可以选择代表提交按钮(例如,Image: "Anonymous”)的选项,也可以点击提交图像特定区域(如果在表单输入面板中可用)。
  3. 准备添加输入时,单击 Add

添加输入后,SOAtest 会重新打开相同的表单对话框,以便可以输入其他的信息。

指明你不希望输入当前表单的任何其他信息:指明您不希望输入当前表单的任何其他信息:单击 跳过
指明你不希望输入当前表单或任何该表单的其他实例的任何其他信息:指明您不希望输入当前表单或任何该表单的其他实例的任何其他信息:单击 跳过表单
指明你不希望在该站点中输入表单的任何其他信息:指明您不希望在该站点中输入表单的任何其他信息:单击 跳过所有
浏览到与当前表单相关联的页面。单击 查看

了解表单输入目的和选项

如果你的站点使用表单,并且你希望 如果您的站点使用表单,并且您希望 SOAtest 加载并测试这些表单提交后返回的页面,则需要告诉 SOAtest 如何填充表单不同的输入元素(文本字段、多选框、单选框等)。要测试的页面实例越多,则需要填充表单的信息就越多。

...

  1. (可选项)更改 Form Test Name 字段中的输入标签名。
  2. (可选项)更改 Form Action 字段中的表单操作。
    • 如果希望使用默认的表单操作(如代码中所指定),则选择 Default 选项。注意,如果默认值更改,SOAtest 将会自动更新表单操作;你将不需要手动更新表单测试。将会自动更新表单操作;您将不需要手动更新表单测试。
    • 如果你希望指定固定值,请选择 如果您希望指定固定值,请选择 Fixed 选项,然后在文本字段中指定需要的表单操作。
  3. 使用表单输入控件来为每个表单输入元素添加或更改输入。
    • 如果希望使用默认输入(如代码中所指定),则选择 Default 选项。注意,如果默认值更改,SOAtest 将会自动更新表单测试值;你将不需要手动更新表单测试。将会自动更新表单测试值;您将不需要手动更新表单测试。
    • 如果你希望指定固定值,请选择如果您希望指定固定值,请选择 Fixed 选项,然后使用可用的控件指定需要的值。
      • 多选框、单选框和选择输入有一个 User-Defined 选项,它允许指定字符串作为该输入的值发送。
      • 单选按钮和选择输入还有一个 Index 选项,它允许指定单选按钮或选择选项的索引。如果指定了一个索引,则无论该选项进行了怎样的更改,都将发送单选按钮或选项的值。索引从 0 开始。例如,如果希望一直选择第二个选项,则你可以选择索引选项并选择所以“1”。对于单选按钮,每个索引都显示该索引处单选按钮的当前值。对于选择输入,选项的当前显示值与每个索引一起显示。开始。例如,如果希望一直选择第二个选项,则您可以选择索引选项并选择所以“1”。对于单选按钮,每个索引都显示该索引处单选按钮的当前值。对于选择输入,选项的当前显示值与每个索引一起显示。
      • 选择输入存储显示值,该值用于选择,而不是发送给服务器。因此,当提交值更改时,你将不需要更改测试。选择输入存储显示值,该值用于选择,而不是发送给服务器。因此,当提交值更改时,您将不需要更改测试。
    • 如果希望 SOAtest 从表单出现的页面上提取表单输入值。例如,如果正确的表单值是通过 JavaScript 动态设置的,选择 Extracted,使用经常出现在要提取的值左侧的文本字符串填充 左侧的 text 字段,然后使用通常出现在希望提取的值右侧的文本字符串填充 右侧的 text 字段。例如,若要从文本 pre123post中提取值 123 ,则可以在 左侧的 text 字段中输入 pre,在 右侧的 text 输入 post
    • 如果希望禁用一个启用的输入,请选择 Disable 选项。如果希望启用一个禁用的输入,请选择 Enable 选项。
    • 如果希望使用自定义方法的返回值,请选择 Script 选项。单击 Edit 按钮来创建或编辑方法,然后选择需要的方法以便在弹出对话框的 Method 下拉菜单中使用。如果存在两个或多个方法,你还可以选择不同的方法,以便在表单面板中下拉菜单中使用。 下拉菜单中使用。如果存在两个或多个方法,您还可以选择不同的方法,以便在表单面板中下拉菜单中使用。
  4. (如果表单有一个 OnSubmit 处理程序)根据是否希望在测试期间使用处理程序来启用或禁用 Process OnSubmit Handler When Submitting Form 选项。
    • 如果表单有个一 OnSubmit 处理程序,则该选项默认设置为 true。除非该表单测试在使用浏览器记录路径时已经创建。在这种情况下,它被设置为 false,因为在 SOAtest 记录仪浏览器中的路径时,SOAtest 会以这样的方式来配置表单测试,该方式为 OnSubmit 不需要被处理(并且,事实上,以这种方式处理这个处理程可能会导致路径执行期间发生问题)
  5. (可选项)更改默认的表单提交方法。
    • 如果希望模拟一个简单的 JavaScript 提交,或者是模拟用户通过按 Enter 键提交表单,则选择 Implied Submit 选项。
    • 如果希望模拟用户通过单击提交按钮进行表单提交,可以选择代表提交按钮(例如,Image: "Anonymous”)的选项,也可以点击提交图像特定区域(如果在表单输入面板中可用)。

对加载期间的身份验证进行管理

如果 SOAtest 访问了需要身份验证的页面,则将打开一个密码对话框,需要你输入有效用户名和密码。访问了需要身份验证的页面,则将打开一个密码对话框,需要您输入有效用户名和密码。

在合适的字段中输入有效的用户名和密码,请指定是否希望 SOAtest 在该项目文件中保存密保,然后单击 OK

...

Expand
title什么是允许域 URL?

允许域 URL 告诉 SOAtest 加载域中所有页面。例如,如果你的站点为 加载域中所有页面。例如,如果您的站点为 http://www.parasoft.com,则允许域 URL 将是 http(s)://www.parasoft.com/* ,其中通配符型号代表该域中任何链接。

将加载扫描期间域中任何链接,如 http://www.parasoft.com/dir1/dir2/page2/html 或 https://www.parasoft.com/dir/page1.html

当输入启用 URL 时,允许域 URL 将自动添加到 Allowed/Restricted URLs 表中。

Expand
title如果我只想扫描我站点中的某个目录呢?

你将需要将条目添加到 您将需要将条目添加到 允许/限制 URL 表中来控制该内容是否扫描。如果你的  表中来控制该内容是否扫描。如果您的 web 站点有几千种类型硬件的信息,则你可能希望限制扫描该站点两种类型的硬件:路由器和硬盘。除了站点的旧部分,还希望处理站点的所有其他部分。站点有几千种类型硬件的信息,则您可能希望限制扫描该站点两种类型的硬件:路由器和硬盘。除了站点的旧部分,还希望处理站点的所有其他部分。

例如:

  • 如果希望启用扫描 URL http://www.dev.parasoft.com/index.html
    • 将 tp://www.dev.parasoft.com/index.html 输入到 Start URL 字段。这个允许 URL 将自动添加到 Allowed/Restricted URLs 表中:+  http(s)://www.dev.parasoft.com/*
  • 若只扫描 hardware 目录中的两个文件夹 Routers 和 Disks ,则需要将以下条目按照下面的顺序添加到表中:
    • - http(s)://www.dev.parasoft.com/newdir/hardware/*
    • + http(s)://www.dev.parasoft.com/newdir/hardware/Routers/*
    • + http(s)://www.dev.parasoft.com/newdir/hardware/Disks/*
  • 若要限制对旧目录的扫描,则需要添加以下条目。
    • - http(s)://www.dev.parasoft.com/olddir/*

添加上述 URL 之后,允许/限制 URL 表应包含以下内容:

  • +  http(s)://www.dev.parasoft.com/*
  • - http(s)://www.dev.parasoft.com/newdir/hardware/*
  • + http(s)://www.dev.parasoft.com/newdir/hardware/Routers/*
  • + http(s)://www.dev.parasoft.com/newdir/hardware/Disks/*
  • -  http(s)://www.dev.parasoft.com/olddir/*

有关更多详情,请查阅 准备 SOAtest 在扫描期间限制和/或允许 URL 

...

Expand
title如果我的站点与协议 HTTP 和 HTTPS 链接会发生什么?

当你启用 当您启用 URL 时,SOAtest 将自动将允许域限制(如 http(s)://www.parasoft.com/*)添加到 Allowed/Restricted URL's 表中。

使用 http(s)://... ,以便指定 URL 的 http 和 https 都被允许或都被限制。

如何希望将扫描限制为站点的非加密版本或加密版本,则可以将删除星号,或者使用 's’ 来代替。

...

Expand
title在 SOAtest 扫描注销页面后,我的站点不会完全加载。该如何防止自动注销?

如果你的站点包含注销页面,它可能导致 如果您的站点包含注销页面,它可能导致 SOAtest 停止扫描。如果 SOAtest 遇到这种类型的页面,SOAtest 将注销该用户。这将造成其他页面不可访问,因为用户已经不存在。可以通过限制注销页面的加载来防止扫描期间发生这种事。

可以将用于包含注销事件的页面的 URL 限制添加到允许/限制 URL 表中。例如,如果注销页面是 http://www.parasoft.com/logout.html ,则你可以添加其作为受限制的 ,则您可以添加其作为受限制的 URL,以使得不可对其进行加载。

Expand
title如果我的页面包含表单怎么办?

每次 SOAtest 检测要求用户输入的表单时都会打开一个表单输入对话框。

有关更多详情,请查阅 Populating Forms 

...

挂钩在脚本中使用自定义方法定义和自定义。同一个文件可以定义多个挂钩。如果向一个挂钩添加多个方法,则在调用该挂钩时将执行该挂钩定义的所有方法。

你可以以在 您可以以在 SOAtest中创建、应用和调用其他脚本相同的方式创建、应用和调用脚本:在启动时(只针对 JavaScript 和 Jython 脚本),通过创建和应用扩展工具,通过向特定路径节点添加脚本来定义挂钩。你可以在不同的时间调用挂钩以引出所需的功能。例如,如果想要将脚本的挂钩功能应用于所有项目和网址,则可以将定义并使用该挂钩的 脚本),通过创建和应用扩展工具,通过向特定路径节点添加脚本来定义挂钩。您可以在不同的时间调用挂钩以引出所需的功能。例如,如果想要将脚本的挂钩功能应用于所有项目和网址,则可以将定义并使用该挂钩的 JavaSCript 或 Jython 脚本添加到 <soatest_install_dir>/plugins/com.parasoft.xtest.libs.web_<soatest_version>/root/startup directory目录;然后,任何调用该挂钩的时候,都将执行相关联的用户指定方法。将会一直执行该方法,直到调用该挂钩上的 clear()。

...

首先,创建 Jython 文件(命名为 startup.py),它定义只接受一个参数的方法。该参数的值与 JavaScript 中传递给 confirm() 方法的值相同。根据你所需的逻辑,确定希望 方法的值相同。根据您所需的逻辑,确定希望 confirm() 返回“true”还是“false”,然后从定义的方法返回该值。若要让 SOAtest 使用你刚刚定义的方法,则通过以下方法将其添加到 使用您刚刚定义的方法,则通过以下方法将其添加到 Confirm 挂钩,其中传递给 set 的参数是你定义的方法的名称。在这个例子中,定义的方法命名为 的参数是您定义的方法的名称。在这个例子中,定义的方法命名为 myConfirmHook。

Code Block
from com.parasoft.api import Application
# msg will have the same value that gets passed to confirm() def myConfirmHook(msg):
    if msg == "Yes or no?":
        return 1
    return 0
Application.getHook("Confirm").set(myConfirmHook)

...

可以定义逻辑来确定返回值是否基于传递给 prompt() 方法的参数。调用 prompt() 方法时返回“null”等价于在浏览器打开的提示框中点击 Cancel 按钮。使用与你为 按钮。使用与您为 confirm() 添加自定义方法相同的方式将该方法添加到合适的挂钩中,但此时挂钩命名为“Prompt”。下面是一个例子,返回 "http://www.parasoft.com” 的脚本作为 prompt() 的值:

...

可以通过将合适的逻辑添加到为 Confirm 或 Prompt 挂钩定义的方法中,以使 SOAtest 返回不同情况下的不同 confirm() 或 prompt() 值。通过使用要添加到 Confirm 或 Prompt 挂钩的方法的第一个参数文本来确定返回的值。例如,你可能希望 挂钩的方法的第一个参数文本来确定返回的值。例如,您可能希望 SOAtest 返回提示“输入 URL”的 http://www.parasoft.com ,但返回的却是提示“输入名字” John 。该功能可以如下实现:

...

如果在满足上述条件之前定义了自定义 Realm Password 挂钩,则 SOAtest 将在提示你手动输入密码之前会执行自定义挂钩。如果该方法添加了密码(到项目中的站点,或者是到负载测试虚拟用户),则 将在提示您手动输入密码之前会执行自定义挂钩。如果该方法添加了密码(到项目中的站点,或者是到负载测试虚拟用户),则 SOAtest 将使用该密码,并不会在提示你提供密码。如果你或其他 将使用该密码,并不会在提示您提供密码。如果您或其他 SOAtest 用户以前输入过密码,则将不会执行该挂钩。如果希望确保 SOAtest 使用你为该挂钩定义的密码,则应该在希望 使用您为该挂钩定义的密码,则应该在希望 SOAtest 添加挂钩的新密码之前清除掉站点密码。

在你希望根据特定上下文(如,基于正在使用的特定路径,或者希望在虚拟用户负载测试上下文中使用不同的用户名和密码)更改用户名和密码时,此挂钩特别有用。在您希望根据特定上下文(如,基于正在使用的特定路径,或者希望在虚拟用户负载测试上下文中使用不同的用户名和密码)更改用户名和密码时,此挂钩特别有用。

下面的示例 Java 文件时 Realm Password 挂钩的一个非常基本的示例实现。无论上下文如何,该脚本都添加相同的密码。

...

Note
title注意
  • 在使用 addSitePassword() 和 addSessionPassword() 时,应该将 ntlm 和定义的方法中的上下文传递给要调用的密码添加方法中。我们推荐你尽量避免更改这些值,除非你可以轻松地操作 和定义的方法中的上下文传递给要调用的密码添加方法中。我们推荐您尽量避免更改这些值,除非您可以轻松地操作 SOAtest 扩展 API。同时,我们推荐你不要更改域值;服务器将该域值提供给 API。同时,我们推荐您不要更改域值;服务器将该域值提供给 SOAtest,该域值是 SOAtest 使用来决定给特定 URL 发送哪个密码的其中一个因素。如果你传递的 发送哪个密码的其中一个因素。如果您传递的 URL 不存在于项目树汇总,则将不会添加该密码。
  • 在 Jython 中定义挂钩和在应用程序启用时应该设置的 JavaScript 时,需要在脚本中调用示例中定义挂钩的方法。如果将任何 JavaScript 或 Jython 脚本放在启动目录中,则脚本也需要实际调用设置挂钩的方法,而不只是定义方法。

...