《代码整洁之道 程序员的职业素养》第七章

06 Jun 2021

Reading time ~7 minutes

专业开发人员既要做好开发,也要做好沟通。

职业程序员会重视与团队及业务部门的沟通,确保这种沟通的准确、流畅。

7.1 需求的沟通

开发方和业务方之间最常见的沟通是关于需求的。业务方描述他们认为自己需要的东西,程序员按照自己理解的业务方表达的需求来开发。

7.1.1 过早精细化

  1. 不确定原则
  2. 预估焦虑

7.1.2 迟来的模糊性

避免过早精细化的办法是尽可能地推迟精细化。

7.2 验收测试

业务方与开发方合作编写的测试,其目的在于确定需求已经完成。

7.2.1 “完成”的定义

专业开发人员的“完成”只能有一个含义:完成,就是完成。

完成意味着所有的代码都写完了,所有的测试都通过了,QA和需求方已经认可。这,才是完成。

7.2.2 沟通

验收测试的目的是沟通、澄清和精细化。

7.2.3 自动化

验收测试都应当自动进行。原因很简单:要考虑成本。

专业开发员人认为,实现验收测试的自动化是自己的责任。

7.2.4 额外工作

不要把它们看作额外的工作,而应当看成节省时间和金钱的办法。

7.2.5 验收测试什么时候写,由谁来写

在理想状态下,业务方和QA会协作编写这些测试,程序员来检查测试之间是否有冲突或矛盾。通常会把测试交给专业分析员、QA甚至是开发人员。如果只能由开发人员来写测试,应当确保写测试的程序员与开发所测试功能的程序员不是同一个人。

验收测试应该越晚越好,通常是功能执行完成的前几天。

7.2.6 开发人员的角色

开发人员有责任把验收测试与系统联系起来,然后让这些测试通过。

7.2.7 测试的协商与被动推进

身为专业开发人员,与编写测试的人协商并改进测试是你的职责。

身为专业开发人员,你的职责是协助团队开发出最棒的软件。

7.2.8 验收测试和单元测试

单元测试是程序员写给程序员的,它是正式的设计文档,描述了底层结构及代码的行为。关系单元测试结果的是程序员而不是业务人员。

验收测试是业务方写给业务方的。它们是正式的需求文档,描述了业务方认为系统应该如何运行。关心验收测试结果的是业务方和程序员。

尽管两者测试的可能是同一个对象,其机制和路径确实不同的。

它们的主要功能其实不是测试,测试只是它们的附属职能。

7.2.9 图形界面及其他复杂因素

通过恰当的界面测试

应当尽可能地减少GUI测试。

7.2.10 持续集成

确保在持续集成系统中,单元测试和验收测试每天都能运行好几次。

立刻中止

持续集成不应该失败,如果失败了,团队里的所有人都应该停下手里的活,看看如何让测试通过。

7.3 结论

要解决开发方和业务方沟通问题,唯一有效的方法就是编写自动化的验收测试。

它们,就是无可挑剔的需求文档。



Reading NotesThe Clean Coder Share Tweet +1