week 10 QA
本周主题----开发循环: 运行与测试
- 运行通常无问题, 但测试通常会极大影响开发效率
- 如何定义功能可用?
- 如何测试? 为何要有一套测试代码?
- 加速反馈循环: 编程-运行-反馈
- 标准测试代码何处寻: 我们的尝试 ---- 标准 i/o 测试集 (iDoulist function 0/1 测试文档)
- 进行系统测试是有帮助的
- 已有相关测试工具, 如果反馈时间长应考虑使用
反馈循环: 从修改代码到确认正确与否的时间越短越好.
- 超过一分钟就有问题了!
微信平台的一个实例
- 微信平台是个相对好的项目交互选择: 公众号交互模式用户已足够熟悉, 无需对用户进行教育
- 为了对用户友好, 需要接受模糊输入
- 但是: 接受模糊输入意味着输入可能性从 1 到 n. 如何测试大量可能的模糊输入?
- 大量测试延长了反馈循环的时间, 使同样时间能进行的测试数量大大减少
- 如果5分钟进行一次循环, 2小时最多只能改24次
- 如果测试只需要5秒, 反馈速度就大大加强了
- 如何加快测试?
- 把
用户输入-微信-后台-微信-用户输出
的循环改为本地直接模拟用户操作访问后台, 并读取后台输出, 即 本地输入-后台-本地输出
- 原理上, 也许我们可以考虑把测试过程通过 input-process-output 在时空分开, 从而减少测试循环的组成部分
- 如测试处理模块时, 用标准输入文件测试即可. 而测试输出时, 完全可以从process后的几个实例开始, 而不是从输入开始测试 ---- 标准 i/o 测试集在每个操作之后的状态作为正对照(positive control)
- 拾遗: 微信公众号是典型的RESTful架构