我是Selenium的新手,还进行了模糊测试。我看到Selenium IDE仅允许使用固定的测试用例。但是,然后进行模糊测试似乎很有帮助。

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

任何帮助,将不胜感激。

最佳答案

一个简短的答案:

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

  • 要获得长答案,请参见以下内容:

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

    通常来说,像Selenium这样的black-box testing技术可让您自由地进行
  • (1)在某个字段中输入任何值
  • (2)选择要以某种HTML格式测试的任何字段
  • (3)选择任何执行顺序/步骤以测试一组特定的字段。

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

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

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

    这就是为什么您需要随机扫描测试空间(即在这些用例中使用的值的空间),并希望能够进行所有操作并扫描所有内容。这称为fuzz testing

    使用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_step
  • 创建一个随机变量来控制字段,例如 rand_field
  • 最终,创建一个随机变量来控制输入到特定字段中的值,例如 rand_value
  • 现在,在模糊测试算法内部,首先迭代 rand_step 的值,然后每次迭代,依次迭代 rand_field ,然后最终迭代 rand_value

  • 也就是说,模糊测试有助于在有限的执行时间后扫描整个应用程序的用例值空间。据说“a plague of new vulnerabilities emerge that affected popular client-side applications including Microsoft Internet Explorer, Microsoft Word and Microsoft Excel; a large portion of these vulnerabilities were discovered through fuzzing

    但是,模糊测试并非没有缺点。假设所有这些随机性都是一种再现测试用例的能力。但是您可以通过以下任一方法轻松克服此限制:
  • 预先生成测试用例,并将其放入一个批处理文件中,以便在一定时间内使用,然后逐步应用该文件
  • 动态生成测试用例,并记录下来这些用例
  • 仅记录失败的案例。
  • 关于testing - 如何使用Selenium进行模糊测试,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10650990/

    10-10 19:39