测试驱动开发怎么写 详细教程与注意事项说明

测试驱动开发怎么写

你有没有遇到过这样的情况:花了一整天写代码,结果一运行就出错,改完一个bug又冒出三个?与其等写完再修修补补,不如试试“先写测试,再写功能”的方法——这就是测试驱动开发(TDD)。

什么是测试驱动开发

测试驱动开发不是先写代码再写测试,而是反过来。先根据需求写出一个会失败的测试用例,然后写最简单的代码让测试通过,最后优化代码结构。整个过程就像“先画图纸,再盖房子”。

比如你在做一个报销系统里的金额计算功能。别急着敲代码,先写个测试:输入100元和0.05的税率,期望输出105元。这时候运行测试,肯定会失败——因为根本没写实现代码。

三步走:红-绿-重构

TDD的核心是三个阶段:

:写一个失败的测试。比如检查计算结果是不是105,但当前返回的是0或null,测试显示红色。

绿:写最简单的代码让测试通过。哪怕直接 return 105 也行,目标是让测试变绿。

重构:在不改变功能的前提下优化代码。比如把硬编码改成真实计算逻辑,同时确保测试仍然通过。

这个循环一遍遍重复,每一步都小步快跑,不怕出错。

写个例子看看

假设你要实现一个统计字符串长度的方法。先写测试:

def test_string_length():
    assert string_length("hello") == 5
    assert string_length("") == 0

运行后报错,因为 string_length 函数还没定义。接着写实现:

def string_length(s):
    return len(s)

测试通过了。如果之后要支持中文,可以加新测试:

def test_chinese_length():
    assert string_length("你好") == 2

发现旧代码也能通过,说明逻辑没问题。这样每加一个功能,都有测试兜底。

办公软件里也能用上

你可能觉得TDD是程序员的事,其实做Excel宏、自动化脚本、甚至设计表单逻辑时都能用。比如你写了个VBA函数自动计算差旅补贴,先写几个测试场景:北京出差3天、外地2天、跨省有交通费……每个场景先写预期结果,再写函数逻辑,能大大减少出错概率。

很多办公自动化工具现在也支持单元测试,比如Python脚本配合unittest,或者Power Automate里设置验证步骤。

养成习惯最重要

刚开始写测试可能会觉得麻烦,多敲几行代码,像“多此一举”。但只要坚持几天,你会发现改代码不再提心吊胆,新加功能也不怕影响旧逻辑。就像系安全带,一开始觉得烦,久了就知道它有多重要。

测试驱动开发不是追求完美,而是让工作更稳、更快。下次写代码前,不妨先问自己一句:我该怎么测试它?