博客
关于我
单元测试的必要性 从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/

    你可能感兴趣的文章
    Mysqldump参数大全(参数来源于mysql5.5.19源码)
    查看>>
    mysqldump备份时忽略某些表
    查看>>
    mysqldump实现数据备份及灾难恢复
    查看>>
    mysqldump数据库备份无法进行操作只能查询 --single-transaction
    查看>>
    mysqldump的一些用法
    查看>>
    mysqli
    查看>>
    MySQLIntegrityConstraintViolationException异常处理
    查看>>
    mysqlreport分析工具详解
    查看>>
    MySQLSyntaxErrorException: Unknown error 1146和SQLSyntaxErrorException: Unknown error 1146
    查看>>
    Mysql_Postgresql中_geometry数据操作_st_astext_GeomFromEWKT函数_在java中转换geometry的16进制数据---PostgreSQL工作笔记007
    查看>>
    mysql_real_connect 参数注意
    查看>>
    mysql_secure_installation初始化数据库报Access denied
    查看>>
    MySQL_西安11月销售昨日未上架的产品_20161212
    查看>>
    Mysql——深入浅出InnoDB底层原理
    查看>>
    MySQL“被动”性能优化汇总
    查看>>
    MySQL、HBase 和 Elasticsearch:特点与区别详解
    查看>>
    MySQL、Redis高频面试题汇总
    查看>>
    MYSQL、SQL Server、Oracle数据库排序空值null问题及其解决办法
    查看>>
    mysql一个字段为空时使用另一个字段排序
    查看>>
    MySQL一个表A中多个字段关联了表B的ID,如何关联查询?
    查看>>