博客
关于我
单元测试的必要性 从bug修复 费用成本和时间成本综合考虑
阅读量:767 次
发布时间:2019-03-23

本文共 1185 字,大约阅读时间需要 3 分钟。

单元测试与软件质量

开发者_constructor 系统的完成功能运行, 如同组装一架飞机. 各个部件须在单独测试后, 才能确保整体系统的质量.

单元测试的重要性

单元测试是软件质量的基石. 它不仅覆盖了所有代码路径, 还能显著降低开发成本. 研究表明, 80% 的错误源于设计阶段, 及时发现并修复这些错误可大幅减少后期更高成本的修复.

单元测试带来的好处有:

  • 100% 的代码覆盖率保证
  • 提前发现设计层面的问题
  • 减少后期维护成本
  • 按照单元测试的原则编写代码, 能显著提升代码的规范性和可测试性. 细心的单元测试还能帮助工程师对代码进行重构, 而不至于惊跌代码库.

    时间成本指标

    微软的调查显示, 单元测试阶段发现的错误平均耗时为3.25小时. 而如果等到系统测试阶段才发现同样的错误, 花费将达到11.5小时. 无论是从效率还是成本来看, 早期发现检验的重要性不言而喻.

    测试中的阶段

    下图展示了一个关键现象: 85% 的缺陷出现在设计阶段, 随着测试阶段的推迟, 错误发现和修复的成本呈指数增长. 因此, 单元测试能够在初期发现符号问题, 以少btn天 cares.

    单元测试的艺术

    《单元测试的艺术》这一书中的案例证明, 强调单元测试的团队投入能够显著提升整体开发效率. 通过单元测试, 代码编写时间从7天提升至14天, 但团队在集成测试阶段表现优异, 验收时间大幅缩短.

    单元测试也为后续测试策略提供了指导. 推崇的冰淇淋模型已被改进为金字塔模型. 它强调各层次测试的重要性, 并鼓励将手工测试逐步自动化.

    金字塔模型的优化版本指出, 从底层到顶层的测试粒度逐步递减. 单元测试负责细粒度的验证, 分层自动化测试处理中级问题, UI测试则覆盖系统整体行为.

    单元测试的演进

    20世纪的测试方法难以应对庞大系统的测试需求. 数年前, Mike Cohn 提出的金字塔模型重新定义了测试架构. 它简化了测试层次概念, 并强调了测试粒度的多样性.

    根据模型, 单元测试应优先自动化. 其次是分层或界面测试, 最后才是系统测试. 这一架构下, 各层次测试负责不同的维度, 优化了开发流程.

    Google的测试思维

    Google制定了独特的测试分类体系,将测试分为小型、中型和大型三种类型:

  • 小型测试: 针对单个功能模块进行验证, mock所有外部服务.
  • 中型测试: 验证两个或多个模块间的交互关系.
  • 大型测试: 测试系统作为整体的行为.
  • 这种分类方法能够根据需求灵活选择最合适的测试方式.

    结论

    单元测试才是构建高质量软件的关键. 通过以单元为基础的测试策略, 同时涵盖多层次验证, 可以最大限度保障软件质量. 在实际开发中, 强调代码质量, 进行早期检验, 是确保项目成功交付的核心要素.

    参考内容

    转载地址:http://wyozk.baihongyu.com/

    你可能感兴趣的文章
    PostgreSQL 9.6 同步多副本 与 remote_apply事务同步级别 应用场景分析
    查看>>
    Postgresql CopyManager 流式批量数据入库
    查看>>
    PostgreSQL cube 插件 - 多维空间对象
    查看>>
    PostgreSQL Daily Maintenance - cluster table
    查看>>
    PostgreSQL on Linux 最佳部署手册
    查看>>
    PostgreSQL Oracle 兼容性之 - pipelined
    查看>>
    PostgreSQL Point-In-Time Recovery (Incremental Backup)
    查看>>
    postgresql Streaming Replication监控与注意事项
    查看>>
    postgresql 不需要付费_使用数据传输在PostgreSQL执行 外部连接运算符
    查看>>
    postgresql 主从配置_生产环境postgresql主从环境配置
    查看>>
    postgresql 函数&存储过程 ; 递归查询
    查看>>
    PostgreSQL 分组聚合查询中 filter 子句替换 case when
    查看>>
    PostgreSQL 同步流复制锁瓶颈分析
    查看>>
    PostgreSQL 备份与还原命令 pg_dump
    查看>>
    Postgresql 外部表插件postgres_fdw的安装和使用
    查看>>
    PostgreSQL 如何从崩溃状态恢复(上)
    查看>>
    PostgreSQL 存储过程基本语法
    查看>>
    PostgreSQL 实现批量更新、删除、插入
    查看>>
    PostgreSQL 导入 .gz 备份文件
    查看>>
    PostgreSQL 批量插入&更新数据时报错(ERROR: ON CONFLICT DO UPDATE command cannot affect row a second time)
    查看>>