five

ReproBreak

收藏
arXiv2026-05-12 更新2026-05-15 收录
下载链接:
https://github.com/rub-sq/ReproBreak
下载链接
链接失效反馈
官方服务:
资源简介:
ReproBreak是由波鸿鲁尔大学研究团队构建的关于Web应用GUI测试中可复现定位器中断的数据集。该数据集包含449条经过验证的定位器中断案例,源自对359个开源仓库中9,572个定位器变更的系统性分析,数据以SQLite关系型数据库形式存储,并配套提供自动化复现脚本。数据集通过Docker环境封装了完整的应用与测试执行环境,确保了实验的可重复性与一致性。该数据集主要应用于Web自动化测试领域,旨在支持定位器脆弱性评估、修复技术研发以及测试鲁棒性研究,为解决Cypress和Playwright框架中因DOM结构变化导致的测试中断问题提供基准资源。

ReproBreak is a dataset focused on reproducible locator failures in web application GUI testing, constructed by the research team at Ruhr-Universität Bochum. This dataset contains 449 validated locator failure cases, derived from a systematic analysis of 9,572 locator changes across 359 open-source repositories. The data is stored in a SQLite relational database, with supporting automated reproduction scripts provided. The dataset encapsulates a complete application and test execution environment via Docker, ensuring the reproducibility and consistency of experiments. Primarily applied in the field of web automated testing, this dataset aims to support research on locator vulnerability assessment, repair technology development and test robustness, serving as a benchmark resource to resolve test interruptions caused by DOM structure changes in the Cypress and Playwright frameworks.
提供机构:
波鸿鲁尔大学
创建时间:
2026-05-12
原始信息汇总

ReproBreak 数据集概述

数据集简介

ReproBreak 是一个可复现的 Web 定位器断裂数据集,来源于真实世界的代码仓库。该数据集通过提供由定位器断裂引起的可复现断裂,支持以下研究领域:

  • 测试脆弱性(Test Fragility)
  • 定位器鲁棒性(Locator Robustness)
  • 自动化测试修复(Automated Test Repair)

技术需求

工具 版本要求
Python 3.10 及以上
Git CLI 任意版本
Docker 含 Compose
uv(推荐) 最新版

数据集内容与结构

项目文件结构

reprobreak/ ├── reproduce.py # 复现定位器断裂 ├── create_dataset.py # (可选)阶段1:挖掘定位器变更 ├── create_reproducible_dataset.py # (可选)阶段2:验证可复现性 ├── save_reproduction.py # (可选)阶段3:将结果存入数据库 ├── config.py # 全局配置 ├── database/ │ └── schema.sql # SQLite 数据库模式 └── data/ ├── ReproBreak.db # 数据集主文件(需单独下载) └── reproduction_files/ # 每个仓库的复现环境

数据集下载

  • 预构建的数据库可从 Figshare 下载:ReproBreak.db
  • 下载后解压并放置于 data/ 文件夹中

核心功能:复现定位器断裂

使用数据集中的标识符复现定位器断裂:

bash python reproduce.py --locator_id <ID> --mode <MODE>

运行模式

模式 行为说明
reproduce_break 将定位器恢复为旧值——测试预期失败
fixed 使用当前定位器运行——测试预期通过
original 不修改定位器,直接运行测试

预期输出示例

[FAIL] reproduce_break mode [PASS] fixed mode

构建数据集的三个阶段(可选)

阶段1:挖掘定位器变更

  • config.py 中设置 REPO_LIST(格式:owner/repo)等变量
  • 运行 python create_dataset.py
  • 自动遍历仓库提交历史,查找定位器变更
  • 生成 SQLite 数据库文件

阶段2:验证可复现性

  • 为每个仓库准备 Dockerfile 和测试运行脚本 /run_tests.sh
  • 运行 python create_reproducible_dataset.py <repo>
  • 对每个包含定位器变更的提交进行验证:
    1. 构建提交对应的 Docker 镜像
    2. 运行测试,确保全部通过
    3. 将定位器替换为旧值后重新运行测试
    4. 若测试失败,则标记为可复现断裂

阶段3:保存结果

  • 运行 python save_reproduction.py <repo>
  • 将阶段2的结果存入数据库

结果分析

  • 运行 python analyze_results.py <repo_name> <run_number> 获取特定运行摘要
  • 运行 python analyze_results.py <repo_name> <run_number> 获取项目所有运行摘要

关键配置项(config.py)

  • REPO_LIST:要挖掘的仓库列表
  • START_WITH_CLEAN_DB:是否从空数据库开始
  • STOP_ON_ERROR:遇到错误是否停止
  • DELETE_REPO_AFTER_ANALYZE:分析后是否删除仓库
搜集汇总
数据集介绍
main_image_url
构建方式
ReproBreak的构建始于从E2EGit数据集中提取374个采用Cypress或Playwright框架的开源项目仓库。首先,通过自动化脚本识别这些仓库中测试文件的定位器变更(locator changes),利用正则表达式筛选出诸如cy.get或page.locator等框架特定的定位器调用,并借助git diff定位新旧定位器对。随后,针对定位器变更数量最多的前十个项目,手动创建Docker环境以封装应用及其依赖,确保可复现的执行环境。在此基础上,对每个定位器变更进行验证:先用新定位器执行测试,若通过则替换为旧定位器重新运行;若测试失败,则确认该变更为定位器断裂(locator break)。最终,从四个可成功构建的项目中确认了449个可复现的定位器断裂,所有数据及复现脚本均存储于SQLite数据库中。
特点
ReproBreak数据集的核心特点在于其可复现性与结构性。与静态的快照不同,该数据集提供了自动化的复现脚本(reproduce.py),允许研究者在真实执行环境中主动验证定位器断裂,从而支持动态评估。数据集以关系型SQLite数据库组织,核心表locator_change记录了新旧定位器、行号、框架及关联的仓库、提交和测试文件信息,而locator_break表则连接了验证所用的复现文件(包括Dockerfile和shell脚本),确保了每个断裂的可追溯性。此外,数据集覆盖了Cypress和Playwright两大主流框架,弥补了现有研究主要聚焦于Selenium的空白,并提供了449个经过严格验证的断裂实例,为大规模实证研究奠定了坚实基础。
使用方法
ReproBreak的使用围绕其内置的reproduce.py脚本展开,支持三种执行模式:fixed模式用于确认新定位器在更新应用上通过测试;reproduce_break模式通过替换旧定位器复现断裂以验证失败;overwrite模式则允许研究者测试自定义修复。用户只需提供定位器断裂的ID和模式参数,脚本即可自动从数据库提取信息、构建Docker镜像并执行测试,输出结果供分析。此外,数据集可作为基准用于评估定位器鲁棒性技术(如Robula+)、脆弱性评分、自动修复方法(如Similo)以及基于自然语言的测试鲁棒性分析。研究者亦可通过定义新的正则表达式,将数据集扩展至其他测试框架。
背景与挑战
背景概述
在现代Web应用的快速迭代过程中,自动化GUI测试框架(如Cypress和Playwright)通过定位符(locator)识别页面元素以模拟用户交互。然而,当应用发生结构性变更(如DOM重组或元素ID重命名)时,定位符可能失效,导致测试用例崩溃——这种现象被称为定位符脆弱性。尽管前期研究已指出定位符问题在Selenium框架中导致高达75%的测试文件频繁变更,但面向Cypress和Playwright的大规模可复现定位符断裂数据集仍然缺失。2026年,来自德国波鸿鲁尔大学的Thiago Santos de Moura、Leon Adamietz、Samra Mehboob与Yannic Noller在分析359个开源代码库后,提出了ReproBreak数据集。该团队通过自动化流水线识别了9572次定位符变更,并在其中四个项目中成功复现了449次定位符断裂。ReproBreak不仅提供了经过验证的断裂实例,还附带了Docker化的自动复现脚本,为研究定位符鲁棒性、自动修复技术与测试弹性评估提供了首个可靠的实证基准,对提升Web GUI测试维护效率具有显著科学价值。
当前挑战
ReproBreak可复现定位符断裂数据集所应对的核心领域挑战在于:在Cypress与Playwright框架下,现有定位符鲁棒性技术(如Robula+、Similo)主要基于Selenium设计,其跨框架有效性未知,亟需大规模基准以评估并适配这些策略。此外,测试维护中75%以上的断裂源于结构变更而非功能错误,揭示出定位符脆弱性已成GUI测试自动化的首要难题。在数据集构建过程中,研究团队面临多项技术壁垒:首先,从374个候选代码库中筛选定位符变更需设计精准的正则匹配规则以区分断裂性变更与预防性调整;其次,Docker环境搭建需手工配置每个项目的依赖链(如数据库、编程语言栈),由于文档不足、依赖不可达或环境缺失,六个高变更量项目被迫排除;最后,断裂验证环节需在固定模式下确保新定位符测试通过后,再替换旧定位符并重跑测试,整个流程对日志追溯与镜像复用策略提出严苛要求。
常用场景
经典使用场景
在Web图形用户界面自动化测试领域,元素定位器的脆弱性已成为影响测试可靠性与维护效率的核心挑战。ReproBreak数据集聚焦于Cypress与Playwright这两大现代测试框架,首次提供了可复现的定位器断裂(locator break)实例集合。研究者可利用该数据集系统性地分析因应用结构性变化(如DOM重构、元素ID重命名)导致的测试失败现象。其经典使用场景包括:通过Docker封装的环境自动化复现449个经过验证的定位器断裂案例,从而在真实执行环境中精确评估不同定位策略的脆弱性特征,为理解框架间定位器行为的差异性奠定实证基础。
实际应用
在工业级Web应用的持续交付流水线中,GUI测试的断裂直接导致部署阻塞与维护成本激增。ReproBreak的实际应用场景体现为:测试工程师可利用其自动复现脚本快速诊断定位器断裂的根因,从而在代码审查阶段识别脆弱定位模式。对于采用Cypress或Playwright的组织,该数据集可作为基准测试套件,用于评估内部开发的定位器修复工具的有效性。此外,基于大语言模型的自动化修复代理可借助ReproBreak提供的449个已验证断裂案例进行训练与调优,显著降低人工定位器维护的工作量。这一实践路径有望将测试维护从被动响应转变为主动预防,提升DevOps流程中软件质量保障的自动化水平。
衍生相关工作
ReproBreak的发布催生了一系列重要的衍生研究工作。在定位器生成方向,Robula+与Sidereal等经典算法得以在Cypress与Playwright环境下重新评估,推动了跨框架鲁棒定位器生成策略的适应性改进。在语义测试领域,该数据集为基于自然语言描述的测试鲁棒性研究提供了量化验证平台,例如将传统定位器替换为NL抽象表示以规避结构性变更的影响。更前沿的工作包括利用ReproBreak训练基于Transformer的定位器断裂预测模型,以及开发结合视觉重叠检测与DOM树分析的混合修复方法。这些衍生工作共同构建了一个以ReproBreak为核心的测试韧性研究生态,持续扩展着Web GUI测试自动化方法论的边界。
以上内容由遇见数据集搜集并总结生成
5,000+
优质数据集
54 个
任务类型
进入经典数据集
二维码
社区交流群

面向社区/商业的数据集话题

二维码
科研交流群

面向高校/科研机构的开源数据集话题

数据驱动未来

携手共赢发展

商业合作