AI技术在软件测试领域的应用比软件开发早。早在上个世纪七、八十年代,软件测试就开始应用采用遗传算法生成测试数据,到九十年代,其研究和应用逐渐增多,从单元测试、接口测试到GUI的系统测试, 提供自动化的测试用例生成、自动化的测试执行和评估等功能,取得了不少成功的实例,帮助研发团队节省了大量时间和成本,提高了测试的质量和可靠性。
1. 单元测试中的应用AI
:
AI技术可以帮助自动生成单元测试用例。通过使用机器学习和符号执行等技术,AI算法可以分析代码和程序的结构、逻辑,AI算法可以自动识别潜在的边界条件、异常情况和路径覆盖需求,并生成相应的测试用例自动生成覆盖率较高的单元测试用例,从而提高单元测试的效率和准确性。例如
智能测试工具evoSuite就是其中的一个代表,国内也有公司推出智能单元测试工具:smartUnit。
除了开源的evoSuite
,
Microsoft开发了一个名为SAGE的自动化测试工具,它使用了AI技术来生成和执行单元测试用例。SAGE能够自动分析代码和执行路径,生成具有高覆盖率的测试用例,并发现潜在的错误和异常。
大模型推出之后,AI赋能单元测试,其能力有了明显的提升,根据实验评测结果:
ChatGPT 生成测试的覆盖率与人工编写的测试相接近,并高于现有的测试生成技术;而且ChatGPT 生成的测试具有良好的可读性,与人工编写的测试相比具有相近的可读性水平
(详见论文:
No More Manual Tests? Evaluating and Improving ChatGPT for Unit Test Generation
)。但受Test Oracle制约,其生成脚本在执行时容易出错,主要由于ChatGPT生成的错误断言语句导致的。加上人工检查,容易修正断言的问题。
2.
接口测试中应用AI
,我们可以通过使用机器学习和模型驱动测试等技术,AI算法可以分析系统的结构和接口,自动生成集成测试用例,并自动执行和评估测试结果,从而提高集成测试的效率和覆盖率。也可以借助NLP技术,分析接口测试文档,从而生成接口测试数据,从而高效、全自动地完成接口测试。
3. GUI系统测试中的应用AI
:通过使用图像识别和自然语言处理等技术,AI算法可以自动分析和识别GUI界面的元素和操作,自动生成测试用例,并自动执行和评估测试结果,从而提高GUI系统测试的效率和准确性。
之前,
智能模糊测试工具也具有代表性
,如Facebook(Meta)的Sapienz就是基于搜索的“遗传算法”(GA)来实现的,只是指导GA算法进化的适度函数(fitness function)非常复杂:有多个目标,由“帕累托最优”(Pareto optimality)交织在一起,每一次成功的进化都必须实现这些目标,效果不错,但不能用在功能测试上,而是稳定性测试上。
之后,
深度学习和强化学习技术在GUI测试中的应用得到了广泛关注
,我们可以使用深度学习模型来分析GUI界面的特征和行为,生成测试用例,检测异常和错误,并优化测试过程;我们使用强化学习算法来学习最佳的用户交互策略,从而自动生成各种用户交互和操作序列,以测试GUI应用程序的各种功能和用户体验,以最大化测试的效果和覆盖率。例如
-
DeepRoad: GAN-based Metamorphic Autonomous Driving System Testing
:https://arxiv.org/pdf/1802.02295.pdf(by Huang, W., Zhang, B., Li, Z., & Zeng, H. 2020):这篇论文介绍了一种基于深度学习的自动化测试方法,用于测试自动驾驶汽车的控制逻辑。它使用深度学习模型和随机最优控制方法来生成测试用例,并通过探索不同的驾驶场景和行为来测试自动驾驶汽车的控制逻辑的性能和安全性。
-
Deep Reinforcement Learning for Black-Box Testing of Android Apps
:https://arxiv.org/pdf/2101.02636.pdf
-
DeepTest: Automated Testing of Deep-Neural-Network-driven Autonomous Cars
:https://arxiv.org/pdf/1708.08559.pdf(by Tian, Y., Pei, K., Jana, S., & Ray, B. 2018): 这篇论文介绍了一种基于深度学习的自动化测试方法,用于测试自动驾驶汽车中的深度神经网络。它使用深度学习模型来生成测试用例,并通过探索自动驾驶汽车的各种驾驶场景和行为来测试深度神经网络的性能和安全性
-
DeepXplore: Automated Whitebox Testing of Deep Learning Systems
:https://arxiv.org/pdf/1705.06640.pdf (by Pei, K., Cao, Y., Yang, J., & Jana, S. 2017):这篇论文提出了一种基于深度学习的白盒测试方法,用于测试深度学习系统。它使用深度学习模型来自动生成测试用例,并通过探索神经网络的边界和错误行为来找出可能的漏洞和错误。
大模型发布之后,软件测试的智能化明显得到提升,想象空间迅速扩大。
例如,我自己亲自尝试用GPT完成验收标准、测试用例生成等工作。
这样例子很多,最近,我看到一篇论文(
Fill in the Blank- Context-aware Automated Text Input Generation for Mobile GUI Testing
),是由中科院软件所研究团队写的,他们借助GPT进行Android的功能测试,开发了基于大模型的测试工具GPTDroid,在这216个应用程序中,发现了135个漏洞,涉及115个应用程序。其中,48个漏洞涉及39个应用程序是新发现的。令人更为关注的是,这些新的漏洞并未被之前的静态分析工具所发现。这48个漏洞提交给开发人员,他们已修复了其中的31个,确认存在的有17个,但没有一个被拒绝。这进一步证明GPT的能力是最强的。
最后:
下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取
【保证100%免费】
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
从单元测试、接口测试到GUI的系统测试, 提供自动化的测试用例生成、自动化的测试执行和评估等功能,取得了不少成功的实例,帮助研发团队节省了大量时间和成本,提高了测试的质量和可靠性。
过去两周,国内ChatGPT概念股很疯狂,不只是百度、讯飞,有些默默无闻且业绩亏损的公司股价大涨,有1-2个公司连续7个涨停板,不可思议!
上周,因为微软Bing发布新版,ChatGPT热度大增。世界不断被ChatGPT及其应用所震惊,每天都有很多人在他们各自的行业发布ChatGPT的应用程序,从营销、文案、销售、运营等等。
当我们考虑将ChatGPT用于
软件测试
时,大家的意见很不一样。
我们并不怀疑它对
软件测试
社区的好处,同时,我们也意识到盲目接受像ChatGPT这样机器人的每一个输出,也
会
相当危险。在最乐观的情况下,它是一个很好的启发式工具,虽然从本质上看,启发式不是基于规则的逻辑推理来输出结果,其结果是不可靠的。由于ChatGPT的输出严重依赖于提示(prompts),它在很大程度上依赖于
软件测试
人员给出提示的技巧。
经过几天研究,并和其他专家交流,ChatGPT在
软件测试
中的应用,概括起来有七种不同方式。
1. 测试想法生成器
ChatGPT技术归为
AIGC
(人工智能产生内容),所以我们首先想到 ChatGPT在我们的提示下,生成我们需要的测试想法,帮助我们扩展或优化测试思
自动化测试
技术从最初的模拟硬件方式,到基于数据驱动,基于关键字驱动,再到现在基于功能和指令驱动的
自动化测试
技术,在各类软件项目中的应用也越来越多,越来越成熟。
自动化测试
技术有良好的可重复性,高并发和高效率的特点,为各类测试项目中显著的提高了测试效率,将测试人员从繁琐的执行中解放了出来;但是在实施
自动化测试
过程中,往往测试准备,测试复测,结果分析和案例维护等方面需要耗费大量的时间和资源。
随着...
AIGC
(Artificial Intelligence in Global Community)是一种集人工智能、大数据、云计算、区块链等技术于一体的
智能化
服务平台,其在智能办公中的应用主要
体现
在以下几个方面:
1. 自动化流程:
AIGC
可以通过人工智能技术实现自动化流程,比如自动化审批、自动化报销等,提高了工作效率,减少了人工操作的错误率。
2. 语音识别与自然语言处理:
AIGC
可以通过语音识别和自然语言处理技术,实现智能语音交互,比如通过语音命令来控制智能家居、智能音箱等设备,或者通过语音输入来完成工作文档的编辑,提高了工作效率和用户体验。
3. 数据分析与智能决策:
AIGC
可以通过大数据技术收集、分析和挖掘数据,帮助企业做出更加准确的决策,比如通过数据分析来优化营销策略、提高产品质量等。
总的来说,
AIGC
在智能办公中的应用可以帮助企业实现自动化流程、
智能化
决策和人机交互,提高工作效率和用户体验。