10 行加法函数,让我终于搞懂了什么是 Harness Engineering

发布时间:2026/7/7 13:13:22
10 行加法函数,让我终于搞懂了什么是 Harness Engineering 1. 引子一个 10 行的加法函数defadd(a,b):Return the sum of two numbers.returnabdeftest_add():assertadd(1,2)3assertadd(-1,1)0assertadd(0,0)0print(All tests passed!)if__name____main__:test_add()就这10 行代码一个加法函数加一个测试。看起来简单到不值一提对吧但就是这 10 行代码让我在反复调试、重构、部署的过程中真正理解了软件工程里一个被严重低估的概念——Harness Engineering。2. 什么是 Harness EngineeringHarness Engineering工程化约束框架并不是一个时髦的新名词而是一种系统性地为代码运行提供安全、可观测、可复现环境的工程实践。简单说它就像赛车手的安全带和防滚架——不是为了让你开得更快而是为了让你在翻车时还能活着走出来。在软件工程中Harness 通常指测试框架pytest、JUnit、Go test模拟与桩代码Mock、Stub、Fake依赖注入容器配置管理与环境隔离CI/CD 流水线中的沙箱执行3. 加法函数背后的 Harness 问题回到那个 10 行的加法函数。当我第一次写完它时觉得这么简单的东西直接跑不就完了然后问题来了3.1 环境依赖# 第一次尝试直接跑defadd(a,b):returnabprint(add(1,2))# 输出 3没问题但当我把它放进一个更大的项目时# 项目里已经有人定义了 addfromsomewhereimportadd# 冲突了没有 Harness命名空间隔离你的函数随时可能被污染。3.2 测试的可重复性# 没有 Harness 的测试resultadd(1,2)assertresult3# 这次能过下次呢如果测试依赖了全局状态比如某个配置文件、环境变量同样的代码在不同机器上可能得到不同结果。Harness 的作用就是把每次测试的执行环境冻结住。3.3 边界条件的覆盖# 有了 Harness 意识后我开始思考deftest_add_edge_cases():# 大数相加assertadd(10**100,10**100)2*10**100# 浮点数精度assertabs(add(0.1,0.2)-0.3)1e-10# 类型异常try:add(1,2)exceptTypeError:passHarness 不只是跑测试它强迫你系统性地思考所有输入空间。4. 从加法函数到真实项目的 Harness 实践理解了 Harness 的本质后我把它应用到真实项目中4.1 测试夹具Test Fixtureimportpytestpytest.fixturedefclean_database():每个测试前重建数据库保证隔离性dbcreate_database()db.migrate()yielddb db.drop()deftest_add_with_db(clean_database):在隔离的数据库环境中测试resultadd(1,2)clean_database.save_result(result)assertclean_database.query_result()34.2 模拟外部服务fromunittest.mockimportMockdeftest_add_with_remote_config():模拟远程配置服务不依赖真实网络mock_configMock()mock_config.get_precision.return_value2resultadd(1.234,2.345)assertround(result,mock_config.get_precision())3.584.3 CI 中的 Harness# .github/workflows/test.ymlname:Test with Harnesson:[push]jobs:test:runs-on:ubuntu-lateststeps:-uses:actions/checkoutv3-name:Set up Pythonuses:actions/setup-pythonv4with:python-version:3.11-name:Install dependenciesrun:|pip install pytest pip install -r requirements.txt-name:Run tests in isolated environmentrun:|# Harness每次都在干净的 venv 中运行 python -m venv .harness_env source .harness_env/bin/activate pytest tests/ --isolated5. Harness Engineering 的核心原则经过这个加法函数的顿悟时刻我总结出 Harness Engineering 的几条核心原则原则说明加法函数示例隔离性每次执行互不干扰每个测试用例独立运行可重复性相同输入永远相同输出固定种子、固定环境可观测性执行过程可追踪可调试打印输入/输出/中间状态自动化无需人工干预即可验证CI 自动跑所有测试用例轻量性Harness 本身不应成为负担10 行代码配 10 行测试6. 总结一个 10 行的加法函数让我从能跑就行的野路子走向了系统化工程的正轨。Harness Engineering 不是银弹但它是一种思维方式的转变从写代码到写可被验证的代码从本地能跑到在任何环境都能可靠运行从我相信我写对了到我有证据证明我写对了下次当你写一个看似简单的函数时不妨问自己一句“如果这个函数在 100 台机器上同时跑 1000 次我还能保证它每次都正确吗”如果能恭喜你你已经理解了 Harness Engineering 的精髓。如果不能——那就从给这个函数加一个测试 Harness 开始吧。