主要观点:维护计算机代码长期质量的重要实践是编写自动化测试,测试代码常比被测试代码长且多为重复劳动,传统测试结构为测试列表导致功能测试套件重复,而功能测试更适合用测试树结构,以 Erlang 的 Chicago Boss 测试框架为例展示了如何用嵌套回调实现测试树,将功能测试构建为连续断言和延续的树状结构有消除代码重复、减少设置代码、 pinpoint 失败测试源、使测试结构良好、保留之前响应等好处,作者猜测其他语言的 OO 特性导致未广泛使用此方法,写基于延续树的测试框架只需一个数据库栈,用后会觉得此方法很高效。
关键信息:
- 测试列表结构导致功能测试套件重复,长度与测试步骤数呈 O(N²)增长。
- 测试树结构能使功能测试套件长度与测试步骤数呈 O(N)增长,通过复制数据库实现。
- 以 Erlang 的 Chicago Boss 测试框架为例的测试树代码示例。
- 构建测试树的好处,如消除代码重复等。
重要细节: - 前同事估计功能测试代码与“真实”代码的比例约为 3:1。
- 测试树每个节点有一组断言,父节点向下传递状态副本给子节点,子节点可修改和断言。
- 在现代 Web 应用中,通过数据库栈实现测试树中的状态复制。
- 用测试树结构的好处包括消除代码重复、减少设置代码、 pinpoint 失败测试源等。
- 作者猜测 OO 语言特性导致未广泛使用此方法。
- 写基于延续树的测试框架只需一个数据库栈,添加此功能到 Chicago Boss 的内存数据库约 25 行 Erlang 代码。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。