发布新日志

  • AI自动化测试:AI测试机器人即将到来

    2018-03-01 14:00:41

    或许你已经听说过人工智能(AI)。自从Allen Newell 、 Herbert A. Simon和Cliff Shaw 在十九世纪五十年代写了第一个人工智能的程序“Logic Theorist ”,人工智能开始逐渐被大家了解。
      从历史上来看,可以肯定的是,你并没有经常听说AI测试自动化。但现在事情正在发生着改变,AI自动化测试将在未来的自动化测试中发挥越来越重要的作用。
      对我来说,AI自动化测试仍然是一个相对新的概念,但它是我在自动化测试领域中积极探索的一个方向。在这篇文章中,我想借这个机会来强调一下为什么AI自动化测试如此的重要,并且将阐述AI在自动化测试中能够发挥的作用,同时也会讨论为了能最大程度地利用AI进行自动化测试我们所面临的挑战。
      AI在测试中的作用
      在如今的软件开发中,自动化测试是必要的。对广大的测试人员来说这是一个激动人心的时刻——每个人都认同进行全面测试的重要性。但是AI在测试中能够有什么作用呢?如果运用得当,它或许能够帮助我们减少很多测试工作。理论上,在我们的测试系统中我看到了两个及以上的可以用AI解决的潜在的问题。
      首先,我们可以借助AI来帮助我们进行自动化的测试管理和测试用例创建。它通过内置标准降低了工作量,并保持每个人工作的一致性。其次,可以使AI通过阅读用户故事接受标准自动生成测试代码或伪代码。最后,可以利用AI实现无代码自动化测试,它会自动在您的Web或移动应用程序上创建和运行测试,而无需编写任何代码。
      如今AI应用随处可见,从Siri、Alexa和Google Search到Google Assistant、Slackbot等。这些AI应用中的每一个都有自己特定的角色和功能。为了让AI能帮助我们进行测试,你需要为AI应用定义一个特定的目标,无论是自动化的创建测试用例,生成测试代码,实现无代码测试或其他的目标。
      训练你的AI机器人
      AI的一般概念是应用程序具有理解环境、处理输入数据并执行智能行为的能力,并且能够学习如何自动改进自身的表现。几年前,在Android Auto中,语音驱动的搜索已经出现。通过按下我的大众GTI方向盘上的一个按钮来激活Google助手,并说:“播放Chris Stapleton的音乐”,Google助手使用AI来处理输入并执行智能操作。在几秒钟内,Chris Stapleton的音乐将被播放。它增加了我每天的通勤安全,并能够更快地检索我最喜欢的音乐艺术家。
      这里有一个教训:最聪明的开发人员让错误通过,大多数时候开发团队是对Bug进行反应而不是预防。如果你是一个测试人员或者与测试人员一起工作,你就知道测试人员会问很多问题。要构建AI测试机器人,我们必须训练机器人通过提问来执行智能操作和处理输入数据,就像Google Assistant一样。随着我们不断加强识别输入模式和行为的算法,AI应用程序会变得越来越好。
      AI测试机器人面临的挑战
      AI自动化测试如果要真正的应用于实践,仍然存在一些需要被解决的问题。当你尝试构建AI应用程序进行测试时,你可能面临的挑战和问题是:
      1.识别、完善所需要的算法
      2.收集大量的输入数据来训练AI应用程序
      3.对于输入数据AI应用程序如何处理
      4.即使数据输入是新的,机器人也可以重复执行任务。
      5.训练你的AI应用程序的过程永远不会结束,因为我们需要不断地改进算法
      在许多方面,人工智能测试就像是以身作则。 这是一个艰巨的过程,但是如果做得好的话,这个过程也是值得的
      结束语
      AI不再只是流行语,它实际地在生活中应用着。同样它也能在自动化测试领域中所应用,就像它在其他领域的所带来的作用。
      如果您花一点时间思考我们每天使用的所有技术,AI已经开始默默融入我们的生活。 做好准备! 自动化软件测试的角色正处于人工智能急剧变化的边缘,AI自动化测试的时代即将到来。
  • AI(人工智能)对软件测试的影响

    2017-09-13 11:06:45

    参考朱老师的文章:
    AI测试:让软件测试变得聪明伶俐(上)
    http://www.51testing.com/index.php?action-viewnews-itemid-3719940-php-1
      AI测试:让软件测试变得聪明伶俐(下)
      http://www.51testing.com/html/29/n-3720129.html

    其核心就是利用各种算法,让机器模拟人类通过自动化测试手段达到我们的测试目的。

    传统的测试工具,通过让电脑执行一系列步骤,并根据预先定义的预期来检查结果。 那么,人工智能会在软件测试里扮演一个什么角色呢,机器软件测试人员?

     

    也许。

     

    想像一下按揭计算器的测试,不是按照预定义的几个例子,而是随机选择有效数据。 也就是说,选择随机利率从0%到5%,随机贷款金额,贷款期限等。 然后,编写另一个称为oracle的算法,计算结果。 运行软件,看看oracle和软件本身是否匹配。 这种测试工具的方法是非常明确的,这是模型驱动测试的一个简单例子,它可以扩展到诸如随机遍历应用程序之类的事情,为每个输入提供随机数据,并预测结果应该如何。 通宵运行这些测试,或许可以找到一些有趣的错误。

     

    这样运用人工智能是很诱人的,但实际上计算机没有真正的学习,应用程序正在遵循预定义的规则。 像人工智能和机器学习这样的术语意味着计算机发现规则,或创建自己的规则。通**器学习,该软件可以查看一千个甚至一百万个例子,并创建自己的算法。这是不是很像机器软件测试人员?

     

    举一个简单的例子:当你在Google上搜索“软件测试”时,你没有办法知道算法是否正确。 例如,你不知道顶部的页面是不是最相关的或具有最大权威性的,你也不知道Google是如何基于你的位置,搜索记录和过去的点击改善你的搜索结果的。 然而,如果结果都是一些关于大学备考的内容时,基于你的生活经历,你会知道结果是错误的。

     

    通过为计算机提供大量数据集,以及对每条数据的一些判断规则,人工智能能帮助计算机尝试找出其中的关联。 例如,保罗·格雷厄姆曾经提出过一个用于电子邮件的贝叶斯过滤器,人们首先将数千个电子邮件识别为垃圾邮件和非垃圾邮件,并将该信息提供给计算机。归纳算法会尝试找出垃圾邮件的共同点,并预测收到的邮件是否为垃圾邮件。 Gmail正是利用这种方法来识别垃圾邮件的,同时还提供了一个“报告垃圾邮件”的按钮,为过滤器提供了更多的信息。

     

    现在,思考一下人工智能在软件测试中的潜力:你可以训练你的应用程序来发现问题。

     

    网络爬虫和链接检查工具可以遍历整个网站,寻找404错误。基于模型的软件可以识别崩溃,比如包含一些错误文本的页面。用不同的方法来训练你的软件,找到那些看起来不正确的东西。结合机器学习,我们可以拥有常用的有效输入集,用模型驱动的技术来随机遍历一个应用程序,让机器具有感性的专业知识。这似乎听起来还只是一个梦想,还不存在这样的软件。

     

    不过,我们不必等待这种理想的机器学习,而是进一步发展软件测试中的人工智能思想。 视觉测试是一个记录测试的过程,然后在新构建中重新运行该测试,测试人员可以使用工具快速地验证差异,将每个更改标记为错误(需要返回到之前的状态),或作为新功能(成为新的标准)。大多数视觉测试工具允许用户训练软件来忽略那些变化的字段,比如自动生成的日期,而只专注在不应该改变的内容上。

     

    所有编程本质上都是创造变革,这些可视化工具提供变更检测。 这可能看起来是多余的,告诉计算机,“是的,这种改变是我们预期的”,但它也提供了一种非常快速的方式来检查任何视觉变化,而不仅仅像传统测试工具那样去检查预期结果。

     

    未来,人工智能会取代软件测试人员么?当收音机出现时,人们认为报纸应该消失,然而一百年后,报纸依然运作良好。即使使用机器软件测试人员,仍然需要一个人来运行它们。 自动发现问题的机器学习将会发现常见的通用问题,但不具备专业和定制化的知识能力。 当然,软件测试中的人工智能还不存在。今天测试中大多数成功的机器学习项目,更像分析生产日志中的一系列错误,以确定是哪些行为产生了这些错误。

Open Toolbar