• 13
  • 13
分享
  • 功能测试进阶,记一次简单的性能测试实践——软件测试圈
  • 曼倩诙谐 2021-07-19 13:14:36 字数 1994 阅读 1666 收藏 13

  功能测试对于测试人员来说并不陌生,功能测试执行的大体流程是根据需求说明书设计测试用例,测试执行,测试总结。同样性能测试的执行过程也是如此。然而,功能测试与性能测试的区别在于,功能测试是单用户,性能测试是多用户,是从1到N的量变。由于无法通过手工操作模拟多用户并发,因此需要借助工具来实现用户操作被测系统某场景的动作流程,也就是编写测试脚本。那么,如何开展性能测试呢?

  1、需求分析

  通常开发人员会提供接口文档以及非功能需求文档。标准的接口文档中描述了接口请求地址,请求方式,参数类型以及请求报文和响应报文示例。如果接口文档中描述内容不是很清楚,测试人员可以通过抓包工具比如Fiddler,Chrome浏览器Network等来获取接口详细信息。根据“非功能性需求”可以确定这些交易需要满足什么样的性能,如每秒TPS 、响应时间、资源使用情况如CPU、内存、网络带宽等。

  2、测试脚本开发

  脚本的正确性是进行有效性能测试的前提。在脚本调试过程中,通常是先设置单用户,然后再设置多用户并发。根据接口文档信息进行脚本开发,首先是创建一个线程组,设置单用户即线程数为1,如图1所示:

1-2.png

图1 创建线程组

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

1-3.png

图2 添加请求

  在性能测试中,为了能够真实模拟用户请求通常需要将请求的报文进行参数化处理。在进行参数化处理时,首先确定哪些参数需要进行做参数化处理,例如图2中的id,starttime和endtime;其次准备数据源,也就是给参数赋值;最后将脚本中的常量用变量代替,如${ID}。经过了上述三个步骤,就完成了一次简单的参数化处理。常用的参数化方式有CSV,函数式,编程式等。笔者以CSV参数为例,如图3所示:

1-4.png

图3 CSV参数化

  笔者将数据源保存在txt文件中,数据之间以‘,’隔开。需要注意的是,在利用CSV配置文件进行参数化处理时,由于数据文件data.txt文件末尾存在空行,导致读取的参数值为EOF。小伙伴不要再踩类似的坑了啊!!!

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

  3、测试执行

  (1)指定测试策略

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

  阶梯负载测试:每3-5分钟加载若干用户,直至系统资源或性能指标超出预期范围,忽略思考时间,不设置迭代等待时间。

  单交易负载测试:多用户单交易执行15-20分钟,忽略思考时间,不设置迭代等待时间。

  单交易疲劳测试:单交易持续运行8-12小时,且交易量峰值达到该交易的日交易量峰值。

  (2)测试执行

  笔者将测试脚本上传至Xmeter性能测试平台来执行测试。Xmeter支持用户直接上传Jmeter脚本作为测试用例,测试脚本一般以.jmx为后缀名。当一个测试用例需要引入其他外部文件(比如使用CSV Data Set Config时),Xmeter支持用户将.jmx和其他外部文件打包成.zip文件上传。具体的操作过程,读者可以参考Xmeter用户使用指南,详细介绍了Xmeter的操作流程。

  4、监控调试

  在进行系统性能分析时,首先要弄清楚监控的服务器是PCServer还是云上资源。Windows系统有自带的性能监控工具Performance Monitor,在帮助测试人员分析系统瓶颈的时候非常有用。使用Windows性能监视器,可以跟踪应用程序和服务的性能影响,并且可以在超过用户自定义的最佳性能阈值时产生报警或执行操作。笔者在进行本次性能测试实践时,监控的服务器是云上资源,使用了Pod监控工具,即Prometheus + grafana 。Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的集成过程,非常适合做虚拟化环境监控系统,比如VM、Docker、Kubernetes等。Grafana 用于数据展示,如图4所示:
1-5.png

图4 Grafana数据展示

  5、测试报告

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



作者:文苑   

来源:51Testing软件测试网原创

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • python接口自动化实战目标学习数据库相关,用例增加对数据库校验利用数据库完成对数据查询如何校验数据库数据,怎样添加校验让程序自己校验(充值、提现、投资接口对金额的校验)知识补充用例之间关联性不要太强,比如每个模块的用例都需要登录状态,在每个模块最开始加上一次登录的用例即可。关于登录、充值啥的,用例里面的手机号最好不要写死,万一该手机号数据有脏数据,处理起来会很麻烦,所以一般在用例里面用变量,将数据放在指定的sheet里面方便读取与修改什么接口需要数据库校验?钱的变动、增减数据库安装mysql.connector模块 pip2 install --user mysql-connector基本...
            0 0 1600
            分享
          •   1、背景  以后大家如果是从事专职性能测试,一定要进行分布式压测;  场景:一台控制机和两台执行机,做分布式,要求控制机启动,两台执行机执行,反馈结果。  最贴近工作情况:  控制机:作为办公电脑,工作测试电脑。  执行机:代理机,负载机: 可以直接用服务器的电脑;(服务器的电脑比较干净)肉鸡。  jmeter分布式执行原理:  1.jmeter分布式测试时,选择其中一台作为控制机;其它机器作为代理机;  2.执行时,控制机会把脚本发送到每台代理机上,代理机拿到脚本后就开始执行,代理机执行时不需要启动jmeter界面,可以理解它是通过命令行模式执行的;  3.执行完成后,代理机会把结果回传...
            0 0 276
            分享
          •   软件缺陷管理的价值有哪些?又有哪些实践可以发挥这些价值?  1. 价值类型  在分享软件缺陷管理的价值前,我们先考虑下:我们日常中是怎么样去思考做一件事的价值呢?如图1-1所示,大致可以分为两类,一种称之为过程价值,也就是通常说的“参与就是收获”,做了一件事,可能并没达到目标,但是做事的过程让我们也有目标之外的收获。另一种就是结果价值,也就是目标导向,做了一件事,顺利达到了预定的目标。图1-1 价值分类  2. 缺陷管理的价值  回到缺陷管理价值的思考上,我们做软件缺陷管理的初衷是什么?引用网上的定义:“软件缺陷管理(Defect Management)是在软件生命周期中识别、管理、沟通任...
            0 0 714
            分享
          • 读者提问:什么是白盒测试,测试方法有哪些 ?阿常回答:一、白盒测试白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。我们可以把软件当成一个透明的盒子,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。需要注意的是,做白盒测试需要精通编程语言哦。比如这款程序是用 Java 语言开发的,那我们就得精通 Java 语言。二、测试方法1、白盒测试法代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、路径覆盖和程序变异。2、覆盖标准逻辑覆盖、循环覆盖和基本路径测试。3、逻辑覆盖发现错误的能力由弱到强依次是:语句覆盖、判定覆盖、...
            0 0 1242
            分享
          • 从当初的开发,到后来的功能加自动化测试,觉得自己需要去接触一些新的东西。从9月份开始,开始有个新的团队,专门负责网站的性能提高,于是,就跟老大申请了去支持这个team。首先,我这里说的性能测试,不是传统意义上的压测,所以我们tech lead一直在纠正我,不叫performance testing,而是叫site speed testing。国外的网站不会像淘宝会有那么大的流量,所以我们不是很看重压测,有监控就够了。做网站速度测试之前,首先我们要弄明白我们在意的metrics,那么有哪些关键的metrics呢?Metrics1.速度指标(SpeedIndex)速度指数是一个计算的指标,用来衡量...
            1 0 3407
            分享
      • 51testing软件测试圈微信