性能测试与接口测试的区别
接口测试 | 性能测试 |
功能测试,实际结果与预期结果进行对比。找bug | 通过性能测试指标分析,判断是否有性能问题 |
模拟单个或者少量用户,进行接口调用 | 模拟很多人同时调用接口,性能指标、服务器的运行状况 |
模拟的是串行的 一个线程组的多个接口 | 并行操作 一个线程组下,多个接口 |
脚本写法不一样 | |
接口测试脚本只考虑功能实现,不考虑脚本自身性能 | 要考虑jmeter脚本本身的性能 (beanshell元件,在接口测试时,写代码。性能测试不推荐用beanshell元件,因为他的性能较差) beanshell有自己的语言,运行时需要转换为java语言。 |
性能测试思维
功能测试:找bug,实际结果与预期结果做比较,不一致就是有bug.
串行
性能测试:多用户+并发请求
- 思考性能问题,先从单一用户开始,从简单入手,然后再扩展到多用户
- 并发/并行
并发:同一时间点,发起的请求。(请求可以相同,可以不同)
并发用户数:同一时间点,发起请求的人数
性能测试会得到性能测试指标数据,但不是为了得到指标数据,而是得到指标数据后,分析性能问题。
- 得到性能测试指标数据
- 懂得指标的意思
- 使用指标数据来综合分析问题。
性能测试的通用标准:错误率<0.1%,接口(http)平均响应时间要<1.5s
性能概念
性能测试概念 | 通过工具,找出或者验证系统在不同工况下的性能指标 | |
基准测试 | 第一次使用确定的并发用户数,得到的性能测试指标数据。 | |
负载测试 | 通过逐步增加并发用户数,向服务器发起请求,最终得到系统的最大负载量(先得到区间,然后根据区间得到具体的值) | 这种方法是对一个系统持续不段的加压,看你在什么时候已经超出“我的要求”或系统崩溃 |
压力测试 | 使用一定量的并发用户数(最大可接受并发用户数的20%-80%),持续比较长的时间进行测试,看服务的稳定性 | 这种测试是让系统处在很大强度的压力之下,看系统是否稳定,哪里会出问题。 |
容量测试 | 数据库表在数据量级不一样的情况下的性能情况 | |
配置测试 | 通过对被测系统的软/硬件环境的调整,了解各种不同对系统的性能影响的程度,从而找到系统各项资源的最优分配原则。 |
什么是性能测试:
通过测试工具,找到或者验证系统在不同的工况下的性能指标。
- 通过工具:性能测试要模拟用户并发,需要工具来实现,手工无法实现
- 找出:是第一次做性能测试得到的指标数据,这个数据,作为将来的参考。基准测试,第一次使用确定的并发用户数,得到的性能测试指标数据。
- 验证:得到的性能测试指标,与基准进行比较,分析是否需要调优
最大可接收的并发用户数,是通过负载测试测试处理的。
在性能测试中,没有公式计算,有公式,也只能作为一个预估。
新项目怎么做性能测试:预估短期内能够支持的人数,以及长远的规划。预估最大用户数*1.2到1.5倍作为基准。预估给不了就做不了性能测试。
做性能测试时,经常会出现,有明显的性能指标数据,反应出性能问题,这个时候,很多人,就会分析性能问题,而停止了性能测试。
(增加并发用户数,接口报错,可能是因为脚本或者电脑参数配置有问题。每个电脑连接数是有限的,最多只有65553个(顶配电脑),wind电脑最多只有1万个左右的端口可以用(因为有的端口不能拿来用),连接超时,端口被占用等报错)。
功能测试、性能测试、安全测试。三类。自动化属于功能测试大类。
负载测试:
通过逐步增加并发用户数,向服务器发起请求,最终得到系统的最大负载量。先得到区间,区间缩小就可以得到具体值。(这种方法是对一个系统持续不段的加压,看你在什么时候已经超出“我的要求”或系统崩溃)
- 关键词:逐步增加,并发用户数
- 结果:最大可接受并发用户数
- 线程数、并发用户数、用户
并发用户数:同一时间点发起请求的人数。
并发用户数vs用户:并发用户数,用来模拟人的。用户:代表系统中的一个唯一身份
两者之间是n:m的关系。
线程数vs并发用户数:jmeter使用线程数来 代替 并发用户数。不同的工具可以使用进程数,线程数,协程数来代替并发用户数。
loadruner:线程数、进程数。locust:协程数。ngrinder:进程数+线程数,来代替并发用户数
最大可接受并发用户数 vs 最大并发用户数
- 最大可接受并发用户数 < 最大并发用户数
- 最大并发用户数:是所有请求,都不能被服务器处理的极限情况
- 最大可接受并发用户数:的标准,行业中http协议性能测试,获得最大可接受用户数的标准:
- 是错误率<0.1%+平均响应时间<1.5s+服务器资源利用率<80%
- 所以在工作中是使用最大可接受并发用户数来进行性能测试。
- jmeter做性能测试的线程数,是通过负载测试找到的 最大可接受并发用户数 来测试的。
压力测试
概念:使用一定量的并发用户数(最大可接收并发用户数的20%-80%,一般取比较小的),持续比较长的时间进行测试,看服务器的稳定性。
这种测试是让系统处在很多强度的压力之下,看系统是否问题,哪里会出问题
- 关键词:持续比较长的时间(一般以小时为单位)
- 结果:服务器的稳定性
- 并发用户数:最大可接收并发用户数的20%-80%,一般取比较小的
- 长见于内存泄漏
并发用户数设置:先做负载测试,逐步增加并发用户数+观察结果(结果是判断标准),得到最大可接收的并发用户数。
标准:1先做负载测试。2在做性能测试
平时我们所说的压测:真实意思是做性能测试,先做负载测试,在做性能测试,得到性能测试指标。有分析能力的,再通过指标来分析性能问题。
但是如果说话的场景有说服务器崩溃,宕机的情况下,需要做压力测试。
性能测试时长一般会持续:十几秒到几十分钟。
稳定性测试:
瞬间服务器发起非常大的请求,看服务器的稳定性
容量测试
概念:数据库表在数据量级不一样的情况下的性能情况。
在做性能测试的时候,需要考虑数据库表汇总,不同数据库量级的情况下,性能测试指标差异。
如表中已经有十万级别的数据,表中获取数据的响应时间。如表中有百万级别的数据,表中获取数据的响应时间。
在做性能测试时,是需要考虑数据库表的数据量的。数据量多或导致查询或者插入的时长边长。
数据量级:
- 做性能测试时,我们项目的数据库表中的数据库量级,默认应该与生产保持一致的。测试环境达不到生产的数据量级的话----可以用从生产导入数据(关键信息需要加密),也可以造假数据。因为是量级,假数据也是ok的。
- 一般情况下数据库量级会抛大一些(1.2-1.5倍)
关系型数据库,一般来说,表的数据量级在十万级别以下的,响应时间几乎是没有差异的。
表的数据量级在十万级别以上的,不同数据量级的数据,时间才会有明显的差异。
一般而言,性能测试,默认表的数据量级在十万级别以上。
只要能得到产品更高、更快、更强的 相关数据的测试,都算是广义上的性能测试。
配置测试
通过对被测系统的软硬件环境的调整,了解各种不同对系统的性能影响成都从而找到系统各项资源的最优分配原则
特点:主要目的是了解各种不同因素对系统性能影响的程度,从而判断出最值得进行的调优操作;一般在对系统性能状况有初步了解后进行;一般用于性能调优的规划能力。
关注点:微调–最优分配,通过对软硬件的不断调整,找出这个最佳状态,使系统达到一个最强的状态。