go学习(十一)——Go 语言自动化测试
2017-09-28 14:08
148 查看
自动化测试
自动化测试框架
go程序测试
测试对象准备
例子代码
功能测试用例
执行测试
显示执行详细信息
压力测试用例
执行测试
详细信息
总结
在这篇文章中将会学习一下如何在go语言中使用testing包进行功能测试和性能测试。
可以看出作为一门有后发优势的年轻语言,go在设计的时候标准库中含括一些已经得到证实的最佳实践。
参考链接:http://blog.csdn.net/liumiaocn/article/details/54922394
自动化测试框架
go程序测试
测试对象准备
例子代码
功能测试用例
执行测试
显示执行详细信息
压力测试用例
执行测试
详细信息
总结
在这篇文章中将会学习一下如何在go语言中使用testing包进行功能测试和性能测试。
自动化测试
正如Martin Fowler所说的”在你不知道如何测试代码之前,就不该编写程序。而一旦你完成了程序,测试代码也应该完成。除非测试成功,你不能认为你编写出了可以工作的程序”。测试在软件开发中起到了非常关键的作用,而Martin Fowler所倡导的测试代码和程序同时完成的方式在大型项目中也正在应用,随着质量意识的提高以及DevOps的推行,自动化测试在变得越来越重要。自动化测试框架
各种语言都有不同的测试框架,而测试因其种类不同,框架也有所不同,而且同等类似功能的框架也有很多,简单列举一部分与go语言的标准库testing作比较如下C | Cunit | 第三方 |
C++ | Cppunit | 第三方 |
Java | Junit | 第三方 |
Python | PyUnit | 第三方->标准库 |
go | testing | go语言标准库 |
go程序测试
通过testing包,go语言编写的程序可以进行功能测试和压力测试(BMT: Benchmark Testing)。如下是在编写测试用例时候需要注意的事项依赖 | import testing |
命令 | go test |
测试文件名 | 必须以_test.go结尾 |
功能测试用例函数 | 必须以Test开头,其后的函数名不能以小写字母开头,比如Testadd是一个错误的命名 |
压力测试用例函数 | 必须以Benchmark开头,其后的函数名不能以小写字母开头 |
功能测试参数 | testing.T |
压力测试参数 | testing.B |
记录测试信息 | .Log方法, 缺省不会显示,仅在go test -v时会显示 |
测试控制 | 通过Error/Errorf/FailNow/Fatal/FatalIf等进行测试是否失败或者在何种条件下失败的控制 |
压力测试 | go test缺省不会进行压力测试的执行,需要执行压力测试的时候要加上参数-test.bench |
压力测试循环体 | 压力测试循环体中会使用test.B.N |
测试对象准备
为了学习go语言中如何使用testing标准库,事前准备前面讲解流程控制时使用到的switch-case的例子,以及一个计算加法的函数文件名 | basicfunc.go | 测试对象文件 |
package名 | basicfunc | 测试对象Package |
测试对象函数 | GetGrade | 输入分数返回A-D的等级 |
测试对象函数 | Add | 输入两个数字,返回其相加之和 |
例子代码
功能测试用例
执行测试
显示执行详细信息
压力测试用例
增加压力测试用例后代码如下执行测试
通过压力测试可以看到,Add函数执行了2000000000次,平均执行时间0.42纳秒。详细信息
总结
go语言标准包的testing提供了功能性测试和压力测试常用的方法的框架,可以非常方便地利用其进行自动化测试。参考链接:http://blog.csdn.net/liumiaocn/article/details/54922394
相关文章推荐
- Go语言学习(十一)面向对象编程-类型系统
- Go语言学习笔记十一: 切片(slice)
- Go语言学习笔记十一: 切片(slice)
- Go语言学习
- go语言学习基础
- GO语言学习三(流程控制语句)
- Go语言学习笔记一: Hello World
- Go语言学习(十三)面向对象编程-继承
- go语言学习-windows下开发环境的搭建
- Go语言学习
- go语言学习:搭建go环境
- Go 语言学习日志
- Go语言学习之sync包(临时对象池Pool、互斥锁Mutex、等待Cond)(the way to go)
- GO语言学习(二)
- go语言学习
- go学习(一)--Go语言环境的安装
- Go语言学习笔记 --- slice切片
- Go语言学习之errors包(The way to go)
- 分享| Go语言(golang)的认识,跟学习资料及其开发工具
- [Go语言]从Docker源码学习Go——指针和Structs