性能测试的目的:上线之前调优(数据库,服务器,网络,JVM等等),通过并发工具发送请求给服务器,提前发现各方面的性能问题,优化并解决。当性能指标达到要求之后,可以定义自己服务的SLA,并把这些指标作为一个性能基准,上线之后进行性能监控。
性能测试操作的对象 :接口(WEB接口:HTTP,HTTPS,WebService,数据库接口,应用程序接口),通过请求某一个接口,去调用一个或几个服务,从而监控这些服务的性能指标,如响应时间,用户数,TPS,CPU, MEMORY,I/O等等。
这些性能指标都是指并发操作。那什么是并发?来百度百科:并发,在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。
接口测试工具有Postman, JMeter, Python等等,而性能测试工具有JMeter, LoadRunner等。
做性能测试时的一般步骤是先用一个虚拟用户进行调试,得到一个测试基线,然后通过逐渐增加虚拟用户数,设置虚拟用户启动时间来加压,对比每一次的性能作出调整。比如调优前先执行一次测试得到一个调优前性能,然后备份调优前的配置,修改配置之后跑同一个性能测试脚本,得到调优后性能指标,两个对比,查看性能是不是达到预期,还是需要继续调。但是调优也不是一次性就可能完成的,因为面对的服务往往不是单纯只是一个数据库,或者只是一个WEB应用,所以就需要特别了解整个服务的架构,一层层是怎么实现的,哪一个接口是对应的哪些应用,需要逐个调优,以让整个服务达到最好的性能。而要实现这个目标,前期是需要做很多准备的:
1. 熟悉整个服务的架构。
2. 定义出性能指标。
3. 设计测试场景。
4. 搭建测试环境。
5. 准备好测试数据。
6. 准备测试工具。
准备就绪后开始写脚本,一边执行,一边调优。这个过程像是一个不断迭代的过程。
而如果上线了呢?性能测试是不是还要周期性地做一做呢?因为数据库用久了会变慢,一个大服务运行久了是不是也有这种问题?上线之后的性能测试什么时候做?怎么做呢?还是只是通过监控用户的操作来得到一个性能指标?