6

我是 Selenium 的新手,也是模糊测试的新手。我看到 Selenium IDE 只允许固定的测试用例。但是,模糊测试似乎很有帮助。

那么,模糊测试的背后是什么,Selenium 提供什么样的测试,这是黑盒测试还是白盒测试。

任何帮助,将不胜感激。

4

2 回答 2

15

简短的回答:

  • Selenium 主要是关于黑盒测试,但您也可以使用 Selenium 进行一些更白的测试。
  • 与 Selenium IDE 相比,Selenium RC 为您提供了更多的自由来进行模糊测试。

长答案,见下文:

在这篇文章中,我将尝试解释使用 Selenium RC 随机测试 Web 应用程序的概念。

通常来说,像 Selenium 这样的黑盒测试技术给你一个很好的自由

  • (1) 在某个字段中输入任意值
  • (2)在某个HTML表单中选择任意字段进行测试
  • (3) 选择任何执行顺序/步骤来测试某一组字段。

基本上你

  • 使用 (1) 测试 HTML 表单中的特定字段(您是否为字段选择了合适的最大长度),您的 JavaScript 处理该字段的值(例如,将“t”转换为今天的日期,将“+1”转换为明天的日期),以及后端数据库对该变量的处理(VARCHAR 长度,将数字字符串转换为数值,...)。
  • 使用 (2) 测试所有可能的字段
  • 使用(3)测试字段之间的交互:如果在密码字段之前没有输入用户名字段,是否会弹出 JavaScript 警报,是否有数据库(例如 Oracle)在特定条件下触发“弹出”不满足。

请注意,即使在理论上也无法测试一切(程序的所有状态,由所有变量的可能组合构成)(例如:考虑测试用于解析字符串的小函数,那么字符串有多少可能的值?) . 因此,实际上,给定有限的资源(时间、金钱、人员),您只想测试 Web 应用程序的“最关键”执行路径。如果一条路径具有更多属性,则该路径被称为更“关键”:(a) 频繁执行,(b) 偏离规范会导致严重损失。

不幸的是,很难知道哪些执行用例是至关重要的,除非您记录了应用程序的所有用例并选择最常用的用例,这是一个非常耗时的过程。此外,即使是执行最少的用例中的一些错误,如果它是一个安全漏洞,也可能会导致很多麻烦(例如,由于某些 PHP 页面的 URL 处理中的一个小错误,有人窃取了所有客户的密码)。

这就是为什么您需要随机扫描测试空间(即在这些用例中使用的值的空间),希望运行一些东西并扫描一切。这称为模糊测试

使用 Selenium RC,您可以轻松完成所有阶段 (1)、(2) 和 (3):通过使用 Java、PHP、CSharp、Ruby、Perl 等受支持的语言进行一些编程,在任何执行步骤下测试任何字段中的任何值, Python。

以下是执行所有这些阶段 (1)、(2) 和 (3) 的步骤:

  • 创建您的 HTML 字段列表,以便您可以轻松地遍历它们。如果您的 HTML 字段不够结构化(遗留原因),请考虑向您的 HTML 元素添加一个包含特定 id 的新属性,例如selenium-id,以 (1) 简化 XPath 形成,(2) 加速 XPath 解析和(3)避免翻译麻烦。在为这些新添加的 selenium-id 选择值时,您可以自由地帮助迭代,同时通过 (a) 使用连续数字,(b) 使用形成一致性的名称进行模糊测试。
  • 创建一个随机变量来控制步长,比如rand_step
  • 创建一个随机变量来控制字段,比如rand_field
  • 最终,创建一个随机变量来控制输入某个字段的值,比如rand_value
  • 现在,在你的模糊算法中,首先遍历rand_step的值,然后在每次这样的迭代中,遍历rand_field,最后遍历rand_value

也就是说,模糊测试有助于在有限的执行时间后扫描整个应用程序的用例值空间。据说“出现了一批新漏洞,影响了流行的客户端应用程序,包括 Microsoft Internet Explorer、Microsoft Word 和 Microsoft Excel;其中很大一部分漏洞是通过模糊测试发现的

但是模糊测试并非没有缺点。一个如果是在给定所有这些随机性的情况下重现测试用例的能力。但是您可以通过执行以下任一操作轻松克服此限制:

  • 将手头的测试用例生成在一个批处理文件中,在一段时间内使用,并逐步应用该文件
  • 即时生成测试用例,并记录这些用例
  • 仅记录失败的案例。
于 2012-05-18T10:47:30.180 回答
3

回答更多关于硒是黑盒还是白盒的问题。

关于黑盒和白盒的定义

  • 黑盒:检查一个盒子(通常是整个应用程序)是否在输入输入的同时提供正确的输出。从理论上讲,如果验证了所有可能的输入-输出对,您的应用程序就没有错误。
  • 白框:检查源的控制流。从理论上讲,如果访问所有执行路径都没有问题,您的应用程序就没有错误。

但是在现实生活中,你不能做所有的输入输出对,也不能做所有的执行路径,因为你总是有有限的资源

  • 时间
  • 人们

使用 selenium:您可以通过输入值或在 Web 应用程序上单击来模仿用户,然后等待浏览器是否为您提供所需的行为。您不知道也不关心 Web 应用程序的内部功能实际上是如何工作的。这就是为什么典型的 Selenium 测试是黑盒测试的原因

于 2012-05-18T10:56:33.260 回答