了解性能测试

什么是性能测试?

模拟大量用户使用同一功能或同一模块,向服务器施压来检测服务器性能指标是否满足客户的性能需求

为什么做性能测试?

1.确保产品稳定

2.用户角度:保证用户体验度

3.公司角度:防止损失资金(产品不稳定,用户忠诚度底,用户卸载,失去用户)

什么是压力测试?

被测试的系统,在一定的访问压力下,看程序运行是否稳定/服务器运行是否稳定,确保系统是否具有良好的容错能力和可恢复能力

系统在极限情况下能否运行稳定

什么是负载测试?

在超负荷的环境中运行,程序是否能够承担/增加负载来发现系统中的问题

服务器最大负载,模拟大量用户对服务器不断施压,时期性能指标接近饱和值(最佳负载人数*CPU80%)

性能测试的基础知识:

1.HTML语音基础,可以参考教程很详细

2.C语言基础:需要了解分支变量循环,变量,函数

3.Http协议及请求方式(get post)接口返回状态码


     a. HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等

     b.HTTPS和HTTP的区别:

            https协议需要到ca申请证书,一般免费证书很少,需要交费。

            http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议

            http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。

           http的连接很简单,是无状态的

HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议 要比http协议安全

请求方式:

get:客户端向服务器获取资源(要)

特点:1.把请求的资源放在连接(URL)里,并且部分参数明文展示  不安全

           2.资源存入缓存,不安全

           3.不同浏览器  URL  长度不同  IE 2083 Firefox 65536  Chrome 8181  Safari 80000

           4.可收藏、数据量小

post:客服端向服务器提交表单数据(给)

特点:1.把表单数据放在请求实体(表单数据)中     安全

            2.post不能缓存及放入收藏夹

            3.不同浏览器 URL 长度不限

            4.数据量大,速度慢(效率略慢)


4.XML,用来传输和储存数据   与HTML类似树形成对出现   参考教程  

5.JSON:参考教程

          JSON 指的是 JavaScript 对象表示法(JavaScriptObjectNotation)轻量级的文本数据交换格式

          JSON 是轻量级的文本数据交换格式

          JSON 独立于语言*

         JSON 具有自我描述性,更易理解

6.数据库的基础应用:  增删改查


性能测试的术语?  

(借鉴了卜了了的文章)点击可查看

1)并发数:虚拟用户数,同一时间点内,向系统产生交互的数量

2)注册用户数:当前系统中全部注册的用户的数量,这个跟并发数要区分开,这个不需要跟系统产生交互

3)在线用户数:当前系统时间段内用户登录的数量,也不一定要跟系统产生交互

4)事务:比如登录网站时,输入用户名、密码,点击登录,这3个操作为一个事务来讲,叫登录事务。

5)TPS,每秒通过的事务数---每秒处理的事务的数量,是衡量系统处理能力的指标,看系统好不好,就看这个指标

6)吞吐量:被测系统所产生的数据流量,eg,点击网页需要10兆,100人点击,就产生100*10结果即为为吞吐量

7)每秒点击率:客户端每秒真正发给服务端的请求数量。不能反应系统的性能,反应客户端给服务端发送请求的数量

8)思考时间:用户访问网页的停顿时间,比如输入用户名密码,点击登录---看用户名和密码对不对,这个时间就是思考等待时间

9)资源利用率:系统里cpu占有率、内存的使用率,还有io的使用,这些需要后台监控才能看出来

常见的性能问题

(借鉴了倔强的潇洒小姐的文章)

1、资源泄漏

包括内存泄漏,系统占用的资源(如内存、CPU等)随着运行时间不断增长,从而降低系统性能。系统响应越来越慢,甚至出现混乱。只有重启系统才能恢复到最初水平。

这类问题 产生的主要原因 是 有些对象(如GDI使用、JDBC连接)没有及时被销毁、内存没有释放干净、缓存区回收等。

内存泄漏

在进程执行过程中,如果一块内存区域,进程失去了对其的引用,也就是所该块内存区域永远都不会被进程使用到了,而操作系统又不知道进程失去了对其的引用,所以不能进行回收,这就会导致操作系统认为进程保留了很多内存空间,但进程本身却没办法去使用这些内存空间。

2、资源瓶颈

内部资源(线程、放入池的对象)变得稀缺,随着负载越来越慢,甚至系统挂起或出现异常错误。

这类问题产生的主要原因是线程过度使用或资源分配不足等造成的

3、CPU使用率达到100%,系统被锁定

代码中可能存在无限循环、缺乏保护(如对失败请求不断的重试)、频繁对数据库存取、没有使用数据高速缓存等

4、线程死锁、阻塞

可能因为程序对事物并发处理上的错误、资源争用引起锁阻塞和死锁等

如:线程获得顺序的算法不对,造成死锁、线程同步点上备份过多而造成通信阻塞

5、数据库连接成为性能瓶颈

可能是因为数据库存取交互过多、未使用连接池 或 连接池配置参数不当、单个SQL请求的数据量过多等问题

6、查询速度慢 或 列表效率低

主要原因是列表查询未使用索引、过于复杂的SQL语句、分页算法效率低

也可能是查询结果集过大或不规范的查询,如返回全部数据,查询全部字段而不是所需字段

7、受外部系统影响越来越大

主要原因有 向后端系统发出太多的请求、页面内容过多、经第三方系统认证比较复杂、网络连接不稳定或延迟

你可能感兴趣的:(了解性能测试)