# First Test URL: /first-test Learn how to install OpenHTF and create your first test script with step-by-step instructions to set up a simple test phase and execute it. Let's create a first test script in under five minutes. OpenHTF requires Python 3.10 or newer. Install it with pip inside a virtual environment: That is the whole install: the package pulls its own dependencies (`tornado`, `protobuf`, `PyYAML`, ...). Optional extras for USB and serial plugs are covered on the Installation page. Create a `main.py` file in your virtual environment and copy this code. Run it with: This is a very simple OpenHTF test, running through the command line without the Operator UI yet. You'll learn to connect instruments, add measurements, and more in the next sections. Most real tests validate a value against a limit. Add a measurement with `@htf.measures()`: If you change the voltage value to `10.0`, the test will fail because the value is outside the 3.0–5.0 range. Add an output callback to write the test record to a JSON file: After running, open `test_result.json` to see the complete test record: DUT ID, outcome, phase results, measurements, and timing. The JSON format reference walks through every field. This file is the hand-off point to any database or dashboard. TofuPilot's `upload()` callback sends the same record to a hosted workspace in one line — see Manufacturing Test Analytics. From here, explore the core features: Phases — organize your test into steps Measurements — validate numeric, string, and boolean values Plugs — abstract hardware interactions into reusable classes Operator UI — add a web interface for production use Tutorial — a full resistor test with a simulated multimeter and power supply Examples — every upstream example, runnable and explained