A test engineer job description that lists NI tools instead of the work filters out most of the people who could do the job. Written around the work (instruments, fixtures, limits, yield, operators, data), the same posting pulls from the whole Python pool, which is many times larger than the LabVIEW pool and skews younger. This guide gives you a full template, a line-by-line rewrite of the usual posting, and the salary ranges to attach.
Why the Usual Posting Fails
The typical posting reads like a licence inventory: LabVIEW, TestStand, CLD preferred, 5+ years NI ecosystem. It describes the tool the last engineer used, not the problem the next one has to solve.
That framing has two costs. It shrinks the candidate pool to people who already hold a shrinking credential, and it tells a strong Python engineer with instrument experience that they aren't wanted. Fewer universities teach LabVIEW in a core curriculum now and most teach Python, so the pool you're excluding is the one that's growing.
The fix is to describe the work. Every line under "must have" should be a task the person will do in their first quarter, not the name of a product they have to have used.
What the Job Actually Is
Strip the tools away and a manufacturing test engineer does six things.
| Area | What the work looks like |
|---|---|
| Instruments | Talk to a DMM, a power supply, a scope or a DAQ over SCPI, serial or USB. Read a datasheet, send a command, parse the reply. |
| Fixtures | Understand pogo pins, relay matrices, bed-of-nails and the mechanical side of getting a DUT connected. Debug an intermittent contact. |
| Limits | Turn a spec into a measurement with an upper and lower bound. Argue with design about what the bound should be. |
| Yield | Watch FPY per station and per phase. Find the phase that's failing good boards and the phase that's passing bad ones. |
| Operators | Write the sequence so an operator can run it with a barcode scanner and a screen, and so the failure message says what to do next. |
| Data | Make every run land somewhere the team can see it, with serial number, measurements and outcome, so a customer question about one unit takes a minute to answer. |
None of these say LabVIEW. All of them can be done in Python with PyVISA for the instruments, the TofuPilot Framework for the sequencer and operator UI, and TofuPilot for results. That's the stack the template below describes.
The Template
Copy this into your careers page and edit the bracketed parts. It's written for a mid-level hire; the levelling section further down says what to change for junior or senior.
job-description.md72 lines
# Test Engineer, Manufacturing (Python)[Company] builds [product] for [market]. Every unit we ship goes throughfunctional and end-of-line test on stations we design and run ourselves.You'll own those stations.## What you'll do- Build and maintain the test stations for [product line]: the sequence, the instrument drivers, the operator screens and the limits.- Talk to instruments over SCPI, serial and USB from Python (PyVISA), and write the plug that wraps each one so the rest of the team can reuse it.- Turn product specs into measurements with limits, and review limit changes with design and quality in a pull request.- Watch first pass yield per station and per phase in TofuPilot, find the phases that fail good units or pass bad ones, and fix them.- Work with the fixture designer on pogo pin maps, relay matrices and the mechanical side of connecting a DUT.- Write operator instructions into the sequence so a new operator can run a station on their first day.- Keep every station in Git as text, so anyone on the team can read, review and rebuild it.## Must haveYou should be able to do these on day one, in any language:- Read an instrument datasheet and get a measurement out of it over SCPI or serial.- Write Python that handles a hardware timeout without crashing the run.- Explain what a control limit is, what Cpk means, and why a limit that's too tight costs yield.- Use Git for day-to-day work: branch, commit, open a pull request, review someone else's.- Debug on the floor with an operator watching.## Nice to have- Experience with any test sequencer (TestStand, OpenHTF, pytest-based, in-house). We use the TofuPilot Framework and we'll teach it.- LabVIEW experience. Our older stations are LabVIEW and we're moving them to Python; you'd help.- Fixture design, PCB bring-up, or firmware experience.- A regulated environment ([ISO 13485 / AS9100 / IATF 16949]).## The stack- Python 3, PyVISA for instruments- TofuPilot Framework: stations are a procedure.yaml plus phases and plugs in Python, all in Git- TofuPilot for results: per-unit run history, FPY, Cpk, control charts- [Instrument list: Keysight DMMs, Rigol supplies, NI DAQ, ...]- [Fixture vendor], [ERP / MES if any]## Your first 90 days- Week 1: run every station as an operator, read every procedure.yaml, ship one small limit change through a pull request.- Month 1: own one station end to end, including its operator screens and its yield.- Month 2: build a new plug for an instrument we don't have a driver for, and use it on a station.- Month 3: rebuild one LabVIEW station in Python and run it side by side with the original for two weeks.## Practical- [Location / hybrid / on-site days], on the production floor [n] days a week- Reports to [test lead / engineering manager]- [Salary range], [benefits]- Interview: a 30-minute call, a short Python take-home with a mock instrument, a 45-minute conversation about itThe "must have" section is the part to protect when someone edits this later. Each line is a task with a visible result. If a candidate can do all five, they can learn your sequencer in a week.
Typical Posting Line vs Rewrite
The left column is what most postings say. The right column says the same thing as work.
| Typical LabVIEW posting line | Rewrite |
|---|---|
| 5+ years of LabVIEW development | Has built and maintained production test stations, in any language |
| CLD or CLA certification preferred | Can explain a station they built to someone who has never seen it |
| Expert in NI TestStand sequence development | Has written a test sequence with phases, limits and pass/fail logic |
| Experience with NI DAQ and PXI hardware | Has taken measurements from instruments over SCPI, serial or a DAQ API |
| Proficient in TDMS data logging | Makes every run land somewhere the team can query it by serial number |
| Develops custom reports in LabVIEW | Reads FPY and Cpk per phase and acts on them |
| Familiar with NI Vision or NI Motion | Has integrated a camera or a motion stage into a test, any vendor |
| Strong knowledge of the NI ecosystem | Reads a datasheet and gets the instrument talking in an afternoon |
Notice that the right column is harder to fake. "5+ years of LabVIEW" is a line on a CV; "has built a station" is something the take-home in test engineer interview: a Python take-home checks in an hour.
Where to Post and What to Say About LabVIEW Candidates
Post where Python engineers read. Your own careers page first, then the general engineering boards, the Python and hardware community boards, and the career centres of the engineering schools nearest your plant.
Local hardware and maker meetups reach people who already like instruments. A referral bonus for anyone who has done PCB bring-up pulls better than a recruiter for this role.
Say explicitly that LabVIEW candidates are welcome. Add a line like: "If your experience is in LabVIEW or TestStand, apply. You know the work, and Python is the easier half of the move."
They do reskill fast. The domain knowledge (limits, fixtures, yield, operators) is the hard part and they already have it, and reskill a LabVIEW developer to Python is the plan for their first month.
Don't post the LabVIEW version of the job "just in case" alongside this one. It signals that the Python posting is the second choice. Run one posting.
For the skills to screen against, use Python skills checklist for test engineers, and for what happens after the offer, onboard a test engineer in one week.
Levelling and Salary Ranges
Typical 2026 ranges for the US and Western Europe, fully loaded costs excluded. They're wide because the role is priced very differently across industries and regions.
| Level | What they own | US, base | Western Europe, base |
|---|---|---|---|
| Junior (0 to 2 years) | One station, with review | $70,000 to $95,000 | EUR 50,000 to 68,000 |
| Mid (2 to 6 years) | A line, including limits and yield | $90,000 to $130,000 | EUR 65,000 to 92,000 |
| Senior (6+ years) | All stations, the fixture roadmap, the migration | $120,000 to $165,000 | EUR 85,000 to 125,000 |
What moves a candidate within a range: regulated industry (medical, aerospace, automotive pay at the top), region (major US metros and Switzerland at the top), on-call or shift coverage, and fixture or firmware experience on top of the test work.
Two things to know when you set the number. A LabVIEW or TestStand developer of equal seniority typically costs well above these ranges, because the pool is small and skews senior. And the Python range buys you someone the rest of your engineering team can review and be reviewed by, which the LabVIEW premium doesn't.
For a junior hire, cut the "must have" list to the first three items and move Git to "we'll teach". For a senior hire, add "has migrated a line from one sequencer to another" and "has hired or mentored a test engineer" to the responsibilities.
Start With One Station
The posting is stronger when the first 90 days point at a real station. Before you publish, pick the one with the highest volume or the one only one person can open, rebuild it in Python with the TofuPilot Framework, and run it side by side with the LabVIEW version on the same units for two weeks. Then the new hire's month-3 milestone is a repeat of something your team has already done once.
# Install the CLI, then run the station locally (no account needed) or with upload.curl -fsSL https://www.tofupilot.app/install | shtofupilot run ./procedure.yamltofupilot run ./procedure.yaml --uploadThe rebuild is in how to migrate from LabVIEW to Python for manufacturing tests with TofuPilot, and the framework is at tofupilot.com/products/framework. The Lab tier is free, and tofupilot run works without an account.
