博客
关于我
单元测试的必要性 从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学习总结(7)—— PostgreSQL 语句 INSERT INTO、SELECT、UPDATE、DELETE 等学习
    查看>>
    PostgreSQL学习总结(8)—— PostgreSQL 基于数据库和基于模式(schema)的多租户分析
    查看>>
    PostgreSQL学习总结(9)—— PostgreSQL 运算符与表达式
    查看>>
    PostGreSql学习笔记001---PostgreSQL10.4安装(Windows)_支持PostGreGis_PostJDBC
    查看>>
    PostGreSql学习笔记002---Navicat Premium中管理PostGreSql 错误:字段rolcatupdate 不存在
    查看>>
    PostgreSQL学习笔记:PostgreSQL vs MySQL
    查看>>
    PostgreSQL实现shape数据转geojson数据(地图工具篇.18)
    查看>>
    PostgreSQL导入shape数据(地图工具篇.10)
    查看>>
    PostGreSql工作笔记003---在Navicat中创建数据库时报错rolcatupdate不存在_具体原因看其他博文_这里使用pgAdmin4创建管理postgre
    查看>>
    PostGreSql工作笔记004---PostGreSql修改密码_windows和linux下修改
    查看>>
    Postgresql常用命令行操作_以及Navicat操作PostGis时的问题_自动截取长度_WKB structure does not match exp---PostgreSQL工作笔记005
    查看>>
    PostgreSQL忘记密码
    查看>>
    PostgreSQL数据库pg_dump命令行不输入密码的方法
    查看>>
    PostgreSQL新手入门
    查看>>
    postgresql树状结构查询示例
    查看>>
    PostgreSQL流复制参数max_wal_senders详解
    查看>>
    postgresql流复制配置
    查看>>
    PostgreSQL清空表并保留表结构、清空数据库还原数据库为新建时的状态的方法
    查看>>
    PostgreSQL的 initdb 源代码分析之九
    查看>>
    PostgreSQL的安装与使用指南
    查看>>