feat(ldd): property-based, mutation и браузерный E2E

This commit is contained in:
2026-10-28 00:01:56 +03:00
parent 80ccf26b61
commit 905feb440b
18 changed files with 1432 additions and 2 deletions

View File

@@ -394,7 +394,8 @@
"ru.ysu.lms.web.profile.ProfileDtoJsonTest#deserializes profile contract()",
"ru.ysu.lms.web.api.CourseGroupRosterDtoTest#deserializes course group roster contract()",
"ru.ysu.lms.web.api.AuditDtoTest#deserializes audit event list with nulls()",
"ru.ysu.lms.web.api.PromotionDtoTest#deserializes promotion detail with item states and result()"
"ru.ysu.lms.web.api.PromotionDtoTest#deserializes promotion detail with item states and result()",
"ru.ysu.lms.identity.roster.TeacherIntegrationTest#student creation accepts omitted optional json fields()"
],
"limitations": "Это smoke-контракты, не consumer-driven contracts."
},
@@ -458,6 +459,45 @@
"runtime.web_login_page"
],
"limitations": "Smoke не заменяет полный UI E2E и нагрузочные тесты."
},
{
"id": "LDD-MUTATION-001",
"title": "Мутационная прочность матрицы доступа",
"criticality": "P1",
"status": "active",
"requirement": "docs/evidence/README.md",
"claim": "PIT по CourseAccessService убивает не менее 70% покрытых мутаций.",
"oracle": "PIT mutations.xml: killed / covered",
"runtime": [
"mutation.course_access"
],
"limitations": "PIT 1.20 + JUnit4 harness; Kotlin/Spring-специфичные мутации и эквивалентные мутанты не входят в цель."
},
{
"id": "LDD-MUTATION-002",
"title": "Мутационная прочность планировщика повышения",
"criticality": "P1",
"status": "active",
"requirement": "docs/evidence/README.md",
"claim": "PIT по PromotionPlanner убивает не менее 60% покрытых мутаций.",
"oracle": "PIT mutations.xml: killed / covered",
"runtime": [
"mutation.promotion_planner"
],
"limitations": "Проверяется планировщик, не транзакционный apply/rollback (они покрыты интеграционными тестами)."
},
{
"id": "LDD-BROWSER-001",
"title": "Браузерный E2E админа, преподавателя и студента",
"criticality": "P1",
"status": "active",
"requirement": "docs/evidence/README.md",
"claim": "Playwright на реальном стеке: admin видит курс и аудит, teacher открывает курс/ведомость/профиль и создаёт главу, аноним и студент не попадают в админку.",
"oracle": "Playwright assertions на DOM/URL",
"runtime": [
"browser.e2e"
],
"limitations": "Один Chromium, один сценарий на роль; визуальная регрессия и мобильные размеры не проверяются."
}
]
}
}