作为延续树的功能测试 - 埃文·米勒

主要观点:维护计算机代码长期质量的重要实践是编写自动化测试,测试代码常比被测试代码长且多为重复劳动,传统测试结构为测试列表导致功能测试套件重复,而功能测试更适合用测试树结构,以 Erlang 的 Chicago Boss 测试框架为例展示了如何用嵌套回调实现测试树,将功能测试构建为连续断言和延续的树状结构有消除代码重复、减少设置代码、 pinpoint 失败测试源、使测试结构良好、保留之前响应等好处,作者猜测其他语言的 OO 特性导致未广泛使用此方法,写基于延续树的测试框架只需一个数据库栈,用后会觉得此方法很高效。
关键信息

  • 测试列表结构导致功能测试套件重复,长度与测试步骤数呈 O(N²)增长。
  • 测试树结构能使功能测试套件长度与测试步骤数呈 O(N)增长,通过复制数据库实现。
  • 以 Erlang 的 Chicago Boss 测试框架为例的测试树代码示例。
  • 构建测试树的好处,如消除代码重复等。
    重要细节
  • 前同事估计功能测试代码与“真实”代码的比例约为 3:1。
  • 测试树每个节点有一组断言,父节点向下传递状态副本给子节点,子节点可修改和断言。
  • 在现代 Web 应用中,通过数据库栈实现测试树中的状态复制。
  • 用测试树结构的好处包括消除代码重复、减少设置代码、 pinpoint 失败测试源等。
  • 作者猜测 OO 语言特性导致未广泛使用此方法。
  • 写基于延续树的测试框架只需一个数据库栈,添加此功能到 Chicago Boss 的内存数据库约 25 行 Erlang 代码。
阅读 4
0 条评论