技术文章

了解最新技术文章

当前位置:首页>技术文章>技术文章
全部 111 常见问题 5 技术文章 106

加入一点人工智能:随机测试数据生成

时间:2024-01-26   访问量:1023

软件测试领域充斥着关于人工智能的炒作。一方面,有人似乎认为一个月内就会出现一种工具,可以获取网页地址并返回测试结果,而无需人工参与。另一方面,民间则宣称皇帝没有穿衣服。

事实一如既往,可能介于两者之间。

我们来谈谈如何在测试工具中使用最简单的人工智能 (AI)。

人工智能 (AI) 但不是机器学习 (ML)

如果你查找人工智能的字典定义,你可能会发现它是任何使用计算机来模拟智能的行为。因此,当你在 WebMD 中输入一系列症状并返回潜在的诊断时,这就是一种人工智能。当你的测试代码中有“if”语句时,那就是一种人工智能。大多数时候,当人们谈论人工智能时,他们指的是能够以某种能力“学习”的系统。例如,系统可以查看一系列数字并预测接下来可能发生的情况,查看接下来实际发生的情况,然后使用该数据进行进一步的预测。我们称之为训练,它是机器学习 (ML) 的一种特殊形式。

在进行机器学习之前,我们可以在测试数据中注入随机性。这增加了应用程序的覆盖范围,并且可以毫不费力地发现错误。它可能不是真正的智能,但它肯定符合人工智能的定义。

让我们从一个例子开始。

一个简单的密码示例

例如,假设我们正在使用自动化工具测试创建配置文件屏幕。执行此操作的一种经典方法是创建一个 valid_account_create 方法,该方法采用一个充满潜在有效密码的表。就我们的目的而言,假设有效的密码必须为八个字符,其中必须至少包含以下三种字符:小写字母、大写字母、数字和符号。作为一个团队,在项目开始之前,我们创建一个如下表:

     密码     正在测试
     BC5678     全部 4
     Abcd5678     大写、小写、数字
     !!BC5678     符号、小写、数字
     A!bcdefg     上部、符号、下部
     CD5678     上部、符号、数字

我们可能会对无效密码进行另一次测试 - 七个字符、九个字符、无字符、仅四个字符中的两个、仅一个字符,等等。

这里的问题就是 Cem Kaner 博士所说的“局部最优问题”。程序员可能输入了我们无法从需求中看到的其他内容、其他条件。

如果我们可以随机生成有效密码,将该值放入变量中,然后将其用于其余的测试,会怎么样?

让我们来谈谈它。


适用于 QA 和开发团队的现代测试用例管理软件

下载免费试用版


随机密码生成器

首先,对于八个字符中的每一个,随机选择该字符是大写、小写、符号还是数字。然后对于该字符类型,选择一个随机值。然后运行该字符串以查看它是否有效。如果它需要有效,您可以将其放入 while () 循环中,直到它创建有效的密码。

这种测试的惊人之处在于它会发现错误。软件测试协会的创始成员 Doug Hoffman 曾经使用类似的方法来测试 32 位平方根函数。他没有使用随机数据,而是使用 for 循环来测试每个可能的输入,并发现了两个问题。在这种情况下,我们会发现一个缺陷——HTML 的 <> 和 / 符号会产生错误。前端检查密码的 Javascript 称密码有效,但服务器会删除这些符号。因此,在数据库中,密码是在没有符号的情况下加密的。用户将创建帐户且没有错误,但无法登录。

更具体地说,如果某人的密码是“1234”,它将被保存并可以登录,如BR1234。在隔夜测试运行期间,用户将创建帐户但无法登录。通过将这些存储在测试运行期间保存的变量中,程序员可以轻松找到并修复此问题。

这并不是一句闲话。我最近在一家地区银行更改密码时遇到了这个问题。

随机数据的其他用途

Bug Magnet是一个免费的浏览器插件,可以生成各种随机但有效的数据,从姓名到日期再到有效的电子邮件地址。Faker是一个 PHP 库,可以为自动化做类似的事情。电话号码、地址、颜色和 lorem ipsum 文本只是您可能使用的易于生成的随机值的几个示例。虽然有点过时, James Bach 和 Danny Faught 的perlclip可以从命令行生成多种类型的随机数据,并将其放入屏幕或粘贴缓冲区中。因为它在命令行运行,所以任何程序都可以运行它并重定向输出并使用它。就此而言,如果您的工具支持 C# 等编程语言,您可以创建自己的工具。

有几种方法可以创建随机测试数据,以及他们可以找到的错误类型的故事。您在项目中使用过随机测试数据吗?如果你这样做了,你发现了什么样的错误?


上一篇:TestRail中的测试预测分析模型

下一篇:TestRail博客:敏捷质量保证的原则

发表评论:

评论记录:

未查询到任何数据!

在线咨询

点击这里给我发消息 售前咨询专员

点击这里给我发消息 售后服务专员

在线咨询

免费通话

24小时免费咨询

请输入您的联系电话,座机请加区号

免费通话

微信扫一扫

微信联系
返回顶部