功能测试进阶,记一次简单的性能测试实践

Posted 测试baby

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了功能测试进阶,记一次简单的性能测试实践相关的知识,希望对你有一定的参考价值。

在这里插入图片描述
功能测试对于测试人员来说并不陌生,功能测试执行的大体流程是根据需求说明书设计测试用例、测试执行、测试总结,同样性能测试的执行过程也是如此。

然而,功能测试与性能测试的区别在于,功能测试是单用户,性能测试是多用户,是从1到N的量变。

由于无法通过手工操作模拟多用户并发,因此需要借助工具来实现用户操作被测系统某场景的动作流程,也就是编写测试脚本。那么,如何开展性能测试呢?

需求分析

通常开发人员会提供接口文档以及非功能需求文档。标准的接口文档中描述了接口请求地址、请求方式、参数类型以及请求报文和响应报文示例。

如果接口文档中描述内容不是很清楚,测试人员可以通过抓包工具比如Fiddler、Chrome浏览器Network等来获取接口详细信息。

根据“非功能性需求”可以确定这些交易需要满足什么样的性能,如每秒TPS 、响应时间、资源使用情况如CPU、内存、网络带宽等。

测试脚本开发

脚本的正确性是进行有效性能测试的前提。在脚本调试过程中,通常是先设置单用户,然后再设置多用户并发。

根据接口文档信息进行脚本开发,首先是创建一个线程组,设置单用户即线程数为1,如图1所示:

图片

然后添加取样器模拟用户请求,如图2所示:

图片

在性能测试中,为了能够真实模拟用户请求通常需要将请求的报文进行参数化处理。

在进行参数化处理时,首先确定哪些参数需要进行做参数化处理,例如图2中的id、starttime和endtime。

其次准备数据源,也就是给参数赋值。最后将脚本中的常量用变量代替,如${ID}。

经过了上述三个步骤,就完成了一次简单的参数化处理。常用的参数化方式有CSV、函数式、编程式等。

笔者以CSV参数为例,如图3所示:

图片

笔者将数据源保存在txt文件中,数据之间以“,”隔开。

需要注意的是,在利用CSV配置文件进行参数化处理时,由于数据文件data.txt文件末尾存在空行,导致读取的参数值为EOF,小伙伴不要再踩类似的坑了啊!!!

最后,添加监听器,常用的监听器有查看结果树、聚合报告和图形结果。

其中查看结果树可以查看某一个具体的请求是否成功以及查看错误日志;聚合报告以表格的形式详细列出本轮脚本执行的请求数、响应时间、错误率、吞吐量以及带宽等信息;图形结果以折线图的形式形象地表现了某个时间段系统性能指标的变化趋势。

测试执行

01 指定测试策略

在测试执行之前需要制定测试策略,本次性能测试所采用的策略是采用阶梯负载测试获取测试环境下应用的性能拐点,采用单交易负载测试验证待测交易在并发情况下的性能表现并进行调优,采用单交易疲劳测试验证单交易长时间运行时的性能是否稳定。具体如下:

  • 阶梯负载测试:每3-5分钟加载若干用户,直至系统资源或性能指标超出预期范围,忽略思考时间,不设置迭代等待时间。
  • 单交易负载测试:多用户单交易执行15-20分钟,忽略思考时间,不设置迭代等待时间。
  • 单交易疲劳测试:单交易持续运行8-12小时,且交易量峰值达到该交易的日交易量峰值。

02 测试执行

笔者将测试脚本上传至Xmeter性能测试平台来执行测试。

Xmeter支持用户直接上传Jmeter脚本作为测试用例,测试脚本一般以.jmx为后缀名。

当一个测试用例需要引入其他外部文件(比如使用CSV Data Set Config时),Xmeter支持用户将.jmx和其他外部文件打包成.zip文件上传。

具体的操作过程,读者可以参考Xmeter用户使用指南,详细介绍了Xmeter的操作流程。

监控调试

在进行系统性能分析时,首先要弄清楚监控的服务器是PCServer还是云上资源。

Windows系统有自带的性能监控工具Performance Monitor,在帮助测试人员分析系统瓶颈的时候非常有用。使用Windows性能监视器,可以跟踪应用程序和服务的性能影响,并且可以在超过用户自定义的最佳性能阈值时产生报警或执行操作。

笔者在进行本次性能测试实践时,监控的服务器是云上资源,使用了Pod监控工具,即Prometheus + grafana 。

Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的集成过程,非常适合做虚拟化环境监控系统,比如VM、Docker、Kubernetes等。

Grafana 用于数据展示,如图4所示:

图片

测试报告

首先从Xmeter中导出性能测试报告,进行系统性能分析并提出解决方案或优化建议,再次对调优后的系统进行性能测试以验证方案的正确性,最后对本次性能测试进行总结,这样就完成了一次简单的性能测试。

这里给大家整理了一份《软件测试工程师进阶的技术栈》,包含了诸多技术栈,希望能帮助在升级打怪中提供中坚力量

给大家推荐下我自己建的软件测试交流学习群: 902061117 ,群里都是搞软件测试的,如果你正在学习测试 ,小编欢迎你加入,大家都是测试党,群内不定期分享干货(都是软件测试相关的),包括我自己整理的一份2021最新的进阶自动化资料。

在这里插入图片描述

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你

关注我的微信公众号【伤心的辣条】免费获取~

送上一句话:

世界的模样取决于你凝视它的目光,自己的价值取决于你的追求和心态,一切美好的愿望,不在等待中拥有,而是在奋斗中争取。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

在这里插入图片描述

好文推荐:

转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!

测试岗反复跳槽,跳着跳着就跳没了…

软件测试人员该学习 Python 的七个理由

App公共测试用例梳理

面试经:一线城市搬砖!又面软件测试岗,5000就知足了…

35岁之后软件测试工程师靠什么养家?我能继续做测试!

以上是关于功能测试进阶,记一次简单的性能测试实践的主要内容,如果未能解决你的问题,请参考以下文章

JMeter 性能测试进阶实战

基于GRPC协议的Jmeter性能测试脚本开发

软件测试Python自动化进阶12个经典性能测试人员面试题

PGTM通用性能测试模型

性能测试分析优化的方法论 | 运维进阶

研究实践 | 数据库防火墙系统性能测试参考