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.
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> - 对每个包含定位器变更的提交进行验证:
- 构建提交对应的 Docker 镜像
- 运行测试,确保全部通过
- 将定位器替换为旧值后重新运行测试
- 若测试失败,则标记为可复现断裂
阶段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:分析后是否删除仓库




