AIGC时代软件测试智能化到底会怎样?

电子说

1.2w人已加入

描述

AI技术在软件测试领域的应用比软件开发早。早在上个世纪七、八十年代,软件测试就开始应用采用遗传算法生成测试数据,到九十年代,其研究和应用逐渐增多,从单元测试、接口测试到GUI的系统测试, 提供自动化的测试用例生成、自动化的测试执行和评估等功能,取得了不少成功的实例,帮助研发团队节省了大量时间和成本,提高了测试的质量和可靠性。  

1. 单元测试中的应用AIAI技术可以帮助自动生成单元测试用例。通过使用机器学习和符号执行等技术,AI算法可以分析代码和程序的结构、逻辑,AI算法可以自动识别潜在的边界条件、异常情况和路径覆盖需求,并生成相应的测试用例自动生成覆盖率较高的单元测试用例,从而提高单元测试的效率和准确性。例如智能测试工具evoSuite就是其中的一个代表,国内也有公司推出智能单元测试工具:smartUnit。

ChatGPT

除了开源的evoSuiteMicrosoft开发了一个名为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)交织在一起,每一次成功的进化都必须实现这些目标,效果不错,但不能用在功能测试上,而是稳定性测试上。

ChatGPT

 之后,深度学习和强化学习技术在GUI测试中的应用得到了广泛关注,我们可以使用深度学习模型来分析GUI界面的特征和行为,生成测试用例,检测异常和错误,并优化测试过程;我们使用强化学习算法来学习最佳的用户交互策略,从而自动生成各种用户交互和操作序列,以测试GUI应用程序的各种功能和用户体验,以最大化测试的效果和覆盖率。

大模型发布之后,软件测试的智能化明显得到提升,想象空间迅速扩大。

例如,我自己亲自尝试用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的能力是最强的。  

ChatGPT

ChatGPT

 




审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分