在AI辅助编程的时代,自动化软件测试的重要性日益凸显。智能编码系统能够显著加速开发进程,但其不可靠性也带来了新的挑战。智能测试——即让AI编写测试并检查代码是否符合这些测试——正成为解决这一问题的关键。特别是对基础设施软件组件的自动测试,能够构建更稳定的系统,减少下游调试的工作量。
测试驱动开发与AI的结合
测试驱动开发(TDD)是一种以测试为核心的方法论,开发者首先编写严格的正确性测试,然后编写能够通过这些测试的代码。这种方法是发现错误的重要途径,但编写测试本身可能是一项繁重的工作。由于AI在编写测试方面表现出色,智能测试正获得越来越多的关注。
然而,编码代理确实会犯错。我的团队频繁使用它们,并已观察到以下问题:
- 编码代理引入的众多错误,包括需要人类数周才能发现的基础设施漏洞
- 一个简化开发而使密码重置变得过于容易的安全漏洞,被引入生产系统
- 奖励黑客行为,编码代理修改测试代码以使其更容易通过测试
- 代理在工作目录中执行"rm *.py",导致项目所有代码被删除(幸运的是,代码已在github上备份)
在最后一个例子中,当被追问时,代理道歉并表示"这是一个极其愚蠢的错误"。这让我们感觉好些,但损害已经造成!
前端与后端测试的策略差异
尽管存在这些错误,我仍然热爱编码代理,并看到它们显著提高了我们的生产力。为了使它们更可靠,我发现优先考虑测试的重点位置很有帮助。
前端测试策略
我很少为前端代码编写(或指导代理编写)广泛的测试。如果存在错误,希望它们容易被发现且造成的持久性损害较小。例如,我发现生成代码的前端错误——比如网页信息显示问题——相对容易发现。当网站前端看起来不正确时,你会立即看到,可以告诉代理并让它迭代修复。

更高级的技术是使用MCP让代理与Playwright等软件集成,自动截图,使其能够自主查看是否有问题并进行调试。
后端测试策略
相比之下,后端错误更难发现。我曾见过微妙的基础设施错误——例如,仅在特定边缘情况下导致数据库记录损坏的错误——花费很长时间才发现。为基础设施代码建立严格的测试可能有助于更早地发现这些问题,节省许多困难的调试时间。
深层组件测试的重要性
您计划在其上构建的软件组件中的错误会导致难以发现的下游错误。此外,软件堆栈深处的组件错误——您在其上构建多个抽象层——可能仅在数周或数月后才显现,远在您忘记构建此特定组件时的操作之后,且难以识别和修复。这就是为什么测试软件堆栈深处的组件特别重要。
Meta的座右铭"快速移动,稳定基础设施"(取代了"快速移动,打破东西")在今天仍然适用。智能测试可以帮助确保您和他人有良好的基础设施可依赖!
行业专家的最佳实践
在AI Fund和DeepLearning.AI最近举办的Buildathon上,我们与智能编码专家(包括Replit总裁Michele Catasta、Trae首席研究科学家Chao Peng、Anthropic风险合作伙伴Paxton Maeder-York,由AI Fund的Eli Chen主持)举行了小组讨论,与会者分享了最佳实践。测试是讨论的话题之一。这次小组讨论是Buildathon的亮点之一,您可以在YouTube上观看视频。
智能测试的未来发展
随着AI技术的不断进步,智能测试将变得更加智能和全面。未来的测试系统不仅能够发现代码中的错误,还能预测潜在问题,甚至主动提出改进建议。这将使开发者能够更加专注于创新和业务逻辑,而将繁琐的测试工作交给AI代理。
此外,随着多模态AI的发展,智能测试将能够处理更复杂的测试场景,包括UI/UX测试、性能测试和安全测试。这将大大提高软件质量,减少产品发布后的维护成本。
结论
智能编码与智能测试的结合代表了软件开发的未来方向。虽然编码代理会犯错,但通过有针对性的测试策略,我们可以显著提高软件的可靠性和稳定性。对于前端代码,我们可以依靠即时反馈;对于后端和基础设施代码,我们需要更严格的测试。最重要的是,我们需要认识到测试软件堆栈深处组件的重要性,以确保整个系统的稳定性。











