人工智能在软件测试上的应用与挑战
2018-01-04任子恒李昕昕龚勋
任子恒 李昕昕 龚勋
摘要:针对人工智能的应用于特点做出分析。认为人工智能有着非常强大的功能以及良好的发展趋势,并在此基础上展开对人工智能在软件测试领域应用的讨论。主要涉及了人工智能在软件测试上应用的方法以及特点与优点,并探讨了目前人工智能在软件测试领域所存在的问题与挑战。预测人工智能在软件测试应用上的发展趋势。
关键词: 人工智能;游戏测试;性能测试;兼容性测试;专家系统
中图分类号:TP18 文献标识码:A 文章编号:1009-3044(2018)29-0218-02
1引言
人工智能作为当下最热门的新型前沿性技术科学,被广泛的应用于各个行业。从众所周知的AlphaGo,到我们的各种移动智能终端,人工智能的应用无处不在。软件测试作为软件工程质量保证的一个重要环节,从最初的手工测试到自动化测试再到云测试,其智能化的脚步也越来越快。本文将针对人工智能在软件测试领域的应用现状、前景以及面临的挑战进行分析,并给出合理的建议。
2人工智 能与软件测试
2.1 人工智能简述
人工智能是计算机学科的一个分支,是一门正在发展中的综合性的前沿学科,它是研究人类智能活动的规律,并用于模拟、延伸和扩展人类智能的一门新的技术科学,是在计算机、控制论、信息论、数学、心理学等多种学科相互综合、相互渗透的基础上发展 起来的一门新兴边缘学科[1]。目前,人工智能被实际应用于计算、设计、医疗、安全等多个领域,可以出色的完成各种复杂的单一任务。上述应用我们称之为弱人工智能。
2.2软件测试简述
软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终审查, 是软件质量保证的关键步骤。 如果给软件测试下定义,可以这样讲:软件测试是为了发 现错误而执行程序的过程。 或者说,软件测试是根据软件开 发各阶段的规格说明和程序的内部结构而精心设计一批测 试用例(即输入数据和预期的结果),并利用这些测试用例去 运行程序,以发现错误的过程[2,3]。通过需求分析与系统的功能实现,由人或者机器来编写出特定的测试用例,以此为输入数据,执行被测程序检查的过程。传统软件测试通常是由人来执行测试用例的编写、执行、分析等各项工作,称之为手工测试。随着技术的发展,越来越多的自动化测试工具可以更好的辅助人来完成上述工作。因此我们将利用自动化测试工具进行测试的过程称之为自动化测试。但是现阶段的自动化测试仍停留在辅助测试阶段,无法独立的完成某一完整的测试流程。因此我们希望引入人工智能帮助软件测试更好的实现自动化、智能化。
2.3人工智能在软件测试中的运用
在软件测试整个过程中,测试用例起着决定性的作用。在以是为了发现错误进而执行程序的软件测试中,测试用例的编写是能否发现程序漏洞或错误的关键。在以各种自动化测试工具蓬勃发展的今天,除了简单的数据测试能够靠电脑自动生成来完成,复杂测试用例的编写仍旧由人作为主导。而自动化测试工具只能实现自动的将人所编写的测试用例输出来执行程序并得出执行结果。作为人工智能在软件测试中的应用,其目的便是代替人来编写出更多的有效的测试用例,从而发现程序中的错误。基于此,我们希望通过运用机器学习的理论,由测试人员提供大量的输入和输出数据来训练AI,最终由AI学会根据特定需求去自动生成测试用例、执行测试,并对测试结果进行分析。这将大大减少人工测试工作量,大幅提高工作效率。
目前人工智能已经在软件测试的某些特定领域有了实际应用,比如游戏测试、性能能测试、兼容性测试等。
2.3.1人工智能在游戏领域的应用
人工智能在游戏测试中,通常用于各种游戏分支情况的测试以及游戏数据的收集。例如,通过AI去创建不同的游戏角色,执行不同的分支操作,来检测游戏功能的正确性。这样不仅可以大大减少测试人员对于游戏测试大量而重复的工作量,而且能够做到在同一时间建立多个AI来进行多个角色的活动,从而能够实现多人游戏的游戏测试,大大节约了成本。根据深度学习的理论,应用了AI的游戏测试还可以利用AI在测试过程中不断收集数据反复学习、更新,达到自我修正的目的。最终可以使游戏具有更完善的功能和更稳定的效果。
2.3.2人工智能在大型工程中的应用
除了常规的软件测试以外,人工智能还可以应用于大型工程项目的测试中。通过计算机庞大的计算能力以及精确性的特质,能够大大的提高工程质量,从而减少以人为主导所编写的测试用例的失误与不精确性。例如在航天工程中,运用专家系统,来使AI具备大量的航天领域专家水平的知识与经验,从而使AI模拟航空专家来进行测试用例的编写。避免因为测试人员专业知识不熟练所導致的各种问题。
2.3.3人工智能在性能测试方面的应用
软件的性能包括很多内容,如软件对用户操作的响应时间、软件长时间连续运行的稳定性、软件最多支持的并发用户数、系统最大的业务处理量等。软件性能受运行环境、业务情况、用户使用情况等多种因素的影响。软件性能测试主要是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来确定系统的各项性能指标而进行的一种测试[4]。以移动应用性能为例,任何一款线上的移动应用,如果出现了性能问题,例如应用使用过程中的黑屏、闪退、无响应、耗电等,都会导致大量的负面反馈,从而影响用户的使用体验,给厂家造成严重的损伤。
从性能测试的原理来看,任意一种性能测试,其实现原理均包括如下几点:
1) 用户行为模拟;
2) 性能指标监控;
3) 性能调优。
从上述几点我们不难看出,由于性能测试通常是大数据量的反复、长期测试,在人工审查方面,难免会出现错误。结合人工智能的图像识别与AI训练技术能够更好的监控和记录的测试过程中的数据、表格及图像,并且能够快速的分析软件中所存在的性能问题以及程序缺陷。因此目前人工智能已经在性能测试方面有了较多应用,如腾讯的UPA(Unity Performance Analysis),就是一运用人工智能中图像识别技术以及深度学习技术的性能优化工具。
2.3.4人工智能在兼容性方面的应用
软件兼容性测试主要是不同操作系统、不同数据库和不同浏览器环境测试软件兼容性。由于需要大量的不同类型的软硬件环境,有关兼容性测试的实现往往依赖于相关的专业测试工具和云计算技术。以云计算技术下的云测试为例。兼容性测试是指利用云计算平台的多种操作系统、多种数据库和多种浏览器环境测试软件兼容性[5]。与性能测试中人工智能的应用大抵相同,相对于简单且需要在不同环境下执行的相同的测试用例的编写,人工智能更适合应用于更加复杂的测试过程监控以及结果分析上。例如通过计算机视觉和图像处理,能够实时的监控软件在各个测试环境下的运行情况,并且能够及时的进行反馈。通过2D识别引擎,如人像识别,文字识别,图像识别等能够快速而准确的分离和筛选出不符合测试目的的测试环境,从而更好的完成兼容性的测试。
2.4 人工智能在软件测试运用上的挑战
伴随人工智能在软件测试应用上的研究的深入,研究人员们也面临着诸多挑战。
1) 智能技术的挑战:
要做到用人工智能完全替代人来进行软件测试,就需要人工智能具备强人工智能的基础。而这一点在人工智能领域尚未解决。
2) 应用范围的局限:
由于现阶段人工智能在软件测试领域的应用较为单一,因此无法将人工智能大范围应用于软件测试的各个领域。
3) 测试成本的限制:
由于人工智能的应用成本较高,很难被众多测试厂商接受。
综上所述,我们发现纯智能测试在测试效率、测试数据分析以及测试成本等方面,相较于人工测试和混合测试的优势还不明显。
3结语
随着测试技术的不断发展,人工智能已经在软件测试领域得以应用。例如能够自动生成测试用例的系统bot。但是,要完全利用人工智来完成软件测试却还面临诸多问题与挑战。作者认为这将是以后很长一段时间软件测试的研究热点。
参考文献:
[1] 马少平,朱小燕.人工智能[M].北京:清华大学出版社,2004.
[2] [美]Jeffrey Richter.Windows 95 Windows NT3.5 高級编程技术[M]. 郑全战,阿夏,译.清华大学出版社,1998 年 2 月.
[3] 郑人杰,殷人昆,陶永雷.实用软件工程[M].2 版.清华大学出版社,1997.
[4] 韩明军.软件性能测试过程[J].信息技术与标准化,2007(11):41-43.
[5] 王伟军,姜毅,刘蕤,等.云计算环境下软件测试研究进展[J].现代图书情报技术,2012(11):3-9.
【通联编辑:唐一东】