①熟悉应用:了解应用的架构、功能逻辑;
②需求分析:根据测试目的,细化需求;
③测试方案:明确性能测试指标,性能场景及工具选择;
④测试准备:客户端准备、测试数据准备、测试脚本准备;
⑤执行测试:执行测试,监控测试客户端和服务器性能,监控服务器端应用情况;
- 客户端的系统资源(CPU、IO、Memory)情况;
- 服务端的系统资源(CPU、IO、Memory)情况;
- 服务器的JVM运行情况;
- 服务端的应用情况是否有异常;
- 响应时间、吞吐量等指标;
⑥性能分析与调优:找出性能瓶颈,提高系统整体性能,满足用户需求;
⑦编写测试报告:测试结束后,归档整理测试报告;
6、需求分析阶段,你从哪几个方面入手性能测试?
- 明确到底要不要做性能测试,性能测试的目的是什么;
- 明确被测系统的架构、软硬件配置、网络等;
- 明确被测系统的基本业务、关键业务、用户行为;
- 明确被测系统未来的业务拓展规划以及性能需求;
- 明确工具选型,比如Jmeter、LoadRunner等;
- 明确性能测试的指标,比如并发、吞吐量、响应时间等;
7、你如何识别性能瓶颈?
①硬件上的性能瓶颈:如CPU、内存、磁盘读写等的瓶颈,为服务器硬件瓶颈;
②应用软件上的性能瓶颈:如服务器操作系统瓶颈(参数配置)、数据库瓶颈(参数配置)、web服务器瓶颈(参数配置)、中间件瓶颈(参数配置)等;
③应用程序上的性能瓶颈:应用程序上的性能瓶颈,如SQL语句、数据库设计、业务逻辑、算法等等;
④操作系统上的性能瓶颈:一般指的是Windows、linux等操作系统,如出现物理内存不足时,或虚拟内存设置不合理(虚拟内存设置不合理,会导致虚拟内存的交换率大大降低,从而导致行为的响应时间大大增加,可以认为在操作系统上出现了性能瓶颈);
⑤网络设备上的性能瓶颈:一般是防火墙、动态负载均衡器、交换机等设备导致;
8、打开浏览器输入网址到页面渲染,响应时间通常可以细分为哪些?
- 从客户端到服务端的请求时间(请求网络传输时间Request);
- 从服务端返回数据到客户端的时间(响应网络传输时间Response);
- 页面渲染时间(客户端浏览器加载页面的时间);
- 处理器的处理时间(应用服务器+数据库服务器处理时间);
9、软件为什么会有性能问题?
软件是运行在环境当中的,在高负载访问下,业务逻辑比较复杂,不同的软硬件资源都会引起性能问题,还有软件本身的代码、数据库等会引起性能问题。
10、什么是内存泄露?
内存泄漏 是指对象不再被应用程序使用,但是垃圾回收器却不能回收它们,因为它们正在被引用。对于长时间运行的程序来说,内存泄漏会使程序占用的内存一直增加,最后就会出现内存耗尽而导致宕机,即使不宕机也会是系统的运行越来越慢,还有就是内存有其他资源,比如数据库连接,网络连接等等。
11、什么是内存溢出?
内存溢出 应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于能提供的最大内存。
12、敏捷开发模型,如何开展性能测试?
①每个迭代目标中包含明确的性能目标;
②建立不同层次的性能测试;
③完全或接近完全自动化的性能测试;
④使用测试驱动方法保证性能与优化性能;
13、性能测试什么时间做?
系统性能测试在功能测试之后,系统比较稳定的时候开展。不同阶段都可能做性能测试,如单接口性能测试,集成性能测试。
14、有验证码的功能,怎么做性能测试?
方案1、将验证码暂时屏蔽,完成性能测试后,再恢复。
方案2、使用万能验证码。
15、常见性能测试工具?
Loadrunner、JMeter、SoapUI、Tsung等,根据不同的测试场景选择适合的工具。
16、如何识别性能瓶颈?
- 查看系统日志,如果日志记录的全面,很容易通过日志发现问题。比如,系统宕机时,系统日志打印了某方法执行是抛出out of memory的错误,很快定位到导致内存溢出的问题在哪里。
- 利用性能监控工具,比如:linux系统环境下通过nmon来监控系统性能。
- 设计合理的性能测试场景,好的测试场景能更加快速的发现瓶颈。