Testing 如何使用Selenium进行模糊测试

Testing 如何使用Selenium进行模糊测试,testing,selenium,fuzzing,Testing,Selenium,Fuzzing,我不熟悉Selenium,也不熟悉模糊测试。我看到Selenium IDE只允许固定的测试用例。但是模糊测试似乎很有帮助 所以,模糊测试背后是什么,Selenium提供了什么样的测试,这是黑盒测试还是白盒测试 任何帮助都将不胜感激。简短回答: Selenium主要是关于黑盒测试,但您也可以使用Selenium进行一些更白的测试 与Selenium IDE相比,Selenium RC为您提供了更多进行模糊测试的自由 有关详细答案,请参见以下内容: 在本文中,我将尝试解释使用Selenium R

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

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

任何帮助都将不胜感激。

简短回答:

  • Selenium主要是关于黑盒测试,但您也可以使用Selenium进行一些更白的测试
  • 与Selenium IDE相比,Selenium RC为您提供了更多进行模糊测试的自由
有关详细答案,请参见以下内容:

在本文中,我将尝试解释使用Selenium RC随机测试web应用程序的概念

通常来说,像Selenium这样的技术给了你很好的自由

  • (1) 在某个字段中输入任意值
  • (2) 选择要在特定HTML表单中测试的任何字段
  • (3) 选择任何执行顺序/步骤来测试特定字段集
基本上是你

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

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

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

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

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

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

  • 创建HTML字段列表,以便您可以轻松地对其进行迭代。如果您的HTML字段没有足够的结构化(遗留原因),请考虑添加一个包含特定id的新属性,例如将selenium id添加到HTML元素中,以(1)简化XPath的形成,(2)加快XPath的解析速度,以及(3)为了避免翻译的麻烦。在为这些新添加的selenium id选择值时,您可以通过(a)使用连续数字,(b)使用形成一致性的名称来帮助进行模糊化迭代
  • 创建一个随机变量来控制步长,例如rand\u step
  • 创建一个随机变量来控制字段,例如rand\u field
  • 最后,创建一个随机变量来控制输入到某个字段中的值,例如rand\u value
  • 现在,在模糊算法内部,首先迭代随机步长的值,然后每次迭代,迭代随机字段,最后迭代随机步长
也就是说,模糊测试有助于在有限的执行时间后扫描整个应用程序的用例值空间。据说“”

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

  • 生成一个批处理文件,在一段时间内使用,并逐步应用该文件
  • 动态生成测试用例,并记录这些用例
  • 只记录失败的案例

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

关于黑盒和白盒的定义

  • 黑匣子:检查一个盒子(通常是整个应用程序)是否在输入的同时提供正确的输出。理论上,如果所有可能的输入-输出对都得到验证,那么您的应用程序是没有错误的
  • 白盒:检查源代码的控制流。理论上,如果访问所有执行路径都没有问题,则应用程序是无错误的
但在现实生活中,您不可能完成所有的输入输出对,也不可能完成所有的执行路径,因为您的资源总是有限的

  • 时间

使用selenium:您通过输入值或在web应用程序上单击某个按钮来模拟用户,然后等待浏览器是否给出您想要的行为。您不知道也不关心web应用程序的内部功能实际上是如何工作的。这就是为什么典型的selenium测试是黑盒测试的原因。我明白了e更多硒测试的黑色面否