UT Workshop教学重点

前置课程

POS机V0~V2做完

总览

UT Workshop教学重点

第一问 xAxB

引导大家写出xAxB的函数,带领大家就代码进行评论 主要讲解或引导大家讨论:

  1. 写函数名等价于任务划分
  2. 通过等价类划分,边界条件来确定写几个测试
  3. 测试成本->安全感可以做为一种简化的判断方法
  4. 代码即文档,测试即是函数的contract,以及简单提一下业务名词
  5. TDD给了我们一个机会,站在调用者角度思考,其实也是面向接口编程
  6. 谁来保证测试的正确性?强调测试的目的不是为了防止有人恶意的欺骗,而是低级的错误。

第二问 随机数生成

讲解或引导大家思考

  1. 在写程序的时候,何时深度优先的思考,何时广度优先的思考。这个题目很多人一下就钻进去思考怎么写随机,怎么测随机了。这是一种典型的深度优先的思考。
  2. 对不可控的依赖进行控制的一个练习。我们认为随机是不可控的,那么我们该怎么做。在真实环境下,很常见有些系统不到最后集成的时候不让碰。这也是某种不可控。
  3. 要发现基于不可控系统之上可控的部分,抽离逻辑的能力,有些人觉得四位不重复随机数是一个逻辑。这就属于典型的细化能力不足。

第三问

  1. 写15分钟即show代码,第一次看到mock难免陷入思维转换的境地,半天转不过弯来。所以开始不要给大家太多时间,不然就会沉浸在这个问题里太久出不来。
  2. 展示集成的单元测试
  3. 展示集成测试
  4. 再就是讲解集成本身的测试和集成的概念,不是全部集成才叫集成。理解胶水代码。

第四问

  1. 上一问涉及到的mock是无法揭示出如何测输入输出的,要引导去google
  2. 引导思路和单元测试
  3. 这一问主要是看对于mockito之类的工具的深入使用。涉及verify,matcher,InOrder等的使用。
  4. 也可以看看设计,当然也可以在第五问看设计。
  5. 强调为什么要在这一层做安全性检测,而不是在第一问中进行。

Next Step: UT Workshop →

Fork me on GitHub