Skip to main content

🧑 Human-Like AI Tester

PyPI version Python 3.9+ License: MIT CI

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-5678 in digit-only fields, $1,500.00 in 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 int 25, 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/2026 is 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)

Source distribution for human-like-ai-tester 0.2.0
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)

Table of built distributions (wheels) for human-like-ai-tester 0.2.0
File Interpreter ABI Platform Actions
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.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page