什么是单元测试
单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。
在php里边,最小单元可以指一个函数、或者类,需要验证的就是每个函数,每个类的功能与我们预想的一致。
单元测试有什么意义
- 可以 减少一些细节错误的发生 ,比如应该报错的情况没有报错,入参、结果是否与需求对应上等。
- 便于日后修改维护 ,实际工作中存在不少情况是做出了一版功能,但是上线后需要对里边的细节进行调整,有单元测试的话改起来会更加放心,并且完善单元测试的过程也是进一步理解需求的过程。
- 更容易 发现平时无法走到的异常分支 ,而这个分支的处理逻辑可能人工测试需要经历很多步骤才能走到,省时间
最近在工作中也尝试着为开发中的功能写单元测试,切实意识到了单元测试的好处,需求里边有一个比较复杂的时间推算逻辑,最开始自认为各种情况考虑周全然后劈里啪啦写完,不过运行了事先写好的单元测试之后,依旧发现了几个隐藏比较深问题( 再自信也得过一遍测试啊 )。
修复问题后提测的过程中遇到了需求变更,不少关键代码需要改动,正常这种情况自测的话会很费劲,因为需要数据库找各种各样情况的数据去跑接口,然后数据对不上改完还得重新跑接口自测。但是这次先把单元测试规定正确后,放心大胆的按照自己的想法改造代码,经历了 改代码 > 跑测试 > 改代码 > 跑测试的循环后,快速交付了需求。
单元测试的一些概念
之前也接触过php、python、JS之类的语言,对这些语言的单元测试也有一定了解,下边先看一下单元测试中通用的一些概念。
断言
想要更加细致的了解断言的话,这里推荐一篇博客:https://www.jianshu.com/p/9b8c88deed6a
在软件测试特别是在单元测试时,必用的一个功能就是“断言”(Assert),顾名思义,编写程序时,常会做出一定的假设,那断言就是用来捕获假设的异常。
下边举个栗子:
一个简单的函数 add() 拥有两个参数,功能是返回两个参数的和,当我需要验证这个函数的正确性的时候就需要模拟两个入参并 判断函数的返回值是否为两个入参之和 ,判断返回值是否准确这个过程即为断言。
function add($a, $b)
{
return $a + $b;
}
基境
每一个单元测试方法都是一个独立的个体,每次单元测试完毕,需要将数据恢复到正确的状态中,不至于被其他测试方法给影响。
在phpunit中,给出的 TestCase 基类即有两个方法, setUp 和 setDown 分别用于为每个单元测试创建测试对象和清理测试对象
数据供给器
对同一类情况进行测试,通常可以用数据供给器传入不同入参和相应的预期返回值。
测试方法可以接受任意参数。这些参数由数据供给器方法提供。在phpunit中使用 @dataProvider 标注来指定使用哪个数据供给器方法。
php如何集成单元测试
PHP的单元测试依赖一个测试框架:phpunit(官方文档:https://phpunit.readthedocs.io/zh_CN/latest/index.html )
如何安装
可以通

本文围绕单元测试展开,介绍其定义为对软件最小可测试单元的检查验证,阐述了减少错误、便于维护、发现异常分支等意义。还讲解了断言、基境、数据供给器等概念,详细说明了PHP集成单元测试的安装、编写、运行等步骤,并以斐波那契数列函数为例进行演示。
最低0.47元/天 解锁文章
181





