加入收藏 | 设为首页 | 会员中心 | 我要投稿 唐山站长网 (https://www.0315zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 传媒 > 正文

揭开 Raft 的神秘面纱

发布时间:2021-02-16 14:39:17 所属栏目:传媒 来源:互联网
导读:I意味着人工智能,其定义因研究人员而异。从广义上讲,它指像人类一样具有智能的系统和配备这种系统的机器人。实现AI的方法之一是机器学习。 机器学习可以简单地描述为向系统提供数据(称为训练数据或学习数据)并通过数据自动确定系统的参数(变量值)。相反,

I意味着人工智能,其定义因研究人员而异。从广义上讲,它指“像人类一样具有智能的系统和配备这种系统的机器人”。实现AI的方法之一是机器学习。

机器学习可以简单地描述为“向系统提供数据(称为训练数据或学习数据)并通过数据自动确定系统的参数(变量值)”。相反,基于规则的系统是非机器学习系统的一个例子。在基于规则的系统中,由人类来清楚地定义分支条件的参数,例如实现代码中所存在的if语句等。

另一方面,机器学习自动根据训练数据确定代码中的参数,以使系统运行良好。之所以称为机器学习,正是因为系统能根据训练数据计算和确定系统运行所需的参数。

强化学习是机器学习中的一种。机器学习可分为三大类:监督学习、非监督学习和强化学习。我们稍后会讨论这三个分类,这里只需要认识到强化学习是机器学习的一部分即可。

接下来是深度学习。深度学习是实现机器学习的算法之一。机器学习的算法包括逻辑回归、支持向量机(Support Vector Machine,SVM)、决策树、随机森林和神经网络等。深度学习是神经网络中的一种。

最后是深度强化学习。深度强化学习是强化学习和深度学习的结合。

02 监督学习、非监督学习、强化学习

这里对三种机器学习(监督学习、非监督学习和强化学习)分别进行介绍。

首先说明监督学习。

例如,“对邮政编码中的手写数字进行分类”是一种监督学习。邮政编码分类系统将每个数字的手写图像分类为0~9中的一个。诸如0到9的数据的分类目标被称为标签或类。这种系统被称为监督学习,因为给事先提供的训练数据预先标记出了正确的标签。换句话说,带标签的训练数据成了系统的教师。

监督学习包括学习阶段和推理阶段。我们将以图为例来解释手写数字的分类(见图1.1)。

 

人工智能会“偷走”你的工作吗?

关于此问题的当前比较流行的观点是,人工智能不会取代人,但会帮助人进行QA测试。支持这种观点主要理由是,人工智能在软件开发中的使用仍处于起步阶段,其在更先进的领域中自主水平远低于所见,如人类仍在主导的自动驾驶系统领域。但是可以肯定的是,AI协助人类的下一步就是让AI掌握整个运作过程。这只是时间问题。

众所周知,技术的增长,尤其是AI和机器学习的增长是指数级的,要预测未来的AI能力并不容易。AI接管测试工作的那一天可能比预期到来的要早,在此之前,你得做好准备。

 

现存挑战

什么是软件测试?软件测试是对开发的程序的性能进行评估的过程,以检查其是否符合客户的要求,并在投入使用前检测它是否存在错误从而加以完善。

每当开发人员添加新代码,都必须进行新的测试。质量监管人员(QAs)需要耗费大量时间来确认新代码不会破坏现有代码库。而人工执行回归测试非常耗时,并且会在很大程度上增加QAs的负担。

传统的QA检测方法包括检查一个任务列表,以确保软件按预期的方式工作。一开始只需要测试几个功能时,这还是一个可行的任务;但随着功能的增加,QAs面临着在截止日期前完成全面测试的困难。一个应用程序越复杂,就越难确保它得到完整的测试覆盖。

随着人工智能的出现,简化测试过程成为可能。此外,新软件和产品在竞争压力下必须加快发布,延长测试周期并不是智举。因此,只能测试得更聪明而不是更难,别无选择。

人工智能如何克服这些挑战

人工智能在软件测试工具中的应用集中在简化软件开发生命周期(SDLC)上。通过应用推理、问题解决和机器学习,人工智能可以在开发和测试阶段中促进自动化并减轻冗杂的工作任务。

例如,假设你正在运行一个自动化框架来测试自己的项目。大多数情况下,你不知道要运行哪些测试,因此会运行所有测试或预定的一组测试。

那么,如果一个支持AI的机器人可以检查当前的测试状态、最近的代码更改、代码覆盖率和其他指标,决定要运行哪些测试,然后再运行它们呢?这样的软件可以有效地代替开发人员/测试人员参与决策过程。

人工智能和机器学习应用推理和问题解决方案来自动化和改进测试。软件测试中使用人工智能有助于减少耗时的手动测试,使团队得以专注于更复杂的任务,例如创建创新性的功能。以下是利用人工智能优化软件测试过程的几个方面:

  • 增强的准确性——我们必须承认,即使是最有经验的质量检查工程师也可能犯错。数据量太大了,测试人员难免会在软件质量检测时分心,忽略了一些重要的缺陷。这就是AI和机器学习技术发挥作用的地方。

他们教系统学习源分析并在将来应用知识。通过这种方式,AI测试在不断重复中得出更准确的结果。因此,使用人工智能技术进行数据分析降低了人为错误概率。

  • 加快进程——AI无需像测试人员那样手动处理成千上万的代码,而是快速地对日志文件进行排序,在几秒钟内扫描代码并在更短的时间内检测到错误。通过将人工智能纳入重复测试中,质量检查工程师可以专注于测试新功能或关注软件的重要部分。
  • 更加自动化——人工智能程序可以随着代码的更改而发展。他们可以适应并学会识别新功能。当AI机器人识别了代码的修正后,他们就可以被编程来判断这是一个新功能还是代码更改中出现的某些缺陷。
  • 正确理解客户需求——软件开发过程中,最重要的是能够了解客户的实际需求。AI可以检测类似的网站和应用程序,以确定哪些因素能帮助赢得目标受众,也可以帮助研究大量竞争产品以确定其优势。通过正确理解客户的需求,他们可以创建测试用例,以确保产品在实现这些特定目标时不会损坏。

基于人工智能的软件测试现状

目前,实践中已经开始使用自主和智能代理(称为“测试机器人”)来自动化诸如应用程序发现、建模、测试生成和故障检测等活动,并结合机器学习技术来实现测试机器人,包括但不限于决策树学习、神经网络和强化学习。

与传统的测试自动化工具和框架不同,机器学习允许测试机器人在不确定的条件下运行。过去十年形成的人工智能驱动的测试方法包括以下示例:

  • 差异测试——比较应用程序版本,对差异进行分类并从分类的反馈中学习。
  • 视觉测试——利用基于图像的学习和屏幕比较来测试应用程序的外观。
  • 声明式测试——以自然语言或特定领域的语言明确测试的意图,并让系统确定如何执行该测试。
  • 自我修复自动化——当UI更改时,在测试中自动更正元素选择。

2014年以来,提供AI驱动的测试服务的供应商数量激增。这些工具供应商中的大多数是初创公司,他们主要针对移动应用程序系统级测试,这一主题在业界引起了广泛关注。

观察AI功能最简单的方法是使用各种工具和框架,以下是一些很受欢迎的AI驱动的测试工具:


(编辑:唐山站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读