软件所在大模型驱动的自动化测试方面取得系列进展

文章来源:  |  发布时间:2024-01-18  |  【打印】 【关闭

  

软件所智能博弈重点实验室智能化软件测试团队,聚焦大模型驱动的软件测试技术,解决了现实场景中复杂软件的测试序列生成、测试用例生成和缺陷复现的系列关键难题,多篇研究成果被软件工程领域CCF-A会议ICSE 2024录用。

论文Make LLM a Testing Expert: Bringing Human-like Interaction to Mobile GUI Testing via Functionality-aware Decisions,第一作者为特别研究助理刘哲,通讯作者为王青研究员和王俊杰研究员。论文针对移动应用复杂业务逻辑导致的自动化测试方法存在覆盖率低、泛化能力差等问题,利用功能感知决策的方式,模拟与测试专家交互的过程生成满足业务逻辑的测试路径。

团队设计实现了GPTDroid,通过将GUI页面信息传递给LLM来引发测试脚本并依次执行,不断将应用程序测试过程中的反馈传递给LLM,从而实现LLM与移动应用程序交互。在这个框架内,团队还引入了一种功能感知的记忆提示机制,使LLM能够保留整个过程的测试知识,并进行长期的基于功能的推理来指导探索。

项目团队在Google Play的93个应用程序上对GPTDroid进行了评估,并证明它的活动覆盖率比最佳基线高出32%,并以更快的速度检测到31%的缺陷。此外,GPTDroid在Google Play上发现了53个全新缺陷,其中35个已被确认并修复。

  


论文Testing the Limits: Unusual Text Inputs Generation for Mobile App Crash Detection with Large Language Model,第一作者为特别研究助理刘哲,通讯作者为王青研究员和王俊杰研究员。文本输入作为用户和应用程序之间的重要交互渠道,在搜索查询、身份验证、消息传递等核心功能中发挥着重要作用。而某些特殊的文本可能会导致应用程序崩溃,因此需要生成多样化的异常输入来全面测试应用程序。

团队提出了InputBlaster,结合LLM自动生成用于移动应用程序崩溃检测的异常文本输入。InputBlaster将异常输入生成问题转化为生成一组测试生成器的任务,每个测试生成器可以在相同的突变规则下生成一批异常文本输入。InputBlaster利用LLM与作为推理链的突变规则一起生成测试生成器,并利用上下文中的学习模式通过示例来演示LLM,以提高性能。

InputBlaster在31个流行应用程序的36个存在缺陷的文本输入组件上进行了评估。结果显示,InputBlaster达到了78%的错误检测率,比最佳基线高出136%。此外,团队也将其与流行的自动化测试工具进行集成,并从Google Play中检测到流行App的37个全新的崩溃缺陷。


论文CrashTranslator: Automatically Reproducing Mobile Application Crashes Directly from Stack Trace,第一作者为博士生黄芋超,通讯作者为王青研究员和王俊杰研究员。论文针对应用程序崩溃复现问题,提出了一种基于大型语言模型和强化学习的自动化方法,可以根据崩溃的堆栈跟踪来自动复现移动应用程序的崩溃。

研究团队发现有相当一部分崩溃报告只包含了堆栈跟踪。这些仅有堆栈跟踪的崩溃只揭示了崩溃发生时的最后一个页面,缺乏逐步的复现步骤。团队针对崩溃的堆栈跟踪,设计出了一种名为CrashTranslator的自动复现方法,它利用预训练的大型语言模型来预测触发崩溃的探索步骤,并设计了一种基于强化学习的技术来提供应用探索的全局引导和减少不准确的预测结果。

研究团队在涉及58个热门Android应用的75个崩溃报告上评估了CrashTranslator。它成功复现了61.3%的崩溃,性能超过了最先进的基准线。