How to Learn Python for Frank Hu?

week 10 QA

本周主题----开发循环: 运行与测试

  • 运行通常无问题, 但测试通常会极大影响开发效率
  • 如何定义功能可用?
    • 如何用代码表述功能可用?
  • 如何测试? 为何要有一套测试代码?
    • 加速反馈循环: 编程-运行-反馈
    • 标准测试代码何处寻: 我们的尝试 ---- 标准 i/o 测试集 (iDoulist function 0/1 测试文档)
    • 进行系统测试是有帮助的
      • 已有相关测试工具, 如果反馈时间长应考虑使用

        反馈循环: 从修改代码到确认正确与否的时间越短越好.

  • 超过一分钟就有问题了!

微信平台的一个实例

  • 微信平台是个相对好的项目交互选择: 公众号交互模式用户已足够熟悉, 无需对用户进行教育
  • 为了对用户友好, 需要接受模糊输入
    • 但是: 接受模糊输入意味着输入可能性从 1 到 n. 如何测试大量可能的模糊输入?
    • 大量测试延长了反馈循环的时间, 使同样时间能进行的测试数量大大减少
    • 如果5分钟进行一次循环, 2小时最多只能改24次
    • 如果测试只需要5秒, 反馈速度就大大加强了
  • 如何加快测试?
    • 用户输入-微信-后台-微信-用户输出 的循环改为本地直接模拟用户操作访问后台, 并读取后台输出, 即 本地输入-后台-本地输出
    • 原理上, 也许我们可以考虑把测试过程通过 input-process-output 在时空分开, 从而减少测试循环的组成部分
      • 如测试处理模块时, 用标准输入文件测试即可. 而测试输出时, 完全可以从process后的几个实例开始, 而不是从输入开始测试 ---- 标准 i/o 测试集在每个操作之后的状态作为正对照(positive control)
  • 拾遗: 微信公众号是典型的RESTful架构