Pav*_*jlo 10 xcode unit-testing code-coverage ios swift
从单元测试和代码覆盖的角度来看,关于XCode7和Swift 2.0实际体验的信息仍然不多.
虽然有大量的教程和基本的操作指南可供使用,但我想知道不同iOS团队的经验和典型的覆盖率统计数据实际上是试图为他们发布的iOS/Swift应用程序实现合理的覆盖范围.我特别想知道这件事:
1)虽然代码覆盖百分比不代表代码库的整体质量,但这是否被用作团队的基本指标?如果没有,评估代码库质量的另一种可衡量的方法是什么?
2)对于更强大的应用程序,您目前的代码覆盖百分比是多少?(只是fyi,我们现在的代码库很难超过50%)
3)你如何测试如下:
我理解上面的一些更多是实际UI测试的主题,但它让我想知道:
期待富有成效的讨论.
你确实问了一个很大而且很好的问题。虽然你的问题包括:
我想知道不同 iOS 团队的经验和典型覆盖率统计数据是什么......
我认为这个问题与语言/操作系统无关。当然,某些语言和平台比其他语言和平台更易于进行单元测试。因此,有些单元测试的成本更高(与其他形式的自动化/编码测试相比)。我认为您正在寻找一个成本/效益方程来最大限度地提高生产力。软件开发过程的乐趣啊。
跳到最后给你快速的声音抓取答案:
您应该对您想要运行且适合单元测试的所有代码进行单元测试。
那么现在为什么要强调单元测试......
什么是单元测试?
开发社区中的语言已经被破坏,所以请耐心等待。单元测试只是自动化测试的一种。其他包括自动验收测试、应用程序测试、集成测试和组件测试。这些都测试不同的东西。他们有不同的目的。
然而,当我听到单元测试时,我脑海中浮现出两件事:
TDD 是指在编写代码之前先编写测试。当您编写一个测试来编写一个语句,然后编写另一个测试时,这是一个非常低级的编码实践/过程(XP - 极限编程)。很大程度上是一种编码实践,但不是应用程序/需求实践,因为它是编写执行您想要的代码的代码,而不是满足产品要求的代码(天哪,我觉得要点丢失了)。
根据我的经验,编写代码然后进行单元测试是有趣的、短期的团队建设,但效率不高。当然会发现一些缺陷,但不是很多。TDD 可以带来更好的“健康”代码。
我的观点是单元测试是:
为什么全部?
如果您的团队在没有单元测试的情况下始终提供零缺陷软件(ZDFD 是真实且可实现的..但这是一个平坦的地球讨论),那么这是无稽之谈,您不会在这里提出任何问题。
团队将单元测试作为其编码过程的一部分的唯一正当理由是提高生产力。如果所有团队成员都致力于提高团队生产力,那么唯一的问题就是确定哪些代码可以从单元测试中受益。这就是一切的背景。
我认为说明这一点的最简单方法是列出我不进行单元测试的类型:
实际的答案
我的团队期望对所有应进行单元测试的新代码实现 100% 的单元测试覆盖率。这是通过归因不符合单元测试标准的代码来实现的。所有代码都必须经过代码审查,并且属性必须特定于上面列出的原因选项。 - 简单的。
一个很长的答案,也许不容易消化,也不是人们想听到的。但是,根据长期的经验,我知道这是可以带来最佳盈利能力的最佳答案。
发表评论
我的回答是针对问题的单元测试方面。至于防御性编程和其他实践,TDD 是一个通过让做错事变得更加困难来缓解这种情况的过程。但是构建系统静态代码分析工具可以帮助您在进行同行评审之前捕获这些内容(它们可能会因新问题而导致构建失败)。看看其他的,比如 SonarQube、Resharper、CppDepend、NDepend(是的,依赖于语言)。
| 归档时间: |
|
| 查看次数: |
657 次 |
| 最近记录: |