简单的测试使一切变得简单

测试代码,不是理智的

简单是一个有着悠久而肮脏历史的词。 多年来,这种含义已被淡化,以至于今天简单被用作一种通用的无礼称赞。 让我们快速浏览一些简单的常用含义,并了解它们如何应用于软件测试

简单

这是简单的较常用定义之一,也可能是最危险的定义之一。 Rich Hickey (Clojure的人生仁慈独裁者)对“ 简单”与“简单”作了完整的论述,但总而言之:“简单是主观的,简单是客观的”。 这项措施取决于个人能力和经验,而不是普遍可衡量的任何事物。 任务的难易程度与完成任务所需的努力和痛苦成反比。

当应用于测试领域时,这种思维定势会导致快照测试和类似方法。 尽管这些当然很容易设置和编写,但我个人认为它们的价值不高。 他们记录和盲目信任现有的软件实现,而不是指定的软件的行为应该是什么。

最小的

这个定义困扰着所评估软件的大小和/或数量。 尽管这些措施可以简化,但还有其他更直接的方法可以进行此评估。 这是具有可用于比较方法的客观度量的第一个含义,这是肯定的。

在测试领域,这将引导我们迈向使用像Node.js已经提供的单个assert类型函数的道路。 如果发生故障,用户将负责运行测试并提供消息以进行故障排除。 诸如监视模式或代码覆盖率之类的其他功能肯定会被完全忽略。 测试工具库已广泛期望这种工具。 最终,用户最终将创建自己的即席测试运行器代码,最好将其编写为专用库的一部分。

解开

这种含义直接源自简单一词的词源

来自中古英语的简单,源自古法语和法语的简单,源自拉丁语的单纯形(“ simple”,字面意思是“ onefold”),来自sim-(“相同”)+ plicare(“ to fold”)。

Rich Hickey坚信简单的用法,并在我之前链接的演讲中详细介绍了它。 为了理解我们的意思,我们从几条直线的图表开始:

测试代码,不是理智的

假设这些行是软件依赖项或执行线程。 很明显,这些没有缠结,因此很简单。

现在,如果我们增加行数,但没有一条重叠,这仍然很简单:

测试代码,不是理智的

仍然可以考虑任何一条独立于其他任何一条线。

但是,如果将相同数量的线缠结在一起,那么我们就会引入复杂性:

测试代码,不是理智的

减少行数不会再次使这个变得简单:

测试代码,不是理智的

如果不考虑两者之间的相互影响,仍然不可能孤立地推断第二或第三行。 避免缠结是软件的绝佳目标。 这是简化的必要先决条件,但还不够。 为了填补缺失的空白,我们必须研究简单的原始定义,而不仅仅是其词源。

测试代码,不是理智的

comp杂

对于simple的最终用法,我们需要查看技术词典的定义

  1. 化学 )由一种单一物质组成; 没用的
  2. 数学 )一组:没有正常的子组。
  3. 植物学 复合 ,但可能裂开。
  4. 动物学 )由一个人或一个动物群组成; 不复合

这些定义的共同主题很明确。 如果可以将某些东西分解成独立有用的部分,则可以通过此含义使其变得更简单。 将项目分解为易于理解/理解的项目管理中的许多最佳实践具有相关的动机。 该概念类似于术语原子,因为它与计算机科学有关。 Stuart Halloway (另一位主要的Clojure贡献者) 就简单性发表了自己的演讲,非常全面地介绍了简单性的定义和其他定义。

尽管无复合是相对客观的(类似于无理),但重要的是确定适当的水平以评估简单性。 通常应用于软件(尤其是代码)的方法的实用性存在实际限制。 编译器和相关工具的过于 简单的水平的介绍一下项目的复杂性,但要避免思维如装配,机器代码,甚至处理器背后的基本物理。

要实现此目标,需要重新考虑应使用哪些基本元素来构建软件。 世界上的Lisps很早就通过将代码表示为数据来解决这一问题。 很难想到一个比清单还难分明的结构,该结构以图灵完整的方式表示代码。 这使针从命令式代码移到了声明式代码。 如果我们可以为测试做类似的事情怎么办?

在我的下一篇文章中,可以解决这个悬念。

随时给我留下评论或将您的投诉发送至@okwolf

????

From: https://hackernoon.com/test-code-not-sanity-1e4c0ee51d06

相关文章:

  • 2021-10-28
猜你喜欢
  • 2021-11-27
  • 2021-10-15
  • 2022-02-26
  • 2021-06-22
  • 2021-12-14
  • 2021-09-12
  • 2022-12-23
相关资源
相似解决方案