一个系统上线前必须经过性能测试,如果系统性能不满足需求,在后续的运维过程中会遇到很多麻烦,也不能给客户提供良好的使用体验。
性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。
1、使用jmeter进行压力测试
接口测试软件jmeter,就拥有压力测试的功能。首先打开jmeter,创建线程组。
线程数:可以设置同时有多少线程执行测试操作
Ramp-up Period (in Seconds):用于告知JMeter 要在多长时间内建立全部的线程。默认值是0。如果未指定ramp-up period ,也就是说ramp-up period 为零, JMeter 将立即建立所有线程。假设ramp-up period 设置成T 秒, 全部线程数设置成N个, JMeter 将每隔T/N秒建立一个线程。
循环次数:就是决定一个线程要跑多少次测试
Delay Thread creation until needed:直到需要时延迟线程的创建
调度器:选中之后可以配置启动时间,立即或者预定的时间
下面以登录接口为例,进行配置:
首先对线程组进行配置,要求再10秒内同时跑20次登录操作。为了查看性能结果,需要配置聚合报告。
HTTP请求和察看结果树配置好后,点击运行,来查看运行结果。
lable:请求名称
#Sample:发出的请求数量,最后一行会记录所有请求的总发出数
Average:平均响应时间
median:中位数,50%用户的响应时间
90% Line/95% Line/99% Line:百分之90/95/99用户的响应时间,当最小响应时间和最大响应时间差距过大时,平均响应时间是不可靠的,需要计算90%以上用户的响应时间才能得到更真实的数据
min/max:最小/最大响应时间
Error%:本次请求出现的错误率,即错误的请求数量/总请求数
ThroughPut:吞吐量,默认为每秒完成的请求数(图中为每分完成的请求数)
KB/sec:每秒从服务器端接收到的数据量
一般通过聚合报告来对压力测试结果进行分析,一般在成功的前提下要求TPS越大越好而响应时间越小越好。
2、使用负载机
有时候测试使用的电脑并不能满足压力测试的需要,可以借助其他同事的电脑(其他的电脑被称为负载机)分担测试任务。当然,前提是同事的电脑也安装了jmeter。
第一步:需要对方运行电脑中jmeter安装目录下bin目录下的文件jmeter-server.bat(默认为Windows系统,如果为Mac则运行jmeter-server.sh即可)
第二步:在自己电脑上找到jmeter的配置文件jmeter.properties,在数据remot_hosts后添加负载机的IP地址(需要加端口号),remot_hosts后本来跟有本机的IP地址,只需要用英文逗号隔开即可
第三步:重启主控机的jmeter
第四步:配置好线程组、请求及测试数据
第五步:选择远程全部运行
ps:如果有参数从文件中获取,则负载机和主控机的bin目录下都需要有这个文件
ps:端口号默认为1099,如果负载机修改了端口号,配置文件中IP地址后的端口号也需要修改。