5分钟了解单元测试

🍅 视频学习:文末有免费的配套视频可观看

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快

一、什么是单元测试?

单元测试是指,对软件中的最小可测试单元在与程序其他部分相隔离的情况下进行检查和验证的工作,这里的最小可测试单元通常是指函数或者类;单元测试属于最严格的软件测试手段,是最接近代码底层实现的验证手段,可以在软件开发的早期以最小的成本保证局部代码的质量。另外,单元测试都以自动化的方式执行,所以在大量回归测试的场景下执行单元测试,更能提高测试效率,另外,也可以帮助开发工程师改善代码的设计与实现。

代码的基本特征:

单元测试的对象是代码,代码的开发语言多种多样,程序的功能也千变万化,但是其基本特征还是顺序执行、条件分支、循环处理和函数调用等最基本的逻辑控制。

代码产生错误的原因:

如果有代码分类遗漏,就会产生缺陷;如果代码分类错误,也会产生缺陷;如果代码分类正确也没有遗漏,但是代码分类时的处理逻辑错误,也同样会产生缺陷。在具体的工程实践中,开发工程师为了设计并实现逻辑功能正确的代码,通常会有如下的考虑过程。

1、如果要实现正确的逻辑功能,会有哪几种正常的输入?
2、是否有需要特殊处理的多种边界输入?
3、各种非法输入的可能性有多大?如何处理?

这里,黑盒测试的“等价类”,这些开发工程师眼中的代码“功能点”,就是单元测试(白盒测试)的“等价类”。

二、单元测试用例

单元测试的用例是一个“输入数据”和“预期输出”的集合;测试人员需要针对确定的输入,根据逻辑功能推算出预期正确的输出,并且以执行被测试代码的方式进行验证。输入数据不仅仅是函数的入参,同样输出数据也不仅仅是函数的返回值那么简单。

输入数据:
        1、被测函数的输入参数;
        2、被测函数内部需要读取的全局静态变量;
        3、被测函数内部需要读取的成员变量;
        4、在函数内部调用子函数获得的数据;
        5、在函数内部调用子函数改写的数据;
        6、嵌入式系统中,在中断调用时改写的数据:
        。。。。。。

预期输出:
        1、被测函数的返回值;
        2、被测函数的输出参数;
        3、被测函数所改写的成员变量:
        4、被测函数所改写的全局变量;
        5、被测函数中进行的文件更新;
        6、被测函数中进行的数据库更新:
        7、被测函数中进行的消息队列更新:
        8、被测试函数中调用的其他函数:
        。。。。。。

三、驱动代码与桩代码

驱动代码指调用被测函数的代码;在单元测试中,驱动模块通常包括调用被测函数前的数据准备、调用被测函数以及验证结果三个步骤。
桩代码是用来代替真实代码的临时代码;如某个函数A调用一个尚未完成的函数B,为了对函数A的逻辑进行测试,模拟一个函数B,B就是桩代码。为了实现对A的全路径覆盖,需要控制不同测试用例中函数B的返回值。

桩代码的编写:
编写桩代码通常需要遵守的原则:

1、桩函数要具有与原函数完全相同的原型,仅仅内部实现不同,这样测试代码才能正确链接到桩函数。
2、用于实现隔离和补充的桩函数比较简单,只须保持原函数的声明,并加一个空的实现即可,目的是通过编译和链接。
3、实现控制功能的桩函数是应用最广泛的,要根据测试用例的需要,输出合适的数据作为被测函数的内部输入。

四、单元测试的自动化

单元测试阶段的“自动化”内涵不仅指测试用例执行的自动化,还包含以下方面:
        1、测试用例框架代码的自动生成;
        2、部分测试输入数据的自动生成;
        3、桩代码的自动生成;
        4、被测代码的自动静态分析;
        5、测试覆盖率的自动统计与分析;
        6、单元测试用例的自动执行。

同时,在这我为大家准备了一份软件测试视频教程(含面试、接口、自动化、性能测试等),就在下方,需要的可以直接去观看。

【2024最新版】Python自动化测试15天从入门到精通,10个项目实战,允许白嫖。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/30565.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

​海康威视 isecure center 综合安防管理平台任意文件上传漏洞

文章目录 前言声明一、漏洞描述二、影响版本三、漏洞复现四、修复方案 前言 海康威视是以视频为核心的智能物联网解决方案和大数据服务提供商,业务聚焦于综合安防、大数据服务和智慧业务。 海康威视其产品包括摄像机、多屏控制器、交通产品、传输产品、存储产品、门禁产品、消…

项目五 OpenStack镜像管理与制作

任务一 理解OpenStack镜像服务 1.1 •什么是镜像 • 镜像通常 是指一系列文件或一个磁盘驱动器的精确副本 。 • 虚拟机 所使用的虚拟磁盘, 实际上是 一种特殊格式的镜像文件 。 • 云 环境下尤其需要 镜像。 • 镜像 就是一个模板,类似于 VMware 的虚拟…

DDoS攻击增速惊人,谈谈防御DDoS攻击的几大有效方法

过去的十年里,DDoS攻击是计算机科学领域中最“头疼”的问题之一。Gcore发现,DDoS攻击增速惊人,2021年DDoS攻击峰值流量为300Gbps,2022年增至650 Gbps,2023 年Q3-Q4季度增至1600 Gbps (1.6 Tbps)。企业如果没有采取足够…

react钩子函数用法(useCallback、useMemo)

useMemo import { useMemo } from react; function MyComponent({ a, b }) { const memoizedValue useMemo(() > { // 进行一些昂贵的计算 return a b; }, [a, b]); // 当 a 或 b 发生变化时&#xff0c;memoizedValue 将被重新计算 return <div>{memoizedVa…

产品Web3D交互展示有什么优势?如何快速制作?

智能互联网时代&#xff0c;传统的图片、文字、视频等产品展示方式&#xff0c;因为缺少互动性&#xff0c;很难引起用户的兴趣&#xff0c;已经逐渐失去了宣传优势。 Web3D交互展示技术的出现&#xff0c;让众多品牌和企业找到了新的方向&#xff0c;线上产品展示不在枯燥无趣…

最小公倍数的求法

什么是最小公倍数&#xff1f; 最小公倍数是指两个或多个整数共有的最小正整数倍数。 如何求一组数据的最小公倍数&#xff08;Least Common Multiple&#xff0c;简称LCM&#xff09;&#xff1f; LCM 这组数据的公倍数 这组数据的最大公约数 (Greatest Common Divis…

前端页面实现【矩阵表格与列表】

实现页面&#xff1a; 1.动态表绘制&#xff08;可用于矩阵构建&#xff09; <template><div><h4><b>基于层次分析法的权重计算</b></h4><table table-layout"fixed"><thead><tr><th v-for"(_, colI…

可视化表单拖拽生成器优势多 助力流程化办公!

当前&#xff0c;很多企业需要实现流程化办公&#xff0c;进入数字化转型时期。要想实现这一目标&#xff0c;就需要借助更优质的平台产品。低代码技术平台是得到企业喜爱的发展平台&#xff0c;拥有可视化操作、灵活、高效、更可靠等优势特点&#xff0c;在推动企业实现流程化…

域名注册过期多久可重新注册?

由于种种原因&#xff0c;域名可能会过期。聚名网将介绍域名注册过期后重新注册的时间窗口以及相关的注意事项。 域名注册过期后&#xff0c;通常会经历以下几个阶段&#xff1a; 宽限期(Grace Period)&#xff1a;大多数域名在注册到期后会有一个宽限期&#xff0c;这个期限通…

记录vue一个echarts页面 柱状图加平均分横线 双柱状图 横向双柱状图

<template><div class"app-container"><el-form :model"queryParams" ref"queryForm" size"small" v-show"showSearch" label-width"85px"><el-form-item label"园所名称" prop&q…

Vue发送http请求

1.创建项目 创建一个新的 Vue 2 项目非常简单。在终端中&#xff0c;进入您希望创建项目的目录(我的目录是D:\vue)&#xff0c;并运行以下命令&#xff1a; vue create vue_test 2.切换到项目目录&#xff0c;运行项目 运行成功后&#xff0c;你将会看到以下的编译成功的提示…

使用二进制安装安装docker

在一些情况下无法使用yum安装docker下面写了一个使用二进制安装docker的文档 官网下载地址https://download.docker.com/linux/static/stable/x86_64/ 可以按需求下载 wget https://download.docker.com/linux/static/stable/x86_64/docker-20.10.10.tgz 下载包 tar xf dcker…

要改Google签名?这些你足够了解吗!

大家好&#xff0c;我是小编阿文。欢迎您关注我们&#xff0c;经常分享有关Android出海&#xff0c;iOS出海&#xff0c;App市场政策实时更新&#xff0c;互金市场投放策略&#xff0c;最新互金新闻资讯等文章&#xff0c;期待与您共航世界之海。 老项目keystore签名信息包含国…

瑞数信息入选IDC《中国WAAP厂商技术能力评估,2024》

5星满分&#xff1a;WAF、Bot流量管理、行业应用等评估维度 日前&#xff0c;全球领先的IT市场研究和咨询公司IDC发布《中国WAAP厂商技术能力评估&#xff0c;2024》。报告聚焦WAAP能力&#xff0c;通过对中国市场中主要WAAP产品提供商的技术评估以及对大量最终用户的客观访谈…

一文彻底搞懂 Transformer(图解+手撕)

Transformers 亮相以来彻底改变了深度学习模型。 今天&#xff0c;我们来揭示 Transformers 背后的核心概念&#xff1a;注意力机制、编码器-解码器架构、多头注意力等等。通过 Python 代码片段&#xff0c;让你深入了解其原理。 一、理解注意力机制 注意力机制是神经网络中…

代理设计模式,框架AOP思想

文章目录 引言&#x1f92a;代理对象(Proxy)如何开发一个代理对象开发中的业务层代码冗余问题开发静态代理类动态代理 引言&#x1f92a; 代理 (proxy) &#xff0c;举个生活中常见的现象&#xff0c;在之前网路还未走进大众的时代里&#xff0c;如果我们想买一些东西&#xf…

第十九届全国大学生智能汽车竞赛智慧巡检创意组赛程安排通知

各位老师和同学们大家好&#xff1a; 通知一&#xff1a;经过和大赛组委会、承办校协商确定&#xff0c;天途智慧巡检创意组线下预选赛和总决赛将在吉林大学&#xff08;东北赛区&#xff09;举办&#xff0c;赛程如下&#xff1a; 地点&#xff1a;吉林大学前卫南区体育馆 地…

Nginx之文件下载服务器

1.概述 在对外分享文件时&#xff0c;利用Nginx搭建一个简单的下 载文件管理服务器&#xff0c;文件分享就会变得非常方便。利 用Nginx的诸多内置指令可实现自动生成下载文件列表 页、限制下载带宽等功能。配置样例如下&#xff1a; server {listen 8080;server_name localhos…

有了MES、ERP,质量管理为什么还需要QMS?

在制造业&#xff0c;质量管理始终是企业管理中永恒的主题。品质管理要想做得更好&#xff0c;企业必须掌握足够多、足够有用的数据和信息&#xff0c;实现质量管理信息化。很多中小企业也很困惑&#xff0c;是否有必要上线QMS质量管理系统&#xff1f; 一、为什么企业需要QMS的…

Graph RAG 的力量:智能搜索的未来

随着世界越来越依赖数据&#xff0c;对准确、高效的搜索技术的需求从未如此高涨。传统搜索引擎虽然功能强大&#xff0c;但往往难以满足用户复杂而细微的需求&#xff0c;尤其是在处理长尾查询或专业领域时。Graph RAG&#xff08;检索增强生成&#xff09;正是在这种情况下应运…