基于人工智能的软件测试

本文转自公众号:晨小菜

基于人工智能的软件测试


人工智能介绍

 

人工智能是在计算机的帮助下,通过软件提供智能能力来完成人类的任务。人们的主要目标是为计算机提供人类智能。

人工智能(AI)是在计算机化的帮助下作为一种想法在现实世界中实现的人类思想。有两件事需要解决。第一是我们如何表示这些知识,第二是如何操作这些知识。这两件事结合起来,为我们提供了人工智能的实现。

人工智能是计算机能力和逻辑的结合,以非常少的错误和完美的精度来解决我们的问题。对那些非常危险或超出人类能力范围的责任移交给人工智能机器人是一个很好的选择。人工智能的空间是巨大的,我们只需要思考如何实现这些,使我们的生活更美好。它可以被应用到各种各样的领域无论是军事、制造业、汽车、法律、金融、医疗、保健、电脑游戏,还是作为机器人执行人类的日常行动

人工智能分类

 

人工智能可以有很多分类,现在我们来举两种分类例子。

第一种分类如下:

窄人工智能:我们可以称之为弱人工智能,这种类型的人工智能被编程和设计来执行一项特定的任务。一个很好的例子就是Siri(苹果的软件应用),它是虚拟的个人助理。

通用人工智能:这也被称为强人工智能。该系统解决或处理需要与人脑同等智力水平的情况,并尝试多种可能的解决方案,从中选择最佳方案。

第二种分类如下:

密歇根州立大学(Michigan StateUniversity)计算机科学和综合生物学助理教授阿伦特•欣策(Arend Hintze)给出的。他将人工智能分为四种类型,包括目前存在的人工智能系统和未来不存在的人工智能系统:

类型1: 反应型机器

IBM国际象棋程序“深蓝”就是一个很好的例子,它能够识别棋盘上的物体,然后思考如何移动这些物体。然而,这种深蓝不像人类有任何可以使用的旧记忆,它认为物体可能的最佳行动与现有的情况相关联,认为对手可能的反击行动,然后执行他的行动。这些都是情景思维设计的程序,也有其局限性。

类型2: 有限记忆

这些是类型1的升级版本,可以回忆过去的经验并用它们来分析情况,从而找出最好的解决方案并采取行动。这几年的车辆自动驾驶就是按这种方式设计的。它们可以观察周围的情况,比如说如果一辆车要变换车道,AI使用这些信息来执行其下一步的动作,使得和其它相同方向的汽车保持一致又不影响变化到其它车道的车。当然这些观测到的信息不是永久的,我们只是利用他们对即将到来的决策分析。

类型 3: 心智理论

这是像人类的大脑一样思考别人如何行动,思想会影响我们的行为。AI能够理解人、对象以及其他生物并考虑他们的情绪然后执行自己的决定。当我们能够与他人的期望和感受相互作用、相互关联时,我们的工作和表现最好。这个人工智能仍在研究中并没实现。

类型 4: 自我意识

要了解我们的能力,自我意识是非常必要的。这类人工智能赋予计算机思考和分析自身局限性和现状的能力,赋予它们利用记忆、学习和决策的意识和自我意识。这种类型的人工智能还没有实现。

基于人工智能的软件测试

人工智能测试

 

客户满意度是软件测试的目标,它是在应用程序开发的不同阶段执行的连续过程。测试确保测试人员能够使用测试自动化检查应用程序的现有实现中的风险和缺陷。它帮助我们及早识别应用程序的故障和缺陷,这些故障和缺陷可能会对将来的最终应用程序造成不利影响。应用程序的调试也应该在测试完成后进行。

测试正逐步从传统的测试方式转向自动化,以确保高质量的最终产品。人工智能测试是一个很好的方法,可以使我们在没有失败的情况下更高效地达到完美。这使我们向自动化测试的过渡以更快地将人工智能和自动化集成在一起。我们现在使用计算机来代替人工进行大量的测试工作。人工智能可以用来编写自动化脚本代码,也可以用来执行这些脚本。提供最少的人力输入,机器现在能够执行学习和改进他们的行动。

人工智能刚刚开始它在自动化测试领域的旅程。人工智能机器人现在被用于自动化测试,但这还有待探索的,我们仍然面临一些人工智能相关的挑战需要解决。

计算机可以用大量的数据作为输入,然后可以找到正确模式识别输入和他们的期望输出。最后它可以检查我们提供的输入数据与它的期望输出,并给我们通过和失败的数据集的结果。所有这些都是在提供的算法的帮助下完成的,这些算法使机器能够识别正确并从业务逻辑中获得预期的输出。AI BOT帮助我们与人工输入进行通信,并执行软件测试的困难任务。它有助于减少高失败率,并通过提高测试过程的效率来节省执行成本。

软件测试中为什么需要人工智能

 

软件测试过程是软件交付生命周期中的一个重要方面。应用程序的开发人员由于时间和资源的局限性执行严格的测试是不可能的,所以才需要对一个系统进行缺陷多发地区的测试。我们需要一个完善的集中在核心业务方面并且未来可重用的测试集。

传统的软件测试需要大量的时间和人力资源来完成测试任务。所以最好的选择是利用人工智能自动化测试,它可以节省时间和努力,帮助我们用最少的人力投入实现目标。人工智能测试没有人为的不一致,并提供更准确的结果,平均使用多台机器执行任务也减少了大量的成本。

基于AI BOT的测试低维护成本。AI算法正在为最终用户帮助产生最佳质量的软件,所以智能的AI算法使用是重要的。首先我们需要找到弱点领域和需要执行的任务,然后使用人工智能算法来编写。一个深思熟虑的AI算法可以帮助测试人员找到大量的缺陷。当开发人员修复这些缺陷时,就可以提供高质量的应用程序。

 AI测试的级别

 

通过智能的应用程序进行软件测试有一个持续的过渡。关于人工智能测试有5个定义的级别:

 

0非自主

 

为了运行自动化测试用例,我们需要编写代码在应用程序上运行这些步骤。一旦测试套件被开发就能在每个交付中重用。

代码的编写是由我们手工完成的,以应用程序页面中的表单为例,每当添加一些功能时,如果添加了一些与该功能相关的新字段,我们就需要添加一个测试。在页面中添加表单意味着需要创建一个测试来检查页面中的所有字段。因此,当测试失败时,你必须与开发人员确认是否部署了新的开发更改,或者它是一个bug。这种在测试过程中不涉及AI BOT的基本自动化是人工智能测试的0级。

 

1自主

 

我们可以举一个自动驾驶汽车的例子来解释这种级别的测试。如果我们为自动驾驶汽车提供良好的视野,那么我们的自动驾驶汽车将更加独立和强大。同样的,测试系统如果加入人工智能会加强我们的测试。

如果我们考虑DOM的例子,它能够在屏幕上找到元素并将其用于自动化,但它将永远不能识别其他缺陷,如页面当前位置不正确或某些元素隐藏了页面的某些部分的可见性。

测试人员查看应用程序页面的时候, 当特定的操作被执行时,他能一眼识别显示的所有字段值和检查是否与预期值一致。他也能够识别页面的位置是否如预期正确。相似的我们人工智能应该能够马上捕捉到这个。我们的人工智能必须是自给自足的,并能够考虑所有这些因素,而这些因素是人类在测试网页元素时手动执行的。所以第1级在参考基线的帮助下执行。

这就是为什么AI算法和它们的重要性出现在画面中。算法应该被设计成一个智能的视觉,这样它就能够识别实际的变化,而不是那些看起来是真正的变化。

人工智能是自我装备的,我们不需要指定它的所有步骤。一些内置的功能可以自动执行简单的操作。尽管它仍然让我们能够完全控制我们想让AI在特定情况下如何工作。

人工智能运行测试用例的执行和持续追踪我们套件的执行状态,给我们汇总了成功执行的用例,同时通知我们测试集失败的地方。这为我们提供了识别缺陷和错误的*,这些缺陷和错误应该优先考虑,以更好地稳定我们的系统。

 

2部分自动化

 

在上面的第1级:自主里面我们已经讨论了如何严格的工作通过代码编写所有步骤来执行自动化脚本可以很容易地移交给现代人工智能系统。无论是工作还是检查数据库值,或验证屏幕元素或检查网页的大小和尺寸可以由人工智能使用算法来测试。

第1级给我们确切的通过和失败的测试集状态,但确定优先级和风险与缺陷仍是我们的工作。我们必须分析这些错误在我们的系统所带来的影响是什么,哪些需要在当前版本被修复和交付。这一级未能考虑另一个因素是缺陷的冗余错误,例如:如果同样的问题落在很多测试用例,它会统计每一个缺陷是独一无二的。

第2级人工智能现在能够识别错误的相似性,它可以聚焦并突出导致这些错误的准确问题区域,从而减少冗余缺陷的验证。

它为我们提供了一组相似的缺陷,减少了人工对类似问题进行分组的工作量。通过这些缺陷,人工可以检查缺陷的优先级和影响。根据这个分析决定是修复还是忽略当前的问题。

 

3条件自动化

 

在上面的例子中,2级有自己的约束,元素的对齐和定位是在基线的支持下完成的。3级帮助我们超越这些约束,在这里,3级AI使用机器学习的概念。

对于以上页面场景,第3级AI测试现在可以自己检查页面对齐和定位,而不需要任何参考基线。它的机器学习技术有助于在视觉上识别页面,然后它可以参考客户的规格文件,并比较大小,颜色,字体的网页与预期的标准。

3级适用在数据方面,也可以验证页面的数据驱动的元素,为一个数字字段检查它的上、下限、数值数据而不是字母被接受、为日期字段检查有效的日期格式、文本字段检查可以输入的最大长度等。

这种人工智能是独立工作的,它所提供的协议能够自己测试一个应用程序,它首先理解这些规则,然后根据这些规则设计测试来进行应用程序测试。

现在,对于新引入的变化,这个人工智能适应变化,所以不需要人类的批准。人工智能致力于机器学习,并持续监控这些变化,并将它们与旧版本进行比较,最后只生成那些需要人工批准的变化,这一点具有关键的区别。

 

4高自动化

 

我们到3级AI能够执行我们的用例使用人工智能自动化测试运行,但那些或触发AI算法仍然需要人工输入4级:高自动化会克服这个障碍,AI本身也可以触发自动化本身不需要人工输入。

4级AI增加了检查的能力。这是使用强化学习技术完成的,它是机器学习的一个版本,现在人工智能可以区分它的视觉。

例如登录航空公司网站订票。第一页是在网站上注册,然后第二页是预订页面提供选择飞往不同的位置按选定的日期和时间,第三页是支付页面,人可以提供卡的细节,第四页显示购买机票的结果与机票交易细节。

现在4级AI能够区分这4页,因此无论何时移动这些特定的页面:注册、预订、支付、总结,它能够识别页面和简单地执行为特定页面设计的动作并完成整个本身的任务序列而不需要人工输入。

 

5全自动化

 

第5级是一个高级的人工智能,在目前还只是一个虚构的存在。这里的概念是为机器提供比人脑更多的智能。

这一层次的人工智能将能够用自己的思维能力驱动与人类的对话,思想和想法是由人工智能本身产生的,而不是人类在人工智能系统中预先设定好的。

AI测试工具


 我们看看一些经常被使用的AI测试自动化工具。


Testim.io

 

机器学习的概念被这个工具用于测试集的自动化。它侧重于在功能级别上测试最终用户端场景,还测试应用程序中涉及的接口。UI测试使用testim.io是有效的,并减少时间花费高达90%。它使用JavaScript,也接受html语言。该工具的主要特点如下:

1. 与像Jenkins这样的CI工具集成。

2. 与CD工具如Jira, Github和Visual studio合作。

3. 支持不同的浏览器Edge, IE, Safari,Internet Explorer等。

 

Appvance

 

这个工具是基于人工智能技术概念的基础上创建基于实际最终用户输入的测试用例。由于它能识别最微小缺陷的强大功能主要是用于生产系统。测试人员在AI的帮助下能在较短的时间内执行大量的脚本的全面测试,。该工具的主要特点如下:

1. 生产系统的人工智能脚本。

2. 优秀的测试集设计。

3. 统一测试。

 

Functionize

 

它也使用了机器学习,是第一个基于云的测试平台工具,它对敏捷测试的测试能力使它成为客户最广泛使用的工具,它可以在几分钟内执行上千个测试集,速度非常快。该工具的主要特点如下。

1. 使用记录器创建测试用例,不需要脚本。

2. 它的维护成本可以忽略不计,因为它的学习和自适应方法帮助它使用根本原因分析引擎来解决问题。

3. 优秀的分析报告。

总结

 

人工智能现在正慢慢成为软件生命周期的一个重要方面。人工智能在我们的实践中应该涉及到什么范围,目前还在讨论和观察中。很多组织都不太愿意将它们用于生产工作,因为这很关键,需要大量的创造力和分析。

人工智能是一个聪明的举动,它可以节省大量的原本需要更多人力投入的人工和自动化系统的成本。对于人工智能,我们需要做一次投资,然后才能在未来取得丰硕的成果

手工测试涉及重复性的工作,因此需要大量的人力投入,这使得利用手工测试进行创新的空间更小。人工智能测试将解放人力,因此我们可以交叉培训我们的低技能劳动者,让他们接受人工智能机器学习。这将帮助我们实现更高效的人工智能系统,提高生产率,从而产生巨额利润。所有的节省都可以智能地用于执行最好的质量保证活动,探索性测试和即兴的应用程序测试的其他领域。

人工智能机器学习和人工智能机器人与现代测试框架兼容,并与许多CI/CD工具集成。因此,人工智能机器人与应用测试的协作是很容易的。人工智能有它的局限性,我们还需要进一步研究。更多的探索和使用人工智能系统,我们会意识到它的局限性。然后我们可以在这些基础上继续工作,并获得克服现有版本困难的下一个高级版本。

在未来,人工智能可以帮助人类测试人员探索测试的新方面,因此这是一个人类和机器携手合作以获得更大优势的新时代的开始。

基于人工智能的软件测试

参考文献

本文参考了互联网上的如下链接:

https://en.wikipedia.org/wiki/Artificial_intelligence

https://techbeacon.com/6-levels-ai-based-testing-have-no-fear-qa-pros

https://dzone.com/articles/artificial-intelligence-in-testing-tools-and-advan

基于人工智能的软件测试

【AI测试】也许这有你想知道的人工智能 (AI) 测试--开篇

测试工程师不懂AI,还有未来吗?