硬件:服务器、客户端、交换机等
软件:数据库,中间件,被测系统,操作系统等
网络:有线、无线、宽带、网络协议等
一致性:
硬件环境:包括服务器环境与网络环境
软件环境:除了保证测试环境与真实环境所用的软件版本一致,也要关注其他参数的配置是否一致
使用场景的一致性:基础数据的一致性,磁盘的使用情况以及磁盘的碎片情况也会或多或少的影响性能
使用模式的一致性:尽量模拟真实环境下用户的使用情况
策略:
- 在实际的测试中,处于成本考虑,在很多情况下,我们很难申请到足够的且一致的资源,所以,很难搭建出与生产环境完全一致的测试环境
- 解决方案:
- 通过建模的方式实现地段硬件对高端硬件的模拟
- 通过集群的方式计算,使用负载均衡服务器管理
性能测试环境与功能测试环境的区别:
- 为了节约资源,进行功能测试的测试环境,一台服务器可以运行多个系统,通过技术手段可以使用系统之间是不会相互影响的
- 性能测试是要对整个系统软件的软件硬件环境进行测试的,如果某个环境下运行多个系统,就很难判断其中的某个环境对资源的占用情况
测试工具选择:
- 对需求进行分析,从各个方面考虑进行性能测试工具选型
- 搭建好工具基础环境,才能编写脚本
- 目前使用最高的是jmeter其次是loadrunner
常见性能测试工具:
- apache jmeter
- 基于javapigtail的性能开源测试工具
- hp loadrunner
- 惠普公司,收费
- locust
- 基于python开发,用python来编写用户行为
工具选择:
- 根究压测场景来选择
- 一次性、单接口的场景就可以使用AB
- 复杂多借口需要业务场景,选择jmeter
- 需要提供多大压力
- 1000qps还是万级以上的。压力很大的话就要考虑压测工具是否支持分布式,能否快速扩展agnet
- 是否有周期性需求,如频繁上线、按月查询
- 是否有二次开发需求,jmter开源插件化思想
分析系统架构:
- 分析系统架构,了解系统网络情况,分析系统可能的瓶颈
- 通常可能的瓶颈有:客户端、网络、防火墙、负载均衡、等
业务类型分析:
- 从网站的业务类型分析,流量主要压力来源于哪个页面
- 分析每种类型页面的历史访问量或预估访问情况,从而得出一个基本场景设计和并发量的需求表,包括页面连接数、平均用户数、峰值用户数、访问时间要求、响应时间要求等
业务操作场景分析:
- 一般读写操作比例约为10:1,但是写操作一般是系统中最重要功能,设计到文件系统和数据库的操作,可能产生性能瓶颈的概率更大,所以也是压力测试终点
- 同时要注意未登录用户读写操作和已经登录用户的读写操作的差异性
服务器分析:
- 服务器架构如果比较复杂,分析有哪些单独的服务器
- apache等中间件服务器
- 应用服务器
- 后台服务器
- 数据库服务器
- 文件系统服务器
- 消息服务器
结果分析
- 需要性能测试工程师对整个被测环境的各种软硬件都要有深入的了解
- 根据测试结果和监控结果进行分析
- 根据性能的测试指标,分析出系统可能存在的瓶颈,并给出调优建议或配置建议
性能测试总结
- 测试范围
- 测试执行以及参与的然预案
- 基准测试数据
- 测试执行的详细步骤和场景
- 测试数据记录和监控结果
- 测试结果对比和总结性评价
策略
- 常见性能测试策略:基准测试、并发测试、在线综合场景测试、递增测试、疲劳强度测试
基准测试
- 基准测试是通过设计科学的测试方法。测试工具和测试系统,实现对一类测试对象的某项性能指标进行定量的可对比的测试
- 特点:模拟单用户反复执行若干次,查看平均效果
- 目的:获取单用户执行时的各项性能指标,为多用户并发和混合场景的性能测试分析提供参考数据
- 可测量、可重复、可对比是基准测试的三大原则
- 并发测试
- 并发测试指的是多用户并发访问同一个模块应用,内存泄漏、线程锁、资源征用等问题
- 模拟多用户针对某功能点在几乎同一时刻进行严格并发访问,
数据容量测试:
- 大数据量测试
- 数据库的数据是海量的、关系复杂的
- 比如T级,P级,大数据,数据挖掘,数据分析
- 找到规律,为商业决策提供依据