sfkafreen.com / access
Afreen Ahmed SFK
Enter your access password to view this portfolio.
QE · Portfolio Console snapshot as of 25 Aug 2026

Quality Engineering Leader · AI-Native QE

Afreen Ahmed SFK

Twelve years in quality engineering across SaaS, fintech and developer tools. I lead the QE function for BrowserStack's product portfolio, and I build the agent-driven systems that now run most of its recurring quality work.

linkedin.com/in/afreen-ahmed-sfk afreensfk@gmail.com Hyderabad, India · IST

run configuration
runner
Afreen Ahmed SFK
role
Engineering Manager, Quality Engineering
scope
4 product lines · 33 developers · 21 QE & SDET engineers
org programme
56 engineering teams
experience
12 years · SaaS · fintech · developer tools
tags
@qe-strategy @ai-native @org-design @release-governance @defect-reduction
status
green build, five consecutive declining months
quality.posture snapshot · 25 Aug 2026
Customer-reported defects −59% 5 consecutive declining months · indexed
Automation coverage +8 pts rising 6 months · first flat month flagged
Regression execution 53 min was 2.5 hrs  ·  −65% stability 88% → 99%
Median time to resolve 5.3 d was 8.7 d  ·  −39% P0–P2, customer-reported
Release cadence 2 slots / day was 1 slot, frequently deferred — both now close
External defect volume190 → 116▼ 38.9%

Externally-reported production defects across matched 79-day windows, before and after a targeted coverage programme.

I do not quote this figure. I report −30% instead — the more conservative number from a stricter cohort. Category hygiene improved across this same period, so the looser query picks up more untagged tickets in the earlier window and flatters the delta.

cohort · type=Ticket · P0–P2 · external source only · bug-bash excluded · duplicates and deleted excluded · IST · half-open date bounds

Median time to resolve8.7 d → 5.3 d▼ 39.2%

Time from ticket creation to resolution on the same cohort. Unlike volume, this measure is immune to cohort-boundary disputes — it is a property of each ticket rather than of where the window is drawn.

n = 190 / 116 · 189 and 116 resolved respectively · mean 10.5 d → 6.4 d · p90 19.6 d → 13.7 d

Customer-facing defect exposurecompound▼ ~57%

Fewer defects escaping, multiplied by faster resolution of those that did — total time a customer spent with an open defect outstanding against the product.

derived · 0.70 (conservative volume) × 0.61 (resolution time) = 0.43

Recurring analysis displaced~58 hrs / week1.5 FTE

Manual work now running on scheduled agents: daily triage, weekly categorisation, regression analysis, deploy-failure reporting. Regression analysis alone had been consuming close to a full engineer-day per cycle.

bottom-up · task frequency × pre-automation handling time · 48 working weeks · 1,800 productive hours per FTE

New verification demand absorbed~15 PRs / day~3 FTE

Left-shifting test authoring to developers created coverage analysis on every pull request — work that had not existed before and was never staffed. Defects leaked through that gap. Agents now cover every pull request rather than a sampled subset.

counterfactual · cost of performing newly-required work manually, not time previously spent

I run quality engineering for four customer-facing product lines — test management, the live browser and device testing products, and live migration — supporting 33 developers across three product groups, on web, mobile and API surfaces. Beyond my own teams, I author the organisation-wide defect leakage programme that every engineering team's quality plan reports into.

org.programme 56 teams · running

The work that defines my current scope

This one sits above my own teams. It is the shared baseline, scope definition and rollup that every engineering team's quality plan reports into — and the piece of work I'd point a hiring manager at first.

Organisation-wide defect leakage programme

@measurement@org-design@governance 56 engineering teams · authored and running running

Problem

The organisation had committed to halving externally-reported defects against a baseline year. Teams were reporting against it, but the underlying data could not support the claim: defect source was not a mandatory field everywhere, so some teams' external counts were not low but simply unmeasured. Inconsistent work-category tagging was letting feature requests inflate the bug numbers.

What I did

Wrote the umbrella programme: scope rules for what counts as leakage and what does not, a tiering model weighting effort to the six teams holding most of the volume, and a governance cadence separating the authoritative forum from the lagging tracker.

Then I put a decision to leadership recommending we re-baseline a target already communicated — because the baseline and the current data were measured differently, and hitting the number would not have demonstrated what it was meant to demonstrate.

Result

62% of defect volume concentrated into six teams and prioritised accordingly

The programme is now the definition layer that per-team quality plans roll up into. Measurement integrity became an explicit phase with its own exit criteria, rather than a caveat discovered at year end.

method.thesis control-group evidence

The control line is the argument

Most quality improvements are indistinguishable from detection getting worse. If externally-reported defects fall, it can mean the product improved — or it can mean the same bugs are now being caught somewhere else, or not filed at all.

The way to tell is the control. When I ran a targeted coverage programme against a product's highest-leakage modules, externally-reported defects fell sharply while internal detection stayed flat. The flat internal line is what makes the external fall a quality result rather than a reporting artifact.

100 70 94 EXTERNAL INTERNAL BEFORE AFTER

Indexed to 100 at programme start. Matched 79-day windows, P0–P2 severity, bug-bash tickets excluded from both ends. External −30%, internal −6%.

I hold the same standard against my own results. That programme rolled out gradually rather than on a single date, so I rejected the binary before/after read of it — averaged across a ramp, it showed almost nothing. Measured as a monthly series, the separation between targeted and untargeted modules was unambiguous. The weaker method would have flattered the outcome, and it would still have been the wrong method.

programmes 3 records

Work I'd want to be judged on

Targeted coverage against production escapes

@coverage@defect-reduction measured over 5 months sustained

Problem

Customer-reported defects were concentrated in a handful of modules, but coverage was being added evenly across the suite — so effort was not landing where the escapes actually were.

What I did

Identified the seven modules carrying most external leakage and staged coverage into them specifically, tracking each as its own monthly series against the untargeted remainder as a control.

Coverage went in at the layer the defect actually lived at rather than defaulting to end-to-end tests, and each module was reviewed monthly so a rebound was caught as a missed failure mode rather than noise.

Result

−59% five consecutive declining months; the only team of 56 with an unbroken decline

Targeted modules fell monotonically every month. Untargeted modules stayed flat and rose in the final month — which is what makes the result attributable to the intervention.

Regression runtime and stability sprint

@velocity@release-governance 53 pull requests in 7 days delivered

Problem

A full regression run took roughly two and a half hours and sat at around 88% stability. Analysing a single run consumed an entire engineer-day and frequently spilled past it, so the cycle deferred rather than closed. Regression had stopped being a gate and become a queue.

What I did

Ran it as a concentrated sprint rather than background maintenance: profiled the slowest specs, attacked runtime and flakiness together, and shipped 53 pull requests across a single week.

Alongside it I architected the multi-phase migration of the shared test infrastructure from WebdriverIO to Playwright, wired into CI through Jenkins and GitHub Actions.

Result

2.5 hrs → 53 min full regression execution; worst individual specs 60–90% faster 88% → 99% UI regression stability 1 → 2 regression slots per day, both closing — previously one slot that frequently deferred

Regression cycle time improved 50% and time-to-market 25% against tracked KPIs. The work was recognised at Director level.

Post-acquisition QE integration

@delivery@cross-org due diligence through to shipped release shipped

Problem

An acquired product had to be integrated across authentication, plan creation, access management, sync APIs and the commercial workflow — each owned by a different internal team, on a shared release date, with no common release process between two engineering cultures.

What I did

Owned QA due diligence and the QE integration itself: aligned automation frameworks, CI pipelines and testing practices across the acquired team, defined the release and regression process, and ran severity-gated sign-off separating release blockers from defects product had explicitly accepted for later.

Result

Shipped no major production incidents on release; delivery velocity maintained through integration

Every release-blocking defect closed before ship, with deferred items agreed with product rather than absorbed silently. I ran the cross-team retrospective afterwards and turned it into that product's standing release process.

business.value 5 outcomes

What the quality metrics actually bought

Coverage percentages and defect counts are inputs. They only matter for what they let the business do differently, so this is the translation.

Twice the release decisions, taken inside the day

Regression now runs twice a day with both slots closing — previously one slot that frequently deferred (detail under regression sprint, below). That's double the release decisions made inside the working day, and most of where the 25% time-to-market improvement came from: the difference between quality being a gate teams route around and one they ship through.

Customer trust as a retained asset

Fewer defects escaping, resolved faster once they did — compounding to roughly 57% less total customer-facing defect exposure (detail under quality posture, above).

I put that evidence in front of enterprise account leadership directly through account-level quality reporting — which turns quality from a support cost into something usable in a renewal conversation.

A new workload absorbed without hiring for it

Two things landed on the function without headcount: a verification requirement that hadn't existed before — PR-level coverage analysis — which would have cost roughly three engineers to staff by hand, and 1.5 engineers' worth of recurring analysis that used to be done manually (detail under AI-native, below). Agents absorbed both; the function gave back the old load and took on the new one, without headcount for either.

Acquisition value protected

Post-acquisition QE integration shipped without a major production incident and without slowing delivery. Integration drag is the most common way acquisition value leaks after the deal closes; keeping velocity through it is the outcome that mattered, not the test count.

Risk made priceable

Where scope outran the coverage available, I converted the shortfall into an explicit risk accepted at leadership level with named consequences, rather than an invisible liability sitting on my team. Quality debt that nobody has agreed to is the kind that surfaces as an escalation.

ai.native 18+ agents · 8 systems

I rebuilt the function around agents

The recurring analysis load in a QE org this size — triage, categorisation, coverage review, release reporting — is enough to consume the function. Rather than staffing it, I built it. What began as prompts is now a source-controlled suite of agents and skills that runs the work on a schedule and publishes without me in the loop.

Agents and skills in the suite18+source-controlled
Coverage on modules held to be un-automatable0→80%canvas interaction · Jetpack Compose
Systems integrated through MCP5issue tracking · wiki · code · chat · test platform

The coverage number is the one I'd point at. Canvas-based device interaction and Jetpack Compose surfaces had resisted automation for years — they were accepted as manual-only. Agent-generated coverage took them from nothing to 80%.

Production bug categorisationClassifies each day's production tickets by source, severity and the component that actually broke, and posts the matrix with its reasoning.
Weekly defect analysisIdentifies regression families and priority drift across the week, then publishes the write-up to the team wiki.
PR coverage analysisChecks what a change touches against what the suite actually asserts, and flags the gap before merge.
Coverage gap analysisTriages production bugs against existing automation and maps each gap to its right layer — unit, API, end-to-end or visual.
Test suite auditReviews new tests for layer placement and assertion strength, and correlates where defects happen against where tests live.
Regression triageGathers environment failures and blockers into a weekly table for the engineering leads.
Release gate automationApplies the go-live status check across pull requests once quality sign-off is given.
Management copilotTracks allocations, ETAs and ageing blockers across every team I own, with leave and capacity awareness.

scheduled execution  ·  qe-agents

$ crontab -l -u qe-agents

# m   h   dom mon dow    job
  0   9    *   *   1-5    qe triage --daily --classify source,severity,component
  0  10    *   *   1-5    qe pr-coverage --watch --gate 'every PR, not a sample'
  1  18    *   *     5    qe analyse --weekly --publish wiki --next-target
  6  19    *   *     5    qe rca --refresh --restamp-as-of
  0  21    *   *   1-5    qe healthcheck --verify-delivery  # silence = healthy

These run whether or not I have the week. That is the point — the recurring analysis now happens at a consistent standard, and my attention goes to the judgement calls instead of the assembly.

I also made API automation agents a mandatory prerequisite for feature release across the engineering org — the point at which this stopped being my tooling and became the way the organisation ships.

leadership 6 practices

How I build the function

My remit is the quality function rather than a team inside it: what gets measured, what gates a release, who is accountable, and what the organisation is allowed to call an improvement.

  • I build organisations, not headcount. Grew this function from five engineers to twenty-one across web, mobile and API surfaces, and promoted five internally — three to SDET, one to Senior SDET, one to Lead SDET. I own the QE roadmap and hiring, and designed the subsquad model the org now uses for AI development work.
  • I set policy at org level, not process at team level. I made API automation agents a mandatory prerequisite for feature release across the engineering organisation — not a recommendation my teams follow, a gate everyone ships through. The test design and automation playbook, the delivery quality framework, and an activity-level productivity model targeting a 50% efficiency lift are all adopted across product lines.
  • I own the definition, not just the number. Where a measure is contested, I write what it means — what counts as externally-reported, what is out of scope, what a baseline has to satisfy before anyone is held to it. That is why I was able to tell leadership a committed target had to be re-baselined rather than reported against.
  • I govern risk rather than escalate it. When scope outran coverage, I built the model — developer-to-QA ratio against named consequences, leakage, detection lag, a lost regression cycle — and put an explicit accept-or-reject in front of the decision-makers. Absorbing that quietly is how quality functions lose authority; forcing the choice is how they keep it.
  • I represent quality outside engineering. Weekly portfolio-level review at VP level, and account-level quality reporting that turns QE telemetry into something enterprise customer leadership can act on. I flag declines in my own metrics before I am asked — a quality function that only reports good news has stopped being one.
  • I grow the people who do the work. Recognition nominations written with the return spelled out, not the effort. An engagement survey turned into an owned action plan with named owners, where I took the items that were mine rather than routing them outward. When engineers move on, mentorship is what they write back to me about.
assertions 7 assertions · 7 passing

Rules I actually work by

Not values statements. Decision rules I've written down because each one came from getting something wrong first.

assertion run  ·  operating-principles.spec

$ qe lint --rules ./operating-principles.spec --reporter spec

  quality function · operating rules
     never infer health from a signal that can mask it
     permission bugs are never cosmetic
     classify by what broke, not where it surfaced
     an unvetted field is directional, never a target
     inventory coverage before prescribing more of it
     never trade edge coverage for a tidier suite
     disagree with the data, not the person

  7 passing (12 years)
  0 failing

# every rule was added after a failure.
# none has been removed.

Detail  ·  why each one exists

assert never infer health from a signal that can mask it

A service can return a perfectly healthy response code while the process behind it is dead. Only authoritative internal state counts as evidence — a probe that cannot distinguish “working” from “failing politely” is not a check.

assert permission bugs are never cosmetic

If an unauthorised user can see or do a restricted thing, that is security-adjacent regardless of how mild the ticket title sounds. It never gets downgraded because the summary reads like a UI issue.

assert classify by what broke, not where it surfaced

Bucketing defects by the screen they were noticed on produces a map of the interface, not a map of the fragility. The component that actually failed is the unit of analysis.

assert an unvetted field is directional, never a target

Metadata entered at triage and never audited can point you at a question. It cannot be the answer, and it must never become a goal — the moment it does, it gets gamed rather than fixed.

assert inventory coverage before prescribing more of it

Counting test files is not measuring coverage. A suite can be large, green, and still shaped wrong for where defects actually escape. Read what exists before recommending what to add.

assert never trade edge coverage for a tidier suite

Consolidation that quietly drops boundary conditions, pagination limits or count assertions is not optimisation. Nothing leaves a suite without the loss being named and agreed.

assert disagree with the data, not the person

When a narrative blamed my team for a defect spike, I re-analysed the underlying list and showed the actual distribution rather than accepting or resisting the framing. Being useful in that moment means bringing numbers, not a position.

point.of.view 4 positions

Where I think quality engineering goes next

I've now rebuilt one QE function around agents, at the point where that was still an argument rather than an assumption. This is what I took from it, and what I'd build against.

The function's product is truth, not testing

Most organisations cannot distinguish a genuine quality improvement from a detection failure, because nobody owns the definitions underneath the numbers. That is the gap I keep finding, and closing it is worth more than any individual test suite. A quality function whose numbers leadership can act on without caveats has more leverage than one that simply runs more tests.

Authoring is now cheap; deciding what to assert is not

Agents have collapsed the cost of writing tests — I've taken modules from zero to 80% coverage that had been written off as manual-only. The scarce skill has moved: choosing the right layer, writing assertions that would actually fail, and keeping boundary cases when a suite is consolidated. Without someone owning that shape, cheap authoring produces suites that are larger, slower and no better at catching anything.

The gate belongs in the pipeline, not in a stage

I made automation agents a mandatory prerequisite for feature release rather than a practice my teams followed. That is the direction of travel: quality enforced as a property of the pipeline, with people spending their judgement on risk and design instead of on execution and sign-off queues.

What I'd do in the first ninety days

Establish what the organisation is allowed to call an improvement before promising any. Fix source attribution and category hygiene, publish the definitions, and set the baseline on instrumentation that will still be comparable in a year. Reduction targets set on unreliable data are the reason quality programmes fail their own year-end review — and re-baselining midway is a harder conversation than doing it first.

first ninety days  ·  Jenkinsfile

pipeline {
  agent { label 'quality-engineering' }

  stages {
    stage('Measure') {
      // nothing is promised until the number can be trusted
      steps {
        fix 'source attribution'
        fix 'work-category hygiene'
        publish definitions: 'what counts as leakage'
      }
    }
    stage('Baseline') {
      when { expression { instrumentation.isComparable() } }
      steps { snapshot cohort: 'clean', asOf: today() }
    }
    stage('Reduce') {
      steps { target modules: highestLeakage(7), control: true }
    }
  }

  post {
    always  { report includeDeclines: true }
    failure { escalate silently: false }
  }
}
validation 5 citations · 12 awards

What other people have said about the work

Self-assessment only goes so far, so this is the record other people made. The pattern I'd point to is that it holds across four employers and twelve years, not one company's culture.

“In war-foot mode, you took TM regression execution time from ~2.5 hours down to 53 minutes, and merged 53 PRs in seven days. That's a serious lift, and the impact on our deployment velocity is going to be felt across the org. Thank you for the focus, the speed, and the quality bar you held while moving fast.”
Director of Quality EngineeringAward citation, April 2026

In their words

“Thank you for always being there to help whenever I'm blocked, for guiding me with patience, and for those amazing one-on-ones that go beyond work… Your constant support, encouragement, and honest feedback have truly helped me learn and grow. Grateful to have a manager like you who leads with both strength and heart.”
SDET, Manual Testing org — my teamAward citation, October 2025
“Your leadership, encouragement, and trust in me have been invaluable throughout this journey. Your ability to steer the team with confidence and provide the right direction has made all the difference.”
Senior SDET, Test Management — my teamAward citation, March 2025
“We appreciate your careful deep dive in compiling the bottoms-up QE OKR information for your org. Your efforts in stressing and elaborating on the effects and action items have given us great understanding of the problems we must solve together.”
Director of Quality EngineeringAward citation, January 2025
“We started building Testing Toolkit in March '25 and in July '25 we are GA. This has been a great five months of journey building it alongside you folks, and I want to thank each one of you for your hard work, support, and trust.”
Manager, Product DesignAward citation on a product reaching GA, July 2025

Quotations are verbatim from internal award citations, lightly trimmed for length and with internal system names removed. Authors are identified by their role rather than by name. Named references available on request.

track.record 4 roles · 12 years

Twelve years

Stage view

build CognizantTest Analyst 2014 – 2017  ·  2y 11m
harden Wells FargoSenior QA Analyst · regulated banking 2017 – 2019  ·  2y 5m
scale S&P GlobalSenior Manager, QE · cross-geo teams 2019 – 2022  ·  3y 2m
lead BrowserStackEngineering Manager, QE · multi-product 2022 – present  ·  3y 10m  ·  running

Detail

Oct 2022 —
present
3y 10m
Engineering Manager, Quality Engineering — Multi-Product Portfolio BrowserStack QE function for four customer-facing product lines, peak seven. Team grown from 5 to 21 across web, mobile and API surfaces, with five internal promotions. Own QE roadmap, hiring and release-risk governance; author the org-wide defect leakage programme and the QE RCA workstream feeding organisation-level goal definitions.
Sep 2019 —
Oct 2022
3y 2m
Senior Manager, Quality Engineering S&P Global Architected and scaled a centralised automation framework across Selenium, Java, API and database validation, lifting coverage past 80% on critical workflows. Built CI/CD pipelines that cut release defects 40%, and Python test-data frameworks that cut setup time 60%. Led cross-geo QE and SDET teams; authored a structured SDET curriculum and an in-sprint quality tracking matrix adopted org-wide.
Apr 2017 —
Aug 2019
2y 5m
Senior QA Analyst Wells Fargo India Solutions Led functional and regression testing for core banking applications under regulatory and risk compliance. Introduced Selenium and Java automation, and communicated quality health, risk and release recommendations to stakeholders.
May 2014 —
Mar 2017
2y 11m
Test Analyst Cognizant Technology Solutions Test plans, test cases and Selenium automation across enterprise releases; defect lifecycle management.
2009 — 2013
B.Tech, Computer Science SR Engineering College · JNTU Hyderabad
toolkit 3 stacks
leadershipQE org design & hiring · multi-product QE strategy · post-acquisition integration · executive stakeholder management · release-risk governance · quality KPIs & OKRs
ai · agent toolingClaude Code · Claude API · MCP server authoring · agentic workflow design · skill & prompt productisation · GitHub Copilot
frameworksPlaywright · WebdriverIO · Selenium · Percy
languagesJava · Python · JavaScript · Ruby
ci · pipelinesJenkins · GitHub Actions · CI/CD quality gates · release engineering
practicetest automation architecture · API & UI framework design · test strategy & coverage models · quality telemetry & dashboards