大型网站性能测试的制定与实施什么是性能测试?性能测试:是指在某个特定的硬件、软件、网络环境下通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。性能测试的目的验证改进的性能效果,需要和以前的测试结果进行比对。新的业务上线,验证新系统能够满足系统的上线指标。验证系统稳定性验证系统的架构是否存在瓶颈性能测试环境搭建性能测试环境:硬件环境软件环境网络环境最优的性能测试环境:就是即将正式上线使用的生产环境性能测试环境搭建硬件环境搭建要参考实际的生产环境搭建,并且要考虑自身的硬件成本软件环境尽量要和生产环境使用的版本和配置保持一致,并且尽可能采用最优配置网络环境尽可能参考生产环境的网络结构和搭建,尽可能不要跨多个网段数据库中基础数据的准备基础数据的内容和数据量:需要参考具体系统的业务内容和使用规模类似系统的数据量规模尽可能多增加一定比例的冗余数据基础数据准备方法:数据库存储过程Lr、selenium等自动化测试工具性能测试工具的选择强大的Loadrunner自写的多线程压力测试程序其他的第三方测试工具:webload、jemeter等选择的标准:能完成特定要求的性能测试要求即可,优先考虑使用强大图表和控制功能的loadrunner性能测试范围的定义和整个儿开发团队一起确认性能测试的范围系统中被频繁使用的功能、调用的接口等系统中涉及到大量数据库读、写的功能大量读写系统缓存部分的功能性能测试的完成目标(1)新上线的测试系统没有明确的数字标准比对情况下,被测试系统已经被测试到了系统极限(系统的某些资源已经耗尽,cpu,句柄、内存,数据库出现大量的slowquery,系统有些处理已经变慢),并且系统证明是可以水平扩展的,则可以上线。性能测试的完成目标(2)有以往测试结果进行比对,只要证明类似的测试条件下,此次的结果比以往的测试结果更好即可(每秒处理个数更多、单次请求的处理速度更快)性能测试的完成目标(3)没有可以比较的测试结果,但是产品已经上线一段时间(至少3个月),有一些运营数据,则需要分析运营的数据来作为比对的基准,只要被测系统达到3个月内系统并发峰值的4倍就可以认为是可以接受的。(如果是接口为测试对象,则需要混合主要的接口来进行性能测试)性能测试的完成目标(4)开发人员提供经验值作为比对的基准,则被测对象只要证明满足开发人员提出的经验值即可。如果选择以上的某一种策略,则必须明确系统的每秒处理个数和每次请求的平均时间的具体数值,并出具最终的性能测试报告。性能测试的脚本调试录制或者编写性能测试脚本修改测试脚本、使用随机化策略调试和运行脚本,查看log和数据库内容等方式验证脚本正确性性能测试脚本的执行设计好特定的性能测试场景初始的压力线程数逐步加压的策略测试执行结束条件结束时的停止多线程的方式注意:加压的压力测试机器和被测试对象最好在一个局域网段。性能测试的数据收集(1)测试用例编号测试时间并发数成功请求数失败请求数平均每秒处理个数平均每个请求处理时间方差备注性能测试的数据收集(2)响应时间小于1秒的请求个数响应时间超过1秒小于2秒的请求个数响应时间超过2秒小于3秒的请求个数响应时间超过3秒小于4秒的请求个数响应时间超过4秒小于5秒的请求个数响应时间超过5秒的请求个数性能测试数据分析分析系统性能瓶颈验证是否数据满足性能测试完成条件整理测试报告,汇总性能测试数据,整理性能测试结果,给出测试结论和整个儿开发团队确认测试结果经验和教训的总结总结本次出现的性能问题的原因和问题解决方法,作为团队的知识积累总结测试过程中出现的流程、沟通、技术等问题,并进行相关流程的优化。谢谢大家