phpunit:PHPUnit袖珍指南 第十 2章 测试的其他用途

  旦你开始写自动测试你就会想要发掘更多用途以下是些例子

  12-1. 敏捷文档

  通常来说在采用敏捷思路方法作为开发流程项目中如极限编程文档很难和迅速变化项目设计和代码同步极限编程要求集体拥有代码应此每个开发人员都熟悉整个系统如果你严格按照规定编写类具有自介绍说明能力你就可以用PHPUnitTextDox功能根据测试来自动生成文档这种文档给开发人员对每个类用途描绘了个概貌

  PHPUnitTestDoc功能查找测试类所有思路方法名字把它们转换成句子如:testBalanceIsInitiallyZero( )变成“Balance is initially zero”如果有几个测试思路方法名字区别只在于前缀或数字如testBalanceCannotBecomeNegative( ) 和 testBalanceCannotBecomeNegative2( )转换过句子“Balance cannot become negative”只会出现其他这样测试都会成功

  以下代码显示用PHPUnit 生成有关银行帐号(Bank Account)类敏捷文档命令是:

  phpunit --testdox-text BankAccountTest.txt BankAccountTest

  结果显示:

  BankAccount

  - Balance is initially zero

  - Balance cannot become negative

  也可以用--testdox-html BankAccountTest.htm选项生成HTML格式敏捷文档

  敏捷文档也用以用于为项目中第 3方包假定条件来记录文档当你使用个外部包时候你也在冒风险外部包可能不想你预期那样工作或在未来版本中有微妙变化导致你代码不可运行你也通过对外部包假定条件编写测试来解决这个问题如果你测试成功了假定条件还是有效如果你对所有假定条件测试都作了文档那么外部包版本问题将不再是个问题:如果测试成功了系统还会正常运行

  12-2.跨团队(Team)测试

  当你将测试假定条件文档化后你就要为你测试负责你和包提供者起确定这些假设你要记住提供者对你测试无所知如果你想要和包提供者形成更密切关系你可以使用测试来沟通协调相关活动

  当你同意和包供应商协调活动时, 你们可以起写测试 这样做测试会显露出尽可能许多假定隐藏假定条件会导致合作失败通过测试你可以在提供包中地将你期望准确记入文档当所有测试运行完毕时供应商就知道它正常运行了

  使用残根(参见本书前面“残根”章)你能进步减弱和包供应商的间耦合供应商工作是测试能够运行在包真正实现上工作是测试运行在自己代码上在你得到供应商真正实现的前你使用残根工作用这种思路方法两个团队(Team)能够独立工作

  12-3 调试测试

  当你得到份缺陷报告时冲动也许是赶快修复它经验表明这种冲动效果不好:修复此缺陷可能会导致其它缺陷

  你应该通过检查如下列表来控制冲动:

  -     再次核实确信你能重现缺陷

  -     发现最小范围出现缺陷代码例如输出时如果数字不正确找到计算那个数字对象

  -     写个自动化测试如果该缺陷被修复此测试会通过反的会失败

  -     修复缺陷

  发现缺陷最小可靠再现部分提供了个发现缺陷真正原因机会你写测试将会提高正确修复缺陷机会测试减少了当未来代码改变时取消本次修复可能性

  前面所写所有测试都会减少因疏忽而造成其它问题可能性

  12-4 重构

  重构是种改进现有代码设计受控技术只有当你有套测试套件时才能被安全应用否则你也许没有注意到当你修改结构时系统崩溃了 重构可以分解为系列行为保留改进这种改进不会改变行为

  以下情况将帮助你改进项目代码和设计使用单位测试验证重构变革步奏是行为保留不会引入其它:

  -     所有单位测试运行正确

  -     代码传达它设计意图

  -     代码没有冗余

  -     代码只包含最小数量类和思路方法

Tags:  phpunit2 phpunit

延伸阅读

最新评论

发表评论