如何做硒模糊测试(How to do fuzzing testing with Selenium)

2019-06-24 13:59发布

我是新来硒,也模糊测试。 我看到,硒IDE只允许固定的测试用例。 但随后模糊测试似乎是有帮助的。

那么什么是后面的模糊测试,什么样的测试确实硒的报价,这是一个黑盒或白盒测试。

任何帮助,将不胜感激。

Answer 1:

对于一个简短的回答:

  • 硒主要是关于黑盒测试,但你可以做一些测试白也与硒。
  • 硒RC给你更多的自由去做模糊测试比硒IDE。

在很长的答案,请看下图:

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

通常来讲,一个黑箱测试 Selenium之类的技术为您提供了一个良好的自由

  • (1)输入的任何值到一定字段
  • (2)选择的任何字段在一定的HTML表单来测试
  • (3)选择的任何执行顺序/步骤来测试一组特定的字段。

基本上你

  • 使用(1)在你的HTML表单测试特定领域(你选择一个领域的良好最大长度),该字段的值,你的JavaScript处理(如转弯“T”到今天的日期,把“+1”变成明天的日期),以及您的后端数据库的处理变量(VARCHAR长度,数字串转换成数值,...)。
  • 使用(2),以测试所有可能的字段
  • 用(3)来测试彼此领域的互动:有一个JavaScript警告弹出,如果用户名字段没有密码字段之前输入,有一个数据库(如Oracle)触发“弹出”当某些条件不满足。

需要注意的是测试一切(你的程序的所有国家,所有变量的可能组合构建的)是不可能的,即使在理论(如:考虑测试您用来解析字符串小功能,那么有多少可能的值没有一个字符串呢?) 。 因此,在现实中,由于有限的资源(时间,金钱,人),你只需要测试“最关键的”执行Web应用程序的路径。 路径被称为更“重要”,如果有更多的特性:(1)经常执行的;(二)从规范的偏差造成严重损失。

不幸的是,这是很难知道哪些执行情况是至关重要的,除非您已经录制应用程序的所有使用情况,选择最常见的,这是一个非常耗时的过程。 此外,即使一些bug在至少执行用例可能会导致很多麻烦,如果它是一个安全漏洞(例如,有人偷了一些PHP页面的URL处理给出一个微小的错误都客户的密码)。

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

使用Selenium RC,你可以轻松地做所有阶段(1),(2)和(3):在如Java,PHP,CSHARP,红宝石,Perl的支持的语言做一些编程下的任何执行步骤,测试在任何领域的任何值,巨蟒。

以下是做所有这些阶段中的步骤(1),(2)和(3):

  • 创建HTML字段列表,这样你可以很容易地遍历它们。 如果您的HTML字段未结构化的不足(遗留原因),认为添加包含特定的ID,如硒-ID到你的HTML元素,(1)简化的XPath形成一个新的属性的,(2)加快XPath的分辨率和(3)避免麻烦翻译。 在选择这些新添加的硒-ID值,你可以自由地帮助迭代,同时通过(a)使用连续号码模糊化,(b)使用形成一个一致性的名字。
  • 创建一个随机变量来控制步骤,说rand_step
  • 创建一个随机变量来控制现场,说rand_field
  • 最后,创建一个随机变量来控制进入一个字段的值,说rand_value。
  • 现在,您的模糊算法中,首先遍历rand_step的值,然后与每个这样的迭代,通过迭代rand_field,然后最后通过rand_value迭代。

这就是说,模糊测试有助于在有限的执行时间之后扫描你的整个应用程序的使用情况下的值空间。 有消息称,“ 新的漏洞瘟疫出现,受影响流行的客户端应用程序包括Microsoft Internet Explorer,Microsoft Word和Microsoft Excel中;这些漏洞的很大一部分是通过模糊发现 ”

但是,模糊测试并不是没有缺点。 如果其中一个是复制给所有那些随机性测试案例的能力。 但是你可以很容易地通过任一执行下列操作之一克服这个限制:

  • 生成前手测试用例在一个批处理文件在一定时间内使用,并逐步将此文件
  • 与记录下来的情况下产生的飞行测试的情况下,一起
  • 记录下来只有失败的案例。


Answer 2:

要回答更多的硒,如果是黑色或白色的盒子。

关于黑盒和白盒定义

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

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

  • 时间

硒:你输入一个数值模拟用户还是做了一定的点击Web应用程序,你等待,如果浏览器给你你想要的行为。 你不知道,不关心Web应用程序的内部功能是如何工作的。 这就是为什么一个典型的硒测试是黑箱测试



文章来源: How to do fuzzing testing with Selenium