《【人工智能论文】人工智能下软件测试发展与应用.docx》由会员分享,可在线阅读,更多相关《【人工智能论文】人工智能下软件测试发展与应用.docx(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、【人工智能论文】人工智能下软件测试发展与应用人工智能是指由人制造出来的能够将只要人所具备的智慧表现出来的机器。几十年来,软件测试逐步从小型化、本地化向智能化、复杂化的大规模开发和维护转变。因而本文提出研究人工智能时代下软件测试的发展与应用,来对人工智能技术对软件测试的影响进行深化的研究,通过研究能够愈加深入的理解人工智能技术对软件测试的发展的重大影响。1研究背景和意义1.1研究背景软件测试是一种用来描绘、促进和鉴定软件的正确性、完好性、安全性和质量的经过,它是一种将实际输出与期望输出进行审核或者比拟的经过,因而通过软件测试能够更快速的发现软件开发经过中的各种问题,帮助人们愈加高效率的对软件进行
2、完善,使得软件的性能逐步提高。现今社会,随着大数据和云计算的飞速发展,传统的软件测试技术很难支撑当代软件的发展,软件测试技术如今面对着新的挑战。1.2研究意义机器学习、深度学习、NLP等AI领域被以为是我们身边大多数技术的前沿。如今,随着人工智能技术的发展,人工智能技术也开场逐步成熟,人工智能技术逐步浸透到工业和生活中的各个领域,作为与程序密切相关的软件测试,也深受人工智能技术的影响。2软件测试发展史2.1程序员和测试人员的时代在程序员和测试人员的时代,开发和测试被视为互相独立的活动,软件准备就绪后,将其传递给测试团队进行验证。测试人员在需求分析阶段的介入不是很积极,与业务涉众的互动也很有限。
3、他们在很大程度上依靠于通过设计和开发经过中完成的文档或从编写代码的开发人员那里收集的知识来获取信息。因而在这个时代,测试人员缺乏对客户需求和期望的洞察力,进而导致软件测试策略的有限性。2.2探索和手动测试的时代90年代末期,各种软件测试方法的问世,例如探索性测试、敏捷测试等。在这个阶段,软件测试人员使用具体的测试用例和测试计划手动进行测试。探索性测试通过在测试章程范围内探索软件,进而使测试人员能够自由地以本机方式测试软件。并且在这个时期,软件开发工程量逐步增加,软件开发经过的广泛而密集的增长需要更全面的测试方法,敏捷测试采用的增量和迭代方法有助于实现此目的。2.3自动化时代随着21世纪的到来,
4、更多的新方法浮出水面,进而彻底改造了软件测试。在软件开发各个阶段的质量保证和控制都变得越来越重要,测试都被视为软件开发经过中不可或缺的一部分。自动化使测试到达了完全不同的水平,通过大量的自动化测试框架,使得测试人员能够以更高的效率执行其任务。云测试的出现能够帮助企业以更快的速度和更少的资金管理产品的测试。2.4持续测试的时代持续测试时期业务动态开场发生变化,客户期望看到最终产品的模型,因而测试需求逐步增加。现阶段出现的改良网络基础架构为开发和测试提供了高连接性,并提高了跨多个平台的部署和测试的速度。DevOps和CI/CD的兴起导致软件整个开发周期缩短,实时进行仔细的风险评估成为了当务之急。同
5、时,在软件开发生命周期的所有阶段都必须进行风险评估和处理,进而降低软件开发的风险。为了跟上这些需求,需要不断进行测试以提高效率,人们开场尝试应用人工智能技术进行测试。2.5人工智能时代简而言之,人工智能是机器通过感悟,理解和学习模拟人类行为的能力。人工智能的算法是基于数据的预测分析,这也意味着AI测试在很大程度上取决于数据。当今有很多可用AI驱动的测试工具,可帮助进行单元测试、API测试、UI测试等,其中最经典的示例是可视化测试。3人工智能技术在软件测试中的应用及挑战3.1AI系统的测试随着人工智能技术的发展,目前出现了各类有关人工智能技术的应用,然而由于人工智能技术是一个新兴技术,传统的软件
6、测试无法与人工智能技术相匹配,因而在人工智能时代软件测试技术的更新成为一件重要的事情。由于人工智能技术所开发的系统其功能具有动态性,并且开发出来的系统拥有自我学习的能力,因而在对人工智能系统进行测试时,应当充分考虑时间范围。人工智能系统的学习能力应该是不断加强、动态性的,因而,针对此类测试经过,需要大规模、长时间的进行测试。例如,Google的AlphaGo存在所使用的黑盒测试规模庞大、测试周期长,并且有自动化测试难的问题。然而AlphaGo是一种功能相对简单的系统,人工智能技术所开发的智能语音响应系统在测试时会愈加困难。智能语音响应系统需要模拟不同的场景进行测试,因而小规模的测试数据集,很难
7、判定系统的反响能力,也无法对系统提出具有重大意义的改善。深度神经网络学习算法通常被以为是黑盒模型,但是随着训练的数据集不同,其测试结果具有不稳定的特性。因而针对深度神经网络测试需要大规模的数据集,这种测试方法与传统的测试方法相差甚远。在传统的测试经过中能够使用等价类划分和其他方法来减小所需测试的样本规模,但是对于人工智能系统来讲,必须依靠于大量的数据才能够到达测试的效果。3.2大数据的测试大数据的测试并不比人工智能系统测试容易,其很难确定判定其测试预测测试结果的标准,由于无法对数据处理结果的大小进行断定。在数据收集、存储、检索和分析之后,软件测试人员需要开发适当的工具以从大容量、多样性、快速变
8、化和实时表征方面对数据的一致性和完好性进行校验。3.3云服务测试现阶段云服务主要包括私有云、公共云、混合云和各种其他形式的云,云服务的测试面临着复杂的系统架构、复杂的配置、复杂的计算和存储节点,尽管能够通过使用两个或三个的组合来减少组合的数量,但是这种方法覆盖率相对较低,并且在云服务的测试中存在着较高的风险。同时,云服务的性能测试也非常困难,主要包括云质量压力模拟需要承当较高的成本,甚至花费大量的资金也无法对测试进行模拟。而且,云服务作为新兴的技术,传统的测试工具很难与计算机平台的云性能测试相匹配。3.4区块链测试区块链主要包括公共网络、私有链和联盟网络等不同类型的网络,这些网络在很多方面都大
9、有不同,例如在区块链的管理、使用者的用户身份验证、区块链的节点数、网络的共鸣机制和智能合约等方面。因而,不同的区块链面临的测试挑战也是不同的。同时区块链也存在一些共性的的挑战,如安全测试非常困难。安全始终是矛与盾的问题,现阶段不存在绝对受保护的技术、系统或平台,因而对于区块链来讲,很难对其安全质量进行测试。同时区块链还包括基础构造安全性、加密算法保护、网络协议保护、共鸣机制安全性和合同安全性等合同安全性又包括身份验证和身份验证。而且区块链拥有诸多的网络节点,对于区块链的测试不仅仅只是某个区块链节点。3.5物联网测试在工业4.0和5G时代,网络成为人们生活中不可缺少的东西。物联网是指万物互联,它
10、不仅仅只是将计算机相连接,还包括工业设备、家用电器等,物联网旨在让每一个物品等能够连接到网络。然而网络的融合需要创立一个更大的系统,因而这也给软件测试带来新的挑战。同时物联网需要更多的物理设备才能够进行测试,这会消耗大量的时间和精神。其次物联网系统需要具有实时性,物联网设备对时间特别的敏感,它需要实时数据收集,并且需要实同步数据的传输。此外,物联网测试还面临着检查系统规模、可伸缩性、协作感悟、大数据处理性能和智能特性等挑战。4应用人工智能技术的软件测试4.1测试规范和测试套件细化在开源开发或软件进化的背景下,开发人员经常面对开发时没有明显理由的测试套件,这些测试套件可能需要增加或改良以确保足够
11、的可靠性,甚至需要减少以知足紧迫的截止日期,我们称这个经过为测试规范和测试套件的重新设计。同时在实践中,测试规范可能一开场就不存在,尤其是假如没有使用黑盒策略来识别测试用例的情况。在这种情况下,测试规范必须被逆向工程或者从高级系统规范创立。因而,软件测试重要的是提供方法和工具支持,帮助人们理解测试套件的局限性及其可能的冗余,以便能够以经济高效的方式对其进行改良。因而,基于机器学习的方法能够解决黑盒测试中的这个问题。4.2调试、故障定位使用机器学习来识别可疑语句,如测试期间观察到的相关故障,这可在调试期间帮助故障定位。RUBAR技术解决了软件测试的主要缺陷,但该方法难以处理多个故障的存在,由于它
12、隐含地假设失败的测试用例执行一样的故障。同时使用C4.5决策树来学习各种基于测试用例输入和输出信息的故障条件,在类似条件下执行的失败测试用例被以为是由于一样的错误而失败,假如语句被在类似条件下执行的大量失败测试用例覆盖,那么它们就被以为是需要重点关注的。同时,由C4.5决策树建模的故障条件能够准确预测故障,因而能够用于帮助调试,由该树建模的故障条件总体上准确描绘了实际故障条件。4.3风险驱动测试无论采用何种测试策略,实际上很少有足够的人力资源和时间来彻底测试系统的每个部分,到达令人满意的程度。测试团队必须集中精神并优先考虑他们的测试工作,通常这是通过分析与功能或系统组件相关的“风险来完成的,这
13、取决于测试级别。风险通常被定义为故障概率和它们可能造成损害的组合,目前软件测试中有各种各样的方法来解决这个问题,构建预测文件或类中错误位置的模型是一个可行的方案。在很多利用机器学习算法训练的模型中,通常不需要与统计模型相关联的严格假设类型,对于实践者来讲更容易解释和理解。人们也越来越认识到要获得合理准确的预测模型,还需要考虑其他因素。尽管在软件测试中输入使用的数据各不一样,但它通常包括组件的构造复杂性度量、来自近期发布的组件变更信息、与组件相关联的历史数据,以及开发人员关于例如他们对被变更的系统的体验的信息。因而一旦开发了故障预测模型,就能够根据系统组件包含故障的可能性对它们进行排序,结果可以
14、以用树形图更容易地可视化。并且从经济的角度出发,建立和利用故障预测模型也具有很高的经济效应。4.4测试预言测试预言的自动化可能是软件测试中最困难的问题之一,固然没有普遍适用的自动化测试预言的解决方案,但是在很多情况下机器学习能够提供帮助。例如,在图像和语音处理领域有很多这样的情况。图像分割是从图像中提取感兴趣的特定构造的行为,为了评估图像分割算法花费了大量的时间和精神,却并不能提供足够准确的结果,技术专家需要修改算法并重新运行整个测试套件来验证它。该经过大多是手工完成的,因而非常耗时,也需要可靠的专家在场。在初始学习阶段,使用机器学习算法来学习一个模型,一旦学习了有效的机器学习模型,由测试中图
15、像分割算法的任何新版本产生的分割将自动认定其正确地性,此时也不需要任何人工专家的干涉,所以在分割的重新测试期间能够获得大量时间和人工的节省。在人工智能时代,作为软件工程师所面临问题的工程特性,例如部分定义和不明确的应用领域,具有多个互相竞争、互相冲突和不断变化的目的,正把我们从完美的乌托邦拖向更现实的工程世界。现代的软件性质变化迫使我们改变开发和部署测试技术。人工智能技术被证实非常合适这个不断变化的是时代。本文通过研究人工智能时代下软件测试的发展与应用,对人工智能技术对软件测试的影响进行深化的研究,通过对人工智能时代下软件测试得研究现状、软件测试发展史、人工智能技术在软件测试中的应用及挑战、应用人工智能技术的软件测试以及软件测试的将来发展等进行阐述,愈加深入的理解人工智能技术对软件测试的发展的重大影响。