跳到正文
cccskills
免费在 GitHub 公开

analyzing-quality-metrics

Defines, computes, and interprets test and quality metrics: pass rate, flake rate, suite duration, defect escape rate, time to detect, and coverage with its caveats. Use when building a QA dashboard, reporting suite health to stakeholders, comparing releases over time, or when a coverage percentage or a bug count is being treated as a measure of quality.

中文简介正在准备中。当前显示原文说明。

jaktestowac/awesome-copilot-for-testers星标 118(GitHub 118 + cccskills 0)

实测评分 未实测

查看安装方法

包含的文件(4)

  • SKILL.md8.9 KB
  • resources/anti-metrics.md5.1 KB
  • resources/metric-definitions.md7.4 KB
  • resources/quality-report-template.md4.1 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Analyzing Quality Metrics

Use this skill when someone needs numbers about testing and quality, and the numbers need to survive being acted on.

Every quality metric is a proxy. Coverage proxies for thoroughness, bug count proxies for code health, pass rate proxies for confidence. Proxies are useful until they become targets, at which point they get optimized directly and stop measuring anything. The job here is to pick proxies that resist that, define them precisely enough to be computed the same way twice, and always report the decision the number is meant to inform.

When to Use

  • a stakeholder asks for a QA dashboard or a testing status report
  • a coverage percentage is being used as a quality gate
  • flakiness is being discussed with no measurement behind it
  • suite runtime is growing and nobody can say by how much
  • release quality needs comparing across releases
  • a metric has become a target and the behaviour around it has gone strange

Operating Principles

  • Every metric names the decision it supports. A number nobody acts on is a number nobody should collect.
  • Define before you measure. "Flaky test" and "escaped defect" mean different things to different people; a metric computed two ways is two metrics.
  • Trend over snapshot. A single value is noise. Direction over several releases is signal.
  • Pair every metric with its counterweight. Speed with escape rate, coverage with mutation survival, pass rate with flake rate. A metric reported alone gets gamed alone.
  • Rates, not counts. Ten defects means nothing without the denominator: per release, per thousand changed lines, per user.
  • State the caveat with the number. Coverage without "this measures execution, not assertion" is a misleading number, even when it is correct.
  • Never measure individuals. Bugs found per tester and defects introduced per developer both produce worse work and worse data.

Workflow

Phase 0: Find the decision

Before selecting anything, ask what will be decided differently depending on the answer:

DecisionMetrics that inform it
Is this build shippable?Pass rate on the candidate, open defect profile, coverage of the changed area
Where should we invest test effort?Escape rate by area, defect density by module, coverage gaps against risk
Is our suite trustworthy?Flake rate, quarantine count and age, mutation survival
Is our feedback loop fast enough?Suite duration by stage, time to first failure signal, queue time
Is quality improving?Escape rate trend, time to detect trend, change failure rate

A metric that maps to no row here is a metric to drop. Collecting it costs attention and invites someone to optimize it.

Phase 1: Define each metric precisely

Use ./resources/metric-definitions.md. Each definition fixes:

  • the formula and both its numerator and denominator
  • the data source and how to extract it
  • the time window
  • what counts and what is explicitly excluded
  • the known distortions
  • the decision it supports

Two definitions worth fixing early because they are argued about most:

  • Flaky test: a test that produced both a pass and a fail on the same commit within the window. Not "a test someone re-ran".
  • Escaped defect: a defect found in production that a test at any level could in principle have caught. Not every production incident; a third-party outage is not an escape.

Phase 2: Establish the baseline

Compute over the last several releases or the last quarter before showing anything. A metric introduced with no history invites a target set from a single point, which is how arbitrary thresholds are born.

Record with each baseline:

  • the range and the variance, not only the average
  • what was happening in the period (a large refactor, a hiring wave, a holiday freeze)
  • gaps in the data and how they were handled

Phase 3: Pair and counterweight

Never publish a metric without its counterweight.

MetricCounterweightThe behaviour this prevents
Line coverageMutation score, or assertion densityTests that execute code and assert nothing
Pass rateFlake rate, skipped countSkipping and quarantining to keep the bar green
Suite durationEscape rateDeleting slow tests that were catching things
Defects foundEscaped defectsRewarding shallow, high-volume bug reports
Deployment frequencyChange failure rateShipping faster and worse
Automation percentageEscape rate on automated areasAutomating what is easy rather than what is risky

Phase 4: Compute and visualize

Rules that keep a dashboard honest:

  • show the trend line, not just the current value
  • annotate the timeline with events: a release, a refactor, a suite migration
  • show the denominator on the chart
  • use the same window everywhere; a weekly flake rate next to a quarterly escape rate invites the wrong comparison
  • mark data gaps as gaps rather than interpolating them
  • put the caveat in the chart, not in a footnote nobody reads

./resources/quality-report-template.md has a report structure that holds up in front of stakeholders.

Phase 5: Interpret

Write the interpretation next to the number. A dashboard with no narrative gets a narrative invented for it by whoever presents it.

For every notable movement, state:

  • what changed
  • the most plausible cause, and the competing explanation
  • what would confirm which one it is
  • what, if anything, should be done

Alternative explanations are not hedging. Coverage rising after a test-generation sprint and coverage rising because a large untested module was deleted look identical in the chart and mean opposite things.

Phase 6: Check for corruption

Every quarter, run the checks in ./resources/anti-metrics.md:

  • has any metric become a target with a number attached to someone's objectives
  • are tests being skipped or quarantined near the reporting boundary
  • has coverage risen while mutation survival stayed flat
  • are defects being reclassified rather than fixed
  • is anyone's performance being measured with any of these

A corrupted metric is worse than a missing one, because it is trusted. When you find one, retire it and say why.

Common Failure Modes

  • reporting coverage as a quality number without saying it measures execution, not verification
  • a bug count with no denominator and no window
  • a single snapshot presented as a trend
  • setting a target on a proxy, which converts it into a target and destroys it as a measure
  • measuring individuals, which changes behaviour long before it changes outcomes
  • pass rate reported next to a growing skip list nobody mentions
  • a dashboard nobody has ever acted on, still being maintained
  • comparing two periods with different definitions after a tooling change

Resource Map

  • ./resources/metric-definitions.md - formula, source, window, exclusions, distortions, and supported decision for each metric
  • ./resources/anti-metrics.md - metrics to avoid, the Goodhart cases, and the quarterly corruption check
  • ./resources/quality-report-template.md - stakeholder report structure with a worked example

Related Skills

  • stabilizing-flaky-tests (planned) - when flake rate identifies which tests to fix
  • tech-debt-analysis - when the metrics point at structural debt rather than at individual tests
  • assessing-release-readiness - when the numbers feed a go/no-go decision
  • unslop-tests - when coverage is high and mutation survival says the tests prove nothing
  • automating-ci-test-pipelines (planned) - when suite duration and queue time are the metrics under pressure
  • analyzing-regression-scope - when defect density by area should steer retest priority
  • documenting-test-suites - when the definitions need a permanent home the team can cite

Definition of Done

This skill is complete when:

  • every reported metric names the decision it supports, and metrics that support none were dropped
  • each metric has a written definition with formula, source, window, and exclusions
  • a baseline with range and variance exists before any target is discussed
  • every metric is published with its counterweight
  • charts show trends, denominators, annotated events, and gaps marked as gaps
  • each notable movement carries an interpretation with at least one competing explanation
  • no metric measures an individual
  • the corruption check has been run and any corrupted metric has been retired with a reason

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Analyzes diffs, changed files, hotfixes, and release candidates to identify where regression risk spreads and what must be retested first. Use when scoping retest after a change, reviewing QA impact for a pull request, or building a minimal confidence suite for release validation.

中文简介正在准备中。当前显示原文说明。

jaktestowac/awesome-copilot-for-testers1182026年8月27日 更新

Writes and reviews API automation tests with Playwright Test, covering setup/teardown, assertions, data management, and hybrid API+UI flows. Use when creating backend API tests, contract checks, data-driven API coverage, API+UI hybrid workflows, or reviewing existing Playwright API suites.

中文简介正在准备中。当前显示原文说明。

jaktestowac/awesome-copilot-for-testers1182026年8月27日 更新

Measures the risk that code shipped without anyone understanding it: a teach-back attestation on high-risk changes, a risk band from changed-code complexity, diff size and whether a human explanation accompanied it, and optional AI-authorship provenance. Findings stay advisory by design. Use when an AI-assisted codebase grows faster than the team reads it, when reviews are rubber-stamped, when nobody can explain a module that ships weekly, or when leadership asks how much of the code the team can actually maintain.

中文简介正在准备中。当前显示原文说明。

jaktestowac/awesome-copilot-for-testers1182026年8月27日 更新

Produces an evidence-backed go/no-go recommendation: exit criteria status, open-defect risk profile, coverage against risk, environment parity, rollback readiness, and the residual risk stated plainly. Use when preparing a release sign-off, when someone asks whether a build is ready to ship, or when a decision to release is being made on impressions rather than evidence.

中文简介正在准备中。当前显示原文说明。

jaktestowac/awesome-copilot-for-testers1182026年8月27日 更新

Records human verification - code review, exploratory sessions, UAT, accessibility passes, UX and observability reviews - as dated, attributed attestations in a register, so human-centric practices stay in the quality contract without pretending to be automated checks. Use when a strategy requires verification no tool can prove, when sign-off evidence is scattered across chats and tickets, when a gap matrix needs to distinguish "attested" from "passed", or when an audit asks who verified what and when.

中文简介正在准备中。当前显示原文说明。

jaktestowac/awesome-copilot-for-testers1182026年8月27日 更新

Performs webpage and user-flow accessibility audits with WCAG 2.2 guidance, manual verification checklists, prioritized remediation output, and stakeholder-ready summaries. Use when auditing accessibility on a URL, triaging suspected a11y issues, or producing technical findings with practical next steps.

中文简介正在准备中。当前显示原文说明。

jaktestowac/awesome-copilot-for-testers1182026年8月27日 更新

查看 jaktestowac 的全部技能

报告此技能的问题