翻译自 https://www.sogeti.com/globalassets/global/sogetilabs/testing-of-artificial-intelligence.pdf
人工智能(AI)。这是很多人只从好莱坞电影中了解到的东西,给人的印象是它不会在不久的将来影响他们的生活。在现实中,人工智能已经改变了我们的日常生活,改善了人类的健康、安全和生产力。与电影中不同的是,未来不会出现超人类机器人。尽管滥用人工智能技术的可能性必须得到承认和解决,但人工智能技术更大的潜力在于,它可以让驾驶更安全,帮助儿童学习,并延长和提高人们的生活。事实上,学校、家庭和医院中有益的人工智能应用已经在加速增长。
全球最有价值的公司中有五家是人工智能领域公认的领导者。在整个汽车行业,所有公司都被迫采用人工智能,必须找到融合它的智能解决方案。深度学习是一种基于被称为神经网络的变量分层表示的机器学习形式,它已经使语音理解在我们的手机和厨房里成为现实。此外,它的算法可以广泛应用于一系列依赖模式识别的应用。自然语言处理(NLP)和知识表示和推理使机器能够击败Jeopardy电视智力竞赛节目冠军,并为网络搜索带来了新的力量。
突然间,大量的人从他们高度乡土的生活方式直接跳入了数字世界,创造了对更多、越来越创新的软件的巨大需求。负责软件生产的任何人都知道,传统的开发、测试和交付软件的方法不足以满足这种新的需求。不久以前,大多数公司每年、每两年或每季度发布软件。现在,迭代通常持续2周或更少。我们采用了敏捷和DevOps来摆脱这种加速停滞期。今天,许多组织都在讨论持续测试,并试图实现它。
然而,当我们展望未来时,很明显,即使是持续的测试也不够。这就是人工智能和机器学习进入游戏的地方。他们能够并且将接管软件开发和测试的复杂方面。人工智能能够通过自动化涉及自我学习的任务来完美地推进软件测试,这些任务传统上需要人类的认知能力。
本文考虑了为什么我们需要测试AI,以及我们是否应该使用众所周知的软件测试技能来测试它,还是使用额外的技能。什么可以测试,什么应该测试?我们为测试“人工智能的”和“与”人工智能的帮助提出了一般的想法,定义和指导方针。
IT项目中的每个人要么已经遇到过人工智能,要么很快就会遇到。尽管是一种现代技术,我们仍然会看到一些模式和模型,已知的测试技能和技术可以应用到这些模式和模型中。因此,我们相信,在这个新时代,同样坚实的测试知识基础仍然适用。但要测试人工智能,以及在使用人工智能进行测试时,还需要额外的技能。认为测试人员能够单独执行所有的测试任务是一种错觉。相反,测试必须是团队的工作,本文提供了这个新时代相关技能的概述。
所涉及的主题包括:
•术语
•人工智能质量的六个角度
•保持相关的传统测试技能
•新的质量工程技能需要“人工智能测试”和/或“人工智能测试”
•相关专业领域,如社会学和心理学
•控制学习机输入的重要性,因为输出不容易预测。
这是一系列关于测试和人工智能的论文中的第一篇。它利用了我们在这个快速变化的It领域的多年实践经验和理论知识。
2.1介绍本白皮书
现代信息技术和人工智能(AI)驱动的机器的出现已经强烈地影响了世界。计算机、算法和软件简化了日常工作,我们无法想象在不久的将来,没有它们,我们的大部分生活将如何管理。
软件测试是一个调查过程,它验证并验证软件系统的属性和功能与其预期目标的一致性。这是一个劳动密集型和昂贵的过程。因此,自动化测试方法可以减少成本和时间,这并不奇怪。我们相信,在人工智能驱动的机器的帮助下,软件测试可以进一步优化。
在本文中,我们提出了一般的想法,定义和指导方针的测试人工智能,以及与人工智能的协助测试。
开发人员承受着巨大的压力,要在保持质量的同时,迅速向市场交付创新和软件。测试是软件开发生命周期的关键组成部分,并且正在超越它的传统定义。DevOps和敏捷策略被越来越多地采用,以提高交付的速度和质量。
这种对加速和创新的需求正使测试和开发之间的关系从服务转变为合作关系。测试和开发之间的界限已经模糊了。开发人员要做更多的测试,而测试人员要比之前更早地参与到开发活动中。但是,如果一些由人类进行的测试活动可以由人工智能驱动的机器来完成呢?这会减少长期的测试成本吗?这会提高测试的速度吗?这是一个明智的策略吗?
在我们看来,是的!测试活动可以通过使用AI进行测试来优化。但人工智能本身也必须接受测试,以确保用户能够依赖人工智能做出的决策。
未来几年,人工智能将对全球劳动力市场产生根本性影响。由人工智能驱动的机器可以全天候可靠地工作,而且不会因疲劳或其他外部环境而分心。另一个积极的因素是,它的准确度比人类高得多。在决策过程中,这些系统可以以客观标准为指导,因此可以不带感情,以事实为依据,而不是感情和意见。要依赖这些决策,或者相信由人工智能驱动的机器做出的决策是正确的,我们需要测试这些系统。这类系统已经在使用中。例如,谷歌就使用它们来改进他们的产品。该公司正在重新思考,并在所有产品中应用了人工智能来解决问题。例如,它的Streetview在机器学习的帮助下自动识别餐馆。谷歌正在使用人工智能不断测试和改进它的机器学习。
it项目中的每个人要么已经遇到过人工智能,要么很快就会遇到。测试AI和使用AI进行测试需要额外的技能。认为测试人员能够完成所有的测试任务是一种错觉。相反,测试必须是团队工作,本文提供了相关技能的概述。其他的论文将会进一步阐述这些特定的技能。
虽然测试是一种职业,但我们认为项目中不会有很多“AI测试员”或“AI质量工程师”。大部分工作将由共同的团队成员执行,如业务分析师、数据科学家、程序员、操作和维护人员以及最终用户。本文的目的是告诉(并激励)他们需要哪些技能来持续交付适合目标的IT系统并交付业务价值。
2.2术语
这篇论文使用了“人工智能”、“机器学习”、“机器智能”、“认知IT”和“机器人”等术语。信息技术的这些新方面与当今的数字保证和测试世界息息相关。下面描述了我们如何定义这些术语的一般术语。
2.2.1人工智能
关于AI有多种描述,例如:
1.人工智能(AI)是计算机科学的一个分支领域,旨在开发能够执行通常由人类完成的任务的计算机,特别是与人类智能行动有关的任务。
2.通过编码、业务规则和日益增强的自学习能力构建的系统,既能补充人类的认知和活动,又能与人类进行自然互动,还能了解环境,解决人类问题,执行人类任务。
3.人工智能不需要学习,它可以使用预先编程的规则来处理所有可能的结果。然而,对于具有基本复杂性的系统来说,这已经被证明是一项太大太复杂的任务(自20世纪60年代以来,这种方法已经被尝试过多次,但都失败了)。
2.2.2机器学习
机器学习是实现人工智能的途径之一。它包含不同的算法-每一个都有自己的优缺点。人工智能领域最近的重大突破是基于机器学习,或者更确切地说基于“深度学习”,它使用人工神经网络。其他流行的算法有:贝叶斯网络、决策树、K-Means聚类和支持向量机。
每一种都有自己的优缺点。这些算法通常分为三类:
•监督学习
•无监督学习
•加强学习
虽然认识到了这些差异1,但我们没有在本文中区分算法。
2.2.3机器智能
机器智能(MI)是机器学习(ML)和人工智能(AI)的统一术语。我们发现,当我们将其称为AI时,太多的人会被某些公司是否是“真正的AI”而分散注意力,而当我们将其称为ML时,许多人认为我们没有正确对待“AI”式的方面,如深度学习的各种口味。(来源:SogetiLabs的《机器智能——执行介绍》)。所以,机器智能是一个结合了“人工智能”、“机器学习”和其他相关术语的术语。
2.2.4认知它
“认知”这个词的意思是“了解和感知”。认知信息技术不仅基于规则,而且能够基于感知和知识做出反应。
在Sogeti内部,我们使用术语“认知QA”来使用认知IT来帮助质量保证和测试。
2.2.5机器人
什么是机器人?这台机器通过传感器的输入来收集周围环境的信息,并根据这些信息改变自己的行为。结合机器学习和机器智能,随着时间的推移,机器人的反应会变得更加充分。物联网(IoT)、大数据分析和云技术的使用使机器人变得多功能。机器人有许多不同的形状和形式。不仅仅是金属人。机器人也可能是社交媒体上的智能算法(例如聊天机器人或数字代理)、自动吸尘器或自动驾驶汽车。
1 http://aiso-lab.com/de/2017/07/28/ai-tutorial-1-artificial-intelligence-machine-learning-neuronale-netze-und-deep-learning-wo-sind-die- unterschiede /
2.3区分“人工智能测试”与“人工智能测试”
人工智能可以(也应该)接受测试。在这个例子中,我们谈论的是人工智能的测试。但人工智能也可以用来使测试更有效和/或更有效率。在这个例子中,我们谈论“用”人工智能进行测试。
2.3.1人工智能测试
需要评估使用人工智能的认知IT系统的质量。这种情况下的挑战在于,学习系统会随着时间的推移而改变其行为。预测结果并不容易,因为今天正确的结果可能与明天同样正确的结果不同。测试人员在这种情况下需要的技能与解释系统的边界或公差有关。输出总是有一定的界限。
为了确保系统在这些边界内,测试人员不仅要查看输出,还要查看系统的输入。因为通过限制输入我们可以影响输出。
2.3.2认知QA:人工智能测试
随着对快速交付软件的需求增加,敏捷和DevOps等策略已经被普遍使用。但如何才能进一步提高这一速度呢?下一件大事是由人工智能驱动的机器学习帮助进行测试。
“经典”测试是为跨越数月(有时甚至一年)的软件交付周期而设计的。敏捷使两周的开发迭代成为规范。今天,绝大多数的组织都在谈论持续测试,并试图实现它。然而,当我们展望未来时,很明显,即使是持续的测试也不够。我们需要帮助。我们需要“数字测试”来实现进一步加速,并满足物联网、机器人和量子计算驱动的未来的质量需求。
人工智能模仿人类的智能行为进行机器学习和预测分析,可以帮助我们实现这一目标。为了应对加速交付速度和不断增加的技术复杂性所带来的挑战,我们需要遵循一个非常简单的命令:更智能的测试,而不是更困难的测试
图1:AI 2的持续测试之外
有了Cognitive QA,我们的客户可以通过智能的QA方法来加速和优化质量。这利用了自我学习和分析技术,用于预测QA、仪表板、智能分析、智能QA自动化和认知QA平台。
这使得基于实际项目数据、实际使用模式和用户反馈的智能质量决策能够在一个复杂的互联世界中以优化的成本快速交付质量。更多信息请参考www.cognitive-qa.com。
图1基于Tricentis的“超越AI的连续测试”
人工智能测试
3人工智能测试
3.1人工智能质量的六个角度
下图描述了用于人工智能、机器人、机器智能和认知IT等现代技术的数字保证和测试的六个不同角度。
前两个角度(机械和电气)只适用于物理机器人和其他智能设备/机器。机器机械和电气方面的保证和测试的方法和技术已经存在很长时间了,对于新技术来说并没有特别不同。第三个角度(信息处理)与传统的it功能和系统有关。对于这个角度,我们可以使用TMap套件等方法。TMap套件在《TMap NEXT》、《TMap HD》和《IoTMap》等书中都有详细的说明。当然,www.TMap.net网站提供了丰富的测试知识。新的角度是机器智能的质量保证,以及这种新技术可能产生的商业和社会影响。
图2:AI质量的六个角度
3.1.1机器智能的质量保证与测试
智能机器和传统it系统的主要区别在于,人工智能系统产生的输出是很难预测的。在传统的IT中,测试人员可以使用定义的规则来预测系统的准确结果和结果状态,并将其与实际结果进行比较。智能机器具有机器学习能力,如果在不同的时间点调用相同的函数,会产生不同的结果。这就需要新的测试技能。
测试人员可以做的一件事是为结果定义公差,从而设定一个结果被认为是正确的边界。
此外,控制输入也非常重要。学习机使用它的输入来发现新的模式和/或新的选项。所以,如果我们能控制输入,我们也能在一定程度上控制输出。关于控制输入的更多信息可以在第4.4和4.7节中找到。
3.1.2业务影响
智能技术对业务流程和业务结果(如利润)的影响可能与传统it系统对业务的影响非常不同。此外,这也很难预测。这仍然是非常重要的,因为业务影响或结果是拥有IT系统的原因。
当机器人技术首次投入使用时,应用新技术的公司也自己创造了它,因此自然会考虑到所有的后果。既然新技术已经作为现成的解决方案普遍可用,那么挑战将是如何确保产生的新业务流程将为更广泛的市场提供预期的好处。因此,数字保证不仅必须在新解决方案构建和实施的项目阶段发挥作用,而且必须在第一次使用时发挥作用。这种对新技术影响的监测将确保尽快查明所希望的和不想要的影响,以便迅速采取必要的纠正行动。
3.1.3社会影响
智能机器可以对其用户的社会环境产生巨大影响。例如,出租车司机会不会因为自动驾驶汽车的引入而失业?但也要考虑到积极的社会影响,如护士有时间更多地关注老年患者,因为机器人在那里做基本的照顾活动,如分发正确的药片或食物,打扫房间。
很难为这种效果定义测试。但是数字保障远不止测试那么简单。有了数字保证,我们还可以用另一种方式观察效果,比如新旧情况的区别。这就需要有能力对这些情况进行比较,并发现新技术对个人、组织和整个社会产生影响的微小变化迹象。为此,测试者需要具备社会学和心理学等领域的技能。
3.2哪些需要测试?
在开发机器学习解决方案时,测试任务是一个至关重要的活动。无论谁执行这个任务,都必须确保功能性和非功能性需求得到满足。改变的是,行为变得更加难以预测。由于人工智能系统的复杂功能,需要测试更多的输入值,以验证一个稳健的解决方案。
在测试AI时,我们可以问以下问题:
•接受标准是什么?
•我们如何设计用最少的努力来测试这些标准的测试用例?
•训练数据和测试数据有不同的数据集吗?
•测试数据是否足够好地代表了预期数据?
测试和培训数据是否符合法律框架?
•训练数据是否有偏差(见3.3)?
•模型的预期结果是什么?
•模型是不够适合还是过于适合(见4.6)?
•解决方案是否不道德(见4.6)?
•解决方案的性能和健壮性足够好吗?
3.3机器学习解决方案中的测试对象
机器学习解决方案包含很多组件,就像经典的软件解决方案一样。但它们的组成部分,特别是它们的作用和性质是不同的。以下是机器学习解决方案中测试对象的概述和简要描述:
数据集
该数据集包含机器学习解决方案可用的所有数据。通常它是公司的历史数据,需要处理才能可行。
训练数据
训练数据是数据集的子集。这些数据用于在开发过程中训练模型。
测试数据
测试数据是数据集的另一个子集。它用于验证模型是否按预期工作。不要将训练数据用作测试数据,这是很重要的,因为要验证AI是否已经掌握了它需要执行的任务
它的决策需要不同于训练数据的数据。
图3:机器学习数据集
模型
该模型由正在使用的算法组成,人工智能从给定的数据中学习。培训(阶段)
训练是算法从数据中学习并做出预测的过程。
推理(阶段)
模型经过训练后,可以根据输入的数据进行推理。
源代码
机器学习的解决方案比经典的解决方案有更少的代码行。然而,有些源代码可能会有错误,因此必须有单元测试和其他相关测试。
基础设施
基础设施受制于非功能需求,必须对其进行检查和测试。
需求
这方面的要求应该仔细检查。这是一项新技术,所以这些期望可能是不现实的,或者超出了法律或道德的界限。
输入/输出值
最基本的测试对象是输入和输出值。这是验收标准被验证的地方。机器学习解决方案的输入值是至关重要的,因为我们不知道数据是如何处理的。
3.4拟合数据
由于机器学习仍然是新的,新项目的起点往往是数据。数据如何产生价值?如何在机器学习解决方案中使用它?
期望和技术能力并不总是相同的。有关数据的其他问题具有法律性质。在收集数据并将其存储在中央数据库中之后,必须保证该数据的收集和处理在法律约束范围内。例如,它们是否符合欧盟《一般数据保护条例》的要求。在开发阶段,数据的统计质量方面变得重要起来,特别是与所选择的模型结合起来。数据质量如何?这些预测是否足够准确?这些质量方面包含在开发阶段。
4.1为什么我们需要新的技能?
软件测试人员在如何使用不同的指南和测试方法来测试软件方面有经验。对于专业和结构化测试,有一些标准认证已经存在很长一段时间了,例如TMap和ISTQB。敏捷、需求工程和移动测试领域的其他认证对测试人员来说也很有价值。但现在,随着人工智能发挥越来越重要的作用,技能组合还需要进一步增长。
人工智能的测试包括机器学习、数学与统计、大数据分析等。团队需要具备其中的许多技能(下面将详细讨论),才能成功地执行与人工智能相关的测试任务。
4.2如何利用现有的技能集来应对新的挑战
在这个测试的新时代,仍然可以应用许多知名的、已建立的测试设计技术和实践。在这个以人工智能为主导的现代景观中,可以应用已知技能和技术的模式和模型是显而易见的。因此,我们相信,测试操作中已经存在的测试知识的坚实基础仍然适用。
在IT领域的其他最新发展中,如DevOps方法的兴起,也有许多人接受了基本测试技能的教育,这一事实支持了我们的观点。例如,TMap定义的活动,用于计划、控制、
准备,规范,执行,完成和测试基础设施。在测试包括人工智能在内的新技术时,我们仍然需要组织这些基本的测试活动。当然,对于不同的活动会有一些不同的方法,但是测试行业不会因为有一种新的系统被测试而发生巨大的变化。
当然,在上述众所周知的技能之上,必须获得新的技能,才能有效地测试包括机器智能在内的系统。
人工智能质量工程所需的新技能
为了确保机器学习项目的质量,该团队的人工智能质量工程需要一系列扩展的技能。除了上述来自TMap和ISTQB的技能之外,团队还应该拥有A/B测试和变形测试方面的专业知识,以及其他已经获得新的重要性的技术。精通最著名的机器学习语言,如Python, Scala, R, Spark,以及Go和c++等语言和开源软件库,如Tensorflow,都是必备的编程技能。这不仅仅是关于理解所开发的软件,而且是关于为特定的测试创建定制的工具集。这些技能需要通过对机器学习、大数据和云计算等新技术的深刻理解来扩展。
较强的数学技能,特别是统计,微积分,线性代数和概率是理解机器学习的核心。关于计算机硬件架构的知识对于确定所选模型的性能是至关重要的。
过去与IT项目无关的学科现在在人工智能领域站稳了脚跟。生物学、经济学、社会科学和心理学都有很多数据科学家的用例。这些领域的知识是有帮助的。当我们创造了一个有智能软件的新世界时,哲学和伦理也变得更加重要。
一旦物理机器人也参与进来,团队成员就需要在机械和电子领域的额外技能。
人工智能质量工程是活跃的、灵活的、广泛的。AI质量工程通过为软件开发项目提供强大的技术和功能技能而发挥重要作用。正在进行测试的团队成员通常是第一个发现性能、法律约束或有问题的需求问题的人。
图3:ai质量工程技能
4.4如何测试机器智能?
由于机器学习的解决方案是相当新的,在这一领域的经验是稀缺的。然而,人工智能质量工程必须制定或评估完整和强大的验收标准,以验证结果。结果由输入数据和训练过的模型决定。测试这些是核心活动。
A / B测试
为了测试最终用户的体验,许多大型软件公司使用A/B测试。他们提供了两个不同版本的软件,并测试用户的反应。这种方法基于科学方法,应该在开发人工智能能力时使用。
测试输入值
这就是人工智能测试工程必须具有创造性和勤奋性的地方。不同类型的输入值可能导致预期和意外的行为。输入值与功能完整性、安全性、健壮性和性能有关,也与当前和将来如何处理数据有关。
输入特定的输入数据,观察人工智能如何学习
不同类型的输入值可能导致预期和意外的行为。人工智能系统收集的数据越多,它就会越完善。AI测试人员可以尝试向AI提供特定数据,以改变其行为,例如让“售票AI”尽可能降低价格。根据项目的目标,这可能会产生严重的后果。人工智能测试工程甚至可以使用另一个人工智能与“售票人工智能”交互,以找到弱点。
变质的测试
变形测试是一种试图缓解test oracle问题的软件测试技术。测试oracle是一种机制,测试人员可以通过它来确定系统是否正确地响应。当难以确定所选测试用例的预期结果,或难以确定实际输出是否符合预期结果时,就会出现test oracle问题。
测试非功能需求
在新技术的掩盖下,性能、安全性和隐私等非功能性需求变得重要起来。它们必须用不同的方式来解决和测试。AI质量工程师必须能够以适当的方式解决和测试它们。这包括对底层硬件的深刻理解。
4.5人工智能安全问题
由于机器学习是信息技术的一部分,它暴露在黑客面前。这是一个新的领域,但已经存在一些需要考虑的安全问题和不能忽视的旧问题。
数据中毒
操纵训练数据来教机器学习模型攻击者想要的东西是可能的。当成功时,模型将做出攻击者想要的预测。这可能会产生严重的后果。
敌对的例子
模型的输入值可能会被操纵,从而导致错误的预测。例如,你在图片上看到一个杯子,但机器学习模型把它归类为摩天大楼。原因是,中间的噪音被加进去了。
人类的眼睛看不出任何区别,但机器能看出来。依赖于对环境进行正确分类的自动驾驶汽车可能会受到这类攻击的负面影响。
这只是针对使用机器学习系统的新攻击的两个例子。预计还会有更多。
4.6隐私、大数据和人工智能
数据是新型人工智能引擎的燃料。今天收集的数据比以往任何时候都多。这些数据不仅来自电脑,还来自移动设备和物联网(IoT)。这包括财务、定位、健康和行为数据。新的数据洪流,再加上国家法律、客户偏好、黑客、国家情报、行业标准和世界各地的竞争对手,使得有关隐私和道德的问题变得非常紧迫。答案的影响可能是深远的。下面几段提供了这些挑战的一些例子。
Findfaces和VKontake
Findface是一项新的面部识别服务,它使用一个人的照片来查找有关这个人的信息。这项服务在互联网上进行搜索,但大部分数据来自Facebook的竞争对手VKontakte。
活的人脸识别
摄像机拍摄的照片可以用来实时查找有关那个人的其他信息。这个摄像头是在柏林的一个火车站拍摄的。有几家初创公司使用机器学习来更多地了解一个人的情绪。
过滤器泡泡
通过发布定制的新闻或内容,互联网公司创造了所谓的“过滤泡沫”。一个人的观点被强化了,而另一些人则被忽视了。这种环境包含着危险,比如假新闻和支持激进观点。
性别歧视和种族歧视
有一些基于机器学习的计算机程序会复制甚至强化不希望看到的行为,包括种族主义和性别歧视。造成这种现象的原因之一是现有数据中存在的社会偏见。人工智能解决方案利用这些数据并从中学习。
数据可能被破坏
数据泄露发生。这是一个事实。这让黑客可以访问敏感的安全信息,比如电子邮件附件中所包含的信息,而这些信息本来就不应该存在。
隐私方面的考虑现在有了更大的规模和影响。它们应该谨慎处理,不仅因为社会责任,而且因为像GDPR这样的法律必须遵守。
4.7监控AI输入
2016年,一个新的聊天机器人开始表达法西斯思想,引发了很多关注的评论。聊天机器人的主人很快让它离线。调查显示,人们故意向聊天机器人提供了极右文本,而机器学习算法只是做了它应该做的事:它根据输入进行学习。所以,聊天机器人本身并没有错;麻烦来自输入。因此,我们可以清楚地看到这是数字保证的一部分。
任何人工智能项目的第一步都是观察机器如何学习,以及它如何对特定类型的输入做出反应。在此基础上,可以影响学习算法的行为,从而提高学习效果。
3: https://en.wikipedia.org/wiki/FindFace
第二步,在实时运行期间,是监控学习机的实际行为,并查看其输出是否保持在预先设置的边界内。
除了监视结果之外,监视输入并查看输入是否在正常输入的允许范围内也同样重要。由于聊天机器人和类似系统的输入可能是庞大的,机器智能可以应用于支持监控活动。当然,在这种情况下,我们都必须意识到,我们使用一个具有不可预测结果的系统来监视另一个具有不可预测结果的系统。
在控制输入时,测试人员必须观察机器学习中过拟合和欠拟合的影响-见下文。
Underfitting数据
欠拟合是指既不能对训练数据进行建模,也不能对新数据进行泛化的模型。不合适的机器学习模型是不合适的,这在训练数据的性能不佳中表现得很明显。给出一个良好的性能指标,不拟合很容易检测。补救办法是继续前进,尝试替代的机器学习算法。然而,它确实提供了一个很好的对比过拟合的问题。
过度拟合数据
过拟合是指对训练数据建模得太好。当一个模型学习了训练数据中的细节和噪声,以至于它对模型在新数据上的性能产生了负面影响时,就会发生这种情况。这意味着训练数据中的噪声或随机波动被模型作为概念提取和学习。问题是,这些概念不适用于新数据,并对模型的泛化能力产生负面影响。
过拟合更有可能是非参数和非线性模型,在学习目标函数时有更大的灵活性。因此,许多非参数机器学习算法也包括参数或技术,以限制和限制多少细节的模型学习。
我们正在快速地接近这样一个时代:即使是“连续测试”也无法跟上不断缩短的交付周期、不断增加的技术复杂性以及不断加快的变更速度。我们已经开始使用基本形式的人工智能,但我们需要继续测试进化,以实现机器人、物联网等测试所需的效率。
我们需要学习如何更聪明地工作,而不是更努力地工作。在一个软件将实时处理数量难以想象的数据点(比如在物联网上)、同时驾驶“自动驾驶”汽车的时代,确保质量已成为不可讨价还价的问题。
随着越来越多的人工智能进入我们的生活,测试人工智能及其应用的需求也越来越大。以自动驾驶汽车为例:如果汽车的智能不能正常工作,做出错误的决定,或者反应时间慢,很容易导致车祸,危及人类的生命。
各大公司都在争抢能够掌握大量信息并对其进行分析以获得真知卓见的员工。2017年,对精通人工智能、数据分析和机器学习的人才的需求显著增加。2017年,R、Python、SAS、Scala、Go和c++等编程语言的重要性比过去几年增长得更快。像Tensorflow这样的新机器智能库已经被引入。
在本文中,我们讨论了在质量保证的背景下应对新的人工智能和机器学习任务所需的技能。很明显,这不仅仅是测试的问题:远远不止于此。要找到具备所需技能的员工来组建跨职能团队可能并不容易。所以,现在是时候重新思考,开始在员工身上投资,学习和完善他们现有的技能,并发展所需的新技能。
作为结论,以下总结了在这个人工智能、机器学习和机器人的世界中,所谓的测试“必须具备”的技能和知识集:
软件工程,信息学,应用统计学或相关领域的教育背景
•有使用R, Python, c++, Java等编程语言实现解析解决方案的经验,用于解决工程中的分析问题
•深刻理解统计和预测建模概念,机器学习方法,聚类和分类技术,推荐和优化算法
•能够定义需要解决的关键业务问题,制定数学方法并收集数据来解决这些问题,开发,分析/得出结论并提出
•有解决业务问题的强烈愿望,并在结构化和非结构化数据中找到模式和见解
•洞察人工智能质量的六个角度,以及这些角度如何影响测试活动
•能够提出分析策略和解决方案,挑战和拓展周围每个人的思维
•数据分析能力
•完全理解软件开发生命周期的质量保证
•熟悉单元测试、系统测试、系统的系统测试、回归测试、性能测试、安全测试等。
熟悉测试方法、策略、业务流程、测试工具和测试自动化
•了解计算机芯片架构及其对不同机器学习方法性能的影响。
我们将继续致力于这一主题,详细阐述“人工智能和认知IT测试的质量属性”等主题。
作者Humayun Shaukat, Toni Gansel和Rik Marselis想要感谢阅读本文的每一个人。我们欢迎您的反馈意见,并将很高兴讨论我们如何处理所涵盖的主题,以及我们将如何推进这个主题。
我们也要感谢我们的审稿人,他们花费了宝贵的时间来阅读、审查并提供了宝贵的反馈。在此,我们感谢Andrew Fullen、Mark Oost、Carlos Ribeiro Simoes、Jeroen Franse、Bahadir Kasap、Robiel Nazirugli、Rakesh Partapsing和Bartek Warszawski。
Mark Buenen、Stefan Gerstner、Rob Crutzen和Tom van der Ven为我们提供了更深入的见解、有用的技巧、内容和想法。
最后,我们要特别感谢Gregory Biernat (Sogeti德国质量保证和测试主管)给了我们写这篇论文所需的灵感、支持、时间和资源。