Using Automatic Refactoring to Improve Energy Efficiency of Android Apps
移动电话的日益普及给软件开发生命周期带来了额外的挑战。移动应用程序(简称app)应该提供与传统软件相同的功能集,但资源有限:例如有限的处理能力、存储、屏幕以及同样重要的电源。虽然能源效率是一个有价值的要求,但开发人员往往缺乏最佳实践的知识。在本文中,我们研究自动重构是否可以帮助开发人员发布节能应用程序。我们利用一个工具,Leafactor,有五种能源代码气味,往往会被忽视。我们使用Leafactor分析了140个免费和开源应用程序中的代码气味。因此,我们在45个应用程序中检测并修复了代码气味,其中40%已成功将我们的更改合并到官方存储库中。
2018-03-15 cs.SE
DinoDroid: Testing Android Apps Using Deep Q-Networks
对移动设备的大量需求引起了对移动应用程序(app)质量的重大关注。开发人员需要在向市场发布之前保证移动应用程序的质量。有许多方法使用不同的策略来测试移动应用程序的GUI。然而,由于其有限的有效性,它们仍然需要改进。在本文中,我们提出了DinoDroid,这是一种基于深度Q网络的方法,可以自动测试Android应用程序。DinoDroid从一组现有的应用程序中学习行为模型,学习的模型可用于探索和生成新应用程序的测试。DinoDroid能够捕获GUI事件的细粒度细节(例如,GUI小部件的内容),并将其用作输入深度神经网络的特征,深度神经网络充当引导应用探索的代理。DinoDroid在探索过程中自动适应学习的模型,而不需要任何建模策略或预定义的规则。我们对64个开源Android应用程序进行了实验。测试结果表明,DinoDroid在代码覆盖率和bug检测方面优于现有的Android测试工具。
2022-10-12 cs.SE
Generating Predicate Callback Summaries for the Android Framework
分析、测试和调试Android应用程序的挑战之一是应用程序的源代码中缺少回调的潜在执行顺序。然而,已经发现错误、漏洞和重构转换与回调序列有关。Android应用程序控制流分析的现有工作主要集中在分析GUI事件。GUI事件虽然是确定Android应用程序控制流的关键部分,但并不能提供完整的画面。我们的观察是,与GUI事件正交,Android API调用在确定回调顺序方面也起着重要作用。在过去,这种控制流信息是手动建模的。本文提出了一种为Android应用构建程序路径的补充解决方案。我们提出了一种称为Predicate Callback Summary(PCS)的规范技术,用于表示Android API方法中的回调控制流信息(包括回调序列以及调用回调的条件),并开发了静态分析技术来自动计算和应用此类摘要以构建应用程序的回调序列。我们的实验表明,通过应用PCS,我们能够构建Android应用程序的控制流图,包括回调之间的关系,并检测涉及多个回调的不可行路径。这样的控制流信息可以帮助程序分析和测试工具报告更精确的结果。我们的详细实验数据可在以下网址获得:http://goo.gl/NBPrKs
2017-03-29 cs.SE
Mining Android App Usages for Generating Actionable GUI-based Execution Scenarios
从Android应用执行跟踪、事件或源代码中提取的基于GUI的模型对于生成场景或测试用例等具有挑战性的任务非常有用。然而,提取有效的模型可能是一个昂贵的过程。此外,现有的方法,用于自动派生基于GUI的模型是不能够生成的情况下,包括未观察到的执行(或事件)的痕迹的事件。在本文中,我们解决了这些和其他主要挑战,在我们的新的混合方法,被称为MonkeyLab。我们的方法基于记录-挖掘-生成-分析框架,该框架依赖于记录产生执行(事件)跟踪的应用程序使用情况,挖掘这些事件跟踪并使用统计语言建模、静态和动态分析生成执行场景,并使用应用程序在真实设备上的交互式执行来验证生成的场景。该框架旨在挖掘能够生成可行且完全可重播的模型(即,可操作的)场景反映自然用户行为或不常见的使用(例如,我们在一个案例研究中评估了MONKEYLAB,该案例研究涉及几个大中型开源Android应用程序。我们的研究结果表明,MonkeyLab能够挖掘基于GUI的模型,这些模型可用于为Google Nexus 7平板电脑上的自然和非自然事件序列生成可操作的执行场景。
2018-01-19 cs.SE
Guigle: A GUI Search Engine for Android Apps
开发移动应用程序的过程通常始于对其用户界面的构思和概念化。这个概念然后被转换成一组模型,以帮助确定用户界面如何体现应用程序的预期功能。创建模型后,开发人员然后将其转换成在移动终端上运行的应用程序。在本文中,我们提出了一种称为GUIGLE的方法,旨在通过GUI搜索来促进应用程序的用户界面的概念化过程。GUIGLE对从Google Play中提取的大型应用语料库进行自动动态分析,并对提取的GUI图像和元数据进行索引。为了执行搜索,我们的方法使用来自屏幕上显示的文本、用户界面组件、应用程序名称和屏幕调色板的信息来检索给定查询的相关屏幕。此外,我们提供了一个轻量级的查询语言,允许直观的搜索屏幕。我们与真实用户一起评估了GUIGLE,发现平均68.8%的返回屏幕与指定的查询相关。此外,用户发现GUIGLE的各种不同功能很有用,这表明我们的搜索引擎提供了直观的用户体验。最后,用户同意GUIGLE提供的信息在概念化应用程序的新屏幕设计方面是有用的。
2019-01-03 cs.SE
SO{U}RCERER: Developer-Driven Security Testing Framework for Android Apps
对于应用程序开发人员来说,经常建议的安全开发建议在实践中往往不足。工具驱动(例如,使用静态分析工具)方法缺乏被测试的应用程序的上下文和特定于域的要求。应用程序开发人员很难从静态分析工具报告的一系列安全警告中找到一个可操作的优先级漏洞列表。流程驱动(例如,应用威胁建模方法)方法需要大量资源(例如,安全测试团队,预算)和安全专业知识,这是中小型应用程序开发团队几乎负担不起的。为了帮助应用程序开发人员保护他们的应用程序,我们提出了SO{U}RCERER,这是一个针对Android应用程序开发人员的安全测试指导框架。SO{U} RCEER指导开发人员识别应用程序的特定于域的资产,检测漏洞并对其进行优先级排序,并根据安全开发指南缓解这些漏洞。我们通过分析和测试36个Android移动货币应用程序的案例研究来评估SO{U}RCERER。我们发现,通过遵循SO{U} RCEER指导的活动,应用程序开发人员可以获得一个简洁且可操作的漏洞列表(SO{U} RCEER产生的安全警告比独立的静态分析器少24-61%),直接影响移动货币应用程序的关键资产,并制定缓解计划。我们的初步研究结果表明,Android应用程序安全测试的可行方法对应用程序开发人员来说并不复杂。
2021-11-03 cs.SE
AndroidDaily: A Verifiable Benchmark for Mobile GUI Agents on Real-World Closed-Source Applications
Beijing University of Posts and Telecommunications(北京邮电大学);StepFun;Waseda University(早稻田大学)
针对闭源应用无法获取内部状态导致自动验证困难的问题,提出AndroidDaily基准(350个日常任务)和GRADE评估器(基于可观察外部指南的三层系统),实现无需内部状态的可验证评估,最强模型成功率为62.0%。
2026-05-26 cs.CV cs.SE
Contract Usage and Evolution in Android Mobile Applications
本文首次对Android应用中契约的使用与演化进行大规模实证研究,分析2,390个F-Droid应用,揭示契约采用率低、注解方式最流行、方法增长快于契约增长以及规范稳定性不足等问题,并提出标准化库与检测工具的建议。
2024-01-25 cs.LO cs.PL cs.SE
Pairwise GUI Dataset Construction Between Android Phones and Tablets
Monash University(莫纳什大学)
针对手机与平板间无成对GUI数据集、制约深度学习用于自动化GUI开发的问题,本文提出首个安卓跨端成对GUI数据集Papt及配套采集方法,并通过实验分析了相关技术挑战。
2023-11-05 cs.AI cs.HC cs.SE
Test Reuse Based on Adaptive Semantic Matching across Android Mobile Applications
自动测试生成可以帮助验证和开发移动应用程序的行为。基于相同类别的应用程序之间的语义相似性的测试重用已被用于减少图形用户界面(GUI)测试的手动工作。然而,现有的研究大多未能解决事件匹配的语义问题,导致测试复用的失败。为了克服这一挑战,我们提出了TRASM(基于自适应语义匹配的测试重用),一种基于自适应策略的测试重用方法,可以在Android移动应用程序中找到更好的事件匹配。TRASM首先对测试生成得到的初始测试集进行GUI事件去重,然后采用自适应策略寻找更好的事件匹配,从而实现对已有测试的重用。在15个应用程序上与基线方法进行了初步的实验比较,结果表明,TRASM可以提高GUI事件匹配的精度,同时减少测试重用的失败和测试重用所需的运行时间。
2023-01-02 cs.SE
Columbus: Android App Testing Through Systematic Callback Exploration
随着Android移动设备的不断普及,应用程序的自动化测试变得比以往任何时候都更加重要。Android应用程序是事件驱动的程序。不幸的是,通过与应用程序的界面交互来生成所有可能类型的事件对于自动化测试方法来说是一个挑战。回调驱动的测试通过直接调用应用回调消除了事件生成的需要。然而,现有的回调驱动测试技术假设Android回调的先验知识,并且它们依赖于熟悉Android API的人类专家来编写在调用之前准备回调参数的存根代码。由于Android API庞大且不断发展,现有技术只能支持Android框架中存在的一小部分回调。在这项工作中,我们介绍了Columbus,一种回调驱动的测试技术,它采用两种策略来消除对人类参与的需求:(i)它通过同时分析Android框架和测试中的应用程序来自动识别回调,以及(ii)它使用了一种组合,(原始参数)和类型引导的动态堆内省(对象参数)来生成有效的输入。最后,Columbus在测试过程中集成了两种新的反馈机制--数据依赖和崩溃指导,以增加触发崩溃的可能性,并最大限度地提高覆盖率。在我们的评估中,Columbus在崩溃和覆盖率方面都优于最先进的模型驱动、基于检查点和回调驱动的测试工具。
2023-02-17 cs.SE
RotDroid: Cross-Orientation State Equivalence Testing for Detecting GUI Rotation Bugs in Android Apps
Beihang University(北京航空航天大学)
RotDroid是一款检测Android应用GUI旋转漏洞的测试框架,通过生成SPS、构建RotBench数据集及开发RotVL模型,在相同预算下比现有技术检测到更多旋转故障,还发现94个未知漏洞且47个被确认修复。
2026-08-27 cs.AI cs.SE
NaviDroid: A Tool for Guiding Manual Android Testing via Hint Moves
作为自动GUI测试的补充,手动测试是应用质量的最后一道防线,特别是在发现可用性和可访问性问题方面。然而,重复的动作和容易丢失的一些功能,使手工测试耗时,劳动密集和效率低下。受糖果粉碎游戏的启发,我们开发了一个名为NaviDroid的工具,用于通过突出显示的下一个操作来导航人类测试人员,以实现更有效和高效的测试。在NaviDroid中,它构建了一个丰富的状态转换图(STG),其中触发器动作作为两个相关状态的边。NaviDroid在STG的基础上,利用动态规划算法规划探索路径,并在运行时GUI中增加可视化提示动作,使测试人员能够快速探索未测试的状态,避免重复。自动化实验证明了NaviDroid的高覆盖率和高效的路径规划。用户研究进一步证实了它的有用性,在参与者覆盖更多的状态和活动,检测更多的错误在更短的时间内与对照组相比。NaviDroid演示视频:https://youtu.be/lShFyg_nTA0。
2022-05-27 cs.SE
Target Directed Event Sequence Generation for Android Applications
测试是保证软件质量的常用方法,其中基于模型的测试是测试Android应用程序等GUI程序的热门话题。现有的方法主要是动态地构建一个只包含GUI信息的模型,或者从代码的角度构建一个模型,而这个模型可能无法描述GUI控件在运行时的变化。此外,这些模型中的大多数不支持回栈,这是Android的一种特殊机制。因此,本文提出了一个模型LATTE,动态构造考虑的视图信息的窗口部件以及回栈,来描述GUI窗口部件之间的过渡。我们还提出了一个标签集链接的LATTE模型的元素程序片段。用户可以定义标签集的一个子集作为测试需求的目标,这些测试需求需要覆盖代码的某些特定部分。为了避免模型构建过程中的状态爆炸问题,我们引入了状态相似度的定义来平衡模型的精度和分析成本。基于该模型,提出了一种目标导向测试生成方法,生成事件序列以有效覆盖目标。在几个真实应用上的实验表明,基于LATTE生成的测试用例可以达到较高的覆盖率,并且利用该模型可以生成覆盖给定目标的短事件序列的事件序列。
2017-08-23 cs.SE
Enhancing GUI Exploration Coverage of Android Apps with Deep Link-Integrated Monkey
本文提出深度链接增强的 Monkey 测试工具 Delm,通过触发 Android intent 模拟 Activity 上下文并引导探索过程跳出循环,从而显著提升 Activity 覆盖率、方法覆盖率和崩溃检测能力。
2024-04-30 cs.CR cs.SE
An Empirical Study for Android-to-OpenHarmony GUI Test Migration
Harbin Institute of Technology(哈尔滨工业大学);Beijing Institute of Technology(北京理工大学);Beihang University(北航);Peking University(北京大学)
研究从安卓到开源鸿蒙系统的图形用户界面测试迁移问题,构建数据集,选择并适配两种先进迁移方法进行评估,发现现有方法效果不佳,进而提出增强方法ITeM-HM,显著提升了测试迁移成功率。
2026-07-15 cs.AI cs.SE
Guided Bug Crush: Assist Manual GUI Testing of Android Apps via Hint Moves
移动应用程序是人们日常生活中不可或缺的。与自动化GUI测试相辅相成,手动测试是应用质量的最后一道防线。然而,重复的操作和容易丢失的功能使得手动测试耗时且效率低下。受糖果粉碎游戏的启发,华丽的糖果作为玩家的提示动作,我们提出了一种名为NaviDroid的方法,通过突出显示的下一个操作,更有效和高效的测试导航测试。在NaviDroid中,我们构建了一个丰富的状态转换图,其中触发动作作为两个相关状态的边缘。在此基础上,利用动态规划算法规划探索路径,并在GUI中增加可视化提示,使测试人员能够快速探索未测试的活动,避免重复探索。自动化实验证明了NaviDroid的高覆盖率和高效的路径规划,用户研究进一步证实了其实用性。NaviDroid可以帮助我们开发更强大的软件,在更关键的任务设置中工作,不仅通过执行更彻底的测试,而且通过将这些技术集成到开发管道的不同部分。
2022-01-28 cs.HC cs.SE
A3: Assisting Android API Migrations Using Code Examples
Android API的快速发展给Android应用开发人员带来了挑战。为了利用Android频繁发布的API,开发人员必须经常在API迁移上花费大量精力。之前的研究和Android官方文档通常提供足够的信息来指导开发人员识别必须迁移的API调用以及更新版本的Android中相应的API调用(迁移什么)。然而,API迁移仍然是一项具有挑战性的任务,因为开发人员缺乏如何迁移API调用的知识。有一些代码示例(如Google Samples)可以说明API的用法。通过分析代码示例中API使用的变化,我们可以了解API迁移模式,以帮助开发人员进行API迁移。在本文中,我们提出了一种从代码示例中学习API迁移模式的方法,将这些模式应用于Android应用程序的API迁移源代码,并将结果作为潜在的迁移解决方案呈现给用户。为了评估我们的方法,我们通过从代码示例中学习API迁移模式来迁移开源Android应用程序中的API调用。我们发现,我们的方法可以成功地学习API迁移模式,并在80个案例中的71个案例中提供API迁移帮助。我们的方法可以迁移API调用,几乎不需要额外的修改,或者提供指导来帮助迁移。通过用户研究,我们发现采用我们的方法可以减少迁移API所花费的时间,平均减少29%。此外,我们与应用程序开发人员的访谈突出了我们在寻求API迁移时的方法的好处。我们的方法证明了利用软件存储库中包含的知…
2021-03-26 cs.SE
A Software Repository and Toolset for Empirical Research
本文提出了一个软件存储库模型连同相关的工具,并由几个复杂的,开源的GUI驱动的应用程序准备用于实证软件研究。我们首先提供了我们的存储库的基本原理和指导我们寻找合适应用程序的标准。我们详细介绍了存储库的模型以及相关的工件和支持工具。我们详细介绍了存储库中的当前应用程序以及可以进一步扩展的方式。最后,我们提供了我们的存储库如何促进软件可视化和测试的研究的例子。
2017-02-26 cs.SE
What do all these Buttons do? Statically Mining Android User Interfaces at Scale
我们介绍了FRONTMATTER:一个高精度、大规模地自动挖掘Android应用程序的用户界面模型和行为的工具。给定一个应用,FRONTMATTER静态提取所有声明的屏幕、用户界面元素、它们的文本和图形特征,以及通过与它们交互而调用的Android API。FRONTMATTER在数万个真实世界的应用程序上执行,为全面挖掘移动用户界面打开了大门,大规模启动了实证研究,解决了诸如“有多少旅行应用程序需要注册?“、“哪些应用程序不遵循辅助功能指南?“,“用户界面是否与描述相符?”,还有更多。FRONTMATTER和挖掘的数据集在开源许可证下可用。
2021-05-07 cs.SE
A Study of Using Multimodal LLMs for Non-Crash Functional Bug Detection in Android Apps
针对传统GUI测试难以检测非崩溃功能性(NCF)Bug的问题,本研究实证探索了利用多模态LLM作为测试预言机检测Android应用NCF Bug的有效性,发现其检测率达49%并新发现24个未知Bug,揭示了该方法的潜力与局限。
2024-07-26 cs.SE
A Pairwise Dataset for GUI Conversion and Retrieval between Android Phones and Tablets
针对手机与平板间缺乏成对 GUI 数据的问题,本文构建并公开含 10,035 个 GUI 页面对的 Papt 数据集,支撑跨设备 GUI 转换、检索及深度学习自动化开发研究。
2023-11-05 cs.HC cs.SE
Toward Interactive Bug Reporting for (Android App) End-Users
许多软件错误都是手动报告的,特别是在用户界面中以视觉方式表现出来的错误。最终用户通常通过应用审查网站、问题跟踪器或应用内置的错误报告工具(如果可用)报告这些错误。虽然这些系统具有促进错误报告的各种特征(例如,文本模板或表单),它们通常向最终用户提供有限的指导、具体的反馈或质量验证,这些最终用户通常在报告bug方面缺乏经验,并且提交低质量的bug报告,这导致开发人员在bug报告管理任务中花费过多的精力。我们提出了一个交互式的错误报告系统的最终用户(伯特),实现为一个面向任务的聊天机器人。与现有的错误报告系统不同,Burt提供了基本错误报告元素的指导报告(即,观察到的行为、预期的行为和重现bug的步骤)、即时质量验证以及这些元素的图形化建议。我们为Android实现了一个版本的Burt,并对最终用户进行了实证评估研究,他们报告了先前工作中研究的六个Android应用程序中的12个错误。报告者发现,Burt的指导和自动化建议/澄清是有用的,而且Burt很容易使用。我们发现Burt报告包含的信息质量比通过基于模板的错误报告系统收集的报告更高。报告者告知对Burt的改进包括支持各种措辞来描述bug报告元素和改进的质量验证。我们的工作标志着一个重要的范式转变,从静态到交互式的错误报告的最终用户。
2022-09-21 cs.SE
Hawkeye: Change-targeted Testing for Android Apps based on Deep Reinforcement Learning
ByteDance(字节跳动);University of Edinburgh(爱丁堡大学)
针对Android应用更新测试效率低的问题,提出基于深度强化学习的Hawkeye定向测试方法,优先执行与代码变更相关的GUI操作,实验证明其优于现有工具并适用于商业应用冒烟测试。
2023-09-04 cs.LG cs.SE
Scene-Driven Exploration and GUI Modeling for Android Apps
本文提出 SceneDroid,通过智能探索、状态模糊测试和间接启动等技术动态提取 GUI 场景并构建 SceneTG,显著提升 Android 应用 GUI 建模的迁移覆盖率与场景提取能力。
2023-08-20 cs.CR cs.HC cs.SE
ReuseDroid: A VLM-empowered Android UI Test Migrator Boosted by Active Feedback
针对移动应用GUI测试迁移中操作逻辑差异导致效果不佳的问题,提出基于大型视觉语言模型的多智能体框架REUSEDROID,利用GUI页面的视觉与文本信息并基于核心共享逻辑进行迁移,在数据集LinPro上成功迁移90.3%的任务,显著超越现有基线。
2025-04-03 cs.SE
Enabling Mutation Testing for Android Apps
变异测试已被广泛用于评估测试套件的故障检测有效性,以及指导测试用例生成或优先级排序。经验研究表明,虽然突变体通常代表真实故障,但突变测试的有效应用需要为程序设计语言设计的“传统”运算符用特定于应用领域和/或技术的运算符来扩充。本文提出了MDroid+,一个有效的Android应用程序的突变测试框架。首先,我们通过手动分析来自不同来源的2,023个软件工件(例如,错误报告、提交)。然后,我们确定了一组38个变异算子,并实现了一个基础设施,用其中的35个算子在Android应用程序中自动播种变异。的分类和建议的运营商进行了评估方面的死产/平凡的突变体产生和他们的能力,代表真正的故障在Android应用程序中,相比其他众所周知的突变工具。
2017-08-01 cs.SE
Fully Automated Functional Fuzzing of Android Apps for Detecting Non-crashing Logic Bugs
Android应用程序是基于GUI的事件驱动软件,近年来变得无处不在。显然,功能正确性对于应用程序的成功至关重要。然而,除了崩溃错误之外,非崩溃功能错误(在本工作中简称为“非崩溃错误”),如无意的功能故障,无声的用户数据丢失和不正确的显示信息也很普遍,即使在流行的,经过良好测试的应用程序中也是如此。这些非崩溃功能错误通常由程序逻辑错误引起,并在图形用户界面(GUI)上表现出来。在实践中,这些错误在有效检测它们方面构成了重大挑战,因为(1)当前的实践严重依赖于昂贵的小规模手动验证(缺乏自动化);(2)现代全自动测试仅限于崩溃错误(缺乏测试预言机)。本文通过引入独立视图模糊来填补这一空白,这是一种用于检测Android应用程序中非崩溃功能错误的新颖的全自动方法。受变形测试的启发,我们的主要见解是利用Android应用程序的普遍独立视图属性,从一组验证某些应用程序属性的种子测试中制造属性保留突变测试。变异的测试有助于在额外的不利条件下测试测试应用程序。任何属性冲突都表明可能存在功能错误,需要进一步手动确认。我们已经实现了我们的方法作为一个自动化的,端到端的功能模糊工具,精灵。给定一个应用程序,(1)Genie自动检测非崩溃错误,而不需要人类提供的测试和预言(因此完全自动化);(2)检测到的非崩溃错误是多种多样的(因此是通用的,不限于特定的功能属性),这使Genie与以前的工作不同。
2021-10-05 cs.SE
Deep Reinforcement Learning for Black-Box Testing of Android Apps
Android应用程序的状态空间是巨大的,在测试期间对其进行彻底的探索仍然是一个重大挑战。事实上,最佳的探索策略高度依赖于被测应用程序的功能。强化学习(RL)是一种机器学习技术,它通过尝试和错误来学习解决任务的最佳策略,由积极或消极的奖励引导,而不是由明确的监督。深度RL是RL的最新扩展,它利用了神经网络的学习能力。这些功能使Deep RL适合复杂的探索空间,例如Android应用程序。然而,最先进的公开可用工具仅支持基本的表格式RL。我们已经开发了ARES,这是一种用于Android应用程序黑盒测试的深度RL方法。实验结果表明,它实现了更高的覆盖率和故障揭示比基线,其中包括最先进的基于RL的工具,如TimeMachine和Q-Testing。我们还定性地研究了这种性能背后的原因,并确定了Android应用程序的关键功能,这些功能使Deep RL对它们特别有效,即存在链式和阻塞活动。
2021-01-15 cs.SE
Remember Your Trace: Memory-Guided Long-Horizon Agentic Framework for Consistent and Hierarchical Repository-Level Code Documentation
Sungkyunkwan University(成均馆大学);University of Oslo(奥斯陆大学)
MemDocAgent通过依赖感知遍历引导和记忆引导代理交互,生成统一上下文的仓库级代码文档,实现高效且一致的文档生成。
2026-09-30 cs.CL cs.SE
Investigating Software Developers' Challenges for Android Permissions in Stack Overflow
本研究通过分析 Stack Overflow 上 3,327 个 Android 权限相关问题,系统分类了开发者面临的文档、依赖、调试、概念理解及实现等挑战,揭示了文档不足与官方描述矛盾的问题,并呼吁改进文档与工具支持。
2023-10-31 cs.SE
Android Instrumentation Testing in Continuous Integration: Practices, Patterns, and Performance
University of Toronto(多伦多大学);Trent University(特伦特大学)
研究Android持续集成中仪器测试的实践、模式及性能,发现仅10.6%的仓库使用仪器测试,常用社区组件或自定义脚本设置模拟器,不同设置方式在可靠性、效率和成本上有差异。
2026-04-03 cs.SE
Bug Report Specification Refinement with Trajectory Guidance for Automated Program Repair
Concordia University(康考迪亚大学);DePaul University(德保罗大学);University of Manitoba(曼尼托巴大学)
研究针对自动程序修复中错误报告规范不完善的问题,提出TrajSpec方法,通过轨迹引导收集证据并组织成三级表示,经审查生成细化报告,实验表明该方法能有效提高修复性能。
2026-07-10 cs.SE
Tracing Errors, Constructing Fixes: Repository-Level Memory Error Repair via Typestate-Guided Context Retrieval
针对C语言内存错误修复,提出LTFix方法,利用类型状态自动机引导上下文检索,为LLM提供简洁语义信息,解决跨函数仓库级错误修复中的理解与令牌限制问题。
2025-06-23 cs.SE
A Systematic Study of Deprecated Android API Usage Updates
Texas A&M University–Kingsville(德克萨斯农工大学金斯维尔分校);Central Queensland University(昆士兰中部大学);The University of Queensland(昆士兰大学)
本研究分析1000个废弃Android API与4336个GitHub迁移示例,确定6类迁移模式,将其融入GUPPY基准提示后,在156个任务上正确更新数从139增至147,多数类别性能提升。
2026-10-13 cs.SE
Fine-grained Code Coverage Measurement in Automated Black-box Android Testing
今天,有数百万的第三方Android应用程序。这些应用程序中有一些是错误的,甚至是恶意的。为了识别这些应用程序,包括Google在内的Android社区正在开发用于自动化黑盒测试和动态分析的新框架。代码覆盖率是评估这些框架有效性的最常见指标之一。此外,代码覆盖率被用作指导进化和模糊测试技术的适应度函数。然而,在黑盒Android应用程序测试中,没有可靠的工具来测量细粒度的代码覆盖率。我们提出了Android代码覆盖工具,简称ACVTool,它可以检测Android应用程序,并在类,方法和指令粒度的黑盒设置中测量代码覆盖率。在我们的实验中,ACVTool已经成功检测了96.9%的应用程序。它引入了一个可以忽略不计的插装时间开销,并且它的运行时开销对于自动化测试工具来说是可以接受的。我们在一个大规模的实验与Sapienz,一个国家的最先进的测试工具,细粒度的预防级别的代码覆盖率ACVTool提供的帮助,发现了更大的故障比粗粒度的代码覆盖率指标。
2018-12-27 cs.CR cs.SE
Automatically Reproducing Android Bug Reports Using Natural Language Processing and Reinforcement Learning
作为解决用户通过错误报告提交的问题的过程的一部分,Android开发人员尝试重现和观察错误报告中描述的故障。由于bug报告的低质量和现代应用程序的复杂性,复制过程是不平凡和耗时的。因此,非常需要能够帮助重现Android错误报告的自动方法。然而,当前帮助开发人员自动再现错误报告的方法仅能够处理有限形式的自然语言文本,并且难以成功再现初始错误报告缺少或不精确步骤的故障。在本文中,我们将介绍一种新的全自动Android错误报告再现方法,以解决这些限制。我们的方法通过利用自然语言处理技术来更全面、更准确地分析Android错误报告中的自然语言,并基于强化学习设计新技术来指导搜索成功的再现步骤,从而实现了这一目标。我们对77个真实世界的错误报告进行了实证评估。我们的方法在准确地从错误报告中提取再现步骤方面实现了67%的精确度和77%的召回率,并再现了74%的错误报告,显着优于最先进的技术。
2023-01-18 cs.SE
Skeleton-Guided-Translation: A Benchmarking Framework for Code Repository Translation with Fine-Grained Quality Evaluation
Microsoft(微软);Peking University(北京大学);Zhejiang University(浙江大学);Tongji University(同济大学)
针对现有代码翻译基准忽略仓库级复杂性的问题,提出基于骨架引导的Java到C#仓库翻译框架及细粒度评估基准TRANSREPO-BENCH,通过两步翻译和测试用例级指标提升评估准确性与自动化。
2025-01-27 cs.AI cs.SE
Mind the Gap: Action Rebinding Attacks against Android GUI Agents
State Key Laboratory for Novel Software Technology, Nanjing University(新型软件技术国家重点实验室,南京大学);Hornor Device Co., Ltd(Hornor设备有限公司);Institute of Dataspace, Hefei Comprehensive National Science Center(数据空间研究所,合肥综合性国家科学中心)
研究揭示了由大型多模态模型驱动的GUI代理在Android中存在视觉原子性假设的漏洞,通过零权限攻击实现对代理执行的重新绑定,并利用意图对齐策略绕过验证门,展示了代理-操作系统集成中的安全缺陷。
2026-07-16 cs.AI cs.CR cs.SE
Helping Software Developers through Offline Repository Based API Searching in Data MiningIntegrated Environment
软件开发变化如此之快。如果能够通过对开发人员的指导来加快软件开发的进程,将是非常有益的。在开发过程中给开发人员提供适当的指导和准确的建议,可以减少软件开发费用,也可以节省开发人员宝贵的时间。有很多方法可以加速软件开发过程。这可以通过代码辅助工具来完成,这些工具通过从应用程序编程接口(API)的特定存储库中推荐相关项目来帮助开发人员。一些方法是基于在线搜索,由于请求和响应延迟,因为它必须处理服务器中的超大文件,因此具有一些缺点。开发人员通常使用以前完成的资源以及库或框架来生成相关的代码片段,这些代码片段由API的引用存储库提供。开发人员发现很难选择合适的方法,因为有成千上万的方法,其中一些没有正确的文档。在本文中,我们提出了一个概念及其相应的框架,以指导开发人员从离线挖掘的存储库中建议相关的API方法。从我们所做的调查,我们可以说,我们的方法比一些现有的方法工作得更好。
2020-06-21 cs.SE
An Evolutionary Approach to Adapt Tests Across Mobile Apps
University of Milano Bicocca(米兰比可卡大学);Università della Svizzera italiana(瑞士意大利语联邦理工学院);Schaffhausen Institute of Technology(沙夫豪森技术学院)
ADAPTDROID通过进化测试方法,在功能相似的Android应用间适应生成语义相关的GUI测试用例。
2021-04-12 cs.SE
Humanoid: A Deep Learning-based Approach to Automated Black-box Android App Testing
自动输入生成器广泛用于移动应用程序的大规模动态分析。这样的输入生成器必须不断地选择与哪个UI元素交互以及如何与它交互,以便在有限的时间预算内实现高覆盖率。目前,大多数输入生成器采用伪随机或蛮力搜索策略,这可能需要很长时间才能找到正确的输入组合,从而将应用程序驱动到新的重要状态。在本文中,我们提出了Humanoid,一种基于深度学习的方法,通过从人类交互中学习来生成GUI测试输入。我们的观点是,如果我们可以从人类生成的交互痕迹中学习,就有可能根据用户感知的重要性自动对测试输入进行优先级排序。我们设计并实现了一个深度神经网络模型,以了解最终用户如何与应用程序交互(具体来说,与哪些UI元素交互以及如何交互)。我们的实验表明,交互模型可以成功地优先考虑任何新UI的用户首选输入(前1名的准确率为51.2%,前10名的准确率为85.2%)。我们基于学习的模型为Android应用程序实现了一个输入生成器,并在开源应用程序和市场应用程序上对其进行了评估。结果表明,Humanoid能够实现比六个最先进的测试生成器更高的覆盖率。然而,进一步的分析表明,学习模型不是覆盖率提高的主要原因。虽然学习的交互模式可以以更高的概率驱动应用进入一些重要的GUI状态,但它对GUI状态搜索的宽度和深度的影响有限,这是长期提高测试覆盖率的关键。是否以及如何使用人类交互模式来提高覆盖率仍然是一个未知且具有挑战性的问题。
2020-12-30 cs.SE
Do we agree on user interface aesthetics of Android apps?
内容:视觉美学越来越多地被视为感知可用性、交互和用户界面的整体评估的重要因素,特别是在移动应用程序方面。然而,仍然存在的问题是如何评估以及用户对视觉美学的认同程度。目的:本文分析了评价者对Android应用程序用户界面视觉美学的一致性,作为指导方针和评估模型的基础。方法:我们系统地收集了10位参与者对100个Android应用程序用户界面的视觉美学评分,并分析了频率分布,可靠性和影响设计方面。结果:一般来说,Android应用程序的用户界面被认为比美丽更丑。然而,评分员只是适度同意的视觉美学。分歧似乎与布局、形状、颜色、排版和背景图像的细微差异有关。结论:视觉美学是应用程序成功的关键因素。然而,评分员对视觉美感的看法存在相当大的分歧,这表明需要更好地了解移动应用程序的软件质量。
2018-12-21 cs.HC cs.SE
SGAgent: Suggestion-Guided LLM-Based Multi-Agent Framework for Repository-Level Software Repair
Nanjing University of Science and Technology(南京理工大学);Nanjing University(南京大学)
提出SGAgent框架,通过引入建议阶段(localize-suggest-fix范式)和知识图谱工具,增强从定位到修复的推理,在SWE-Bench-Lite上达到51.3%修复准确率。
2026-05-25 cs.SE
Dependency-Guided Repository-Level C-to-Rust Translation with Reinforcement Alignment
Southeast University(东南大学);The Chinese University of Hong Kong(香港中文大学);Zhejiang University(浙江大学);Peking University(北京大学);Huawei(华为)
提出DepTrans框架,通过强化对齐语法训练和依赖引导迭代精炼,实现仓库级C到Rust的高效翻译,编译成功率和计算准确性分别提升22.8和17.3个百分点。
2026-06-02 cs.SE
Guiding Software Developers by Social Networking Application Plug-in using the Multiple Bridge Source Repository through a Data Mining Integrated Approach
在当今世界,社交网络是一个重要的(充满力量的)大众传播媒介。几乎所有阶层的人都在通过使用不同社交网站中的大量用户友好应用程序相互交流并分享他们的观点,时刻和想法。找到一个从来没有听说过社交网络的人真是难以置信。可用的社交网站通常使其用户能够通过特定的模板和嵌入式代码源开发各种定制应用程序。具有一般开发知识的用户经常遇到重用这些资源的困难,最终缺乏指导方针和必要的API建议。在我们的工作中,我们提出了一个框架和模型,以帮助这些应用程序开发人员通过用户辅助插件工具,能够提供相同的API使用模式和序列,以响应特定的用户查询。我们将我们的系统命名为社交网络应用程序插件(SNAP)。我们搜索社交网络应用程序存储库,其中多个存储被桥接,并应用相应的挖掘算法,以找到相关的序列,以满足用户的需求。它提供了类似的、最相关的、功能性的API使用场景,并提供了一个选择、重用和修改推荐源的选项。从我们曾经做过的调查,我们的SNAP方法是能够推荐用户的无错误,可理解的,和最小的API模式。
2020-06-24 cs.SE
PerfAgent: Profiler-Guided Iterative Refinement for Repository-Level Code Optimization
Massachusetts Institute of Technology(麻省理工学院);Rensselaer Polytechnic Institute(罗切斯特理工学院);IBM(IBM公司);Michigan State University(密歇根州立大学)
研究针对仓库级代码优化难题,提出PerfAgent分析器引导迭代优化方法,该方法能让编码代理找到热点并改进,在两个优化基准测试中大幅提升专家匹配补丁率,且以低成本超越基线。
2026-07-23 cs.AI cs.SE
GIFdroid: Automated Replay of Visual Bug Reports for Android Apps
错误报告对于软件维护至关重要,它允许用户通知开发人员在使用软件时遇到的问题。然而,对于非技术用户来说,很难写清楚关于bug发生的描述。因此,越来越多的用户开始记录报告错误的屏幕,因为它很容易创建,并包含触发错误的详细过程。但是,由于记录中的长度和不清楚的操作,开发人员重现错误仍然是繁琐和耗时的。为了克服这些问题,我们提出了GIFdroid,一个轻量级的方法来自动重放的执行跟踪从视觉错误报告。GIFdroid采用图像处理技术从记录中提取关键帧,将其映射到GUI Transitions Graph中的状态,并生成这些状态的执行轨迹以触发bug。我们的自动化实验和用户研究证明了它的准确性,效率和实用性的方法。
2022-04-19 cs.SE
BURT: A Chatbot for Interactive Bug Reporting
本文介绍了BURT,一个基于Web的聊天机器人,用于交互式报告Android应用程序错误。BURT旨在帮助Android应用最终用户使用交互式界面报告高质量的缺陷信息。BURT指导用户报告基本的错误报告元素,即,观察到的行为、预期的行为以及重现bug的步骤。它验证用户所写文本的质量并提供即时反馈。此外,BURT提供了图形化的建议,用户可以选择作为文本描述的替代方案。我们对BURT进行了实证评估,要求最终用户报告六个Android应用程序的错误。记者发现,BURT的指导以及自动建议和澄清很有用,而且BURT很容易使用。BURT是一个开源工具,可在github.com/sea-lab-wm/burt/tree/tool-demo上获得。可以在https://youtu.be/SyfOXpHYGRo上找到显示BURT全部功能的视频
2023-02-13 cs.SE
How do Developers Test Android Applications?
实现移动应用程序的全自动测试最近已成为研究人员和从业人员的重要研究课题。已经提出了大量的工具和方法,通过增加手动测试实践和自动化测试过程的各个部分来帮助移动开发人员。然而,目前的自动化测试方法无法让开发人员相信它们的好处,导致大多数移动测试都是手动执行的。为了帮助设计支持移动测试方法的研究人员和从业人员了解开发人员的需求,我们分析了来自Android项目的102位开源贡献者关于他们在执行测试时的实践的调查回复。调查的重点是关于开发人员/测试人员在野外的实践和偏好的问题:(i)设计和生成测试用例,(ii)自动化测试实践,以及(iii)对质量度量的看法,例如用于确定测试质量的代码覆盖率。通过分析从这次调查中收集到的信息,我们汇编了一套知识体系,以帮助指导研究人员和专业人员根据不同开源开发人员的需求定制新的自动化测试方法。
2018-01-19 cs.SE
Unblind the charts: Towards Making Interactive Charts Accessible in Android Applications
智能手机是现代世界日常生活的一个重要方面,查看图表等信息图形成为许多不起眼的任务的常见做法。然而,对于视力受损者来说,获取图形材料存在许多困难。Android智能手机通常预装Google Talkback作为默认的屏幕阅读器,它试图通过在与支持的应用程序交互时提供补充听觉信息来满足视障人士的需求。然而,这种情况的关键在于屏幕阅读器依赖于开发人员正确地实现UI元素(如图表)所需的可访问性指南。不幸的是,根据实证研究,在现实世界的Android应用程序中发现的图表中,有88%以上是视力受损的用户无法访问的,这导致了智能手机视力受损用户面临的更广泛的可访问性问题。这些可访问性问题可以归因于在考虑用户可能的残疾方面的知识差距,以及开发人员的时间成本。为了克服这些挑战,本研究提出了CAM(图表可访问性模块),其目的是减少时间和弥合知识差距所需的实施图表可访问性。CAM有两个步骤,使用原始数据生成图表摘要,并使用MPDandroidChart库的Android Accessibility API将其馈送到屏幕阅读器。用户研究结果表明,CAM显着降低了难度和时间,以实现应用程序开发人员的可访问性。
2021-09-25 cs.HC cs.SE
Enhancing Android Application Bug Reporting
随着智能手机和平板电脑的普及,现代软件开发领域的重点已经转向移动应用程序。由于这种趋势,这些“应用程序”的复杂性一直在增加,使开发和维护具有挑战性。当前的错误跟踪系统不能有效地促进具有将直接导致错误解决的有用信息的错误报告的创建。为了满足对改进报告系统的需求,我们引入了一种名为Fusion的新颖解决方案,该解决方案可帮助报告者利用其以GUI为中心的特性,自动完成移动应用程序错误报告中的复制步骤。融合将报告者提供的信息链接到通过预先执行的静态和动态分析提取的程序工件。这使得我们的系统能够为开发人员和测试人员提供更方便的报告过程,同时生成更多可重复的错误报告,并提供立即可操作的信息。
2017-06-04 cs.SE
Enhancing repository-level software repair via repository-aware knowledge graphs
针对仓库级软件修复中语义鸿沟等问题,提出融合仓库感知知识图谱与路径引导机制的KGCompass,在SWE-bench Lite上实现了跨多模型的显著修复性能提升,兼具模型无关性与成本效益。
2025-10-03 cs.SE
LELANTE: LEveraging LLM for Automated ANdroid TEsting
本文提出 LELANTE 框架,利用大型语言模型自动解释自然语言测试用例并直接在 Android 屏幕上执行操作,无需预编写脚本,在 390 个测试用例中达到 73% 成功率,有效提升了移动测试的可扩展性和适应性。
2025-04-29 cs.SE