Skip to Content
软件工程基础
book

软件工程基础

by Nathaniel Schutta, Dan Vega
October 2025
Beginner to intermediate
392 pages
3h 56m
Chinese
O'Reilly Media, Inc.
Book available
Content preview from 软件工程基础

第五章 自动化 测试

本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com

质量不是一次性的行为,而是长期的习惯。

——哲学家威尔·杜兰特,援引亚里士多德

新年伊始,许多人立志追求更健康的生活方式并坚持下去 。这些目标并非靠一顿健康餐或一次健身就能达成,而是需要多数时候持续做出健康选择。同样地,要打造高质量且可维护的软件,需要编写、审查和测试代码时始终践行良好习惯。如同保持健康生活方式,这并非易事,而借口只会让你停滞不前。

然而通往持续性的道路并非坦途。许多开发者常陷入自我怀疑:担忧决策是否正确,忧虑解决问题的思路是否会被质疑。编写高质量软件需要持之以恒的训练,但随着时间推移,你的测试工作将成为有效的保障机制,让团队成员和未来的自己都受益。本章将带你了解自动化测试的优势、常见测试类型及其编写方法。

自动化测试的益处

对于编写额外代码来验证现有代码,人们自然会持怀疑态度,有时甚至觉得不值得付出努力。你可能会怀疑这是否只是又一种潮流或简历堆砌的练习。然而,自动化测试远不止于此。它是一项宝贵的技能,也是对代码库的重要投资。

在后续章节中,你将深入了解编写自动化测试的具体益处。你将看到这项实践如何提升代码质量、增强工作信心,并最终使你成为更高效的工程师。理解这些优势后,你将明确测试工作的核心目标,并认识到投入时间进行自动化测试对职业成长的价值所在。

作为文档

加入现有项目可能令人不知所措(参见第6章关于加入现有项目的操作指南)。 项目拥有文档实属奢侈。1若运气好,你或许能在开始工作前与首席开发者或领域专家沟通,获取高层次的项目概览。但这种情况并不常见,文档可能稀疏甚至缺失。此时,拥有完善测试的项目将成为你的救星。

设想这样一个场景:你被指派修复某类银行卡的支付处理问题。若缺乏规范文档或测试,你只能翻阅陌生(且可能复杂)的代码,或依赖同事指导。

现在想象发现了一套完善的支付测试套件。你会看到PaymentProcesserTests 类中带有描述性测试名称的代码:

  • shouldValidateValidCreditCardNumber

  • shouldProcessCreditCardTransaction

  • shouldProcessOrangePay

这些测试既揭示了模块功能,又指向相关代码段。现代集成开发环境能轻松导航至被测服务(参见第2章高效读码策略)。测试失败时,代码库中的潜在问题源便一目了然。

例如发现名为shouldFailWhenCreditCardTypeIsOrangePay 的测试,揭示Orange Pay未被支持。此信息助你快速定位并修复问题,更新前端代码并完善文档。

此例说明测试如何充当文档,助你更快掌握代码库。通过专注于改进测试套件,可提升代码质量、减少生产环境问题,并加速你对项目的贡献能力。

提升可维护性

编写优质的 可维护代码通常需要数年才能掌握(详见第3章)。先写测试如同先思考再发言:它能帮助你规划和梳理思路。初学者的首要目标往往只是让代码运行起来。虽然这依然重要,但编写测试能让你更早发现可改进之处。

请看这个BlogPostController 示例(为简洁起见省略了代码):

public class BlogPostController { public void publish(Post post) { // save blog post to the database (flip isPublished to true) // log blog ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

基于scikit-learn和PyTorch的实践机器学习

基于scikit-learn和PyTorch的实践机器学习

Aurélien Géron
图解大模型 : 生成式AI 原理与实战

图解大模型 : 生成式AI 原理与实战

Jay Alammar, Maarten Grootendorst
Python金融实战

Python金融实战

Posts & Telecom Press, Yuxing Yan

Publisher Resources

ISBN: 0642572274962Supplemental Content