Logo
Section 1 / 2

谁应该参加这门课程,以及原因是什么?

熟悉 Elixir 语言中测试方法的重要性,并判断本课程是否适合你。

导入

谁应该参加这门课程,以及原因是什么?

熟悉 Elixir 语言中测试方法的重要性,并判断本课程是否适合你。

查尔斯·凯特林(Charles Kettering),美国发明家,曾长期担任通用汽车公司研究部门负责人,有一句名言非常适用于我们的软件测试方法:

“一个问题被清晰地表述出来,就等于已经解决了一半。”

将测试视为对代码要解决的问题的明确陈述。一旦问题被清晰定义,编写代码就会变得更容易。此外,测试不仅陈述了问题,还能验证解决方案是否正确。它们几乎是软件工程中不可或缺的一部分,我们相信理解其原因和使用方法至关重要。

为什么要测试代码?

有些开发者会为自己的软件编写测试,而另一些则不会。世界上到处都有没有测试支撑的代码在运行。那么,我们为什么还要进行测试呢?原因有很多,但都可以归结为两个核心类别:

  • 测试让我们有信心:代码能够按预期工作。这适用于所有类型的测试——无论是由机器执行的自动化测试,还是由人工完成的手动测试。
  • 测试防止引入破坏性变更(也称为回归)。想象一下,你正在一个已有代码库上添加新功能。如何才能确信新增功能不会破坏现有功能?在大多数情况下,答案就是测试。如果现有的代码库已经经过充分测试(无论是自动化、手动或两者结合),那么当我们修改代码时,只要测试套件未发现任何失败,就能更有信心地进行更改。

在本课程中,我们将重点讲解自动化测试。手动测试(如质量保证,QA)对于许多方面都至关重要,但作为开发者,我们通常从自动化测试中获得更大的价值。一套优秀的自动化测试体系能让我们在开发过程中获得快速反馈,并精准控制对应用特定部分的测试。

...

本课程适合谁?

本课程适合具备基础 Elixir 知识、希望提升 Elixir 生态系统中测试工具与实践能力的学习者。我们将简要回顾大多数 Elixir 核心概念,例如语言语法、数据类型、OTP、Ecto 和 Phoenix。但我们不会深入讲解这些内容,而是专注于如何测试这些概念和工具。无论你是刚接触 Elixir 的新手,还是经验丰富的 Elixir 专家,我们都相信你将在课程中收获一些新的知识。

Elixir 中的测试

Elixir 是一门独特且富有特色的编程语言。它提供了一些特性与概念,如果我们从未接触过类似的技术,可能会觉得难以测试。某些特性,如并发性和不可变性,在其他语言中虽已存在,但在 Elixir(以及 Erlang)中更为突出。另一些特性,如容错性或 OTP 框架,则是 Erlang 和 Elixir 所独有的,有效测试这些特性往往更具挑战性。

...
Elixir logo

从实际角度来看,Elixir 是撰写测试教程的理想语言,因为 Elixir 社区在测试方面的工具和模式已经高度统一。其中一个原因是,Elixir 自带了内置的测试框架 —— ExUnit。我们将深入学习 ExUnit 的方方面面,并掌握如何在各种场景下使用它,以实现对应用程序不同层面的有效测试。

注意:Elixir 与其母语言 Erlang 密切相关。正如你可能了解的,Elixir 编译后的字节码与 Erlang 相同,并运行在 Erlang 虚拟机(通常称为 BEAM)之上。Elixir 代码可以无缝调用 Erlang 代码,Elixir 应用几乎总是依赖若干 Erlang 库。然而,在测试领域,两种语言之间的共通点相对较少。它们所使用的工具和库集合交集不大。因此,本课程将不涉及 Erlang 的测试,而是专注于 Elixir 的测试。

课程内容与代码