Hi, I'm Osman.

Senior QA Engineer specializing in modern test automation, secure delivery pipelines, and AI-driven quality engineering. ISTQB CT-AI and Advanced Test Automation Engineer certified, with hands-on experience across API and UI automation, service validation, migration testing, and AI-assisted testing strategies that boost release speed and confidence.

About me

I am an ISTQB-certified QA Engineer based in High Wycombe, UK, with a proven record across mainframe-integrated airline systems, web security, avionics, and GIS platforms. I design and scale end-to-end automation to reduce manual effort, improve collaboration, and safeguard releases across complex enterprise environments.

My recent work includes API and UI automation, large-scale migration validation, SOAP and XML testing, schema verification, secure internal tooling, and business-critical release support. I am also an early adopter of AI testing and have contributed to QA-wide learning initiatives and AI road maps. I combine a Master's degree in Software Engineering with strong hands-on delivery experience.

6+

Years of experience

15+

Projects delivered

30+

Technologies used

Right to Work in the UK

Core Capabilities

Building automation frameworks from scratch
Designing scalable UI and API test architecture
Creating reusable utilities and maintainable test structures
Leading regression, migration, and release validation efforts
Validating complex SOAP, REST, XML/XSD, and NDC message flows
Developing internal QA tools with Python and Flask
Integrating automation into CI/CD pipelines
Applying AI-assisted testing approaches in a practical and responsible way

Technical Skills Matrix

Experience Legend: E = Emirates, I = Invicti, H = Havelsan, S = SimBT, Z = Zinek

Skill E I H S Z
Programming Languages & Frameworks
Python✓✓
Java✓✓✓✓
TypeScript / JavaScript✓✓✓
HTML / CSS✓✓✓
Flask✓
Playwright✓✓✓
Selenium / TestCafe✓✓✓
Cypress✓
WebdriverIO✓
BDD / Cucumber / Gherkin✓✓✓
API / Data Validation
SOAP✓✓
REST / REST APIs✓✓✓✓
GraphQL✓
XML / XSD✓✓
SQL✓✓✓✓
MySQL✓✓✓
REST Assured✓✓
Postman✓✓✓✓
Fiddler✓
Swagger / OpenAPI✓
CI/CD & DevOps
Git✓✓✓
GitHub✓✓✓✓✓
Bitbucket✓✓
GitLab CI✓✓
Jenkins✓✓✓
TeamCity✓
Docker✓✓
Linux✓✓
AWS✓✓
Azure Foundry✓
Datadog✓
Skill E I H S Z
Quality Engineering
Software Testing✓✓✓✓✓
Quality Assurance✓✓✓✓✓
Test Strategy✓✓✓✓✓
Test Planning / Procedures✓✓✓✓✓
Manual Testing✓✓✓✓✓
Regression Testing✓✓✓✓✓
UI Automation✓✓✓✓
API Testing✓✓✓
Agile Testing✓✓✓
Risk-Based Testing✓✓✓✓✓
Migration Testing✓✓✓✓✓
Defect Triage✓✓✓✓✓
Incident Escalation✓✓✓✓✓
Test-Driven Development✓✓
Performance Testing (JMeter)✓✓
Accessibility Testing (WCAG)✓
Contract Testing (Pact)✓✓
Shift-Left Testing✓✓
Exploratory Testing✓✓
Test Data Management✓✓✓
Security / Innovation
Vulnerability Remediation✓✓
Secure File Handling✓
AI-assisted Testing PoCs✓
LLM-based Test Ideation✓✓
ISTQB CT-AI Knowledge✓
AI Testing✓✓
Generative AI / LLM Testing✓
Prompt Engineering✓
LLM Evaluation✓
RAG✓
MCP✓
Copilot✓
GitLab Duo✓
Claude Code✓
Skill E I H S Z
Domain Expertise
Airline / NDC Flows✓
Revenue Management✓
Dynamic Pricing✓
Mainframe Apps✓
SSO / RBAC✓✓
Web Application Security✓
Avionics Systems✓✓
GIS Systems✓
Frameworks / Internal Tools
Python / Flask Batch Comparison Tool✓
Automation Framework Design✓✓✓✓
Parallel Execution✓✓✓✓
Web Scraping✓✓✓✓
XML Rule Validation✓✓
Schema / Contract Validation✓✓
Tools / Collaboration
JIRA✓✓✓✓✓
Confluence✓✓✓✓✓
Reporting / Metrics✓✓✓✓✓
Business / Vendor Collaboration✓✓✓✓✓
Allure Reporting✓
Ways of Working
Agile / Scrum / Kanban✓✓✓✓
Waterfall✓
Cross-functional Collaboration✓✓✓✓✓
Stakeholder Communication✓✓✓✓✓

My Timeline

2024 – 2026

Senior QA Engineer

Emirates Airlines, Dubai

May 2024 – Aug 2026

End-to-end API & UI automation for airline systems — dynamic pricing, NDC, migration testing, Python/Flask tooling, and AI-assisted QA initiatives.

ISTQB Certified Tester – AI Testing

CT-AI

Aug 2025

Proficiency in testing AI/ML systems — strategy, data quality, risk, ethics, and tool support.

2021 – 2024

QA Automation Engineer

Invicti Security, Remote

Dec 2021 – Feb 2024

Expanded automation for SSO, RBAC, Risk Scoring. Resolved 200+ issues, managed regression suites and nightly runs.

M.Sc. Software Engineering

Hacettepe University

2020 – 2022

ISTQB Advanced – Test Automation Engineer

CTAL-TAE

May 2023

Focused on automation engineering principles, test architecture, framework design, and sustainable practices.

Gamified Agile Scrum Training

ACM Agile

Mar 2022

Gherkin for Turkish-Speaking Customers

M.Sc. Project

Dec 2021

Research on Gherkin language to improve collaboration in Turkish-speaking software teams.

2020 – 2021

Software Test Engineer

Havelsan, Ankara

Feb 2021 – Oct 2021

Managed avionics simulator environments, developed 50+ test plans, and resolved 100+ system anomalies.

ISTQB Foundation Level

CTFL

Sep 2021

Software Test Engineer

SimBT, Ankara

Dec 2020 – Feb 2021

Led white-box, black-box, automated, and regression tests for GIS projects with tight delivery timelines.

System Test Engineer

Zinek, Ankara

Feb 2020 – Dec 2020

Defined system-level test requirements for major avionics projects including IFF, COMM, and ILS. Resolved issues across 100+ test and field aircraft.

2014 – 2019

B.Sc. Electrical-Electronics Eng.

TOBB University

2014 – 2019

Licenses & Certifications

Certified Tester AI Testing (CT-AI) V1.0

ISTQB® — International Software Testing Qualifications Board

Issued Aug 2025

Credential ID 25-CT-AI-265257-12

AI TestingDeep LearningML SystemsTest StrategyData QualityRisk & EthicsTool SupportNeural NetworksAI Test Design

Advanced Level Test Automation Engineer (CTAL-TAE)

ISTQB® — International Software Testing Qualifications Board

Issued May 2023

Credential ID 0523 CTAL 1019

Agile TestingAgile MethodsTest ArchitectureFramework DesignCI/CDSeleniumPlaywrightBDDTest ReportingParallel ExecutionMaintainabilityAutomation StrategyRisk-Based Testing

PractiTest Certified User

PractiTest — Test Management

Issued Jun 2022

Agile TestingTest PlanningTest ManagementReportingDefect Tracking

API Automation Testing with Python & BDD Framework

Udemy

Issued Dec 2022

Credential ID UC-ddb2e318-73fd-4785-a565-b1d726836421

Agile TestingGitLabPythonBDDBehaveREST APIPostmanJSONGherkin

Certificate of Participation — Gamified Agile Scrum Training

ACM Agile Türkiye

Issued Mar 2022

Agile TestingAgile MethodsScrumKanban

ISTQB Foundation Level (CTFL)

ISTQB® — International Software Testing Qualifications Board

Issued Sep 2021

Agile TestingAgile MethodsTest PlanningTest DesignTest ExecutionDefect ManagementRisk-Based TestingStatic TestingBlack-BoxWhite-BoxTest LevelsTest TypesTest Tools

Selenium WebDriver with Java

Udemy

Issued May 2021

Credential ID UC-a66c035a-b362-4982-9653-a1d0669728a7

Postman APIGitSeleniumJavaTestNGMavenPage Object ModelCSS SelectorsXPath

Complete Node.js Developer Course (3rd Edition)

Udemy

Issued Sep 2020

Node.jsExpressMongoDBREST APIJavaScript

My Projects

Things I build outside work. Each one ships with its own test suite.

PromptFixer window, version 0.4.0 beside the name and a 'What's new' link at the right end of the top bar, beside Library. Left: the prompt 'explain how machine learning works' scored 42 out of 100 with 3 issues, rewritten by the built-in Qwen3 4B model on the GPU. Right: a row reporting 2.3 GB of models on disk, 338.6 GB free and the model loaded in memory, with buttons to release it or delete it; below that the rewrite scored 93, up 51, with a summary of what changed and per-category bars for clarity, specificity, context, format and structure. Under them a marking bar offers 'Keep it — I loved it' and 'Change it — I didn't like it', counts 1 kept and 1 to change, and has a 'Fix again with my marks' button. In the rewritten prompt, the sentence that names the audience and asks for bullet points is highlighted green as kept, and the sentence that caps the length at 200 words is highlighted red, to be changed.

PromptFixer

lint · score · rewrite

Lint, score and rewrite LLM prompts. A desktop app for Windows and macOS with a built-in local model; cloud providers optional.

I built it with Claude Code, for personal use: fixing a prompt before I send it means fewer wasted tokens and a better first answer.

  • Scores a prompt instantly against ~30 prompt-engineering rules.
  • Rewrites it with a local model (Qwen3-4B via node-llama-cpp). Runs offline; nothing you type leaves the machine.
  • Re-scores the rewrite and shows a word-level diff with a change log for every edit.
  • Select any passage of the rewrite, mark it Keep it or Change it, and fix again. The model revises its own rewrite instead of starting over, and a guard checks that what you kept came back word for word.
  • The rewrite appears as the model writes it instead of a spinner, a line names which wait you are in, and the model hands its memory back when it sits idle. “Nothing you type leaves the machine” stopped being a claim and became a test that fails the build if the app opens a connection to anything but this machine.
  • New in 0.4.0: a website with the latest download, its checksum and the notes of every release, rebuilt from the release itself whenever one is published; the app’s top bar links to it. A link, not an update check: the app never fetches the site, and that test still runs on every push.
  • Since October 2026 also for macOS: disk images for Apple Silicon, where the model runs on the GPU through Metal, and for Intel Macs, built from the same 0.4.0 sources and attached to the same release.
ElectronReactTypeScriptViteNode.js / Expressnode-llama-cppPlaywrightElastishot

ATDD: 114 Gherkin scenarios, 104 of them automated with Playwright, plus 308 unit and component tests. The interface is checked against approved screenshots with Elastishot.

Download for Windows

Version 0.4.0

Windows 10 / 11, 64-bit

339 MiB installer (355,615,264 bytes). The 2.5 GB language model downloads on first run; after that it works offline.

Released

SHA-256, Windows A8748C36186D3B4FF0D16E81AB7E4044AB481CAAB1ADA5FF547685893B1FF566

Verify the file you downloaded (PowerShell):

Get-FileHash .\PromptFixer-0.4.0-win-x64.exe -Algorithm SHA256

Unsigned installer. I have not bought a code-signing certificate, so on first run Windows SmartScreen shows “Windows protected your PC”. Click More info, then Run anyway — but only after the SHA-256 above matches the file you downloaded. The checksum proves the file is the one I built; it does not mean Windows vouches for it.

Download for macOS

macOS 13 or later. Two images; pick the one for your Mac (Apple menu → About This Mac).

138.9 MiB Apple Silicon image (145,626,827 bytes); 144.1 MiB Intel image (151,112,911 bytes). The same 2.5 GB model downloads on first run; on Apple Silicon it runs on the GPU through Metal, on an Intel Mac on the CPU.

Added to the 0.4.0 release on

SHA-256, Apple Silicon 5950705C72D5E19E6B2ABD7D8D334DB50DABCEE3C595B3248488303C814C17FA

SHA-256, Intel 6A5D3963EE807391BE127626BEE786BDDF24A403A65DE8546BF4FEB4E7EA4B0C

Verify the file you downloaded (Terminal):

shasum -a 256 ~/Downloads/PromptFixer-0.4.0-mac-arm64.dmg
shasum -a 256 ~/Downloads/PromptFixer-0.4.0-mac-x64.dmg

Not notarized. There is no Apple Developer ID behind it, so the app carries only an ad-hoc signature (the kind macOS needs before it will start anything on Apple Silicon at all) and the first launch is refused with “Apple could not verify PromptFixer is free of malware”. Click Done, open System Settings → Privacy & Security and press Open Anyway — once, and only after the SHA-256 above matches the file you downloaded.

An Elastishot pair report for the scenario 'release', marked Failed with similarity 95.6%, 2 added, 1 removed, 6 changed and 0 moved regions. Below the mode buttons Slider, Flip, Blink, Overlay and Diff, the slider viewer shows the same product page before and after a release: a green-tinted gap with a green outline marks the banner that was added at the top, and a version badge, a button label and a sparkline chart are outlined as changed regions.

Elastishot

align · diff · name the locator

Visual comparison for web UIs. It lines two screenshots up before it diffs them, so a banner or a collapsed section is one change instead of a page of red, and it names the DOM element behind every region.

I built it with Claude Code after one pixel-diff run too many that flagged everything. This site now runs it before every release (npm run visual, every section, both themes, two widths).

  • Feature alignment (ORB + RANSAC) recovers zoom, crop and shift; same-size captures are then aligned row by row, and side-by-side columns that move on their own get their own lanes, so a section that grew, collapsed or moved is one change, not a page of them.
  • Regions are added, removed, changed or moved, each attributed to a test id, role or CSS path from an element map recorded at capture time.
  • HTML report with a slider, flip, blink, overlay and diff viewer that keeps both sides lined up below an inserted or removed section, plus JSON, JUnit and exit codes for CI. Open source, MIT, no telemetry.
  • New in 0.2.0: a card whose picture is redrawn while its two columns grow by different amounts is reported column by column. That case used to come out as stripes of added and removed rows straight across the card, with text that had only moved marked as changed.
TypeScriptNode.jsopencv.js (WASM)PlaywrightWeb Componentsnode:test

ATDD: 30 Gherkin scenarios driving the built CLI, plus 224 unit, engine and browser tests. On its ground-truth lab: 43 of 43 planted changes found, 1 false positive.

Install from npm

Version 0.2.0

Node.js 20 or newer; Playwright's Chromium only for page captures

174 KiB package (178,401 bytes). The 13 MB opencv.js WebAssembly build installs as a dependency; no native compile step.

Released

SHA-256 26B3928A60EF5087910A1885F56B2BFBE04D4FD4DFCF87A7878DBE03C949A124

Verify the tarball npm serves (PowerShell):

npm pack elastishot@0.2.0
Get-FileHash .\elastishot-0.2.0.tgz -Algorithm SHA256

Install with npm install -D elastishot. The digest above is the registry tarball's, and the GitHub release carries the same file with its SHA256SUMS. Since 0.1.1 every release is published from GitHub Actions with npm provenance, so the package page shows which commit and workflow built it.

Install as a Claude Code plugin

Elastishot is also a Claude Code plugin, from my own marketplace repo. It adds two skills, elastishot:compare-screenshots and elastishot:visual-baselines, which run the same CLI through npx, so there is no elastishot dependency to add — page captures still need Playwright's Chromium, exactly as above.

Add the marketplace, then install (in Claude Code):

/plugin marketplace add Osman19702/claude-plugins
/plugin install elastishot@osman-plugins

Then restart Claude Code, or run /reload-plugins, before the two skills appear.

Contact Me

Location

: High Wycombe, UK

Email

:

Mobile Number

:

Right to Work

: UK

Languages

: Turkish, English