【测试开发】单元测试、基准测试和性能分析(以 Go testing 为例)

这篇具有很好参考价值的文章主要介绍了【测试开发】单元测试、基准测试和性能分析(以 Go testing 为例)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、为什么需要测试🤔️

  1. 你写不出 bug-free 的代码。
  2. 你认为自己写出了 bug-free 的代码,但它在你意想不到的地方出错了。
  3. 你觉得自己写出了永不出错的代码,但它的性能十分糟糕。
【测试开发】单元测试、基准测试和性能分析(以 Go testing 为例)

二、在开发过程中做好测试(理想情况下)💯

“测试左移”距离真正落地或许还有不短的距离,但在开发过程中注重自己的代码质量,至少养成写单测的习惯还是很有必要的。
在 Go 语言的原生库中就带有测试工具,放在 testing 下,支持单元测试、基准测试等。

2.1 单元测试(Unit test)🛢️

单元测试,unit test。单元测试是软件开发中的一种测试方法,旨在对软件系统的最小可测试单元进行测试,例如函数或方法,以确保它们按照预期运行。在单元测试的过程中,开发人员编写测试用例,对被测试单元进行测试,收集测试结果,并与预期结果进行比较,以确定被测试单元是否通过。

使用 Go Testing 做单元测试通常需要遵守以下规则:

  1. 文件名以 xxx_test.go 命名。
  2. 需要 import testing 包;写的单测函数应以 Test… 开头,传入参数为 *testing.T
  3. 单测文件应与被测文件在同一文件夹下。

下面是使用 Go Testing 单元测试的示例:

package test

import "testing"

func TestSomething(t *testing.T) { ... }

写完单测后在终端(命令行)执行 go test 即可。有时会无法识别出需要编译的文件,因此得明确指定,如 go test xxx_test.go sample1.go,表示完成单测需要编译这两个 go 文件。

2.2 基准测试(Benchmark test)🛋️

基准测试,也称为性能测试。其目的是评估代码在给定条件下的性能,例如处理器速度、内存容量、I/O性能等,并比较不同实现下的性能差异。

细分来看,Benchmark 可以分为两种类型:(1)负载基准测试(2)适应性基准测试。

  • 负载基准测试是指用来测试系统在不同负载状态下如何运行的基准测试。这种测试通常是通过让系统执行一些计算密集型任务或者是I/O密集型任务来进行的,以检查系统的CPU、内存和磁盘性能等。
  • 适应性基准测试是指用来测试系统对负载变化的适应能力的基准测试。这种测试通常是通过模拟用户和应用程序之间的交互来进行,以检查系统的响应时间、吞吐量、并发性等性能指标。

和单元测试一样,在 Go Testing 下写基准测试也要满足一些规则:

  1. 同样地,文件名应该以 xxx_test.go 命名;也需要 import testing 包。
  2. 写的 Benchmark 函数应以 Benchmark… 开头,传入参数为 *testing.B
  3. 同样地,基准测试文件应与被测文件在同一文件夹下。

下面是使用 Go Testing 单元测试的示例:

package test

import "testing"

func BenchmarkSomething(b *testing.B) { ... }

写完后执行 go test -bench='Something$' .-bench 可以不带参数,即 go test -bench .,它所带的参数表示正则匹配,会匹配以 Something 结尾的基准测试函数。

2.3 性能分析(Performance profiling)🔍

性能分析,performance profiling。在代码测试中的性能分析,是指通过一系列的测试和分析,来评估代码的性能、瓶颈和优化策略。它通常会用来检测软件系统的瓶颈,找出系统性能瓶颈,以便对其进行优化,从而提升软件系统的性能。

性能分析往往是和 Benchmark 一起出现的,只不过性能分析更侧重于负载基准测试,可以通过指定 go test 的参数获取相关的负载信息。若要分析 CPU 的性能数据,可以通过 -cpuprofile=cpu.prof 来生成 cpu.prof 文件用于分析。

go test -bench='xxx' xxx_test.go -cpuprofile=cpu.prof

使用 go tool pprof xxx.prof 命令来分析 prof 文件内容,在 Linux 系统安装了 Graphviz 的前提下可以使用 gif 命令生成 CPU 时间消耗流程图。下图是截取了部分的 CPU 时间消耗流程图。文章来源地址https://www.toymoban.com/news/detail-439612.html

【测试开发】单元测试、基准测试和性能分析(以 Go testing 为例)

到了这里,关于【测试开发】单元测试、基准测试和性能分析(以 Go testing 为例)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Go性能分析工具pprof详解

    pprof是Go官方提供的性能分析工具,可以分析程序的运行情况,并且提供可视化的功能。prof是profile(画像)的缩写,使用pprof可以分析以下几种指标数据: allocs :程序启动之后内存分配的情况 block :导致阻塞操作的一些堆栈跟踪信息 cmdline :当前程序启动的命令行 goroutine

    2024年02月14日
    浏览(49)
  • GO——单元测试(test)

    go test用来做什么 做单元测试,测试函数是否符合预期 go test在哪个包 testing 如何使用 参考: https://geektutu.com/post/quick-go-test.html 以 my_func.go 中的Add方法为例 在同一个文件夹下添加my_func_test.go文件 测试文件以_test.go为结尾 里面的测试方法以Test开头,但是不一定是要跟方法名,

    2024年01月20日
    浏览(49)
  • 【kafka性能测试脚本详解、性能测试、性能分析与性能调优】

    Apache Kafka 官方提供了两个客户端性能测试脚本,它们的存放位置如下: 生产者性能测试脚本:$KAFKA_HOME/bin/kafka-producer-perf-test.sh 消费者性能测试脚本:$KAFKA_HOME/bin/kafka-consumer-perf-test.sh kafka-producer-perf-test.sh 支持测试的性能指标包括:吞吐量(throughput)、最大时延(max-latenc

    2024年02月04日
    浏览(64)
  • 全网最全,性能测试-性能瓶颈分析详全,优秀的性能测试工程师养成记...

    内存分析 内存的使用情况是系统性能中重要的因素之一,频繁的页交换及内存泄露都会影响到系统的性能(在这主要以Windows系统为主)。 内存分析用于判断系统有无遇到内存瓶颈,是否需要通过增加内存等手段提高系统性能表现。 1、查看MemoryAvailable Mbytes指标 在对系统进

    2024年02月05日
    浏览(71)
  • 你真的会性能测试吗?性能测试需求分析,从业务到数据(详细)...

    产品需求 业务场景: 一个问卷调查的功能,然后产品和业务会不定时通过前端界面去根据筛选条件查询相关问卷问题的答案明细,但是觉得很慢,让测试这边给出一个指标。 系统架构: MySQL数据库,所有问卷问题相关的数据都存储在同一张表,单台服务器,无缓存,通过一

    2024年02月10日
    浏览(60)
  • 性能测试分析定位

    当我们在性能测试过程中,遇到TPS无法上去、请求响应时间过长、各类资源利用率遇到瓶颈时,应该如何对它们进行分析定位。   硬件资源不足:服务器的CPU、内存、磁盘等硬件资源不足,无法支撑高并发的请求处理。可以通过增加硬件资源或者优化服务器配置来提升TPS。

    2024年03月26日
    浏览(49)
  • 性能测试分析与使用

    性能测试分析与使用 xx系统已经成功发布,依据之前项目的规划,计划服务1000+客户,未来势必会出现业务系统中信息大量增长的趋势。 随着该系统在生产状态下日趋稳定,也让我们可以更静下心来去关注性能方面的问题: 能够承受多大的数据量? 系统的瓶颈是什么? 代码的

    2023年04月08日
    浏览(48)
  • 性能测试需求分析和学习

    在实际的工作中系统的性能需求通常是一个笼统的需求,而且有可能给提需求的人并不知道具体的性能需要,所以只能含糊的列出。如果测试人员不搞清楚,就会出现实际要把杀猪刀,需求标明能屠龙!!! 下面,还是举一个讲个我真实经历过的故事来做实例分析。 故事开

    2024年02月09日
    浏览(44)
  • 性能测试需求分析怎么做?(中)

    本系列文章我们为大家系统地介绍一下性能测试需求分析,让大家全面掌握性能测试的第一个环节。本系列文章将会从性能测试需求分析整体概述、性能测试需求分析内容、性能测试需求分析方法这三个方面进行展开。在(上)部分中,我们为大家介绍了性能测试需求的组成

    2024年02月16日
    浏览(46)
  • 【银行测试】金融项目+测试方法范围分析,功能/接口/性能/安全...

    1、金融行业软件特征分析 金融行业软件系统具有集中度高、规模庞大、数量多、系统之间关联性强、业务复杂、需求变化快等特点,如何有效可行的实现软件测试和软件质量控制,是对金融行业软件测试人员提出的基本要求。 1)金融行业软件的业务特点 以金融行业软件的

    2024年02月04日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包