获得徽章 0
Mock打桩
①为什么要提出Mork
如图1所示,该测试程序所用的样例为本地文件。
如果本地文件被篡改或者被删除,那么这个测试程序就不能够正常完成测试功能了。
为了解决这个问题,我们需要采用Mock。
②Mock基本思想
假设我们测试程序需要依赖于函数A,而函数A是需要依赖于本地文件的。那么我们就用一个函数B去替换函数A,其中函数B不需要依赖本地文件或网络,并且可以完成测试功能。这个就是Mock的基本思想。
③举例
比方说①中的ReadFirstLine函数(即函数A)就需要依赖于本地文件,那么我们就用一个函数B(图2中的匿名函数)去替代函数A。
可以看到这个函数B不需要依赖于本地文件,而且能够完成测试任务。
Patch和Unpatch分别是替换和取消替换,一定要成对出现,有Patch就一定要Unpatch,就像栈的push和pop一样。
①为什么要提出Mork
如图1所示,该测试程序所用的样例为本地文件。
如果本地文件被篡改或者被删除,那么这个测试程序就不能够正常完成测试功能了。
为了解决这个问题,我们需要采用Mock。
②Mock基本思想
假设我们测试程序需要依赖于函数A,而函数A是需要依赖于本地文件的。那么我们就用一个函数B去替换函数A,其中函数B不需要依赖本地文件或网络,并且可以完成测试功能。这个就是Mock的基本思想。
③举例
比方说①中的ReadFirstLine函数(即函数A)就需要依赖于本地文件,那么我们就用一个函数B(图2中的匿名函数)去替代函数A。
可以看到这个函数B不需要依赖于本地文件,而且能够完成测试任务。
Patch和Unpatch分别是替换和取消替换,一定要成对出现,有Patch就一定要Unpatch,就像栈的push和pop一样。
展开
评论
1
# Go 语言工程实践之测试
在网上收集的一些相关资料:
一、测试
(
blog.csdn.net)
1)回归测试
当发现并修改缺陷后,或在软件中添加新的功能后,重新测试。用来检查被发现的缺陷是否被改正,并且所做的修改没有引发新的问题。回归测试可以通过人工重新执行测试用例,也可以使用自动化的工具来进行。
2)集成测试
通过测试发现与模块接口有关的问题。目标是把通过了单元测试的模块拿来,构造一个在设计中所描述的程序结构,应当避免一次性的集成(除非软件规模很小),而采用增量集成。
自顶向下集成:模块集成的顺序是首先集成主模块,然后按照控制层次结构向下进行集成,隶属于主模块的模块按照深度优先或广度优先的方式集成到整个结构中去。
自底向上集成:从原子模块开始来进行构造和测试,因为模块是自底向上集成的,进行时要求所有隶属于某个给顶层次的模块总是存在的,也不再有使用稳定测试桩的必要。
3)单元测试
单元测试是完成最小的软件设计单元(模块)的验证,目标是确保模块被正确的编码,使用过程设计描述作为指南,对重要的控制路径进行测试以发现模块内的错误,通常情况下是白盒的,对代码风格和规则、程序设计和结构、业务逻辑等进行静态测试,及早的发现和解决不易显现的错误。
从上到下,覆盖率逐渐变大,成本逐渐降低。
4)覆盖率
也就是代码覆盖率,即一个测试输入在执行过程中能够执行多少条代码。比方说以下代码:
bool IsPassed(int score)
{
if( score >= 60 )
return true;
return false;
}
及格函数一共有三行代码,而当以70为用例进行测试时,前两条代码被执行,所以覆盖率为2/3=66.7%
在网上收集的一些相关资料:
一、测试
(
1)回归测试
当发现并修改缺陷后,或在软件中添加新的功能后,重新测试。用来检查被发现的缺陷是否被改正,并且所做的修改没有引发新的问题。回归测试可以通过人工重新执行测试用例,也可以使用自动化的工具来进行。
2)集成测试
通过测试发现与模块接口有关的问题。目标是把通过了单元测试的模块拿来,构造一个在设计中所描述的程序结构,应当避免一次性的集成(除非软件规模很小),而采用增量集成。
自顶向下集成:模块集成的顺序是首先集成主模块,然后按照控制层次结构向下进行集成,隶属于主模块的模块按照深度优先或广度优先的方式集成到整个结构中去。
自底向上集成:从原子模块开始来进行构造和测试,因为模块是自底向上集成的,进行时要求所有隶属于某个给顶层次的模块总是存在的,也不再有使用稳定测试桩的必要。
3)单元测试
单元测试是完成最小的软件设计单元(模块)的验证,目标是确保模块被正确的编码,使用过程设计描述作为指南,对重要的控制路径进行测试以发现模块内的错误,通常情况下是白盒的,对代码风格和规则、程序设计和结构、业务逻辑等进行静态测试,及早的发现和解决不易显现的错误。
从上到下,覆盖率逐渐变大,成本逐渐降低。
4)覆盖率
也就是代码覆盖率,即一个测试输入在执行过程中能够执行多少条代码。比方说以下代码:
bool IsPassed(int score)
{
if( score >= 60 )
return true;
return false;
}
及格函数一共有三行代码,而当以70为用例进行测试时,前两条代码被执行,所以覆盖率为2/3=66.7%
展开
评论
1
#新人报道#
Go的几种初始化方式如下:
var a int = 1
b := int(2)
而Go中有两种print方法,一种是fmt的print方法,另一种是内置的print方法。
内置的print方法打印颜色是红色的,而且不能够接受结构体参数,一般用来打印错误信息;
而fmt包中的print方法可以接受结构体参数,一般用来做标准输出:
println(a, b)
fmt.Println(a, b)
Go的几种初始化方式如下:
var a int = 1
b := int(2)
而Go中有两种print方法,一种是fmt的print方法,另一种是内置的print方法。
内置的print方法打印颜色是红色的,而且不能够接受结构体参数,一般用来打印错误信息;
而fmt包中的print方法可以接受结构体参数,一般用来做标准输出:
println(a, b)
fmt.Println(a, b)
展开
评论
点赞