🧑 Human-Like AI Tester
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.
30-second demo
pip install human-like-ai-tester
human-tester demo # self-contained mock app with intentional UX flaws
Prefer a tour? bash examples/quickstart.sh walks the whole engine in ~2 minutes,
and examples/python_api_example.py shows library usage.
Why human-like testing?
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).
Install
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, coverage
Requires Python 3.9+. The runtime package has zero mandatory dependencies.
Quickstart
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
The 7 program paradigms
| 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).
Personas
| 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 |
CLI reference
| 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.
Python API
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.
Agent skill
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.
Project architecture
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
Tests
python -m unittest discover -s tests # 71 tests, network-free, ~10s
python -m ruff check human_tester tests # lint gate
Contributing
Contributions 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.
License
MIT — see LICENSE.
Metadata
Release files for human-like-ai-tester 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| human_like_ai_tester-0.2.0.tar.gz | 56.7 kB | Without provenance | Details for human_like_ai_tester-0.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| human_like_ai_tester-0.2.0-py3-none-any.whl | Python 3 | none | any | Details for human_like_ai_tester-0.2.0-py3-none-any.whl |
Total release size: 116.0 kB
Release files / human_like_ai_tester-0.2.0.tar.gz
| Download URL | human_like_ai_tester-0.2.0.tar.gz |
|---|---|
| Size | 56.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8af0dbcab0fc49f4035b5ab969795d879ba949cab93f2dfb02b41c52eca9bde9
|
|
BLAKE2b-256 checksum How to use checksums |
104be29e987cdc3839ce9746980d4c31c48e804433f14511c3e8b8a9a7e6f138
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / human_like_ai_tester-0.2.0-py3-none-any.whl
| Download URL | human_like_ai_tester-0.2.0-py3-none-any.whl |
|---|---|
| Size | 59.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
50c8142645d6a8014e7dd7574b32ae2dc29c57b056400333ea0e18c3880f83e8
|
|
BLAKE2b-256 checksum How to use checksums |
84b26921358655a5593086936ab34cba8312c133b856387f647ef17614ed045d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Security for human-like-ai-tester 0.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.