浅谈人工智能应用于软件测试的意义

发表时间:2020/7/30   来源:《当代电力文化》2020年第7期   作者:刘明 彭天祺 贾巧娟 李丹
[导读] 随着现代软件工业的快速发展,现有的软件测试技术及测试工具已无法完全适应复杂性日益增加和交付速度逐步加快的应用程序
        摘要:随着现代软件工业的快速发展,现有的软件测试技术及测试工具已无法完全适应复杂性日益增加和交付速度逐步加快的应用程序,软件测试面临着越来越多的挑战。针对此问题,人们提出将人工智能引入到软件测试,来实现一种更高效的AI测试工具,用以对自动化测试进行全面升级,同时提升软件测试的可靠性、智能化和测试效率。本文将通过人工智能在软件测试的研究概况和AI测试工具的实现过程来探讨人工智能技术应用于软件测试领域的意义。

        关键词:人工智能;软件测试;测试过程;测试智能化;
 
前言:
        软件测试是软件开发周期中重要的环节,随着软件开发技术的发展与推进,软件测试相关的方法、技术也逐渐完善,人们对软件的质量要求不断提高。例如,我们身边到处可见的APP、线上收付款等快捷方式使生活变得更加便利高效,而这些都离不开软件产品测试对质量的保障。随着互联网与人工智能的快速发展,人们对各种功能的软件产品需求日益增多,同时对寻求更为高效的测试方法的热情逐渐高涨。将人工智能引入到软件测试,加快软件测试从手工测试到自动化测试再到智能化测试的脚步,已成为一个必然趋势。本文将针对软件测试所面临的挑战及人工智能在软件测试领域的应用现状及意义进行论述。
1.人工智能的概述
        人工智能(Artificial Intelligence,AI)是研究、开发人类智能活动规律,用于模拟、延伸和扩展人类智能的一门新的技术科学[1]。也可以通俗理解为让机器像人一样有感知、认知以及计算的能力。人工智能现已应用于机器视觉,指纹识别,人脸识别,专家系统,自动规划,智能搜索,自动程序设计,智能控制,机器人学习,语言和图像理解等领域。它的崛起是大数据、云计算和深度学习等技术的突破,虽说人工智能目前更多的是用机器人来模拟人的多种行为、计算能力,但将人工智能应用于更多领域已成为未来的一种趋势。
2.软件测试的概述和面临的挑战
2.1 软件测试的概述
        软件测试作为整个生命周期的一个重要环节,是对软件需求分析、设计以及编码的最终审查,具有相对的完整性、复杂性、特殊性和流程性。软件测试过程通常分为测试需求分析、测试计划、测试设计、测试开发、测试执行和测试评估几个阶段[2]。通过对各阶段的规格说明、测试需求进行剖析,将每个测试需求细化为测试点,再针对每个测试点设计一个或多个测试用例。通过设计测试用例,能够帮助我们理清测试思路,避免遗漏功能点,指导测试人员执行测试和跟踪测试进度,同时便于测试人员后期开展回归测试。此外,通过测试积累极大地提高测试工作效率。
        传统软件测试多为手工测试,是通过人来执行测试用例的编写、执行、分析等内容工作,过程中会存在很多弊端。随着软件技术的逐渐发展,自动化测试工具可以辅助人来完成上述的测试流程。但自动化测试仍停留在辅助测试阶段,无法独立的完成整项测试工作。因此我们将目光转向人工智能,让软件测试更好的朝自动化、智能化方向发展。
2.2 软件测试面临的挑战
(1)项目设计文档不全、对用户需求描述不明确,难以形成明确的测试点,导致软件测试不充分,系统不停地暴露问题;测试人员对系统的应用环境,产品要实现的业务功能和操作使用不熟悉,直接去测试,会遗漏测试点;测试用例耗时较长,当测试项目周期较短时,测试用例设计不充分,带来测试风险;
(2)测试技术滞后,自动化测试工具较少,自动化测试覆盖率较低,大部分仍使用人工测试,测试效率、测试性能较低;
(3)产品的运行场景、功能高度逐渐复杂,远远超过传统软件所面临的问题,增加了测试难度;
3.国内外人工智能在软件测试的研究概况
        2016年8月,king采用人工智能测试Candy Crush Saga(糖果大战)手机游戏,通过Monte Carlo 树搜索算法、自动启发式构建算法和神经元演化算法来训练bots,模拟人类计算、交互能力,来完成对Candy Crush Saga 的测试工作。
        2016年9月,APPdiff 公司创造出测试机器人,模拟人类的洞察力,具备学习能力,测试的APP程序越多,测试机器人就会变得越聪明,采用人工智能处理测试输入,提高测试效率,能够对APP应用进行全面的性能测试。


        2017年10月,由伦敦大学研发了一款Sapienz 的工具,采用一种进化算法根据软件的反应做出判断,能够自动识别出安卓软件的漏洞[3]。
        阿里集团采用机器学习研发了AI程序(Ripper),能够模拟人的行为,具备场景判断能力、自主决策能力,也可以自主复现bug,具有较高的测试能力。
4.人工智能应用于软件测试的意义
        近年来,人们采用如粒子群算法(Particle swarm optimization,PSO)、遗传算法(Genetic algorithm,GA)、蚁群算法(Ant colony algorithm,ACO)、萤火虫算法(Firefly algorithm)等智能方法应用于自动生成测试用例中,受到了越来越多研究者的关注。随着软件技术不断发展,人工智能算法应用于软件测试方向逐渐形成一个新的学科-基于搜索的软件测试[4]。由此可见,人工智能应用于软件测试具有很好的发展前景,如图1是AI测试工具实现过程,很好的改善了软件测试所面临的种种挑战。
        
        图1   AI测试工具实现过程
        下面对AI测试工具实现过程进行简述:
        测试用例是软件测试过程中非常重要的环节,并将前沿的人工智能技术(机器学习、启发式智能搜索算法)应用到代码测试中的测试用例生成问题中,改善了测试效率。AI测试工具利用机器学习中的神经网络来预测测试用例生成的时间,首先确定与代码度量等影响测试用例生成的相关指标,通过自动化测试工具对相关指标进行统计,提供大量的输入、输出数据生成数据集进行训练,进一步确认了模型的参数,该策略帮助测试人员提前了解测试进度,预测了测试时间;其次利用强化学习的技术,模拟人类利用经验进行决策的能力来指导测试用例自动生成;最后运用人工智能算法对测试用例生成框架进行改善,通过算法中的控制参数提高种群多样性,避免种群陷入局部最优的情况,全面的覆盖路径的方法提高了测试用例生成的效率。                         
        人工智能对自动化测试进行全面升级,通过深度学习,实现自动化测试、执行测试、测试结果分析,使用AI测试工具完成重复性的测试工作,提升自动化测试效率。另外AI测试工具可以一边测试一边新增输入数据,并能持续跟踪软件开发过程,为开发人员修改bug提供更为有效的信息。AI测试工具可以模拟人类的视觉,感知UI控件,可以模拟人类的思考,识别运行场景,高速的计算能力,减小工作负荷,提高测试效率。
        AI测试工具利用机器学习的技术使全面覆盖路径的测试用例自动生成,通过深度学习将自动化测试全面升级,由AI构建、执行大量的测试用例,并持续跟踪,记录、分析测试结果,同时可提前预测测试时间,保证了项目在整个生命周期中的质量,使软件测试更加可靠。
5.总结
        随着信息技术的不断发展,软件系统在通信、交通、金融、工业等各个领域得到了广泛地应用,高效的软件测试成为目前工作的重中之重。通过对人工智能应用于软件测试以及AI测试工具的实现过程的论述,可知人工智能应用于软件测试的研究具有重大的意义。人工智能是一场革命,随着人工智能在软件测试中应用的不断深入,我们将会面临技术的薄弱、应用范围的限制、测试成本较高等众多挑战,但随着人工智能技术的发展,软件测试智能化不会太遥远。
参考文献:
[1]任子恒.李昕昕.龚勋.人工智能在软件测试上的应用与挑战[J].电脑知识与技术,2018,14(29):218-219.
[2]王今朝.杜以团.做好软件测试的要点探讨[J].电子质量,2018(05):42-44.
[3]颜媚.段虎才.郭琛.AI在软件测试领域中的应用与发展[J].信息通信技术与政策,2018(10):65-70.
[4]翁晴晴.应用自适应差分进化算法优化软件测试数据的研究[D].安徽大学,2018.
投稿 打印文章 转寄朋友 留言编辑 收藏文章
  期刊推荐
1/1
转寄给朋友
朋友的昵称:
朋友的邮件地址:
您的昵称:
您的邮件地址:
邮件主题:
推荐理由:

写信给编辑
标题:
内容:
您的昵称:
您的邮件地址: