1. 性能测试最难的地方在哪里? 答:性能测试的难点在于对被测系统的理解,在于对测试点的分析。为了实现测试的思想,可以有多种方法,手段永远只是辅助的,只有思想才是根本的。工具更不等于性能测试,不要以为会用LR就懂了性能测试,那只是最低级的测试执行。也不要以为会调几个参数就懂了性能测试,那同样是个比较低的层次。 调优等技术不是性能测试的主要目的,好的性能也不是调出来的。测试人员一定要明白自己存在的价值所在,所谓的“技术”只是为了达成自己测试目的的一些手段。 如何证明测试结果的有效性,其实是个很难的问题,值得花费时间去认真思考。这个过程涉及到一些很重要的内容,如用户模型的建立,后续慢慢细说。 性能测试是一个需要不断改进的过程,每一次只需尽量的做到更好,多做一点点以前没有想到的东西。经过不断的积累,你会发现自己对性能测试有了更深的认识。 2. 性能测试流程? 了解性能需求--场景建模分析--设计执行性能测试--分析结果与报告--定位问题与调优建议 3. 性能测试中90%的响应时间是什么意思,它的作用是什么? 聚合报告中90% Line涉及到百分位数的概念,属于统计学术语,定义如下: 如果将一组数据从大到小排序,并计算相应的累计百分位,则某一百分位所对应数据的值就称为这一百分位的百分位数。可表示为:一组n个观测值按数值大小排列如,处于p%位置的值称第p百分位数。 作用:统计这个东西,是对所有数据进行抽样检查,抽样数据越多结果越准确,抽样点分布越均匀抽样数据质量越高,结果越精确。所以在统计的时候,需要排除一些异常的数据,去除一些偶发性或者垃圾数据对整体样本结果导致的不准确。不同的n%数据,是为了让我们更好地去分析响应时间的分布及变化趋势,用于判断系统的处理性能和稳定性。 4. 怎么准备性能测试环境和数据的? 准备测试环境,测试环境一定是与实际生产或实际应用环境一致的,而且设计压测场景要与实保持一致。 数据准备一般都是sql编写或者采集部分已有数据 5. 性能测试脚本你是怎么准备的,录制的还是编写的? 录制一部分,编写占大部分 6. 性能测试需求调研,你调研哪些信息? 硬件配置、网络拓扑、系统架构、业务扩展趋势、业务发生时段、采集在线用户数、活动用户数、业务分部、业务性能指标、外部依赖 7. 你做过jvm的监控?用什么工具,监控哪些信息 Java Visualvm 显示JAVA应用程序配置和运行时环境、本地或者远程JAVA应用程序运行状态、监控应用的性能消耗、内存分配、线程状态与生命周期等 8. 数据库的性能,关注哪些指标? 全表扫描/秒 指每秒全表扫描的数量。全表扫描可以是基本表扫描或全索引扫描。由于全表扫描需要耗费大量时间,因此全表扫描的频率过高的话,会影响性能。 如果该指标的值比1或2高,应该分析设计的查询以确定是否确实需要全表扫描,以及SQL查询是否可以被优化。 缓冲区高速缓存命中率(BufferCache Hit Ratio%) 指在缓冲区高速缓存中找到而不需要从磁盘中读取的页的百分比。该比率是缓存命中总次数与缓存查找总次数之比。经过很长时间后,该比率的变化很小。由于从缓存中读取数据比从磁盘中读取数据的开销小得多,一般希望该比率高一些。 该指标的值最好为90%或更高。通常可以通过增加SQL Server可用的内存数量来提高该指标的值。增加内存直到这指标的值持续高于90%,表示90%以上的数据请求可以从数据缓冲区中获得所需数据 读的页/秒 (Page Reads/sec) 指每秒发出的物理数据库页读取数。该指标主要考察数据库从磁盘读取数据的频率。因为物理I/O会耗费大量时间,所以应尽可能地减少物理I/O以提高性能。 该指标的值应尽可能的小。可以通过使用更大的数据高速缓存、智能索引、更高效的查询或者改变数据库设计等方法,以降低该指标的值。 个数/秒 写的页/秒 (Page Writes/sec) 指每秒执行的物理数据库写的页数。该指标主要考察数据库向磁盘写入数据的频率。因为物理I/O会耗费大量时间,所以应尽可能地减少物理I/O以提高性能。 该指标的值应尽可能的小。可以通过使用更大的数据高速缓存、智能索引、更高效的查询或者改变数据库设计等方法,以降低该指标的值。 个数/秒 惰性写/秒 (Lazy Writes/sec) 指每秒被缓冲区管理器的惰性编写器写入的缓冲区数。惰性编写器是一个系统进程,用于成批刷新脏的老化的缓冲区(包含更改的缓冲区,必须将这些更改写回磁盘,才能将缓冲区重用于其他页),并使它们可用于用户进程。 该指标的值最好为0。 |
|