单元测试基础

news/2024/11/16 10:27:27/

一、什么是单元测试:

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

代码的基本特征:

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

代码产生错误的原因:

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

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、单元测试用例的自动执行。
 

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 


http://www.ppmy.cn/news/735702.html

相关文章

远航汽车:坚持合作共赢经营理念 携手志同道合者共创美好未来

智能汽车时代,想要打造一款真正符合用户需求的新能源车,势必要具备硬核技术实力以及敢于突破、不断求变的思维,始终做到以用户为中心,打造属于自己的品牌核心力,才能从激烈的市场竞争中脱颖而出。在此背景下&#xff0…

Fluent1000万网格需要多大内存

三维网格,1000w网格需要的内存大概40G左右 来源知乎

如果你负责一款DAU(日活用户数量)1000W左右的陌生交友类社交产品,你会怎样从用户角度分析变现空间?

首先可能要对该app的用户进行一个基本的用户分析和画像定位。再去选择哪种变现方式比较合适。 DAU达到1000W左右,说明这已经是一款踏入成熟期的产品,核心功能不再考虑大变动而是考虑优化升级、找到新的增长点; 陌生交友类社交产品&#xff0c…

如何快速生成1-1000w的数字到txt文件中

方法一:使用Excel表 1. 在A列的第一行输入:1 2. 点击1的方格,选择上方栏目的“编辑”—>“填充”—>“序列” 3. 按照以下方式填写:终止值为10000000,点击“确定”,表格则会自动会按照升序的方式填…

【优选源码】每天免费领取名片赞至少1000!引流必备!

介绍: 之前那个一百赞的天天被人说就一百,我只想说,这个接口稳了两个月还不知足嘛网上有哪个可以这么久这次有人提供了一个两百名片赞的接口,然后加上我的就300了[滑稽]他那两百不知道什么时候会挂,但是先用着吧&…

mysql单表1000万条_mysql单表千万条数据测试

软件环境:win7,mysql版本5.5,InnoDB存储引擎。 硬件环境:普通笔记本,CPU P8700双核2.53GHz,内存3G,5400转机械硬盘1000GB。 建了一张表,id列是自增长bigint,再加上其他varchar、datetime型的字段,总共8个字段,通过java生成了insert的sql文件,一共62个文件,每个文件…

Java编程——输出1000以内的素数(质数)

素数的定义是什么? 质数(prime number)又称素数,有无限个。 一个大于1的自然数,除了1和它本身外,不能被其他自然数(质数)整除,换句话说就是该数除了1和它本身以外不再有其…

阿里面试官说: 请你设计一个支撑1000W并发的系统?

第一章 1000W用户的问题分解 如何支撑1000W用户其实是一个非常抽象的问题,对于技术开发来说,我们需要一个非常明确的对于执行关键业务上的性能指标数据,比如,高峰时段下对于事务的响应时间、并发用户数、QPS、成功率、以及基本指…