软件测试工程师求职面试准备-第4天(性能测试面试话术)

 

1、Why为什么要进行性能测试
对于我们测试,一个系统如果仅仅通过功能测试就发布出去,是很危险的,也是不允许的。系统必须通过性能测试,当然还要有安全性测试,兼容性测试等,才能够对外发布。
另外对于性能测试,并不是简单的描述为系统性能好,反应速度快,就行了,这种描述比较含糊,通常我们测试一个系统,项目经理或者产品经理都会提出这个系统的性能需求,比如系统在正常负载下必须 3 秒内做出响应,一分钟能够接收至少 50 个请求,会提出比较明确的需求,当然,有的项目经理不提,那我们
的测试经理也应该去问,或者定出性能需求来。

一般情况下,性能需求包含这么几个方面:
比如:我们的性能需求是,30 个在线用户按照正常操作速度访问网上购物系统的下订单功能,下订单交易的成功率是 100%,而且 90%的下订单请求响应时间不超过 5S,当并发在线用户数达到 100 个时,下订单交易的成功率大于 98%,其中 90%的在线用户的请求响应时间不大于用户的最大容忍时间 10S。

2、How怎么做性能测试软件测试工程师求职面试准备-第4天(性能测试面试话术)_第1张图片
第1步,确定关键业务,关键路径。
我们做负载测试,并不是对所有的业务,界面和接口做负载测试,这样工作量太大,通常我们会寻找关键任务,也就是找到用户最常用的功能模块进行负载测试。比如对一个网站,首页是用户访问必经之路,最起码是用户访问频率最高的页面之一,再就是对一个电商网站,99%的客户只是搜索商品,只有 1%的客户将真正购买,商品搜索和列表显示等功能是用户经常用到的,这块数据库的操作有可能就是性能的瓶颈。

第2步:  确定测试的关键数据。比如并发用户数,思考时间,循环次数,用户启动方式这些内容。
对于并发用户数,通常我们是有一个限值,比如我们这个旅游的项目,我们的日活量是 10w 用户,峰值时间段的日活是 3w,通常我们设置峰值时间段用户量的 10%就足够了,那我们会设置 3000 并发。
还有就是模拟思考时间,也就是用户发出请求之间的间隔时间。用户在进行操作的时候,总是有思考,有停顿,这个就是思考时间,这个我们可以模拟出来,在相同的并发用户数的情况下,每秒发出一个请求和10 秒发出一个请求,负载差别是很大的。
另外就是  循环次数或者压力测试的持续时间,在测试的时候,我们不能测试一次就停止了,通常会测试一段时间,来看我们系统的稳定性。
我们公司通常会在并发测试的时候,设置持续时间 2 个小时左右。
当然还有就是我们可以设置用户加载的方式,这个在 Jmeter 中可以用一个场景控制插件搞定。在 loadrunner中,这个场景设置也更简单。直接设置就行。比如一次加载,就是一次性加载某个数量的虚拟用户(virtual user),比如有的网站在早晨上班的时候,访问比较频繁,像智联招聘这样的网站就是,我们就可以设置一次性加载。当然通常我们压测,递增类型的压力测试会多一些,这种方式比较容易找到系统的瓶颈点。

第3步,准备测试环境,完成脚本录制或者测试脚本开发。
对于测试环境的准备,每个工具是不同的,但是基本原理类似,如果在测试环境下边测试,我们会搭建测试环境。基本的 Linux 操作,和环境配置这些我都熟。比如我们会搭建 jdk,搭建 mysql,搭建 tomcat 环境。
搭建起来就可以通过测试环境访问我们的项目。当然有些时候会在线上环境上边进行压测。这样数据会准确一些。
再就是录制脚本,录制脚本在 loadRunner 中可以直接录制。在 Jmeter 中可以使用代理方式或者 badboy 这种软件进行录制。当然不是必须录制,jmeter 中我们可以逐个添加要测试的接口地址。loadrunner 中也可稍微修改代码,来完成这些工作。


第4步,执行测试,观察或监控输出参数,比如数据吞吐量,响应时间,资源占有率等。
对于输出参数,就是我们要监控的数据,一般情况下,会监控这些参数。
比如 TPS 还有 RT 这样的关键数据,数据传输的吞吐量,内存和 cpu 使用率。还有错误率,这些我们都要监测,通过监测这些数据,才对于这些参数,普通的数据,我们在使用 jmeter 和 loadrunner 可以监测到。对于 cpu 和内存,也有相应的软件,比如 nmon 可以监测到。

第5步,对测试结果进行分析,分析性能问题。
当测试完成之后,很重要的一点,就是分析测试结果。分析测试结果,通常也是分析 tps,响应时间,cpu,内存这些数据。通过分析这些数据来查找原因。
对于性能问题的点,挺多的。我们通常从这么几个角度区分析问题。
第一个,最好分析的肯定是硬件问题,比如 cpu,内存,磁盘 I/O 方面的问题,比如,我们 cpu 很容易到80%,内存也占有率很高,或者虚拟内存的交换率很高,磁盘 IO 繁忙率过高。这些很有可能是服务器硬件问题。稍微好分析一些。
第二个,中间件的问题,比如 tomcat/weblogic 这种服务器中间件,出现问题,往往是参数配置的不合理。
第三个,还有就是 sql 配置或者慢 SQL,sql 数据库配置,比如连接池的大小配置不合理。另外就是程序员写的 SQL 有问题,这些也能测试出来。比如该创建索引的时候,没有创建,或者是表和表之间的连接方式不好,都有可能导致慢 SQL
第四个,如果开发时 java 开发,有可能 JVM 配置不合理。因为 jvm 中有垃圾回收机制,逻辑不好,有可能导致回收不及时。
当然,还会有开发逻辑问题,比如逻辑过于复杂,算法没有优化,都有可能导致性能瓶颈。

 

 

 

 

 

你可能感兴趣的:(软件测试工程师求职面试准备-第4天(性能测试面试话术))