zoukankan      html  css  js  c++  java
  • [ZZ]好的测试应该具备哪些特质?

    作者 Mark Levison译者 郑柯 发布于 2008年10月4日 上午6时30分

    社区
    Agile
    主题
    单元测试,
    质量交付
    标签
    最佳实践,
    测试驱动开发

    什么样的测试算是好测试?我们又该怎么知道如何编写好测试?

    Kent Beck断定,好的测试应该具备下列条件:

    1. 互相隔离的(不受其他测试的表现形式、是否存在、执行结果的影响)
    2. 自动化的
    3. 编写快
    4. 运行快
    5. 独一无二(为开发人员提供自信,而不会由其他测试提供信息,与其他测试不相关)

    Roy Osherove补充道:好的测试有三个基本属性:可维护、值得信赖、易于理解。

    Mike Hill的列表要更长:

    • 它会很短,通常只有十来行代码。
    • 它不会测试运行程序内部的对象,但是会测试为了测试目的而构建的应用内部的对象。
    • 它只会调用很小的一部分代码,通常是某个函数的某一分支。
    • 它是灰盒的形式编写的。也就是说,它运作的方式像是黑盒,但是有时又会利用白盒的长处。(一般来说,这是避免组合问题的重要因素。)
    • 测试要符合生产代码的编码标准,比如,团队目前对于优秀编码的最佳看法。
    • 应用的众多小测试构成了一个“提交关卡”。这就是说,开发人员可以在所有小测试通过的情况下提交代码,否则(强烈建议、甚至不惜手段)阻止他们提交。
    • 测试应对接受测试的对象有完全的控制权,因此应是自包含的。也就是说,它不会依赖不属于测试代码及其依赖图的任何其他对象。
    • 它的运行时间非常短。
    • 它会先于要测试的代码变更之前编写。
    • 通过一系列slip-and-fake技巧,它会避免使用所有“糟糕”的collaborator。
    • ……

    Mike和Ron Jeffries提醒我们:TDD的核心价值是要简化设计、提升开发效率;代码质量的提升和bug数量的减少是因此而带来的重要好处。

    Jeremy Miller补充了良好单元测试应该具备:

    • 与顺序无关,并且是隔离的。运行测试的软件可以按照以任何顺序运行。
    • 意图明确。最好的单元测试应该能够告诉阅读者,一个对象的API是如何准备被调用的。
    • 易于设置。

    最后,Ed Burnette写到:要让你的单元测试在任何方面都可以重复;测试边界条件,并且要一直保持测试的通过率是100%。

    查看英文原文:What are the Qualities of a Good Test?


  • 相关阅读:
    kafka 控制台命令
    VMware centos7 如何配置静态ip并且可上网
    kafka学习-坑篇
    IDEA中Git的更新、提交、还原方法
    深入理解Java的接口和抽象类
    java动态代理实现与原理详细分析
    注解 @EnableFeignClients 工作原理
    com.mysql.cj.jdbc.Driver 新特性jdbc.url连接供参考
    插入数据库中文乱码
    logback配置文件
  • 原文地址:https://www.cnblogs.com/oscarxie/p/1307521.html
Copyright © 2011-2022 走看看