首页 > 其他分享 >单元测试的思考与实践

单元测试的思考与实践

时间:2024-04-03 16:33:07浏览次数:20  
标签:依赖 思考 代码 单元测试 实践 3.2 测试 软件

1. 什么是单元测试

通常来说单元测试,是一种自动化测试,同时包含一下特性:

  • 验证很小的一段代码(业务意义 或者 代码逻辑 上不可再分割的单元),能够更准确的定位到问题代码的位置
  • 能够快速运行(单元测试的意义,在于快速且周期性的验证原有代码的准确性),提高项目开发效率
  • 以隔离的方式 (isolated manner)运行(对外部依赖通过插桩解耦,避免单元测试的复杂度,实现问题快速定位,简化单元测试的运行环境,多个单元测试可以以任何顺序甚至并行进行)

2. 为什么要单元测试

因为单元测试有如下优点:

  1. 能快速的回归,提高自测的效率
  2. 集成测试或者端到端的手工测试效率低,而且无法覆盖到更细节的逻辑分支
  3. 也存在功能设计超前于产品设计,通过接口维度,无法触达某些逻辑分支,需要通过单元测试来覆盖
  4. 功能开发人员更了解代码的实现,开发人员写出的测试用例往往能更全面的覆盖代码
  5. 有良好单测的代码,往往更方便重构
  6. 单元测试是项目代码的一部分,维护方便,当然这也依赖良好的单元测试编写习惯,合适的颗粒度

3. 如何识别有测试价值的代码?

当我们考虑给代码添加 单元测试时,需要首先考虑加入单测后能够带来的收益有多少,以及其付出的成本有多少,用最小的维护成本提供最高的价值的单元测试

3.1 项目属性
软件本身发布更新成本比较大,如嵌入式软件,客户端程序;或者 软件的缺陷 更可能带来较大的资损,如工厂,银行内部的软件,这类软件都是需要优先考虑单元测试。
如果一个项目本身不是特别核心的项目,影响面小,迭代更新相对较容易,那么对单元测试的要求,或者说对质量的要求,也就没有那么强烈

3.2 代码属性
3.2.1 重要的代码

  1. 领域层
  2. 基础设施代码
    3.2.2 不容易被集成测试覆盖的代码
  3. 边界条件
  4. 异常条件
  5. 低概率场景
    3.2.3 容易出现问题的代码
  6. 复杂的业务逻辑分支
  7. 状态机
  8. 胶水代码:负责组合多个功能,多个功能的输入具有不确定性

3.3 个人不建议的单元测试的行为

  1. 通常来说不建议在单元测试的时候,启动spring容器后,会牵扯过多的外部依赖,导致单元测试难以进行,或者成本过高
  2. 同样,外部接口,数据库依赖,中间件依赖,都不建议在单元测试中加载,可以通过mock或者sub的方式来进行隔离

标签:依赖,思考,代码,单元测试,实践,3.2,测试,软件
From: https://www.cnblogs.com/IC1101/p/18113009

相关文章

  • 上传苹果IPA安装包的最佳实践:确保成功通过App Store审核
    目录引言摘要第二步:打开appuploader工具第二步:打开appuploader工具,第二步:打开appuploader工具第五步:交付应用程序,在iTunesConnect中查看应用程序总结引言在将应用程序上架到苹果应用商店之前,开发者需要学习如何上传ipa安装包。本文将介绍使用appuploader工具将ipa......
  • 在微信小程序中实现银行支付接入的技术实践
    在微信支付的大力普及下,手续费率也是大家最大的困扰,交易量比较小还可以忍受,但是一天几十万、几百万甚至几千万的交易金额,手续费就会成为商家的最大困扰。再客户极力的推荐增加银行支付接口,我们经过几个月的对接,终于把招商银行、农业银行、工商银行、建设银行的支付接口接入到小......
  • 大数据实验统计-1、Hadoop安装及使用;2、HDFS编程实践;3、HBase编程实践;4、MapReduce编
    大数据实验统计1、Hadoop安装及使用;一.实验内容Hadoop安装使用:1)在PC机上以伪分布式模式安装Hadoop;2)访问Web界面查看Hadoop信息。二.实验目的1、熟悉Hadoop的安装流程。2、熟悉Hadoop访问Web界等基本操作。大数据实验一,Hadoop安装及使用-CSDN博客文章浏览阅读149次,点赞3......
  • .Net单元测试xUnit和集成测试指南(1)
    引言在现代化的软件开发中,单元测试和集成测试是确保代码质量和可靠性的关键部分。ASP.NETCore社区内提供了强大的单元测试框架,xUnit是其中之一,它提供了简单、清晰和强大的测试功能,编写单元测试有许多优点;有助于回归、提供文档及辅助良好的设计。下面几节我们来深入浅出探讨如......
  • - 工程实践 - 《高并发系统正确性保障 - 锁的范式》
            本文属于专栏《构建工业级QPS百万级服务》系列简介-CSDN博客        “锁”,在新华字段的解释是“加在门、箱子、抽屉等物体上的封缄器,要用专用的钥匙才能打开”。在计算机领域,可以抽象为:主体A,在物品W上,附加物品S(锁),让其他主体不能完整地使用。  ......
  • AI小程序的创业方向:深度思考与逻辑引领
    随着人工智能技术的快速发展,AI小程序逐渐成为创业的新热点。在这个充满机遇与挑战的时代,我们有必要深入探讨AI小程序的创业方向,以把握未来的发展趋势。 一、目标市场定位首先,我们要明确目标市场。针对不同的用户需求,AI小程序可应用于各个领域,如电商、医疗、教育、金融等。在......
  • 单元测试和系统测试的区别?
    一、概念:系统测试进行系统测试以检查软件或产品是否满足指定的要求。它由测试人员和开发人员共同完成。它包含系统测试和集成测试。它是通过更多的正面和负面的测试用例来完成的。单元测试单元测试是软件测试级别的类型,其中测试软件的每个单独组件。单元测试通常由开......
  • 引领未来:公司战略目标的制定与实践
    引领未来:公司战略目标的制定与实践一、明确方向:公司战略目标的顶层设计在公司的发展过程中,明确的战略目标是至关重要的。它们为公司的发展提供了清晰的方向,是公司全体员工的共同追求。为了实现这些目标,公司需要进行顶层设计,确保战略目标的科学性、前瞻性和可行性。首先,公司......
  • 机器学习实践篇第一篇-安装及配置环境
    一.机器学习的概念    机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重组织已有的知识结构使之不断改善自身的性能。它是人工智能核心,是使计算机具有智......
  • 机器学习实践篇第二篇-KNN算法学习
    一.了解什么是K-NN算法  1.KNN算法原理KNN(K-NearestNeighbor)算法是机器学习算法中最基础、最简单的算法之一。它既能用于分类,也能用于回归。KNN通过测量不同特征值之间的距离来进行分类。KNN算法的思想非常简单:对于任意n维输入向量,分别对应于特征空间中的一个点,输出为......