Test any application type β Web, CLI, Desktop GUI, Mobile, APIs, Conversational AI, File Ingestion β like an authentic human being: genuine typos, formatting quirks, rage-clicks, non-linear navigation, and mental-model mistakes that uncover real-world friction, silent failures, and validation flaws.
Zero runtime dependencies. Eight psychographic personas. One merged report.
pip install human-like-ai-tester
human-tester demo # self-contained mock app with intentional UX flawsPrefer a tour? bash examples/quickstart.sh walks the whole engine in ~2 minutes,
and examples/python_api_example.py shows library usage.
Traditional testing verifies software used flawlessly. Real users:
- Don't read instructions β they skim headers and miss below-the-fold fields.
- Make physical typos β adjacent keys, omitted letters, finger bounces (
teh). - Format idiosyncratically β
(555) 234-5678in digit-only fields,$1,500.00in numeric price fields. - Get impatient β rage-clicking buttons after ~1.5s of silence, risking double submissions.
- Navigate non-linearly β Back buttons, Escape, backdrop clicks, mid-flow abandonment.
- Think differently than your schema β string
"25"instead of int25, unquoted CLI paths with spaces, mind-changing mid-sentence in chatbots. - Trust autocorrect and voice dictation β silently rewritten words β and read
dates/numbers through their own locale (
12/05/2026is Dec 5 in the US, 12 May in Europe).
pip install human-like-ai-tester # from PyPI
# or from source:
git clone <your-fork> && cd human-like-ai-tester
pip install -e .[dev] # dev extras: ruff, build, twine, coverageRequires Python 3.9+. The runtime package has zero mandatory dependencies.
human-tester personas # list the 8 simulation personas
human-tester simulate "Lets meet tomorrow" --voice --autocorrect --phonetic
human-tester test-web http://localhost:3000 --form-endpoint /submit
human-tester audit http://localhost:3000 --form-endpoint /submit \
--endpoint /api/orders -o audit.md --json-output audit.json| Paradigm | Targets | Human behaviors simulated |
|---|---|---|
| Web & SPAs | Portals, eCommerce, SaaS | Double-clicks on slow submits, phone/address quirks, state loss on errors, Back-button reliance |
| CLI & Terminal | Shell tools, dev CLIs | Flag typos (--hlpe), unquoted spaces, bare Enter, colloquial answers (yeah) |
| Desktop GUI | Electron, Qt, native | Misclicks from button proximity, resize breakage, cancelled dialogs |
| Mobile & Touch | iOS, Android, responsive | Thumb reach, keyboard-covered submits, rage-taps, orientation flips |
| APIs & Services | REST, GraphQL, webhooks | String-vs-int types, trailing slashes, missing Bearer , extra fields |
| Conversational AI | Chatbots, agents, voice | Vague complaints, mid-sentence reversals, slang, premature sends |
| Data Ingestion | CSV/TSV/JSON pipelines | Excel BOM, mixed delimiters, blank rows, unescaped commas |
Cross-cutting every paradigm: Accessibility (keyboard-only, screen reader) and i18n/Locale (date/decimal ambiguity, accented/CJK/RTL text).
| ID | Persona | Signature behavior |
|---|---|---|
rushed_commuter |
Alex, Rushed Commuter | 28% typos, 1.8s patience, rage-taps |
tech_novice |
Margaret, Senior / Tech Novice | 65% formatting errors, Back-button reliant |
cynical_power_user |
David, Power User | 110 WPM keyboard-only, boundary values |
fatigued_worker |
Sam, Fatigued Data Clerk | Transpositions, below-the-fold misses |
curious_explorer |
Elena, Explorer | Emojis, accented chars, window resizing |
accessibility_navigator |
Priya, A11y Navigator | Keyboard + screen reader, focus traps |
non_native_speaker |
Mateo, ESL User | Locale confusion, phonetic spelling |
impatient_teen |
Zoe, Impatient Teen | Autocorrect reliance, 1.0s patience, back-swipes |
| Command | Purpose |
|---|---|
personas |
List personas |
simulate TEXT |
Humanize text (--voice --autocorrect --phonetic --clipboard) |
test-web URL |
Page load, form formatting, double-submit, state loss |
test-cli CMD |
Help discovery, flag typos, paths, Ctrl-C, whitespace |
test-api URL |
Slashes, type coercion, booleans, pagination, webhooks, GraphQL |
test-chat |
Generate human/voice prompts, evaluate assistant replies |
test-desktop APP |
Button proximity, resize clipping, dialogs, shortcuts, drag-drop |
test-mobile APP |
Thumb reach, keyboard overlap, rotation, deep links, permissions |
generate-file |
Messy CSV/TSV/JSON fixtures for ingestion tests |
validate-file PATH |
Audit a real CSV for ingestion traps (exit 2 if unreadable) |
audit URL |
Multi-persona web+API sweep, one deduplicated report (-o, --json-output) |
demo |
Live end-to-end run against the built-in flawed mock app |
Every command supports --persona ID (and --help). Run human-tester --version
to print the version.
from human_tester import TypoEngine, get_persona
persona = get_persona("rushed_commuter")
typos = TypoEngine(seed=42)
print(typos.introduce_typos("Lets plan a meeting", error_rate=persona.typo_rate))
print(typos.format_phone_human_style("5551234567"))See examples/python_api_example.py for the full
tour (personas, cognition, chat vectors, file audits, reports), and
examples/sample_audit_report.md for an annotated report.
SKILL.md is the agent-skill definition: behavioral protocol, severity rubric,
frustration guide, and session workflow for AI agents that test as humans.
Keep it in sync with CLI changes.
human-like-ai-tester/
βββ SKILL.md # Agent skill definition (behavioral protocol)
βββ README.md # This file
βββ pyproject.toml # Package metadata (version lives in human_tester/__init__.py)
βββ LICENSE # MIT
βββ CONTRIBUTING.md # Setup, checks, PR rules
βββ CHANGELOG.md # Release history
βββ human_tester/
β βββ __init__.py # Public API + __version__
β βββ __main__.py # `python -m human_tester` shortcut
β βββ cli.py # 12-command CLI
β βββ personas.py # 8 psychographic profiles
β βββ typo_engine.py # Typos, autocorrect, voice, phonetic, locale formats
β βββ cognitive_engine.py # Reading, hesitation, frustration, rage clicks
β βββ error_patterns.py # Formatting variants + a11y/i18n/mobile/API vectors
β βββ reporter.py # Markdown + JSON audit reports
β βββ agent_prompts.py # LLM prompts for agentic human testing
β βββ mock_target_app.py # Flawed demo app for `demo`
β βββ paradigms/ # web, cli, api, chat, file, desktop, mobile testers
βββ examples/
β βββ quickstart.sh # 2-minute guided tour
β βββ python_api_example.py # Library usage (network-free)
β βββ sample_audit_report.md
β βββ manual_desktop_mobile_script.md
βββ tests/ # unittest suite (core, enrichment, CLI stability)
βββ .github/ # CI (3.9β3.13, ruff, build) + issue/PR templates
python -m unittest discover -s tests # 71 tests, network-free, ~10s
python -m ruff check human_tester tests # lint gateContributions welcome β new personas, behaviors, and paradigms especially.
Please read CONTRIBUTING.md first. The short version:
keep the CLI backward compatible, keep runtime dependencies at zero, and add a
test with every behavior change.
MIT β see LICENSE.