开始进行Swift编程第17部分-测试

在上一篇文章中,我们讨论了inout ,lazy以及getter和setter。

开始进行Swift编程第16部分-inout,Lazy,Getters和Setters

之前,我们介绍了使用泛型和枚举进行闭包。

medium.com

在本文中,我们将重点放在编写测试上。 您可能会认为这是可选的,因为它不会执行您的应用附带的任何逻辑。 如果您这样想,您无法通过面试。

测试很重要,每当我听到它时就会想到一个术语。 测试驱动开发(TDD) 。 测试驱动的开发是编写应用程序的一种流行方法,其公式很容易记住。

  1. 编写一个失败的测试用例。
  2. 编写足够的代码,不再需要通过测试。
  3. 测试以确保案件通过。

还有其他测试方法。 您可以使用简单的打印语句来显示一段代码的前后结果,这是一种可以测试的好方法。 您还可以运行您的应用程序,以确保一切正常,这是测试您可能仍会做的最基本的最小方法。

我将仅在本文中介绍TDD。 在开始之前,我想提出两个新术语。 测试率代码覆盖率

  • 测试比率-比率是代码行数与编写的测试数的比率。 许多人会说应该用1:3的3个测试来测试1行代码。
  • 代码覆盖率-涉及已测试的代码量的百分比。 许多IDE将提供代码覆盖视图,该视图根据测试状态突出显示代码。 绿色表示需要测试,红色表示没有测试。

尽管我应该默认像其他所有人一样“测试所有内容”,但我不会。 您不需要走极端,包括Swift或其他包含测试的库中包含的测试功能。 我不会为打印语句或其他一些静态方法(如Date.init() 。 实际上,您只需要测试您的代码即可,其他人的代码不包括测试。

我们编写测试的方式看起来像这样:

在第二轮中,我们的性能提高了39%,但没有任何变化。 这是因为优化已经存在,而我们只是重复使用了它们。 这是设置新基准的好地方,因此我们单击“编辑”,然后接受新基准并保存。 在随后的运行中,我发现在不更改代码行的情况下,变差了6%,好了0%,好了2%和好了7%。 这对我们来说是一个很好的基准。 在这里,我们可以进行更改,然后重新测试我们的测量,以查看是否使情况变好或变坏。

虽然没有严格的准则来指导什么是好的优化,但我认为保持10次测量(100次运行)中始终更好的任何更改。 如果在前几次运行中效果明显好些,我将保留更新的代码。

在测试方面,我们在上文中谈到了单元测试。 还有一个常规测试,它可以测试您应用程序的整体功能是否正常运行。 UI测试是涵盖您的UI的另一种测试,但是由于本教程只是基础知识,因此不在本文讨论范围之内。 最后,还有用户接受测试(UAT),它可以确保用户喜欢他们所拥有的东西。 这通常是由质量检查小组和业务部门或最终用户的特定受众群体完成的(了解有关TestFlight的信息)。 它使您可以在应用程序上投放更多方案以进行进一步测试,并在应用程序上线时将有关“我如何_________?”的问题保留下来。

我们了解了测试的基础知识,以及它如何帮助您编写更好的代码,它在开发周期中的重要性以及如何衡量您自己的代码的性能。 进一步的测试涉及使用Xcode Instruments,您可以在其中测量内存,CPU和磁盘(I / O)的使用情况,但是它更为先进。

确保为应用程序编写了良好的测试,以便您始终知道它会按预期运行。

接下来是模型视图控制器体系结构。

模型视图控制器(MVC)被广泛地用于教会新开发人员如何进行编码。 这是学习如何在项目中使用多个文件的最简单方法。 尽管您可以从中选择其他选项,但它们可能会让您有些困惑。 当您准备好从MVC继续前进时,您几乎自然会开始根据应用程序的需求以不同的体系结构样式进行编写。

在此之前,请继续练习!

Swift编程入门第18部分-模型视图控制器体系结构

在上一篇文章中,我们讨论了编写测试。

medium.com